資料介紹
電路板圖如下:
描述
電機(jī)驅(qū)動板 Atmega328PU 和 HC01
?
嘿,如果你正在制作一個基本的機(jī)器人設(shè)置,一個電機(jī)驅(qū)動器控制器板,它通過板載 MCU 控制電機(jī)驅(qū)動器并具有用于藍(lán)牙連接的 HC01 BT 模塊,那么這里有什么超級酷和有用的東西。
?
?
?
?
我在 PCB 上添加了四個安裝孔,因此我可以添加 PCB 支架以將電機(jī)驅(qū)動器固定在電路板的頂部。使用支架是一種聰明的方法,因?yàn)槲覀兛梢允褂眠@種方法添加多個模塊,只需將它們堆疊在一排支架中即可。
我還在電路板的一側(cè)添加了一個 HC-SR04 超聲波傳感器分線針,因此它可以用來制作一個避障機(jī)器人。
本文將介紹這款電機(jī)驅(qū)動器的構(gòu)建過程,讓我們開始吧。
?
材料
以下是我在這個項(xiàng)目中使用的東西-
- 定制PCB
- Atmega328PU
- 22PF 蓋 0603 封裝
- 16MHz晶體
- 10K電阻0603封裝
- 1K電阻0603封裝
- 指示燈 LED 0603 封裝
- AMS1117 穩(wěn)壓器
- HC01 藍(lán)牙模塊
- 10uF 電容 1206 封裝
- 1uF 電容 1206 封裝
- IC 插座 DIP 28
- USB 微型端口
- 排針插座
- Arduino 作為用于閃爍 Atmega328PU 的 ISP 設(shè)置
- PCB 支架
- 馬達(dá)
- 超聲波傳感器 HC-SR04
- 電池組 12V
- 電機(jī)驅(qū)動器 L298N
?
示意圖
?
?
這是我準(zhǔn)備的原理圖,它由與 HC01 模塊連接的最小 Atmega328PU 設(shè)置組成。在 Atmega328PU 和 HC01 之間,有一個 AMS1117 3.3V 穩(wěn)壓器,用于將 5V 從 VCC 降壓到 3.3V 以使 HC01 工作。
我添加了一堆連接器,用于將東西與 atmega 連接,其中包括 ISP 輸出,Atmega 的分支 SPI 引腳用于閃爍,然后我還添加了用于電機(jī)驅(qū)動器 IN1、IN2、IN3 和 IN4 的 CON4 與 D6、D9、D10 和D11。
我還添加了一些帶 D2、D3 和 D4 的 LED 以及一個 CON4 插頭引腳,用于將超聲波傳感器與該板連接。
完成原理圖后,我將其轉(zhuǎn)換為電路板文件。
?
PCB設(shè)計(jì)
?
?
至于設(shè)計(jì),我制作了一個邊緣有倒角的矩形板,還在板的中心放置了四個安裝孔,這樣我就可以使用 Standoffs 將 L298N 電機(jī)驅(qū)動器放置在這個 PCB 上。
?
PCBWAY
?
?
完成設(shè)計(jì)后,我在PCBWAY的報(bào)價(jià)頁面上傳了Gerber數(shù)據(jù),選擇了紅色的阻焊層顏色,然后下單。
下訂單后,我在一周內(nèi)收到了 PCB,PCB 質(zhì)量非常好。
?
?
?
這種形狀是完全隨機(jī)的,所以很難制作,但他們在制作這個 PCB 方面做得非常出色,沒有任何錯誤。
?
一定要檢查一下,以更低的價(jià)格獲得出色的 PCB 服務(wù)。
?
電路板組裝
?
PCB組裝過程將具有以下步驟。
- 錫膏點(diǎn)膠
- 拾取和放置過程
- 熱板回流
- 添加剩余的 THT 組件
- 刻錄引導(dǎo)加載程序
?
?
焊膏
?
第一步是在每個元件焊盤上涂抹焊膏。
我使用了普通的 Sn-Pb 焊膏,其熔化溫度為 140 至 270 °C。
添加錫膏后,我們進(jìn)入下一個過程,即“PICK & Place Process”
?
挑選和放置
?
然后,我使用 ESD Tweeaser 小心地將每個 SMD 組件一個一個地挑選并放置在指定的位置,這需要大約 30 秒的時(shí)間,但結(jié)果是一個完美的 PCB,所有組件都放置在它們的位置。
?
熱板回流
?
?
?
在“PICK & Place Process”之后,我小心翼翼地將整個電路板抬起并放在我的 DIY SMT Hotplate 上,它也是自制的,就像這個項(xiàng)目一樣。
幾分鐘后,當(dāng)熱板達(dá)到焊膏熔化溫度時(shí),所有組件都將通過此熱回流工藝焊接。
然后我們從熱板上取下 PCB 以冷卻所有組件和電路板表面。
?
?
然后我通過 USB 端口插入 5V 電源以檢查 HC01 是否工作,如果設(shè)置正常工作,HC01 一側(cè)的 LED 將閃爍。
?
THT 組件
?
?
?
最后,我們將 THT 組件添加到 PCB,它們是 Atmega 插座和接頭引腳。
完成后,我們的電路就完成了!
?
Atmega328PU 通過 Arduino 作為 ISP 燒錄引導(dǎo)加載程序
?
?
?
現(xiàn)在,此設(shè)置使用 Atmega328PU。Atmega328PU 有一個小十六進(jìn)制文件,稱為引導(dǎo)加載程序,類似于 BIOS。便宜的 atmega328PU 通常不附帶預(yù)裝的引導(dǎo)加載程序,因此我必須將引導(dǎo)加載程序刻錄到 MCU 上,為此,我使用了我之前的一個項(xiàng)目,即基于 Arduino 的 Attiny Programmer。
?
該程序員是為將引導(dǎo)加載程序和 Flash 代碼刻錄到 Attiny MCU 中,使用上傳到常規(guī) Arduino Nano R3 的“Arduino as ISP Sketch”進(jìn)行一些調(diào)整(在復(fù)位和 GND 之間添加 1uf Cap)
請參閱我以前的項(xiàng)目以制作此程序員并開始使用此閃爍方法。
?
我將 Atmega328PU 的 SPI 引腳通過 Arduino Nano 的 SPI 引腳通過一個插頭插座連接在一起,并燒錄 Atmega328PU 的引導(dǎo)程序,并上傳 ULTRASONIC SENSO TEST SKETCH 用于測試 Atmega 芯片。
?
?
測試草圖#1 超聲波傳感器
?
{
序列號.開始();
pinMode(trigPin,輸出);
pinMode(echoPin,輸入);
pinMode(LED,輸出);
pinMode(led2,輸出);
pinMode(led3,輸出);
}
{
,距離;
數(shù)字寫入(trigPin,低);
延遲微秒();
數(shù)字寫入(trigPin,高);
延遲微秒();
數(shù)字寫入(trigPin,低);
持續(xù)時(shí)間=脈沖輸入(回聲針,高);
距離 = (持續(xù)時(shí)間/ ) / ;
(距離 <= ){
數(shù)字寫入(領(lǐng)導(dǎo),高);
}
{
數(shù)字寫入(領(lǐng)導(dǎo),低);
}
(距離 < ){
數(shù)字寫入(led2,高);
}
{
數(shù)字寫入(led2,低);
}
(距離 < ){
數(shù)字寫入(led3,高);
}
{
數(shù)字寫入(led3,低);
}
延遲();
}
?
?
我將 HC-SR04 超聲波傳感器模塊添加到其分配的 Header Pin 插座中,并上傳了我制作的測試草圖。當(dāng)我們將任何東西放在它前面 30 厘米的距離處時(shí),第一個 LED 會發(fā)光,通過減小其他兩個 LED 發(fā)光的距離。
?
測試草圖#2 BT 終端 LED 開/關(guān)
?
垃圾;
字符串輸入字符串 = ;
? ? ? ? ? ? ? ? ? ?
{
?序列號.開始();? ? ? ? ? ?
?pinMode(,OUTPUT)也應(yīng)如此;
}
{
? (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點(diǎn)亮,發(fā)送“off”將其關(guān)閉。
?
添加帶 PCB 支架的電機(jī)驅(qū)動器
在測試板工作正常后,我繼續(xù)下一步,即使用 PCB Standoffs 將 L298N 電機(jī)驅(qū)動器添加到主板。
?
在主板和電機(jī)驅(qū)動器之間添加電線連接器
?
?
?
然后我在電機(jī)控制器的 VCC GND 和 5V 以及電機(jī)驅(qū)動器的 VCC GND 和 5V 之間添加了電線。
然后我在電機(jī)控制器的控制引腳和 Atmega328pu 的 Pwm 引腳之間添加了電線。
?
- ENA 和 ENB 均為高電平
- IN1 至 D6
- IN2 至 D9
- IN3 至 D10
- IN4 至 D11
設(shè)置完成,現(xiàn)在我們可以將電池添加到電機(jī)驅(qū)動器的 VCC 和 GND 端口,并將電機(jī)端子添加到電機(jī)驅(qū)動器的連接器。
?
添加電機(jī)和電池
?
?
?
?
最終草圖 - 測試電機(jī)
?
motorLpin1 = ;
motorLpin2 = ;
motorRpin1 = ;
motorRpin2 = ;
LED1 = ;
LED2 = ;
LED3 = ;
{
序列號.開始();
Serial.flush();
pinMode(motorLpin1,輸出);
pinMode(motorLpin2,輸出);
pinMode(電機(jī)Rpin1,輸出);
pinMode(電機(jī)Rpin2,輸出);
pinMode(LED1,輸出);
pinMode(LED2,輸出);
pinMode(LED3,輸出);
}
{
字符串輸入= ;
(Serial.available()){
輸入+=()Serial.read();
延遲();
}
(輸入== ){
馬達(dá)停止();
}
(輸入== ){
馬達(dá)前進(jìn)();
}
(輸入== ){
電機(jī)后退();
}
(輸入== ){
左電機(jī)();
}
(輸入== ){
右電機(jī)();
}
}
{
數(shù)字寫入(motorLpin1,HIGH);
數(shù)字寫入(motorLpin2,LOW);
數(shù)字寫入(motorRpin1,HIGH);
數(shù)字寫入(電機(jī)Rpin2,低);
數(shù)字寫入(LED1,高);
數(shù)字寫入(LED2,低);
數(shù)字寫入(LED3,低);
}
{
數(shù)字寫入(motorLpin1,LOW);
數(shù)字寫入(motorLpin2,HIGH);
數(shù)字寫入(電機(jī)Rpin1,低);
數(shù)字寫入(motorRpin2,HIGH);
數(shù)字寫入(LED1,低);
數(shù)字寫入(LED2,高);
數(shù)字寫入(LED3,低);
}
{
數(shù)字寫入(motorLpin1,HIGH);
數(shù)字寫入(motorLpin2,LOW);
數(shù)字寫入(電機(jī)Rpin1,低);
數(shù)字寫入(motorRpin2,HIGH);
數(shù)字寫入(LED1,低);
數(shù)字寫入(LED2,低);
數(shù)字寫入(LED3,高);
}
{
數(shù)字寫入(motorLpin1,LOW);
數(shù)字寫入(motorLpin2,HIGH);
數(shù)字寫入(motorRpin1,HIGH);
數(shù)字寫入(電機(jī)Rpin2,低);
數(shù)字寫入(LED1,低);
數(shù)字寫入(LED2,低);
數(shù)字寫入(LED3,高);
}
{
數(shù)字寫入(motorLpin1,LOW);
數(shù)字寫入(motorLpin2,LOW);
數(shù)字寫入(電機(jī)Rpin1,低);
數(shù)字寫入(電機(jī)Rpin2,低);
數(shù)字寫入(LED1,低);
數(shù)字寫入(LED2,低);
數(shù)字寫入(LED3,低);
}
?
?
?
我將上面的草圖上傳到 Atmega 中,然后添加了一個帶有電機(jī)驅(qū)動器連接器的齒輪直流電機(jī),并添加了一個 12V 電池組來為整個系統(tǒng)供電。
為了控制電機(jī),我正在使用與 HC01 模塊連接的 BT 終端應(yīng)用程序向 MCU 發(fā)送“F”表示前進(jìn),“B”表示后退。
為了停止電機(jī),我們通過 BT 端子發(fā)送“S”,電機(jī)停止旋轉(zhuǎn)。
?
下一步,做一個機(jī)器人
?
?
此電機(jī)控制器的下一步或下一步用途將是構(gòu)建一個機(jī)器人,我目前正在設(shè)計(jì)一個將使用此控制器設(shè)置的機(jī)器人,敬請期待。
如果您喜歡機(jī)器人,請查看我以前的機(jī)器人項(xiàng)目-
?
?
?
謝謝,PCBWAY 支持這個項(xiàng)目,如果你需要更好的 PCB 服務(wù)以降低成本,請檢查它們,我很快就會帶著新項(xiàng)目回來。
和平
?
代碼
?
|
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平臺的氣象站設(shè)計(jì) 3次下載
- 基于Atmega328P PU的EEPROM 1次下載
- 使用ATmega328的七段顯示驅(qū)動程序
- ATmega328/168/8/48/88編程屏蔽開源
- AtMega328編程/開發(fā)板開源分享
- 用于無線電發(fā)射器HC12的帶有ATmega328p的PCB
- Atmega328 led動畫或vumeter開源分享
- Atmega328時(shí)鐘開源分享
- 用于測試Atmega328/Arduino Uno和Atmega1284/p的板
- 最低系統(tǒng)ATmega328p開源
- ATMEGA 328P與L293D電機(jī)驅(qū)動器開源
- 基于ATmega328的Arduino的變頻驅(qū)動器 4次下載
- ATMEGA328數(shù)據(jù)手冊.英文版pdf 0次下載
- Atmega328p-pu與Atmega16A-PU區(qū)別
- Arduino Atmega328P開發(fā)板軟件下載與安裝 130次下載
- 電機(jī)驅(qū)動板發(fā)燙嚴(yán)重的原因分析 597次閱讀
- 開源電機(jī)驅(qū)動器開發(fā)方法與實(shí)現(xiàn) 1132次閱讀
- CLN17電機(jī)驅(qū)動器的特點(diǎn)和應(yīng)用場景 1293次閱讀
- 如何利用ATmega328P構(gòu)建一個可靠的LoRa設(shè)備 5274次閱讀
- 如何為ATmega328P刷bootloader? 6919次閱讀
- dfrobot四路電機(jī)驅(qū)動板簡介 3763次閱讀
- dfrobotPPM雙路電機(jī)驅(qū)動板簡介 2245次閱讀
- 微雪電子樹莓派電機(jī)驅(qū)動板介紹 3272次閱讀
- 微雪電子樹莓派步進(jìn)電機(jī)驅(qū)動板|Stepper Motor HAT介紹 5195次閱讀
- 如何采用Arduino系統(tǒng)板進(jìn)行單片機(jī)編程 6269次閱讀
- 一種用 74hc138 和 74hc595 驅(qū)動 8x8 點(diǎn)陣顯示技術(shù) 1w次閱讀
- 用Arduino Uno開發(fā)板和一塊面包板就能輕松搞定這一切 2.4w次閱讀
- 基于ATmega16單片機(jī)的智能快速充電機(jī)設(shè)計(jì)與實(shí)現(xiàn) 4240次閱讀
- 74hc164驅(qū)動共陰數(shù)碼管與共陽數(shù)碼管_74hc164驅(qū)動源程序 1.4w次閱讀
- Atmega32M1的電動工具電機(jī)驅(qū)動方案 1711次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評論
查看更多