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