资料介绍
电路板图如下:
描述
电机驱动板 Atmega328PU 和 HC01
嘿,如果你正在制作一个基本的机器人设置,一个电机驱动器控制器板,它通过板载 MCU 控制电机驱动器并具有用于蓝牙连接的 HC01 BT 模块,那么这里有什么超级酷和有用的东西。
我在 PCB 上添加了四个安装孔,因此我可以添加 PCB 支架以将电机驱动器固定在电路板的顶部。使用支架是一种聪明的方法,因为我们可以使用这种方法添加多个模块,只需将它们堆叠在一排支架中即可。
我还在电路板的一侧添加了一个 HC-SR04 超声波传感器分线针,因此它可以用来制作一个避障机器人。
本文将介绍这款电机驱动器的构建过程,让我们开始吧。
材料
以下是我在这个项目中使用的东西-
- 定制PCB
- Atmega328PU
- 22PF 盖 0603 封装
- 16MHz晶体
- 10K电阻0603封装
- 1K电阻0603封装
- 指示灯 LED 0603 封装
- AMS1117 稳压器
- HC01 蓝牙模块
- 10uF 电容 1206 封装
- 1uF 电容 1206 封装
- IC 插座 DIP 28
- USB 微型端口
- 排针插座
- Arduino 作为用于闪烁 Atmega328PU 的 ISP 设置
- PCB 支架
- 马达
- 超声波传感器 HC-SR04
- 电池组 12V
- 电机驱动器 L298N
示意图
这是我准备的原理图,它由与 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 服务。
电路板组装
PCB组装过程将具有以下步骤。
- 锡膏点胶
- 拾取和放置过程
- 热板回流
- 添加剩余的 THT 组件
- 刻录引导加载程序
焊膏
第一步是在每个元件焊盘上涂抹焊膏。
我使用了普通的 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 超声波传感器
{
序列号.开始();
pinMode(trigPin,输出);
pinMode(echoPin,输入);
pinMode(LED,输出);
pinMode(led2,输出);
pinMode(led3,输出);
}
{
,距离;
数字写入(trigPin,低);
延迟微秒();
数字写入(trigPin,高);
延迟微秒();
数字写入(trigPin,低);
持续时间=脉冲输入(回声针,高);
距离 = (持续时间/ ) / ;
(距离 <= ){
数字写入(领导,高);
}
{
数字写入(领导,低);
}
(距离 < ){
数字写入(led2,高);
}
{
数字写入(led2,低);
}
(距离 < ){
数字写入(led3,高);
}
{
数字写入(led3,低);
}
延迟();
}
我将 HC-SR04 超声波传感器模块添加到其分配的 Header Pin 插座中,并上传了我制作的测试草图。当我们将任何东西放在它前面 30 厘米的距离处时,第一个 LED 会发光,通过减小其他两个 LED 发光的距离。
测试草图#2 BT 终端 LED 开/关
垃圾;
字符串输入字符串 = ;
{
序列号.开始();
pinMode(,OUTPUT)也应如此;
}
{
(Serial.available()){
(Serial.available())
{
inChar = ( )Serial.read();
inputString += inChar;
}
Serial.println(inputString);
(Serial.available() > )
{
垃圾 = Serial.read() ; }
}
(inputString == ){
digitalWrite( , HIGH);
}
(inputString == ){
digitalWrite( , LOW);
}
输入字符串 = ;
}
检查超声波传感器后,我将BT测试草图上传到MCU并使用BT终端APP与HC01连接。
通过BT终端APP向HC01发送“on”,LED点亮,发送“off”将其关闭。
添加带 PCB 支架的电机驱动器
在测试板工作正常后,我继续下一步,即使用 PCB Standoffs 将 L298N 电机驱动器添加到主板。
在主板和电机驱动器之间添加电线连接器
然后我在电机控制器的 VCC GND 和 5V 以及电机驱动器的 VCC GND 和 5V 之间添加了电线。
然后我在电机控制器的控制引脚和 Atmega328pu 的 Pwm 引脚之间添加了电线。
- ENA 和 ENB 均为高电平
- IN1 至 D6
- IN2 至 D9
- IN3 至 D10
- IN4 至 D11
设置完成,现在我们可以将电池添加到电机驱动器的 VCC 和 GND 端口,并将电机端子添加到电机驱动器的连接器。
添加电机和电池
最终草图 - 测试电机
motorLpin1 = ;
motorLpin2 = ;
motorRpin1 = ;
motorRpin2 = ;
LED1 = ;
LED2 = ;
LED3 = ;
{
序列号.开始();
Serial.flush();
pinMode(motorLpin1,输出);
pinMode(motorLpin2,输出);
pinMode(电机Rpin1,输出);
pinMode(电机Rpin2,输出);
pinMode(LED1,输出);
pinMode(LED2,输出);
pinMode(LED3,输出);
}
{
字符串输入= ;
(Serial.available()){
输入+=()Serial.read();
延迟();
}
(输入== ){
马达停止();
}
(输入== ){
马达前进();
}
(输入== ){
电机后退();
}
(输入== ){
左电机();
}
(输入== ){
右电机();
}
}
{
数字写入(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,高);
}
{
数字写入(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”,电机停止旋转。
下一步,做一个机器人
此电机控制器的下一步或下一步用途将是构建一个机器人,我目前正在设计一个将使用此控制器设置的机器人,敬请期待。
如果您喜欢机器人,请查看我以前的机器人项目-
谢谢,PCBWAY 支持这个项目,如果你需要更好的 PCB 服务以降低成本,请检查它们,我很快就会带着新项目回来。
和平
代码
|
int motorLpin1 = 6; |
|
int motorLpin2 = 9; |
|
int motorRpin1 = 10; |
|
int motorRpin2 = 11; |
|
int LED1 = 2; |
|
int LED2 = 3; |
|
int LED3 = 4; |
|
|
|
void setup() |
|
{ |
|
Serial.begin(9600); |
|
Serial.flush(); |
|
pinMode(motorLpin1,OUTPUT); |
|
pinMode(motorLpin2,OUTPUT); |
|
pinMode(motorRpin1,OUTPUT); |
|
pinMode(motorRpin2,OUTPUT); |
|
pinMode(LED1,OUTPUT); |
|
pinMode(LED2,OUTPUT); |
|
pinMode(LED3,OUTPUT); |
|
|
|
|
|
} |
|
|
|
void loop(){ |
|
String input=""; |
|
while(Serial.available()){ |
|
input+=(char)Serial.read(); |
|
delay(5); |
|
} |
|
|
|
if(input=="S"){ |
|
MotorStop(); |
|
} |
|
else if(input=="F"){ |
|
MotorForward(); |
|
} |
|
else if(input=="R"){ |
|
MotorBackward(); |
|
} |
|
else if(input=="TL"){ |
|
MotorLeft(); |
|
} |
|
else if(input=="TR"){ |
|
MotorRight(); |
|
} |
|
|
|
} |
|
|
|
void MotorForward(void) |
|
{ |
|
digitalWrite(motorLpin1,HIGH); |
|
digitalWrite(motorLpin2,LOW); |
|
digitalWrite(motorRpin1,HIGH); |
|
digitalWrite(motorRpin2,LOW); |
|
digitalWrite(LED1,HIGH); |
|
digitalWrite(LED2,LOW); |
|
digitalWrite(LED3,LOW); |
|
} |
|
|
|
void MotorBackward(void) |
|
{ |
|
|
|
digitalWrite(motorLpin1,LOW); |
|
digitalWrite(motorLpin2,HIGH); |
|
digitalWrite(motorRpin1,LOW); |
|
digitalWrite(motorRpin2,HIGH); |
|
digitalWrite(LED1,LOW); |
|
digitalWrite(LED2,HIGH); |
|
digitalWrite(LED3,LOW); |
|
} |
|
void MotorLeft(void) |
|
{ |
|
digitalWrite(motorLpin1,HIGH); |
|
digitalWrite(motorLpin2,LOW); |
|
digitalWrite(motorRpin1,LOW); |
|
digitalWrite(motorRpin2,HIGH); |
|
digitalWrite(LED1,LOW); |
|
digitalWrite(LED2,LOW); |
|
digitalWrite(LED3,HIGH); |
|
} |
|
void MotorRight(void) |
|
{ |
|
|
|
digitalWrite(motorLpin1,LOW); |
|
digitalWrite(motorLpin2,HIGH); |
|
digitalWrite(motorRpin1,HIGH); |
|
digitalWrite(motorRpin2,LOW); |
|
digitalWrite(LED1,LOW); |
|
digitalWrite(LED2,LOW); |
|
digitalWrite(LED3,HIGH); |
|
|
|
} |
|
void MotorStop(void) |
|
{ |
|
|
|
digitalWrite(motorLpin1,LOW); |
|
digitalWrite(motorLpin2,LOW); |
|
digitalWrite(motorRpin1,LOW); |
|
digitalWrite(motorRpin2,LOW); |
|
digitalWrite(LED1,LOW); |
|
digitalWrite(LED2,LOW); |
|
digitalWrite(LED3,LOW); |
|
|
|
} |
- 基于atmega328p和Arduino平台的气象站设计 3次下载
- 基于Atmega328P PU的EEPROM 1次下载
- 使用ATmega328的七段显示驱动程序
- ATmega328/168/8/48/88编程屏蔽开源
- AtMega328编程/开发板开源分享
- 用于无线电发射器HC12的带有ATmega328p的PCB
- Atmega328 led动画或vumeter开源分享
- Atmega328时钟开源分享
- 用于测试Atmega328/Arduino Uno和Atmega1284/p的板
- 最低系统ATmega328p开源
- ATMEGA 328P与L293D电机驱动器开源
- 基于ATmega328的Arduino的变频驱动器 4次下载
- ATMEGA328数据手册.英文版pdf 0次下载
- Atmega328p-pu与Atmega16A-PU区别
- Arduino Atmega328P开发板软件下载与安装 130次下载
- 电机驱动板发烫严重的原因分析 597次阅读
- 开源电机驱动器开发方法与实现 1132次阅读
- CLN17电机驱动器的特点和应用场景 1293次阅读
- 如何利用ATmega328P构建一个可靠的LoRa设备 5274次阅读
- 如何为ATmega328P刷bootloader? 6919次阅读
- dfrobot四路电机驱动板简介 3763次阅读
- dfrobotPPM双路电机驱动板简介 2245次阅读
- 微雪电子树莓派电机驱动板介绍 3272次阅读
- 微雪电子树莓派步进电机驱动板|Stepper Motor HAT介绍 5195次阅读
- 如何采用Arduino系统板进行单片机编程 6269次阅读
- 一种用 74hc138 和 74hc595 驱动 8x8 点阵显示技术 1w次阅读
- 用Arduino Uno开发板和一块面包板就能轻松搞定这一切 2.4w次阅读
- 基于ATmega16单片机的智能快速充电机设计与实现 4240次阅读
- 74hc164驱动共阴数码管与共阳数码管_74hc164驱动源程序 1.4w次阅读
- Atmega32M1的电动工具电机驱动方案 1711次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多