完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
描述
电机驱动板 Atmega328PU 和 HC01 嘿,如果你正在制作一个基本的机器人设置,一个电机驱动器控制器板,它通过板载 MCU 控制电机驱动器并具有用于蓝牙连接的 HC01 BT 模块,那么这里有什么超级酷和有用的东西。 我在 PCB 上添加了四个安装孔,因此我可以添加 PCB 支架以将电机驱动器固定在电路板的顶部。使用支架是一种聪明的方法,因为我们可以使用这种方法添加多个模块,只需将它们堆叠在一排支架中即可。 我还在电路板的一侧添加了一个 HC-SR04 超声波传感器分线针,因此它可以用来制作一个避障机器人。 本文将介绍这款电机驱动器的构建过程,让我们开始吧。 材料 以下是我在这个项目中使用的东西-
示意图 这是我准备的原理图,它由与 HC01 模块连接的最小 Atmega328PU 设置组成。在 Atmega328PU 和 HC01 之间,有一个 AMS1117 3.3V 稳压器,用于将 5V 从 VCC 降压到 3.3V 以使 HC01 工作。 我添加了一堆连接器,用于将东西与 atmega 连接,其中包括 ISP 输出,Atmega 的分支 SPI 引脚用于闪烁,然后我还添加了用于电机驱动器 IN1、IN2、IN3 和 IN4 的 CON4 与 D6、D9、D10 和D11。 我还添加了一些带 D2、D3 和 D4 的 LED 以及一个 CON4 插头引脚,用于将超声波传感器与该板连接。 完成原理图后,我将其转换为电路板文件。 PCB设计 至于设计,我制作了一个边缘有倒角的矩形板,还在板的中心放置了四个安装孔,这样我就可以使用 Standoffs 将 L298N 电机驱动器放置在这个 PCB 上。 PCBWAY 完成设计后,我在PCBWAY的报价页面上传了Gerber数据,选择了红色的阻焊层颜色,然后下单。 下订单后,我在一周内收到了 PCB,PCB 质量非常好。 这种形状是完全随机的,所以很难制作,但他们在制作这个 PCB 方面做得非常出色,没有任何错误。 电路板组装 PCB组装过程将具有以下步骤。
焊膏 第一步是在每个元件焊盘上涂抹焊膏。 我使用了普通的 Sn-Pb 焊膏,其熔化温度为 140 至 270 °C。 添加锡膏后,我们进入下一个过程,即“PICK & Place Process” 挑选和放置 然后,我使用 ESD Tweeaser 小心地将每个 SMD 组件一个一个地挑选并放置在指定的位置,这需要大约 30 秒的时间,但结果是一个完美的 PCB,所有组件都放置在它们的位置。 热板回流 在“PICK & Place Process”之后,我小心翼翼地将整个电路板抬起并放在我的 DIY SMT Hotplate 上,它也是自制的,就像这个项目一样。 几分钟后,当热板达到焊膏熔化温度时,所有组件都将通过此热回流工艺焊接。 然后我们从热板上取下 PCB 以冷却所有组件和电路板表面。 然后我通过 USB 端口插入 5V 电源以检查 HC01 是否工作,如果设置正常工作,HC01 一侧的 LED 将闪烁。 THT 组件 最后,我们将 THT 组件添加到 PCB,它们是 Atmega 插座和接头引脚。 完成后,我们的电路就完成了! Atmega328PU 通过 Arduino 作为 ISP 烧录引导加载程序 现在,此设置使用 Atmega328PU。Atmega328PU 有一个小十六进制文件,称为引导加载程序,类似于 BIOS。便宜的 atmega328PU 通常不附带预装的引导加载程序,因此我必须将引导加载程序刻录到 MCU 上,为此,我使用了我之前的一个项目,即基于 Arduino 的 Attiny Programmer。 该程序员是为将引导加载程序和 Flash 代码刻录到 Attiny MCU 中,使用上传到常规 Arduino Nano R3 的“Arduino as ISP Sketch”进行一些调整(在复位和 GND 之间添加 1uf Cap) 请参阅我以前的项目以制作此程序员并开始使用此闪烁方法。 我将 Atmega328PU 的 SPI 引脚通过 Arduino Nano 的 SPI 引脚通过一个插头插座连接在一起,并烧录 Atmega328PU 的引导程序,并上传 ULTRASONIC SENSO TEST SKETCH 用于测试 Atmega 芯片。 测试草图#1 超声波传感器 #define trigPin 7 #define echoPin 8 #define led 2 #define led2 3 #define led3 4 无效 设置() { 序列号.开始(9600); pinMode(trigPin,输出); pinMode(echoPin,输入); pinMode(LED,输出); pinMode(led2,输出); pinMode(led3,输出); } void loop () { 持续时间长,距离; 数字写入(trigPin,低); 延迟微秒(2); 数字写入(trigPin,高); 延迟微秒(10); 数字写入(trigPin,低); 持续时间=脉冲输入(回声针,高); 距离 = (持续时间/ 2 ) / 29.1 ; 如果(距离 <= 30){ 数字写入(领导,高); } 否则{ 数字写入(领导,低); } 如果(距离 < 20){ 数字写入(led2,高); } 否则{ 数字写入(led2,低); } 如果(距离 < 10){ 数字写入(led3,高); } 否则{ 数字写入(led3,低); } 延迟(500); } 我将 HC-SR04 超声波传感器模块添加到其分配的 Header Pin 插座中,并上传了我制作的测试草图。当我们将任何东西放在它前面 30 厘米的距离处时,第一个 LED 会发光,通过减小其他两个 LED 发光的距离。 测试草图#2 BT 终端 LED 开/关 炭垃圾; 字符串输入字符串 = "" ; void setup () // 运行一次,当草图开始时 { 序列号.开始(9600); // 将波特率设置为 9600,您的串行监视器 pinMode(2,OUTPUT)也应如此; } 无效 循环() { if (Serial.available()){ 而(Serial.available()) { char inChar = ( char )Serial.read(); //读取输入 inputString += inChar; //制作一串连续出现的字符 } Serial.println(inputString); 而(Serial.available() > 0 ) { 垃圾 = Serial.read() ; } // 清除串口缓冲区 } if (inputString == "on" ){ //在'a'的情况下打开 LED digitalWrite( 2 , HIGH); } else if (inputString == "off" ){ //incase of 'b' 关闭 LED digitalWrite( 2 , LOW); } 输入字符串 = "" ; } 检查超声波传感器后,我将BT测试草图上传到MCU并使用BT终端APP与HC01连接。 通过BT终端APP向HC01发送“on”,LED点亮,发送“off”将其关闭。 添加带 PCB 支架的电机驱动器 在测试板工作正常后,我继续下一步,即使用 PCB Standoffs 将 L298N 电机驱动器添加到主板。 在主板和电机驱动器之间添加电线连接器 然后我在电机控制器的 VCC GND 和 5V 以及电机驱动器的 VCC GND 和 5V 之间添加了电线。 然后我在电机控制器的控制引脚和 Atmega328pu 的 Pwm 引脚之间添加了电线。
添加电机和电池 最终草图 - 测试电机 int motorLpin1 = 6 ; int motorLpin2 = 9 ; int motorRpin1 = 10 ; int motorRpin2 = 11 ; 诠释LED1 = 2 ; 诠释LED2 = 3 ; 诠释LED3 = 4 ; 无效 设置() { 序列号.开始(9600); Serial.flush(); pinMode(motorLpin1,输出); pinMode(motorLpin2,输出); pinMode(电机Rpin1,输出); pinMode(电机Rpin2,输出); pinMode(LED1,输出); pinMode(LED2,输出); pinMode(LED3,输出); } 无效 循环() { 字符串输入= “”; 而(Serial.available()){ 输入+=(字符)Serial.read(); 延迟(5); } 如果(输入== “S”){ 马达停止(); } 否则 如果(输入== “F”){ 马达前进(); } 否则 如果(输入== “R”){ 电机后退(); } 否则 如果(输入== “TL”){ 左电机(); } 否则 如果(输入== “TR”){ 右电机(); } } 无效 电机前锋(无效) { 数字写入(motorLpin1,HIGH); 数字写入(motorLpin2,LOW); 数字写入(motorRpin1,HIGH); 数字写入(电机Rpin2,低); 数字写入(LED1,高); 数字写入(LED2,低); 数字写入(LED3,低); } 无效 电机后退(无效) { 数字写入(motorLpin1,LOW); 数字写入(motorLpin2,HIGH); 数字写入(电机Rpin1,低); 数字写入(motorRpin2,HIGH); 数字写入(LED1,低); 数字写入(LED2,高); 数字写入(LED3,低); } 无效 电机(无效) { 数字写入(motorLpin1,HIGH); 数字写入(motorLpin2,LOW); 数字写入(电机Rpin1,低); 数字写入(motorRpin2,HIGH); 数字写入(LED1,低); 数字写入(LED2,低); 数字写入(LED3,高); } 无效 MotorRight (无效) { 数字写入(motorLpin1,LOW); 数字写入(motorLpin2,HIGH); 数字写入(motorRpin1,HIGH); 数字写入(电机Rpin2,低); 数字写入(LED1,低); 数字写入(LED2,低); 数字写入(LED3,高); } 无效 马达停止(无效) { 数字写入(motorLpin1,LOW); 数字写入(motorLpin2,LOW); 数字写入(电机Rpin1,低); 数字写入(电机Rpin2,低); 数字写入(LED1,低); 数字写入(LED2,低); 数字写入(LED3,低); } 我将上面的草图上传到 Atmega 中,然后添加了一个带有电机驱动器连接器的齿轮直流电机,并添加了一个 12V 电池组来为整个系统供电。 为了控制电机,我正在使用与 HC01 模块连接的 BT 终端应用程序向 MCU 发送“F”表示前进,“B”表示后退。 为了停止电机,我们通过 BT 端子发送“S”,电机停止旋转。 展示
|
|
|
|
1622 浏览 0 评论
工业现场经常用到的 RS485 通信,原来它的收发机制是这样的
1192 浏览 0 评论
电路小知识 | 电源选型要点、电路图的解读方法、LED及其应用示例
986 浏览 0 评论
1437 浏览 0 评论
1440 浏览 1 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 01:16 , Processed in 0.699851 second(s), Total 72, Slave 51 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号