通过CH340G驱动的Nano ATMEAG328P驱动板初步测试
Posted 卓晴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过CH340G驱动的Nano ATMEAG328P驱动板初步测试相关的知识,希望对你有一定的参考价值。
简 介: 测试了Arduino Nano功能板。特别是在利用Arduino IDE下载程序的时候,需要设置处理器型号为 Old Bootloader,这样可以避免下载程序出错。 后面的实验还测试了如果正确设置Timer2的控制机器使得输出PWM频率在122Hz。利用Arduino的串口监视窗口可以大大提高测试程序与外部程序之间的交互功能。
关键词
: Arduino,IDE,舵机
§01 Nano Arduino 测试板
在 TB购买 Nano Arduino开发板 ,另外还有 最新版 Arduino nano V3.0 ATMEGA328P 改进版超级好用 下面对其测试在Arduino IDE使用的基本特性。然后在根据 Arduino Nano开发板原理图PCB 可直接打样 给出对于Nano测试电路板,测试以下两方面内容:
- 制作兼容的Nano电路板,并下载对应的上载程序;
- 测试否可以Arduino生成对应的HEX文件,通过MEGA328 Download完成程序下载执行。
1、测试Nano编程
接入PC之后Nano背面的CH340G会产生USB-SERIAL CH340(COM31)
虚拟串口。利用 Arduio软件开发环境搭建 IDE生成测试程序。
▲ 实验使用的Nano测试版
根据 Arduino Nano开发板原理图PCB 可直接打样-淘宝网 给出的Nano的 原理,来了解Nano各个引脚的功能。
(1)Nano各个管脚定义
▲ Nano SCH
▲ USB-CH340G下载电路
(2)Blink LED(D13)
LED在电路板上占用D13。
【Ⅰ.测试代码】
/*
**==============================================================================
** TEST1.C: -- by Dr. ZhuoQing, 2021-05-28
**
**==============================================================================
*/
//------------------------------------------------------------------------------
void setup(void) {
OUT(LED);
}
//------------------------------------------------------------------------------
void loop(void) {
ON(LED);
delay(10);
OFF(LED);
delay(100);
}
//==============================================================================
// END OF FILE : TEST1.C
//------------------------------------------------------------------------------
【Ⅱ.测试结果】
错误:
无论对于测试版设置为 Arduino UNO
,Nano
,但使用Arduino上载代码出现错误。
▲ 上载程序错误
在 测试版、开发板¥15开发板 中,给出了如下的使用方法是:
自行下载CH340通用驱动就行了,在Arduino1.8.10版本中,选择 工具,开发板,Arduino Nano,选择端口,处理器里选择Old Bootloader就可以下载例程了。
因此解决下载问题,需要在处理器中选择 Old Bootloader。
▲ 选择处理器:选择不同的Bootloader
▲ 下载新程序的运行版本
2、Nano的主要资源
1. 12.个数字输入、输出端口D2-D13
2. 8个模拟输入端口A0-A7
3. 一对TTLUART : RX/TX
4. 6个PWM端口,D3,D5,D6,D9,D10,D11
5. MCU:ATM的a8p-AU
6. 支持ISP下载。
▲ Nano外形及其管脚
▲ Nano的基本参数
§02 基础测试Nano
1、输出PWM
(1) 测试代码
/*
**==============================================================================
** TEST1.C: -- by Dr. ZhuoQing, 2021-05-28
**
**==============================================================================
*/
#define ON(pin) digitalWrite(pin, HIGH)
#define OFF(pin) digitalWrite(pin, LOW)
#define VAL(pin) digitalRead(pin)
#define IN(pin) pinMode(pin, INPUT)
#define OUT(pin) pinMode(pin, OUTPUT)
#define PWM(pin, pwm) analogWrite(pin, pwm)
#define LED 13
const int SERVO_MID = 47;
const int SERVO_LEFT = 31;
const int SERVO_RIGHT = 63;
const int servoPin = 3;
void servoSetup(void) {
pinMode(servoPin, OUTPUT);
TCCR2B = TCCR2B & B11111000 | B00000110;
analogWrite(servoPin, SERVO_MID);
}
//------------------------------------------------------------------------------
void setup(void) {
OUT(LED);
servoSetup();
}
//------------------------------------------------------------------------------
void loop(void) {
ON(LED);
delay(10);
OFF(LED);
delay(100);
}
//==============================================================================
// END OF FILE : TEST1.C
//------------------------------------------------------------------------------
(2)测试结果
通过测量D3的输出波形,可以看到的对应的输出PWM为122.7Hz,脉宽为1.5ms。
▲ D3输出的波形
是所有FLUKE45 测量D3的直流电压:0.922V。它对应的: V 47 = 47 255 × 5.0 = 0.9216 V V_{47} = {{47} \\over {255}} \\times 5.0 = 0.9216V V47=25547×5.0=0.9216V
2、测试PWM的电压
(1)测试代码
/*
**==============================================================================
** TEST1.C: -- by Dr. ZhuoQing, 2021-05-28
**
**==============================================================================
*/
#define ON(pin) digitalWrite(pin, HIGH)
#define OFF(pin) digitalWrite(pin, LOW)
#define VAL(pin) digitalRead(pin)
#define IN(pin) pinMode(pin, INPUT)
#define OUT(pin) pinMode(pin, OUTPUT)
#define PWM(pin, pwm) analogWrite(pin, pwm)
#define LED 13
const int SERVO_MID = 47;
const int SERVO_LEFT = 31;
const int SERVO_RIGHT = 63;
const int servoPin = 3;
void servoSetup(void) {
pinMode(servoPin, OUTPUT);
TCCR2B = TCCR2B & B11111000 | B00000110;
analogWrite(servoPin, SERVO_MID);
}
//------------------------------------------------------------------------------
void setup(void) {
OUT(LED);
servoSetup();
Serial.begin(115200);
Serial.setTimeout(10);
}
//------------------------------------------------------------------------------
int incomingByte= 0; // for incoming serial data.
int pwmdata = 0;
char szBuffer[12];
void loop(void) {
if(Serial.available() > 0) {
pwmdata = Serial.parseInt();
Serial.println(pwmdata);
PWM(servoPin, pwmdata);
}
}
//==============================================================================
// END OF FILE : TEST1.C
//------------------------------------------------------------------------------
(2)串口交互界面
利用Arduino的串口监视界面输入PWM设定值。
▲ Arduino 的串口监视
利用Python编程测量不同的PWM下输出平均电压之。
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# MEAS1.PY -- by Dr. ZhuoQing 2021-05-28
#
# Note:
#============================================================
from headm import *
from tsmodule.tsstm32 import *
com_title = "COM31"
outv = []
for i in range(256):
tspsendwindowkey(com_title, '%d\\r'%i)
time.sleep(1.5)
meter = meterval()
outv.append(meter[0])
plt.plot(outv)
plt.xlabel("PWM")
plt.ylabel("Voltage")
plt.grid(True)
plt.tight_layout()
plt.show()
#------------------------------------------------------------
# END OF FILE : MEAS1.PY
#============================================================
下面是测量之后的结果。
▲ PWM平均电压与Duty之间的关系
3、测试舵机
手边有一款来自于北京科宇的大角度输出舵机,利用Arduino输出的PWM波形测试该款舵机转角输出的范围。
▲ 输出脉冲信号控制舵机旋转
从测量的结果来看,舵机的输出较大大约为270°
。
※ 实验总结 ※
对于Arduino Nano使用的时候,需要注意选择Nano的处理器的时候,应该选择 Old Bootloader
。否则就会出现上载程序出错的问题。
这个结论是在 测试板 开发板 开发套件 其它 新版 Arduino nano V3.0 ATMEGA328P 改进版超级好用 送USB线 中给出的提示:
自行下载CH340通用驱动就行了,在Arduino1.8.10版本中,选择 工具,开发板,Arduino Nano,选择端口,处理器里选择Old Bootloader就可以下载例程了。
测试了利用Arduino
驱动舵机的情况。需要对于Timer2
控制字进行设置,使得输出的频率为122Hz
左右。否则缺省情况下,输出的PWM
频率为495Hz
,不适合驱动舵机。
TCCR2B = TCCR2B & B11111000 | B00000110;
利用Arduino
IDE
中的串口监视串口(利用ctrl+shift+m
)可以对Arduino
的 Serial.print()
函数输出进行显示。此外利用Serial.parseInt()
以及相关的函数对于从串口监视串口送入的字符进行解析。利用这种方法可以构建自动测量系统。
■ 相关文献链接:
- TB购买 Nano Arduino开发板
- 最新版 Arduino nano V3.0 ATMEGA328P 改进版超级好用
- Arduino Nano开发板原理图PCB 可直接打样-淘宝网
- Arduio软件开发环境搭建
- 测试版、开发板¥15开发板
- 测试板 开发板 开发套件 其它 新版 Arduino nano V3.0 ATMEGA328P 改进版超级好用 送USB线
○ 相关图表链接:
以上是关于通过CH340G驱动的Nano ATMEAG328P驱动板初步测试的主要内容,如果未能解决你的问题,请参考以下文章