通过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。它对应的:V47=47255×5.0=0.9216VV_{47} = {{47} \over {255}} \times 5.0 = 0.9216VV47=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
#============================================================
window
下面是测量之后的结果。
▲ 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线
○ 相关图表链接:
- 实验使用的Nano测试版
- Nano SCH
- USB-CH340G下载电路
- 上载程序错误
- 选择处理器:选择不同的Bootloader
- 下载新程序的运行版本
- Nano外形及其管脚
- Nano的基本参数
- D3输出的波形
- Arduino 的串口监视
- PWM平均电压与Duty之间的关系
- 输出脉冲信号控制舵机旋转
通过CH340G驱动的Nano ATMEAG328P驱动板初步测试相关推荐
- 禁用笔记本触控板驱动,禁用联想笔记本触控板驱动,Alps Touch pad 驱动
这个驱动网上找了好久哦,也已经在使用了,终于可以禁用我的联想旭日C467A本本的触控屏了,哦,耶. 驱动下载地址: 1,XP版驱动 2,Vista版驱动 安装方法:直接安装驱动后,重启电脑,打开控制面 ...
- Linux嵌入式驱动开发07——GPIO驱动过程记录(飞凌开发板)
文章目录 全系列传送门 1. 在/arch/arm/boot/dts/imx6q-pinfunc.h查找 2. 在设备树配置文件中添加设备节点定义以及其引脚定义 3. 修改设备树文件添加配置 4. d ...
- Arduino NANO,UNO 驱动安装
Arduino不同型号的开发板安装驱动的方式也不尽相同,但基本也就是两种: 1.系统自动安装驱动: 将Arduino开发板通过USB线连接到电脑,系统会自动安装驱动,但这个过程可能比较慢! 如果你希望 ...
- stm32看门狗_「正点原子NANO STM32开发板资料连载」第十一章 独立看门狗实验
1)实验平台:ALIENTEK NANO STM32F411 V1开发板2)摘自<正点原子STM32F4 开发指南(HAL 库版>关注官方微信号公众号,获取更多资料:正点原子 第十一章 独 ...
- 看门狗寄存器c语言代码_「正点原子NANO STM32F103开发板资料连载」第十一章 看门狗实验...
1)实验平台:[正点原子] NANO STM32F103 开发板 2)摘自<正点原子STM32 F1 开发指南(NANO 板-HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 ...
- 判断按键值_「正点原子NANO STM32开发板资料连载」第十六章电容触摸按键实验...
1)实验平台:ALIENTEK NANO STM32F411 V1开发板2)摘自<正点原子STM32F4 开发指南(HAL 库版>关注官方微信号公众号,获取更多资料:正点原子 第十六章电容 ...
- STM32MP157驱动开发——4G通信模块驱动
STM32MP157驱动开发--4G通信模块驱动 一.简介 二.驱动开发 1.高新兴 ME3630 驱动开发 驱动修改 添加 ECM 支持程序 配置 Linux 内核 ppp拨号功能测试 ECM 联网 ...
- 字符设备驱动基础篇0——驱动开发初体验
以下内容源于朱有鹏嵌入式课程的学习,如有侵权,请告知删除. 参考资料:http://www.cnblogs.com/biaohc/p/6575074.html 1.驱动开发的准备工作 (1)内核源码树 ...
- 超声波阵列功率驱动:利用MX1919驱动
简 介: 本文测试了MX1919驱动超声波阵列的效果. 比起 利用L293作为驱动 效率提高了很多. 这位之后制作超声直线声音传送打下了基础. 关键词: MX1919,超声驱动 #mermaid-sv ...
最新文章
- pma mysql_Table ‘phpmyadmin.pma_table_uiprefs’ doesn’t exist mysql
- java线程——join
- P2473 [SCOI2008]奖励关
- 目标检测基本概念理解之IoU(交并比)以及Python代码实现
- 在Ubuntu下运行 apt-get update命令后出现错误:
- (13)Node.js 文件流 缓冲 VS 流
- Android项目之电话黑名单
- 关于准系统,镭波,地球人等等其他牌子的机器介绍和外星人的比较
- 实验五|Python 企业获利能力分析
- 什么是智能家电?消费者不知判定标准
- 信息学奥赛一本通:题解目录 (〃‘▽‘〃)点个赞吧
- 本机与虚拟机WIN7之间互传文件
- 关联入库表,出库表,统计库存。。。
- 图灵奖得主长文报告:是什么开启了计算机架构的新黄金十年?
- 双稳态电子开关、单按键自锁电路仿真
- vue实现监控流-rtsp转flv
- 做网站如何选择利于优化的服务器
- 云端数据仓库的模式选型与建设
- 11 岁编程,21 岁开发 Linux 系统,这就是顶尖程序员的样子!
- Ubuntu20.04 卸载cuda 11.0