2024年1月10日發(作者:名字男孩)

智能小車
1
學 校:江漢大學學 院:物信學院班級、姓名:
10通信 曹聰慧
10自二 彭洋
摘要:
本系統采用STC89C52作為主控制芯片,采用7805作為穩壓芯片,采用L9110芯片作為直流電機驅動,在PWM控制下,小車自動尋路,快慢速行駛和轉向。三者的結合使小車更加智能化,自動化,并用霍爾元件測速,用1602液晶把速度顯示出來。電路結構簡單,可靠性能高。
關鍵詞:STC89C52單片機、PWM調速、自動循跡,測速
2
目 錄
1.系統方案.............................................4
1.1 車體設計........................................4
1.2 控制器模塊......................................4
1.3電機模塊.........................................4
1.4電機驅動模塊.....................................5
1.5測速模塊........................................ 5
1.6電源模塊.........................................5
1.7最終方案.........................................6
2.系統硬件設計.........................................7
2.1電源模塊的設計.................................. 7
2.1控制模塊的設計...................................6
2.1循跡模塊的設計...................................6
2.1電機驅動模塊的設計..............................7
2.1測速模塊的設計...................................7
3.軟件程序的設計.......................................10
3.1總體流程圖 .......................................10
3.2軟件大體思路...................................10
4.系統功能測試.........................................9
4.1 問題分析及解決..................................10
5.總結.........................................12
(附錄)
3
系統方案
1.1 車體設計
自己制作電動車。一般的說來,自己制作的車體比較粗糙,性能不太穩定。但只要對車體仔細制作,通過優良的控制算法,也能實現控制小車前進轉彎的功能。
1.2 控制器模塊
采用STC公司的STC89C52單片機作為主控制器。STC89C52是一個低功耗,高性能的51內核的CMOS 8位單片機,片內含8k空間的可反復擦些1000次的Flash只讀存儲器,具有256 bytes的隨機存取數據存儲器(RAM),32個IO口,2個16位可編程定時計數器。且該系列的51單片機可以不用燒寫器而直接用串口或并口就可以向單片機中下載程序。我們自己制作51最小系統板,體積很小,下載程序方便,放在車上不會占用太多的空間。
1.3電機模塊
方案一:采用步進電機實現物體的精確定位和方向控制。步進電機可以作為一種控制用的特種電機,可以精確地控制角度和距離。缺點是相對體積較大,力矩比較小,容易失步,而且價格比較昂貴。
方案二:采用普通直流電機。直流電機運轉平穩,精度有一定的保證。直流電機控制的精確度雖然沒有步進電機那樣高,但完全可以滿足本題目的要求。通過單片機的PWM輸出同樣可以控制直流電機的旋轉速度,實現電動車的速度控制。并且直流電機相對于步進電機 4
價格經濟。
我們選擇方案二,使用直流電機作為電動車的驅動電機。
1.4電機驅動模塊
采用電機驅動芯片L9110。L9110 是為控制和驅動電機設計的兩通道推挽式功率放大專用集成電路器件,將分立電路集成在單片IC
之中,使外圍器件成本降低,整機可靠性提高。該芯片有兩個TTL/CMOS。兼容電平的輸入,具有良好的抗干擾性;兩個輸出端能直接驅動電機的正反向運動,它具有較大的電流驅動能力,每通道能通過750~800mA 的持續電流,峰值電流能力可達1.5~2.0A;同時它具有較低的輸出飽和壓降;內置的鉗位二極管能釋放感性負載的反向沖擊電流,使它在驅動繼電器、直流電機、步進電機或開關功率管的使用上安全可靠。
1.5 測速模塊
本系統中選用霍爾元件測速。如果把霍爾元件集成的開關按預定位置有規律地布置在物體上,當裝在運動物體上的永磁體經過它時,可以從測量電路上測得脈沖信號。根據脈沖信號列可以傳感出該運動物體的位移。若測出單位時間內發出的脈沖數,則可以確定其運動速度。
1.6電源模塊
在本系統中,需要用到的電源有單片機的5V,7805芯片的電源5V和電機的電源7-15V。所以需要對電源的提供必須正確和穩定可靠。
5
方案一:用9V的鋅電源給前、后輪電機供電,然后使用7805穩壓管來把高電壓穩成5V分別給單片機和電機驅動芯片供電。這種接法比較簡單。
方案二:采用雙電源。為了確保單片機控制部分和后輪電機驅動的部分的電壓不會互相影響,要把單片機的供電和驅動電路分開來,即:用直流電12v供給單片機,后輪電機的電源用5V供電,這樣有助于消除電機干擾,提高系統的穩定性。
基于以上分析,我們選擇了方案一,采用7805芯片供電。
1.7最終方案
經過反復論證,我們最終確定了如下方案:
1車體用塑膠車架手工制作。
2采用STC公司的STC89C52單片機作為主控制器。
3電機采用直流電機。
4采用專用芯片L9110作為電機驅動芯片。
5采用7805供電。
6采用霍爾元件測速
6
系統硬件設計
2.1電源模塊電路圖為:
2.2控制模塊電路圖為:
2.3循跡模塊電路圖為:
7
2.4測速模塊電路圖為:
2.5電機驅動電路的設計
L9110 是為控制和驅動電機設計的兩通道推挽式功率放大專用集成電路器件,將分立電路集成在單片IC 之中,使外圍器件成本降低,整機可靠性提高。該芯片有兩個TTL/CMOS。兼容電平的輸入,具有良好的抗干擾性;兩個輸出端能直接驅動電機的正反向運動,它具有較大的電流驅動能力,每通道能通過750~800mA 的持續電流,峰值電流能力可達1.5~2.0A;同時它具有較低的輸出飽和壓降;內置的鉗位二極管能釋放感性負載的反向沖擊電流,使它在驅動繼電器、直流電機、步進電機或開關功率管的使用上安全可靠。
芯片引腳和功能如圖1,驅動電路如圖2。
序號符號 功能
1 OA A 路輸出管腳
2 VCC 電源電壓
3 VCC 電源電壓
4 OB B 路輸出管腳
5 GND 地線
6 IA A 路輸入管腳
7 IB B 路輸入管腳
8 GND 地線
8
圖1 L298N的引腳和功能
圖2 驅動電路圖
9
軟件程序的設計
3.1總體流程圖
3.2軟件大體思路
由于硬件的設計軟件大體思路便定下來了。我們采用了三個紅外對管加上D/A對黑線循跡的處理,小車沒有舵機,前輪為單萬向輪,因此我們用電機的速度差便可以轉向。軟件中再插入霍爾元件測速及在LCD上的顯示。
三個紅外對管便有八種情況,去掉中間是白線兩邊黑線的情況我們為軟件量身定做了八種電機的轉動情況以應對各種情況。
電機的控制則采用脈寬調節的方式,用PWM控制轉速。
由于為了提高速度,我們保持直道高速行駛,必然導致大彎轉不過來,因此程序中加上了對從跑到中甩出去的處理,做急轉彎或者倒退,讓黑線回到探頭底下。
測速則采用中斷計時的策略,對下降沿進行累計算出速度并且在LCD上顯示出來。
程序源代碼在后面的附錄中。
10
系統功能測試
測試設備:特定跑道
4.1 問題分析及解決
硬件做好后,我們用軟件對車子在特定跑到上進行調試。出現了以一些問題,彎道太急速度較快拐不過去,由于檢測頻率太高容易出現一些誤判,循跡檢測頻率太小導致車體走較直的線兩邊擺動很明顯,影響速度。
首先我們需要找到一種合適的循跡頻率及轉速保證車體可以“咬住”黑線。經過多次更改占空比以及循跡頻率,最終定下了較好的值,能使走較直的線時車子比較平穩。
然后我們再對三個探頭同時檢測到白色時的情況進行處理,解決了這也就解決了過大彎以及找不到路徑的處理。經過調試,最終解決了這個問題,在程序遇到這種情況前紀錄下前一狀態,遇到狀態時做相應的校正處理,前一狀態拐彎飛出去了就做急轉彎尋找黑線,前一狀態為直線飛出去了車子就做倒車處理,這樣最終我們就解決各種問題。最終完成了這個設計。
11
總結
實驗室是一個很培養人動手能力的地方,在這里同學們都十分努力也十分有創意,其中不乏很多很優秀的同學們。進入大學以來就一直想進入實驗室好好鍛煉一下自己。于是,我們通過一個多月的準備,我們兩個一個做的是計算器,一個是做的也是一個很新穎的電子產品,但是我們知識儲備還有動手能力還遠遠不足以在以后的專業領域立足,對于很多東西還不是很了解。因此在通過了實驗室的選拔后,我們暑假期都義無反顧地留在了實驗室里面,學習更多的知識。
在這一個月的時間里我們都自學了51單片機,并且也焊也調試了功率放大器等的電路,之后的小車制作對我們來說可以說是一個最大的挑戰。我們兩個先討論了制作小車的方案和分工安排,一個是主要負責焊接電路,另外一個是負責軟件的編寫,之后再兩個人一起來對小車進行調試。一般來說都是制定計劃容易,實踐計劃難,正如上所說,在過程中我們遇到了一個又一個的難題。先是在最小系統的芯片和下面的電路連接不是很好上面有了一些問題,但是這個問題我們一開始并沒有發現,在之后的電機模塊和循跡模塊上面的硬件方面有一點小問題,但是也是很快就找到了,不過一直隱藏的問題還沒有解決,也一直貫穿在我們做小車的始終。液晶的模塊焊上去以后,液晶時而顯示時而不顯示時而又是亂碼,反反復復檢查電路,還是找不到。有時我們看見電機可以轉,液晶顯示的也是好的就下去去調試,可是總是下去調了不久就又有了問題。在硬件方面我們也是糾結了很多天。重新焊了兩次最小系統,后來也許是我們太急了,到后來把芯片 12
也燒了,但是我們最后還是冷靜了下來,一步一步地把電路和程序調好了,車子也在參數一次一次的改動下跑的在穩中越來越快。看著一起努力的結果,心里面既有喜悅也有辛酸。
在這次的小車制作中,也讓我們學到了很多的東西。首先,是學會團結,只有一個團隊一起努力才能取得成功。再次,就是不能忽略掉任何小的細節,這次卻是因為硬件的一些小問題走了很多的彎路。最后,是學會創新,我們在程序里面多加了很多對自己小車的想法,并付諸實踐獲得了成功。希望以后可以多動手做一些電子的作品,取得更大的進步。
江漢大學10通信
曹聰慧
2012-7-29
13
總結
首先祝賀我和我的隊友圓滿完成智能小車的項目!
在這我懷著無比開心的心情總結一下在實驗室的學習。
來到實驗室是很好的選擇,特別是對于我們這個專業來說,不但能充實自己的業余時間,更可以充實自己自身!
我來到實驗室正式學習已經一個月了,又想起當初義無反顧的想進實驗室,我做出了多少努力,面對老師選拔時布置的任務,我非常認真的完成,最終才獲得在實驗室學習的這個機會。
在這一個月里,我依然沒有因放假而太放松自我,自主學習了51單片機,對單片機以及控制原理有了進一步的了解,完成了實驗室布置的自主學習51單片機的全部任務。而老師請人辦的講座以及講座后的練習也讓我們學到了好多理論和實踐上的東西。最后做智能小車這一項目更是鍛煉人,我們在做小車的時候遇到了無數問題,我敢說我們組碰到的問題是最多的,而解決讓問題也讓我們收獲最大!我們不斷的失敗,不斷的檢測問題,想解決方案,并總結問題,讓我們變得更強!
在實驗室我學到了許多許多知識,培養了我的實踐能力以及解決問題的能力,更好的理解了團隊,曾強了自主學習的能力,更使我對我自己的專業有了更大的愛好!感謝實驗室,感謝秦老師以及其他老師,感謝實驗室的同學們,感謝我的團隊!!
預祝我們實驗室在此次省賽中取得好成績!
14
彭洋
附錄
源代碼主要部分:
main()
{
lcd_init(); // 初始化LCD
delay(10);
EA=1;
TMOD=0x11;
TH0 = 0x4C;
TL0 = 0xD0;
TH1 = 0xfe;
TL1 = 0x83;
TR0=1;
ET0=1;
TR1=1;
ET1=1;
lcd_dis(3,0,":0.00m/s",8);
lcd_dis(3,1,":0.00m/s",8);
lcd_zdy1(dis1) ;
lcd_zdy2(dis2) ;
lcd_dis(8,0,"m/s",3);
lcd_disonechar(3,0,58);
lcd_disonechar(5,0,46);
lcd_disonechar(1,0,0);
lcd_disonechar(2,0,1);
lcd_dis(8,1,"m/s",3);
lcd_disonechar(3,1,58);
lcd_disonechar(5,1,46);
lcd_disonechar(1,1,2);
lcd_disonechar(2,1,3);
lcd_disonechar(1,0,0);
lcd_disonechar(2,0,1);
while(1)
{
xunji();
cesu();
}}
xunji()
{ P1=0xff;
switch(P1)
15
{ ca 0xfa: PWM1();a=0 ;break; //010直走
ca 0xfe: PWM7();a=1 ;break; //110微右偏
ca 0xfb: PWM6();a=2 ;break; //011微左偏
ca 0xfc: PWM3();a=1 ;break; //100右偏
ca 0xf9: PWM2();a=2 ;break; //001左偏
ca 0xf8: if(a==1) PWM5();if(a==2) PWM4();if(a==0) PWM8();break;
default: PWM1();break; }}
cesu()
{ if(c1==1)
f1=1;
el if(c1==0&&f1==1)
{
f1=0;
temp1++;
}
if(c2==1)
f2=1;
el if(c2==0&&f2==1)
{
f2=0;
temp2++;
}
if(m==20) //每秒脈沖數
{ v1=temp1*4;// 每次脈沖走4cm
v2=temp2*4;
m=0;
temp1=0;temp2=0; }
lcd_disonechar(4,0,v1/100+0x30);
lcd_disonechar(6,0,v1/10%10+0x30);
lcd_disonechar(7,0,v1%10+0x30);
lcd_disonechar(4,1,v2/100+0x30);
lcd_disonechar(6,1,v2/10%10+0x30);
lcd_disonechar(7,1,v2%10+0x30); }
void time1() interrupt 1
{
TH0=0x4c;
TL0=0xd0;
m++; }
void time2() interrupt 3
{ TH1 = 0xfd;
TL1 = 0x83; t++;}
16
本文發布于:2024-01-10 05:26:34,感謝您對本站的認可!
本文鏈接:http://www.newhan.cn/zhishi/a/1704835594134984.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:智能小車設計報告.doc
本文 PDF 下載地址:智能小車設計報告.pdf
| 留言與評論(共有 0 條評論) |