找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 16319|回復(fù): 5
收起左側(cè)

Arduino循跡小車制作總結(jié)

[復(fù)制鏈接]
ID:320288 發(fā)表于 2019-1-26 22:04 | 顯示全部樓層 |閱讀模式
本帖最后由 zzh啊 于 2019-1-28 17:13 編輯

P90103-201310.jpg
跟著老師一起做機(jī)電導(dǎo)論項(xiàng)目,其實(shí)就是制作一個(gè)循跡小車。
說(shuō)在前面:
可能有很多像很多我這樣的新手搜到我這樣的第一時(shí)間會(huì)馬上去找代碼,希望直接下載到小車?yán)锿瓿扇蝿?wù)就完事了。但是這樣是不好的,對(duì)自己的成長(zhǎng)并沒(méi)有好處,我的小車的引腳連的是什么,我的小車的結(jié)構(gòu),我的小車的狀況和你的是不一樣的。還是建議這樣的像我一樣的新手系統(tǒng)的去學(xué)習(xí)各種基礎(chǔ)知識(shí),至少至少要能看懂代碼。
小車信息如下:
1.電源
這次課設(shè)用的小車電源是7.4V、300mAh,對(duì)單片機(jī)這個(gè)電壓有點(diǎn)太高,對(duì)輪子有點(diǎn)太低,因此我認(rèn)為小車上應(yīng)該有穩(wěn)壓和升壓的部分,確保小車能夠正常工作。
2.電機(jī)驅(qū)動(dòng)
我本人曾經(jīng)接觸電機(jī)驅(qū)動(dòng),知道要使電機(jī)轉(zhuǎn)動(dòng)需要外加驅(qū)動(dòng)實(shí)現(xiàn)。
驅(qū)動(dòng)板同時(shí)驅(qū)動(dòng)兩個(gè)直流電機(jī),通過(guò)對(duì)六個(gè)口的控制就可以分別實(shí)現(xiàn)對(duì)電機(jī)正反轉(zhuǎn),加減速的控制,完成向前向后右轉(zhuǎn),左轉(zhuǎn)等各種組合運(yùn)動(dòng),每個(gè)電機(jī)用三個(gè)口控制,使能端和PWM輸入端控制電機(jī)的轉(zhuǎn)動(dòng)與停止,也能用于控制調(diào)速。也就是說(shuō),對(duì)于這個(gè)輸入端輸入一定頻率的脈沖,電機(jī)一段時(shí)間內(nèi)轉(zhuǎn)動(dòng)一段時(shí)間內(nèi)停止轉(zhuǎn)動(dòng),但是由于直流電機(jī)的慣性特征,它不會(huì)立即停下來(lái),只要頻率比某個(gè)值就不會(huì)感覺到電機(jī)的停止現(xiàn)象,而是一種很連續(xù)的運(yùn)動(dòng),只改變一個(gè)周期內(nèi)高低壓的時(shí)間比例,就可以改變電機(jī)的速度。另外兩個(gè)輸入端是為了控制方向。
3.小車的整體設(shè)計(jì)
小車為五路雙驅(qū)小車,最前方是萬(wàn)向輪,五路傳感器對(duì)稱分布,且不位于同一直線上。左右兩個(gè)電機(jī)和輪胎對(duì)稱分布,大小相同,便于程序的撰寫和修改。
小車的轉(zhuǎn)向依賴于左右輪查速,左輪快右輪慢則右轉(zhuǎn),在轉(zhuǎn)急彎時(shí)甚至可以讓一個(gè)輪子倒轉(zhuǎn)實(shí)現(xiàn)更好的轉(zhuǎn)彎效果

其實(shí)一個(gè)月前我也是個(gè)渣渣,那時(shí)候也特別想了解arduino小車,學(xué)校早就發(fā)了,也找了很多資料,沒(méi)有系統(tǒng)學(xué)習(xí),沒(méi)有人領(lǐng)進(jìn)門,雖然看起來(lái)很用功,但是實(shí)際上去做循跡一點(diǎn)也做不來(lái),程序也不會(huì)寫,這次跟著老師學(xué),雖然還是個(gè)小渣渣,但是已經(jīng)算是進(jìn)門了,可以組裝小車,可以自主寫一些程序,現(xiàn)在在試著做避障小車 P90126-155643.jpg P90126-155654.jpg
簡(jiǎn)單循跡策略
首先是紅外對(duì)管
原理就不講了,紅外對(duì)管用來(lái)探測(cè)黑線白線,黑線白線傳遞的信號(hào)是不一樣的,我們根據(jù)五個(gè)探測(cè)器不同的狀態(tài)判斷小車和線,


啊偶,原來(lái)可以繼續(xù)編輯,我接上面的寫吧,
把五個(gè)傳感器分為12345號(hào),我們可以通過(guò)判斷12345號(hào)反饋的信號(hào)(即像圖中這種狀況就是1號(hào)傳感器感應(yīng)到黑線,這種情況就是偏左太多了),根據(jù)反饋的情況合理控制小車的速度和轉(zhuǎn)彎速度。



把程序讀懂

下面是
定義各個(gè)引腳叫什么,其實(shí)引腳不定義也可以,但是寫程序時(shí)去記住每一個(gè)數(shù)字而不是代號(hào)要困難得多。所以要盡可能去給每個(gè)引腳起一個(gè)好的名字,方便管理和后編寫程序,

  #define right1 5   
#define speedPinRight 6        
//一個(gè)輪子轉(zhuǎn)動(dòng)有三個(gè)因素:PWM調(diào)速,使能端1,使能端2,這里就是在定義輪子的三個(gè)因素

#define right2 7          //
#define left1 8         //
#define speedPinLeft 9    //
void setup()
{
  pinMode(right1,OUTPUT);
  pinMode(right2,OUTPUT);
  pinMode(speedPinRight,OUTPUT);
  pinMode(left1,OUTPUT);
  pinMode(left2,OUTPUT);
  pinMode(speedPinLeft,OUTPUT);
  1. <div>void setup() {</div><div> 這里放一下arduino的結(jié)構(gòu),這一部分可以理解為初始化,放一些定義的東西</div><div>
  2. </div><div>}</div><div>
  3. </div><div>void loop() {</div><div>  // put your main code here, to run repeatedly:</div><div>
  4. </div><div>}</div>
復(fù)制代碼




評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:320288 發(fā)表于 2019-1-28 11:42 | 顯示全部樓層
S90128-11145363.jpg
把五個(gè)傳感器分為12345號(hào),我們可以通過(guò)判斷12345號(hào)反饋的信號(hào)(即像圖中這種狀況就是1號(hào)傳感器感應(yīng)到黑線,這種情況就是偏左太多了),根據(jù)反饋的情況合理控制小車的速度和轉(zhuǎn)彎速度。
有一個(gè)事忘說(shuō)了
可能有很多像很多我這樣的新手搜到我這樣的第一時(shí)間會(huì)馬上去找代碼,希望直接下載到小車?yán)锿瓿扇蝿?wù)就完事了。但是這樣是不好的,對(duì)自己的成長(zhǎng)并沒(méi)有好處,我的小車的引腳連的是什么,我的小車的結(jié)構(gòu),我的小車的狀況和你的是不一樣的。還是建議這樣的像我一樣的新手系統(tǒng)的去學(xué)習(xí)各種基礎(chǔ)知識(shí),至少至少要能看懂代碼。
回到正題
  1. <p class="MsoNormal"><span lang="EN-US">int qzpwm=5;<o:p></o:p></span></p>

  2. <p class="MsoNormal"><span lang="EN-US">int qz1=2;<o:p></o:p></span></p>

  3. <p class="MsoNormal"><span lang="EN-US">int qz2=3;<o:p></o:p></span></p>

  4. <p class="MsoNormal"><span lang="EN-US">int qypwm=6;<o:p></o:p></span></p>

  5. <p class="MsoNormal"><span lang="EN-US">int qy1=4;<o:p></o:p></span></p>

  6. <p class="MsoNormal"><span lang="EN-US">int qy2=7;<o:p></o:p></span></p>

  7. <p class="MsoNormal"><span lang="EN-US">int hzpwm=9;<o:p></o:p></span></p>

  8. <p class="MsoNormal"><span lang="EN-US">int hz1=10;<o:p></o:p></span></p>

  9. <p class="MsoNormal"><span lang="EN-US">int hz2=8;<o:p></o:p></span></p>

  10. <p class="MsoNormal"><span lang="EN-US">int hypwm=11;<o:p></o:p></span></p>

  11. <p class="MsoNormal"><span lang="EN-US">int hy1=13;<o:p></o:p></span></p>

  12. <p class="MsoNormal"><span lang="EN-US">int hy2=12;</span></p>
復(fù)制代碼
這些是干嘛的呢
下回再講吧
回復(fù)

使用道具 舉報(bào)

ID:1 發(fā)表于 2019-1-28 17:51 | 顯示全部樓層
先點(diǎn)擊工具欄代碼框的標(biāo)志<>,然后粘貼代碼,點(diǎn)提交就不會(huì)出現(xiàn)亂碼的
回復(fù)

使用道具 舉報(bào)

ID:320288 發(fā)表于 2019-1-28 18:19 | 顯示全部樓層
admin 發(fā)表于 2019-1-28 17:51
先點(diǎn)擊工具欄代碼框的標(biāo)志,然后粘貼代碼,點(diǎn)提交就不會(huì)出現(xiàn)亂碼的

好滴,明白了。
回復(fù)

使用道具 舉報(bào)

ID:477270 發(fā)表于 2019-2-16 22:39 | 顯示全部樓層
這個(gè)真不錯(cuò)的制作
回復(fù)

使用道具 舉報(bào)

ID:729666 發(fā)表于 2020-4-15 13:07 | 顯示全部樓層
請(qǐng)問(wèn)樓主可以分享下電路設(shè)計(jì)和零配件型號(hào)嘛 非常感謝
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表