資料介紹
電路板圖如下:



描述
電機驅(qū)動板 Atmega328PU 和 HC01
?
嘿,如果你正在制作一個基本的機器人設置,一個電機驅(qū)動器控制器板,它通過板載 MCU 控制電機驅(qū)動器并具有用于藍牙連接的 HC01 BT 模塊,那么這里有什么超級酷和有用的東西。
?
?
?
?
我在 PCB 上添加了四個安裝孔,因此我可以添加 PCB 支架以將電機驅(qū)動器固定在電路板的頂部。使用支架是一種聰明的方法,因為我們可以使用這種方法添加多個模塊,只需將它們堆疊在一排支架中即可。
我還在電路板的一側(cè)添加了一個 HC-SR04 超聲波傳感器分線針,因此它可以用來制作一個避障機器人。
本文將介紹這款電機驅(qū)動器的構建過程,讓我們開始吧。
?
材料
以下是我在這個項目中使用的東西-
- 定制PCB
- Atmega328PU
- 22PF 蓋 0603 封裝
- 16MHz晶體
- 10K電阻0603封裝
- 1K電阻0603封裝
- 指示燈 LED 0603 封裝
- AMS1117 穩(wěn)壓器
- HC01 藍牙模塊
- 10uF 電容 1206 封裝
- 1uF 電容 1206 封裝
- IC 插座 DIP 28
- USB 微型端口
- 排針插座
- Arduino 作為用于閃爍 Atmega328PU 的 ISP 設置
- PCB 支架
- 馬達
- 超聲波傳感器 HC-SR04
- 電池組 12V
- 電機驅(qū)動器 L298N
?
示意圖
?
?
這是我準備的原理圖,它由與 HC01 模塊連接的最小 Atmega328PU 設置組成。在 Atmega328PU 和 HC01 之間,有一個 AMS1117 3.3V 穩(wěn)壓器,用于將 5V 從 VCC 降壓到 3.3V 以使 HC01 工作。
我添加了一堆連接器,用于將東西與 atmega 連接,其中包括 ISP 輸出,Atmega 的分支 SPI 引腳用于閃爍,然后我還添加了用于電機驅(qū)動器 IN1、IN2、IN3 和 IN4 的 CON4 與 D6、D9、D10 和D11。
我還添加了一些帶 D2、D3 和 D4 的 LED 以及一個 CON4 插頭引腳,用于將超聲波傳感器與該板連接。
完成原理圖后,我將其轉(zhuǎn)換為電路板文件。
?
PCB設計
?
?
至于設計,我制作了一個邊緣有倒角的矩形板,還在板的中心放置了四個安裝孔,這樣我就可以使用 Standoffs 將 L298N 電機驅(qū)動器放置在這個 PCB 上。
?
PCBWAY
?
?
完成設計后,我在PCBWAY的報價頁面上傳了Gerber數(shù)據(jù),選擇了紅色的阻焊層顏色,然后下單。
下訂單后,我在一周內(nèi)收到了 PCB,PCB 質(zhì)量非常好。
?
?
?
這種形狀是完全隨機的,所以很難制作,但他們在制作這個 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 一側(cè)的 LED 將閃爍。
?
THT 組件
?
?
?
最后,我們將 THT 組件添加到 PCB,它們是 Atmega 插座和接頭引腳。
完成后,我們的電路就完成了!
?
Atmega328PU 通過 Arduino 作為 ISP 燒錄引導加載程序
?
?
?
現(xiàn)在,此設置使用 Atmega328PU。Atmega328PU 有一個小十六進制文件,稱為引導加載程序,類似于 BIOS。便宜的 atmega328PU 通常不附帶預裝的引導加載程序,因此我必須將引導加載程序刻錄到 MCU 上,為此,我使用了我之前的一個項目,即基于 Arduino 的 Attiny Programmer。
?
該程序員是為將引導加載程序和 Flash 代碼刻錄到 Attiny MCU 中,使用上傳到常規(guī) Arduino Nano R3 的“Arduino as ISP Sketch”進行一些調(diào)整(在復位和 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,輸出);
}
{
,距離;
數(shù)字寫入(trigPin,低);
延遲微秒();
數(shù)字寫入(trigPin,高);
延遲微秒();
數(shù)字寫入(trigPin,低);
持續(xù)時間=脈沖輸入(回聲針,高);
距離 = (持續(xù)時間/ ) / ;
(距離 <= ){
數(shù)字寫入(領導,高);
}
{
數(shù)字寫入(領導,低);
}
(距離 < ){
數(shù)字寫入(led2,高);
}
{
數(shù)字寫入(led2,低);
}
(距離 < ){
數(shù)字寫入(led3,高);
}
{
數(shù)字寫入(led3,低);
}
延遲();
}
?
?
我將 HC-SR04 超聲波傳感器模塊添加到其分配的 Header Pin 插座中,并上傳了我制作的測試草圖。當我們將任何東西放在它前面 30 厘米的距離處時,第一個 LED 會發(fā)光,通過減小其他兩個 LED 發(fā)光的距離。
?
測試草圖#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發(fā)送“on”,LED點亮,發(fā)送“off”將其關閉。
?
添加帶 PCB 支架的電機驅(qū)動器
在測試板工作正常后,我繼續(xù)下一步,即使用 PCB Standoffs 將 L298N 電機驅(qū)動器添加到主板。
?
在主板和電機驅(qū)動器之間添加電線連接器
?
?
?
然后我在電機控制器的 VCC GND 和 5V 以及電機驅(qū)動器的 VCC GND 和 5V 之間添加了電線。
然后我在電機控制器的控制引腳和 Atmega328pu 的 Pwm 引腳之間添加了電線。
?
- ENA 和 ENB 均為高電平
- IN1 至 D6
- IN2 至 D9
- IN3 至 D10
- IN4 至 D11
設置完成,現(xiàn)在我們可以將電池添加到電機驅(qū)動器的 VCC 和 GND 端口,并將電機端子添加到電機驅(qū)動器的連接器。
?
添加電機和電池
?
?
?
?
最終草圖 - 測試電機
?
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();
延遲();
}
(輸入== ){
馬達停止();
}
(輸入== ){
馬達前進();
}
(輸入== ){
電機后退();
}
(輸入== ){
左電機();
}
(輸入== ){
右電機();
}
}
{
數(shù)字寫入(motorLpin1,HIGH);
數(shù)字寫入(motorLpin2,LOW);
數(shù)字寫入(motorRpin1,HIGH);
數(shù)字寫入(電機Rpin2,低);
數(shù)字寫入(LED1,高);
數(shù)字寫入(LED2,低);
數(shù)字寫入(LED3,低);
}
{
數(shù)字寫入(motorLpin1,LOW);
數(shù)字寫入(motorLpin2,HIGH);
數(shù)字寫入(電機Rpin1,低);
數(shù)字寫入(motorRpin2,HIGH);
數(shù)字寫入(LED1,低);
數(shù)字寫入(LED2,高);
數(shù)字寫入(LED3,低);
}
{
數(shù)字寫入(motorLpin1,HIGH);
數(shù)字寫入(motorLpin2,LOW);
數(shù)字寫入(電機Rpin1,低);
數(shù)字寫入(motorRpin2,HIGH);
數(shù)字寫入(LED1,低);
數(shù)字寫入(LED2,低);
數(shù)字寫入(LED3,高);
}
{
數(shù)字寫入(motorLpin1,LOW);
數(shù)字寫入(motorLpin2,HIGH);
數(shù)字寫入(motorRpin1,HIGH);
數(shù)字寫入(電機Rpin2,低);
數(shù)字寫入(LED1,低);
數(shù)字寫入(LED2,低);
數(shù)字寫入(LED3,高);
}
{
數(shù)字寫入(motorLpin1,LOW);
數(shù)字寫入(motorLpin2,LOW);
數(shù)字寫入(電機Rpin1,低);
數(shù)字寫入(電機Rpin2,低);
數(shù)字寫入(LED1,低);
數(shù)字寫入(LED2,低);
數(shù)字寫入(LED3,低);
}
?
?
?
我將上面的草圖上傳到 Atmega 中,然后添加了一個帶有電機驅(qū)動器連接器的齒輪直流電機,并添加了一個 12V 電池組來為整個系統(tǒng)供電。
為了控制電機,我正在使用與 HC01 模塊連接的 BT 終端應用程序向 MCU 發(fā)送“F”表示前進,“B”表示后退。
為了停止電機,我們通過 BT 端子發(fā)送“S”,電機停止旋轉(zhuǎn)。
?
下一步,做一個機器人
?
?
此電機控制器的下一步或下一步用途將是構建一個機器人,我目前正在設計一個將使用此控制器設置的機器人,敬請期待。
如果您喜歡機器人,請查看我以前的機器人項目-
?
?
?
謝謝,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的七段顯示驅(qū)動程序
- ATmega328/168/8/48/88編程屏蔽開源
- AtMega328編程/開發(fā)板開源分享
- 用于無線電發(fā)射器HC12的帶有ATmega328p的PCB
- Atmega328 led動畫或vumeter開源分享
- Atmega328時鐘開源分享
- 用于測試Atmega328/Arduino Uno和Atmega1284/p的板
- 最低系統(tǒng)ATmega328p開源
- ATMEGA 328P與L293D電機驅(qū)動器開源
- 基于ATmega328的Arduino的變頻驅(qū)動器 4次下載
- ATMEGA328數(shù)據(jù)手冊.英文版pdf 0次下載
- Atmega328p-pu與Atmega16A-PU區(qū)別
- Arduino Atmega328P開發(fā)板軟件下載與安裝 132次下載
- 電機驅(qū)動板發(fā)燙嚴重的原因分析 1200次閱讀
- 開源電機驅(qū)動器開發(fā)方法與實現(xiàn) 1600次閱讀
- CLN17電機驅(qū)動器的特點和應用場景 1659次閱讀
- 如何利用ATmega328P構建一個可靠的LoRa設備 5495次閱讀
- 如何為ATmega328P刷bootloader? 7973次閱讀
- dfrobot四路電機驅(qū)動板簡介 4000次閱讀
- dfrobotPPM雙路電機驅(qū)動板簡介 2509次閱讀
- 微雪電子樹莓派電機驅(qū)動板介紹 3479次閱讀
- 微雪電子樹莓派步進電機驅(qū)動板|Stepper Motor HAT介紹 5524次閱讀
- 如何采用Arduino系統(tǒng)板進行單片機編程 6505次閱讀
- 一種用 74hc138 和 74hc595 驅(qū)動 8x8 點陣顯示技術 1w次閱讀
- 用Arduino Uno開發(fā)板和一塊面包板就能輕松搞定這一切 2.4w次閱讀
- 基于ATmega16單片機的智能快速充電機設計與實現(xiàn) 4520次閱讀
- 74hc164驅(qū)動共陰數(shù)碼管與共陽數(shù)碼管_74hc164驅(qū)動源程序 1.4w次閱讀
- Atmega32M1的電動工具電機驅(qū)動方案 1748次閱讀
下載排行
本周
- 1第十一屆 藍橋杯 單片機設計與開發(fā)項目 省賽 程序設計試題及源碼
- 90.88KB | 23次下載 | 3 積分
- 2輕松解碼串口通信
- 509.30 KB | 3次下載 | 免費
- 3STM32F103C8T6開發(fā)板最小系統(tǒng)原理圖
- 0.78 MB | 1次下載 | 免費
- 4LT8822SS共漏N溝道增強型場效應晶體管規(guī)格書
- 1.22 MB | 1次下載 | 免費
- 5ACDC茂睿芯MK2687寬供電范圍高效率反激 PWM 控制器
- 2.28 MB | 1次下載 | 免費
- 6LTS3002FJI N溝道增強型功率MOSFET規(guī)格書
- 1.30 MB | 次下載 | 免費
- 7ESD保護器件ESD0504TL規(guī)格書
- 2.97 MB | 次下載 | 免費
- 8ESD保護器件GBLCxxCI系列規(guī)格書
- 2.85 MB | 次下載 | 免費
本月
- 1STM32開發(fā)板教程之STM32開發(fā)指南免費下載
- 24.88 MB | 177次下載 | 3 積分
- 2EN60335-1安規(guī)標準 中文版本
- 1.86 MB | 53次下載 | 1 積分
- 3DeepSeek從入門到精通
- 5.07 MB | 38次下載 | 免費
- 4第十一屆 藍橋杯 單片機設計與開發(fā)項目 省賽 程序設計試題及源碼
- 90.88KB | 23次下載 | 3 積分
- 5NR-E531TX-XN冰箱說明書
- 8.64 MB | 19次下載 | 免費
- 6STM32單片機無人機設計
- 8.81 MB | 10次下載 | 免費
- 7華為硬件工程師手冊目前最全版本
- 1.02 MB | 8次下載 | 2 積分
- 8MAX9295電路圖
- 0.14 MB | 6次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935126次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設計
- 1.48MB | 420063次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233088次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191377次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183336次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81584次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73814次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65988次下載 | 10 積分
評論