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