四輪驅(qū)動的無線遙控智能車設(shè)計與實現(xiàn)
四輪驅(qū)動的無線遙控智能車設(shè)計與實現(xiàn),四輪驅(qū)動,無線,遙控,智能,設(shè)計,實現(xiàn)
本次設(shè)計的小車?yán)盟欧C(jī)驅(qū)動,單片機(jī)控制的。小車為機(jī)器人的雛形,由于使用伺服機(jī)控制,其動作的精度非常高,用途非常的廣泛,比如可用于較窄的人無法進(jìn)入的管道進(jìn)行查看,像下水管道,大型工廠的排線管道,軍事上的排除炸彈等等。一、小車系統(tǒng)介紹 控制系統(tǒng)原理如圖1所示: 圖1 電氣控制圖 伺服機(jī)控制系統(tǒng)的控制電路分為以下幾部分:(1)單芯片89C51控制部分的核心元件,采用89C51。(2)伺服機(jī)的接口伺服機(jī)的接口所示如圖2。圖2 伺服機(jī)接口 圖3 按鍵電路 為伺服機(jī)提供電源。(3)控制按鍵電路 按鍵電路如圖3所示。用來控制小車前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)。(4)電源電路圖4 電源電路 圖5 晶振電路 圖6 復(fù)位電路電源電路如圖4所示。為單片機(jī)和伺服機(jī)提供電源。(5)晶振電路晶振電路如圖5所示。為單片機(jī)提供脈沖,晶振頻率范圍為1.233HZ。(6)復(fù)位電路復(fù)位電路如圖6所示。使單片機(jī)復(fù)位。二、89C51單片機(jī)的組成1.中央處理器CPU中央處理器簡稱CPU,是單片機(jī)的核心,用于完成運算和控制操作。中央處理器包括運算器和控制器兩部分電路。(1)運算電路運算電路是單片機(jī)的運算部件,用于實現(xiàn)算術(shù)和邏輯運算。算術(shù)邏輯單元ALU、累加器、B寄存器、程序狀態(tài)字和兩個暫存寄存器等都屬于運算器電路。運算電路以ALU為核心,基本的算術(shù)運算和邏輯運算均在其中進(jìn)行,包括加、減、乘、除、增量、減量、十進(jìn)制調(diào)整、比較等算術(shù)運算,“與”、“異或”等邏輯運算,左、右移位和半字節(jié)交換等操作。 (2)控制電路控制電路是單片機(jī)的指揮控制部件,保證單片機(jī)各部分能自動而協(xié)調(diào)地工作。程序計數(shù)器、PC加1寄存器、指令寄存器、指令譯碼器、定時控制電路以及振蕩電路等均屬于控制電路。1. 內(nèi)部數(shù)據(jù)存儲器內(nèi)部數(shù)據(jù)存儲器包括RAM(128*8)和RAM地址寄存器,用于存放可讀/寫的數(shù)據(jù)。實際上80C51芯片中共有256個RAM單元,但其中后128個單元為專用寄存器,能作為普通RAM存儲器供用戶使用的只是前128個單元。因此,通常所說的內(nèi)部數(shù)據(jù)存儲器是指前128個單元,簡稱“內(nèi)部RAM”。2內(nèi)部程序存儲器內(nèi)部程序存儲器包括ROM(4K*8)和程序地址寄存器等。80C51共有4KB掩膜ROM,用于存放程序和原始數(shù)據(jù),因此稱之為程序存儲器,簡稱“內(nèi)部ROM”3定時器/計數(shù)器由于控制應(yīng)用的需要,80C51共有兩個16位的定時器/計數(shù)器,用定時器/計數(shù)器0和定時器/計數(shù)器1表示,用于實現(xiàn)定時或計數(shù)功能,并以其定時或計數(shù)結(jié)果對單片機(jī)進(jìn)行控制。4. 并行I/O口80C51共有4個8位并行I/O(P0、P1、P2、P3),以實現(xiàn)數(shù)據(jù)的并行輸入/輸出。三89C51單片機(jī)的封裝與信號引腳1.芯片封裝形式80C51有40引腳雙列直插式DIP和44引腳方形扁平式QFP共兩種封裝形式。其中雙列直插式封裝芯片的引腳排列及芯片邏輯符號如圖7所示。圖7 89C51芯片2.芯片引腳介紹P0.0P0.7 P0口8位雙向口線P1.0P1.7 P1口8位雙向口線P2.0P2.7 P2口8位雙向口線P3.0P3.7 P3口8位雙向口線地址鎖存控制信號ALE在系統(tǒng)擴(kuò)展時可作為外部時鐘或外部定時脈沖使用。外部程序存儲器讀選通信號PSEN非在讀外部ROM時PSEN非有效(低電平),以實現(xiàn)外部ROM單元的讀操作。訪問程序存儲器控制信號EA非當(dāng)EA非信號為低電平時,對ROM的讀操作室針對外部程序存儲器的;而當(dāng)EA非信號為高電平時,對ROM的讀操作是從內(nèi)部程序存儲器開始,并可延續(xù)至外部程序存儲器。復(fù)位信號RST當(dāng)輸入的復(fù)位信號延續(xù)2個機(jī)器周期以上高電平時即為有效,用于完成單片機(jī)的復(fù)位操作。外接晶體引線端XTAL1和XTAL2當(dāng)使用芯片內(nèi)部時鐘時,XTAL1和XTAL2用于外接石英晶體諧振器和微調(diào)電容;當(dāng)使用外部時鐘時,用于接入外部時鐘脈沖信號。地線Vss+5V電源Vcc3.控制鍵盤電路鍵盤是單片機(jī)不可缺少的人機(jī)交互設(shè)備,鍵盤上的鍵猶如一個機(jī)械開關(guān),手按下鍵閉合,手放開鍵釋放。單片機(jī)系統(tǒng)中通常使用的鍵盤是價格便宜的非編碼矩陣式鍵盤。矩陣式鍵盤的鍵排列成矩陣形式,在行與列的每個交點上對應(yīng)有一個鍵。4.消除抖動由于按鈕是機(jī)械觸點,當(dāng)機(jī)械觸點斷開、閉合時,會有抖動,輸入端的波形。這種抖動對于人來說是感覺不到的,但對計算機(jī)來說,則是完全能感應(yīng)到的,因為計算機(jī)處理的速度是在微秒級,而機(jī)械抖動的時間至少是毫秒級,對計算機(jī)而言,這已是一個漫長的時間了。就是說按鈕有時靈,有時不靈,其實就是這個原因,你只按了一次按鈕,可是計算機(jī)卻已執(zhí)行了多次中斷的過程,如果執(zhí)行的次數(shù)正好是奇數(shù)次,那么結(jié)果正如你所料,如果執(zhí)行的次數(shù)是偶數(shù)次,那就不對了。為使CPU能正確地讀出P1口的狀態(tài),對每一次按鈕只作一次響應(yīng),就必須考慮如何去除抖動,常用的去抖動的辦法有兩種:硬件辦法和軟件辦法。單片機(jī)中常用軟件法。軟件法其實很簡單,就是在單片機(jī)獲得的信息后,不是立即認(rèn)定開關(guān)已被按下,而是延時10毫秒或更長一些時間后再次檢測,如果仍為低,說明開關(guān)的確按下了,這實際上是避開了按鈕按下時的抖動時間。而在檢測到按鈕釋放后再延時5-10個毫秒。當(dāng)然,實際應(yīng)用中,對按鈕的要求也是千差萬別,要根據(jù)不一樣的需要來編制處理程序,但以上是消除鍵抖動的原則。三伺服電機(jī)伺服機(jī)是在伺服系統(tǒng)中控制機(jī)械元件運轉(zhuǎn)的發(fā)動機(jī),是一種補(bǔ)助馬達(dá)間接變速裝置。伺服電機(jī)是可以連續(xù)旋轉(zhuǎn)的電機(jī)械轉(zhuǎn)換器。屬于功率很小的微特電機(jī),以永磁式直流伺服電機(jī)和并激式直流伺服電機(jī)最為常用。伺服電機(jī)可控制速度,位置精度非常準(zhǔn)確。1直流伺服電機(jī)直流伺服電機(jī)的輸出轉(zhuǎn)速與輸入電壓成正比,并能實現(xiàn)正反向速度控制。具有起動轉(zhuǎn)矩大,調(diào)速范圍寬,機(jī)械特性和調(diào)節(jié)特性的線性度好,控制方便等優(yōu)點,但換向電刷的磨損和易產(chǎn)生火花會影響其使用壽命。近年來出現(xiàn)的無刷直流伺服電機(jī)避免了電刷摩擦和換向干擾,因此靈敏度高,死區(qū)小,噪聲低,壽命長,對周圍電子設(shè)備干擾小。而直流力矩伺服電機(jī)(即低速直流伺服電機(jī))可在幾十轉(zhuǎn)/分的低速下,甚至在長期堵轉(zhuǎn)的條件下工作,故可直接驅(qū)動被控件而不需減速。2.伺服機(jī)的選擇本次將利用無線電遙控飛機(jī).遙控船上一定會用到的伺服機(jī)當(dāng)作驅(qū)動器,結(jié)合89C51單片機(jī)來設(shè)計一個簡易的伺服機(jī)控制系統(tǒng) ,此系統(tǒng)可以以簡易的電路連接配合驅(qū)動器程序,可以精確的控制伺服機(jī)動作,凡是需要以單片機(jī)控制想要拉動或是做簡易的機(jī)械式傳動的機(jī)構(gòu)設(shè)計都可能有機(jī)會使用到它。 直流伺服電動機(jī)的特點:電阻大,機(jī)械特性軟。線性;滑動接觸;火花干擾;慣性大;體積大;相對價高。本次采用的規(guī)格如圖8:電壓扭矩速度5V44.4 oz-in.0.23 sec/606.0V56.9 oz-in.0.16 sec/60尺寸重量1.6 x 0.8 x 1.4 in.1.3 oz.圖8 伺服機(jī)規(guī)格圖3伺服機(jī)的改裝一般玩具遙控模型店中所購得的標(biāo)準(zhǔn)伺服機(jī)只能轉(zhuǎn)動180度,用途有限,為了做更多的應(yīng)用實驗,經(jīng)幾個伺服機(jī)的改裝步驟,使伺服機(jī)可以轉(zhuǎn)動360度,適合用于遙控車上作為推動車論轉(zhuǎn)動用。標(biāo)準(zhǔn)伺服機(jī)由于動作角度有限,因此在機(jī)構(gòu)旋轉(zhuǎn)軸上有阻擋越位的凸點,同時也利用可變電阻的移位來偵測所轉(zhuǎn)動的角度,了解起動作原理后,要將起改裝為360度轉(zhuǎn)動便不困難了。拆開伺服機(jī)在改裝前再仔細(xì)看其各個零件相關(guān)的特殊位置,特別是旋轉(zhuǎn)軸的凸點,及可變電阻的高度,是改裝過程中要修改的部分。注意整個可變電阻高度已經(jīng)降下來了,因此當(dāng)齒輪轉(zhuǎn)動時并不會帶動可變電阻轉(zhuǎn)動,使得回授信號為固定,當(dāng)送出控制信號后馬達(dá)可以一直往某個方向正轉(zhuǎn)或是反轉(zhuǎn)。整個改裝步驟說明如下:(1) 將伺服機(jī)螺絲松開,小心取出各個部分零件及齒輪,并依序防止整齊,方便稍后組裝回去。(2) 小型馬達(dá)要推出來時,要以小改錐稍微由外向內(nèi)施力推出,電路板比較脆弱,小心折斷。(3) 以斜口鉗剪斷所示的凸點,并以小刀修平。(4) 將變電阻用按入凹槽就可以了。(5) 將改裝的零件結(jié)合各式齒輪完整組裝回去。在改裝后凸點不見了,而可變電阻中間的旋轉(zhuǎn)柄降低了,因此在伺服機(jī)轉(zhuǎn)動時也不會帶動可變電阻轉(zhuǎn),因此控制器偵測不到端點,只要單片機(jī)不斷地送出適當(dāng)?shù)拿}沖信號,便可以使伺服機(jī)不斷地正轉(zhuǎn)或是反轉(zhuǎn)一直持續(xù)下去,不會只轉(zhuǎn)動180度便卡住了。由于其體積小設(shè)計上采用特殊集成電路設(shè)計,在松開螺絲后小心將其零件分解,可以看到其內(nèi)部零件:(控制芯片、小型直流馬達(dá)、轉(zhuǎn)換齒輪、旋轉(zhuǎn)軸、回授可變電阻)伺服機(jī)以5V電源便可以推動,控制方式是以脈沖調(diào)制/解調(diào)的方式來控制。其外部3個引腳如下:黑色:GND 地線紅色:5V電源線(位置在中間)白色:控制信號四小車底座組成驅(qū)動器:以改裝過的伺服機(jī)當(dāng)驅(qū)動器件。輪子:為了配合現(xiàn)成的伺服機(jī)機(jī)構(gòu)連接,以現(xiàn)成的飲料瓶蓋來改裝。前輔輪:以現(xiàn)成的圓形物體代替。連接座:用來固定伺服機(jī)用,以現(xiàn)成的“L”鐵座來連接。車體底盤:以不銹鋼板來組裝。螺絲包:做各部分零件的組裝及固定。前輪改裝:1.準(zhǔn)備兩塊長方形的鋁片 (長:8CM 寬:1.5CM)2.一套四驅(qū)車導(dǎo)輪3.兩個墊片組裝成如圖9、圖10:圖9 小車底部組裝圖圖10 小車控制部分組裝圖八伺服車外形電池使用4只,可用一般電池測試,但使用充電電池較省錢。左右伺服機(jī)接線會影響車子行進(jìn)方向,若方向不對請自行對調(diào)調(diào)整。由于車子采用后輪驅(qū)動,因此重心要擺在后方,電池放在后方底座。組裝成如圖11:圖11 小車整體圖一小車工作流程圖在主控程序循環(huán)中掃描是否有按鍵,若有按鍵則做相對應(yīng)的功能處理,若按下K1鍵車體做前進(jìn)展示,若按下K2鍵車體做后退展示,若按下K3鍵車體左轉(zhuǎn)展示,若按下K4鍵車體做右轉(zhuǎn)展示。所有按鍵動作都是等按鍵放開來才開始執(zhí)行車體動作。小車工作流程圖如圖12:圖12 流程圖二小車控制程序由于伺服車上伺服機(jī)的安裝是在左右兩側(cè),伺服機(jī)正反轉(zhuǎn)與前進(jìn)方向剛好相反,前面理論上說明的前進(jìn),應(yīng)該是左伺服機(jī)正轉(zhuǎn)且右伺服機(jī)也正轉(zhuǎn),不過實際上控制程序是伺服機(jī)1正轉(zhuǎn)控制,伺服機(jī)2反轉(zhuǎn)控制。因此控制程序車體前進(jìn)部分設(shè)計如下。Go_for:; 車體前進(jìn)Mov r3,#ts; 設(shè)置計數(shù)次數(shù)J1:call pu_for; 伺服機(jī)1正轉(zhuǎn)控制Djnz r3,j1; 伺服機(jī)2反轉(zhuǎn)控制Ret其他3個方向的動作原理一樣1.指令詳解DELAY:延遲子程序LED_BL:工作指示閃爍PU_BACK:伺服機(jī)1反轉(zhuǎn)控制PU_FOR:伺服機(jī)1正轉(zhuǎn)控制DEMO_FOR:伺服機(jī)正轉(zhuǎn)展示DEMO_BACK:伺服機(jī)反轉(zhuǎn)展示DEL:0.1ms延遲子程序PUR_BACK:伺服機(jī)2反轉(zhuǎn)控制PUR_FOR:伺服機(jī)2正轉(zhuǎn)控制GO_FOR:車體前進(jìn)GO_BACK:車體后退GO_LEFT:車體左轉(zhuǎn)GO_RIGHT:車體右轉(zhuǎn)2.程序清單equ 3; 伺服機(jī)正轉(zhuǎn)時間常數(shù)deb equ 25; 伺服機(jī)反轉(zhuǎn)時間常數(shù)ts equ 18; 脈沖信號個數(shù)k1 equ p0.3; 按鍵1引腳定義k2 equ p0.4; 按鍵2引腳定義k3 equ p0.5; 按鍵3引腳定義k4 equ p0.6; 按鍵4引腳定義wled equ p3.7; 工作指示燈引腳定義pul equ p1.7; 伺服機(jī)1控制線pur equ p1.6; 伺服機(jī)2控制線start:clr pul; 送出低電平至伺服機(jī)clr pur;call led_bl; led閃動,表示程序開始執(zhí)行l(wèi)oop:jb k1,x1; 未按下K1鍵則繼續(xù)掃描jnb k1,$; 等按鍵放開來call led_bl;call go_for; 車體前進(jìn)jmp loop; 繼續(xù)循環(huán)執(zhí)行x1:jb k2,x2; 未按下K2鍵則繼續(xù)掃描jnb k2,$; 等按鍵放開來call led_bl;call go_bac; 車體后退jmp loop; 繼續(xù)循環(huán)執(zhí)行X2:jb k3,x3; 未按下K3鍵則繼續(xù)掃描Jnb k3,$; 等按鍵放開來call led_bl;call go_left; 車體左轉(zhuǎn)jmp loop; 繼續(xù)循環(huán)執(zhí)行x3:jb k4,x4; 未按下K4鍵則繼續(xù)掃描jnb k4,$; 等按鍵放開來call led_bl;call go_right; 車體右轉(zhuǎn)jmp loop; 繼續(xù)循環(huán)執(zhí)行x4:jmp loop; 繼續(xù)循環(huán)執(zhí)行delay: 延時子程序mov r6,#32h d1:mov r7,#64hdjnz r7,$djnz r6,d1djnz r5,delayretled_bl: 工作指示燈閃爍mov r4,#02hl0:cpl wled; 位反向mov r5,#05h; 延遲50mscall delay;djnz r4,l0;setb wled;LED OFFretpu_back:setb pul; 伺服機(jī)反轉(zhuǎn)控制,送出高電平mov r4,#deba1:call deldjnz r4,a1clr pul; 送出低電平call loop1retpu_for:setb pul; 伺服機(jī)正傳控制,送出高電平mov r4,#deab1:call deldjnz r4,b1clr pul; 送出低電平call loop2ret del:mov r5,#01h; 0.1秒延時子程序delay1: mov r6,#02hf1:mov r7,#11hdjnz r7,$djnz r6,f1djnz r5,delayretpur_back:setb pur; 伺服機(jī)反轉(zhuǎn)控制,送出高電平mov r4,#debg1:call deldjnz r4,g1clr pur; 送出低電平call loop1retpur_for:setb pur; 伺服機(jī)正傳展示,送出高電平mov r4,#deah1:call deldjnz r4,h1clr pur; 送出低電平call loop2retloop1:mov r4,#0c5hl:call deldjnz r4,lretloop2:mov r4,#0afhl1:call deldjnz r4,l1retgo_for: 車體前進(jìn)mov r3,#tsj1:call pu_backcall pur_fordjnz r3,j1retgo_back: 車體后退mov r3,#tss1:call pu_forcall pur_backdjnz r3,s1retgo_right: 車體右轉(zhuǎn)mov r3,#tsm1:call pu_backcall pur_backdjnz r3,m1retgo_left: 車體左轉(zhuǎn)mov r3,#tsq1:call pu_forcall pur_fordjnz r3,q1retend元 件 清 單元件名稱規(guī)格數(shù)量備注實驗板50*701電阻1K7電容20PF2電容10uF1發(fā)光二極管紅色1發(fā)光二極管綠色1晶振12MHZ1芯片89C511底座40引腳1電源接插件2腳4電源接插件3腳2按鈕5伺服機(jī)FUTABA S30032電池接線盒2干電池5號4前輪2小車底座117
收藏