資料介紹
電路板圖如下:
描述
電機驅動板 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開發板軟件下載與安裝 132次下載
- 電機驅動板發燙嚴重的原因分析 1200次閱讀
- 開源電機驅動器開發方法與實現 1600次閱讀
- CLN17電機驅動器的特點和應用場景 1659次閱讀
- 如何利用ATmega328P構建一個可靠的LoRa設備 5495次閱讀
- 如何為ATmega328P刷bootloader? 7973次閱讀
- dfrobot四路電機驅動板簡介 4000次閱讀
- dfrobotPPM雙路電機驅動板簡介 2509次閱讀
- 微雪電子樹莓派電機驅動板介紹 3479次閱讀
- 微雪電子樹莓派步進電機驅動板|Stepper Motor HAT介紹 5524次閱讀
- 如何采用Arduino系統板進行單片機編程 6505次閱讀
- 一種用 74hc138 和 74hc595 驅動 8x8 點陣顯示技術 1w次閱讀
- 用Arduino Uno開發板和一塊面包板就能輕松搞定這一切 2.4w次閱讀
- 基于ATmega16單片機的智能快速充電機設計與實現 4520次閱讀
- 74hc164驅動共陰數碼管與共陽數碼管_74hc164驅動源程序 1.4w次閱讀
- Atmega32M1的電動工具電機驅動方案 1748次閱讀
下載排行
本周
- 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次下載 | 免費
評論
查看更多