(張家港沙洲工學(xué)院,江蘇 張家港 215600)
利用紅外遙控器代替開關(guān)按鍵控制小車的啟動(dòng)和停止,能夠輕松自如的實(shí)現(xiàn)小車的啟動(dòng)停止、左轉(zhuǎn)右轉(zhuǎn)和前進(jìn)后退等功能,假如我們希望小車運(yùn)行到黑線上來檢測(cè)是否有循跡功能,就可以用遙控器控制小車行駛到有黑線的地方,當(dāng)小車遇到有黑線時(shí),會(huì)自動(dòng)啟動(dòng)循跡功能模塊,讓小車沿著黑線跑,當(dāng)遇到障礙物時(shí)會(huì)自動(dòng)啟動(dòng)超聲波蔽障測(cè)距并報(bào)警模塊,每個(gè)模塊都是相互獨(dú)立又相互協(xié)調(diào)配合,真正實(shí)現(xiàn)了小車的智能控制:本設(shè)計(jì)采用模塊化設(shè)計(jì)結(jié)構(gòu),各個(gè)功能相互不受影響,具有較高的智能化、人性化。
紅外遙控模塊主要由遙控發(fā)射器、紅外接收頭、接口電路組成,如圖1所示。紅外遙控器用來產(chǎn)生遙控編碼脈沖,驅(qū)動(dòng)紅外發(fā)射管輸出紅外遙控信號(hào),遙控接收頭完成對(duì)遙控信號(hào)的放大、檢波、整形、解調(diào)出遙控編碼脈沖。遙控編碼脈沖是一組串行二進(jìn)制碼,此串行碼輸入到單片機(jī),由其內(nèi)部CPU完成對(duì)遙控指令解碼,并執(zhí)行相應(yīng)的遙控功能。使用紅外遙控器作為控制系統(tǒng)的輸入,需要解決如下幾個(gè)關(guān)鍵問題:如何接收紅外遙控信號(hào);如何識(shí)別紅外遙控信號(hào)以及解碼軟件的設(shè)計(jì)、控制程序的設(shè)計(jì)。
圖1 紅外遙控系統(tǒng)組成方框圖
紅外遙控的實(shí)現(xiàn)主要是如何用程序去分析位0和位1。位0和位1所不同之處就是在高電平脈沖后的低電平脈寬不一樣,采用脈寬調(diào)制的串行碼,以脈寬為0.565ms、間隔0.56ms、周期為1.125ms的組合表示二進(jìn)制的“0”;以脈寬為0.565ms、間隔1.685ms、周期為2.25ms的組合表示二進(jìn)制的“1”,其波形如圖3所示。
圖2 遙控碼的“0”和“1”
這里有一點(diǎn)要注意的是,遙控芯片輸出的波形,接收端在接收到信號(hào)時(shí)是取反的,如上圖所示,也就是說接收端輸出波形正好和遙控芯片輸出的相反。圖2就是其中一段引導(dǎo)碼和自定義碼發(fā)射端和接收端的波形[3]。
圖3和圖4就是其中一段引導(dǎo)碼和自定義碼遙控信號(hào)的編碼波形圖。
遙控編碼是連續(xù)的32位二進(jìn)制碼組,其中前16位為用戶識(shí)別碼,能區(qū)別不同的電器設(shè)備,防止不同機(jī)種遙控碼互相干擾。芯片廠商把用戶識(shí)別碼固定為十六進(jìn)制的一組數(shù);后16位為8位操作碼(功能碼)及其反碼。
解碼的關(guān)鍵也是如何識(shí)別“0”和“1”,從位的定義我們可以發(fā)現(xiàn)“0”、“1”均以0.56ms的低電平開始,不同的是高電平的寬度不同,“0”為0.56ms,“1”為1.68ms,所以必須根據(jù)高電平的寬度區(qū)別“0”和“1”。如果從0.56ms低電平過后,開始延時(shí),0.56ms以后,若讀到的電平為低,說明該位為“0”,反之則為“1”,為了可靠起見,延時(shí)必須比0.56ms長(zhǎng)些,但又不能超過1.12ms,否則如果該位為“0”,讀到的已是下一位的高電平,因此?。?.12ms+0.56ms)/2=0.84ms最為可靠,一般取0.84ms左右均可。 根據(jù)碼的格式,應(yīng)該等待9ms的起始碼和4.5ms的結(jié)果碼完成后才能讀碼。
圖5 紅外接收硬件圖
該模塊使用紅外接收頭1838,其電路如圖5所示。瓷片電容104為去耦電容,1端即解調(diào)信號(hào)的輸出端,直接與單片機(jī)的P3.2口相連。有紅外編碼信號(hào)發(fā)射時(shí),輸出為檢波整形后的方波信號(hào),并直接提供給單片機(jī)。
解碼方法如下:
·設(shè)外部中斷0(或者1)為下降沿中斷,定時(shí)器0(或者1)為16位計(jì)時(shí)器.初始值均為O。
·第一次進(jìn)入遙控中斷后,開始計(jì)時(shí)。
·從第二次進(jìn)入遙控中斷起,先停止計(jì)時(shí)。并將計(jì)時(shí)值保存后,再重新計(jì)時(shí)。如果計(jì)時(shí)值等于前導(dǎo)碼的時(shí)間,設(shè)立前導(dǎo)碼標(biāo)志。準(zhǔn)備接收下面的一幀遙控?cái)?shù)據(jù),如果計(jì)時(shí)值不等于前導(dǎo)碼的時(shí)間,但前面已接收到前導(dǎo)碼,則判斷是遙控?cái)?shù)據(jù)的O還是1。
·繼續(xù)接收下面的地址碼、數(shù)據(jù)碼、數(shù)據(jù)反碼。
·當(dāng)接收到32位數(shù)據(jù)時(shí),說明一幀數(shù)據(jù)接收完畢。此時(shí)可停止定時(shí)器的計(jì)時(shí),并判斷本次接收是否有效,如果兩次地址碼相同且等于本系統(tǒng)的地址,數(shù)據(jù)碼與數(shù)據(jù)反碼之和等于0FFH,則接收的本幀數(shù)據(jù)碼有效。否則丟棄本次接收到的數(shù)據(jù)。
·接收完畢,初始化本次接收的數(shù)據(jù),準(zhǔn)備下一次遙控接收。
圖6 主程序流程圖
用單片機(jī)控制直流電機(jī)時(shí),需要加驅(qū)動(dòng)電路,為直流電機(jī)提供足夠大的驅(qū)動(dòng)電流,如圖7所示:本次設(shè)計(jì)我們選擇了達(dá)林頓驅(qū)動(dòng)器,它實(shí)際上是一塊集成芯片,單塊芯片同時(shí)可驅(qū)動(dòng)多個(gè)電機(jī),每個(gè)電機(jī)由單片機(jī)的一個(gè)I/O口控制,當(dāng)需要調(diào)節(jié)直流電機(jī)轉(zhuǎn)速時(shí),使單片機(jī)的相應(yīng)I/O口輸出不同占空比的PWM波形即可。占空比是指高電平持續(xù)時(shí)間在一個(gè)周期時(shí)間內(nèi)的百分比??刂齐姍C(jī)的轉(zhuǎn)速時(shí),占空比越大,速度越快,如果全為高電平,占空比為100%時(shí),速度達(dá)到最快。
當(dāng)用單片機(jī)I/O口輸出PWM信號(hào)時(shí),可采用以下兩種方法:[7]
·利用軟件延時(shí)。當(dāng)高電平延時(shí)時(shí)間到時(shí),對(duì)I/O口電平取反變成低電平,然后再延時(shí);當(dāng)?shù)碗娖窖訒r(shí)時(shí)間到時(shí),再對(duì)I/O口電平取反,如此循環(huán)就可得到PWM信號(hào)。
圖7 直流電機(jī)的驅(qū)動(dòng)電路
圖8 直流電機(jī)的H橋控制圖
圖9 超聲波蔽障流程圖
·利用定時(shí)器。控制方法同上,只是在這里利用單片機(jī)的定時(shí)器來定時(shí)進(jìn)行高、低電平的翻轉(zhuǎn),而不用軟件延時(shí)。
電機(jī)驅(qū)動(dòng)還可以用如圖8方式。該電路工作的原理為:當(dāng)Q5與Q8同時(shí)導(dǎo)通時(shí),電機(jī)會(huì)順時(shí)針的轉(zhuǎn)動(dòng),當(dāng)Q6與Q7同時(shí)導(dǎo)通時(shí)電機(jī)會(huì)逆時(shí)針的旋轉(zhuǎn),這樣我們就可以實(shí)現(xiàn)電機(jī)的正傳與反轉(zhuǎn)的控制了,單片機(jī)的控制引腳只用了兩個(gè),一個(gè)接Q5和Q8的基級(jí)這樣可以實(shí)現(xiàn)電機(jī)的正傳,另一個(gè)接Q6與Q7的基級(jí)實(shí)現(xiàn)電機(jī)的反轉(zhuǎn)。如果用PWM波控制該電機(jī),那PWM波就可以從基級(jí)直接輸入,但是對(duì)于三極管的選型特別要注意,第一,要看管子的耐壓特性,第二,要看管子的頻率特性,如果頻率特性不太好,那PWM控制電機(jī)就失去了意義。
小車的尋線功能采用的是GP2A25傳感器,該傳感器檢測(cè)黑線的靈敏度非常的高,一般在工業(yè)上用來探測(cè)紙張比較多,利用此功能,我們也可以用他來檢測(cè)黑線,只是取的電平剛好和測(cè)紙張的電平相反。GP2A25探測(cè)的距離有一個(gè)要求,一般在1.5厘米的空度是最為靈敏的,所以在小車上安裝此傳感器比較有精度要求。
在小車的左邊和右邊各安裝一個(gè)GP2A25傳感器。當(dāng)小車左邊檢測(cè)到黑線,證明小車尾部向右歪了,這時(shí)候單片機(jī)輸出相應(yīng)的代碼來糾正小車的位置,左電機(jī)轉(zhuǎn)動(dòng)右電機(jī)靜止,這樣小車就能擺正位置,同理,當(dāng)右邊傳感器檢測(cè)到黑線,小車尾部向左傾斜,右電機(jī)轉(zhuǎn)動(dòng),左電機(jī)靜止。這樣小車就能在黑線上穩(wěn)定的前進(jìn)了。
超聲波測(cè)距的原理是利用超聲波在空氣中的傳播速度為已知,測(cè)量聲波在發(fā)射后遇到障礙物反射回來的時(shí)間,根據(jù)發(fā)射和接收的時(shí)間差計(jì)算出發(fā)射點(diǎn)到障礙物的實(shí)際距離。由此可見,超聲波測(cè)距原理與雷達(dá)原理是一樣的。
測(cè)距的公式表示為:L=C×T
式中L為測(cè)量的距離長(zhǎng)度;C為超聲波在空氣中的傳播速度;T為測(cè)量距離傳播的時(shí)間差(T為發(fā)射到接收時(shí)間數(shù)值的一半)[10]。
·用戶通過從TX腳輸出40KH的方波信號(hào),即就是從單片機(jī)的IO口連續(xù)發(fā)出高低電平,產(chǎn)生方波,方波的個(gè)數(shù)一般為10個(gè)左右,發(fā)出后啟動(dòng)定時(shí)器,開始計(jì)時(shí),此時(shí),超聲波發(fā)射頭開始發(fā)出超聲波,當(dāng)發(fā)出的超聲波被前方的障礙物返射回來,返射回來的超聲波被接收探頭接收到,此時(shí),模塊的RX引腳會(huì)產(chǎn)生一個(gè)從高電平到低電平的跳變,此時(shí),停止計(jì)時(shí),通過計(jì)時(shí)的時(shí)間,根據(jù)以下公式計(jì)算測(cè)量距離
測(cè)量距離=[時(shí)間×聲速(340M/S)]/2具體流程圖如圖9。
本文設(shè)計(jì)的紅外遙控小車具有操作簡(jiǎn)單,穩(wěn)定可靠,易擴(kuò)展升級(jí),在小車的主板上預(yù)留了多個(gè)擴(kuò)展端口,比如還可以再增加金屬傳感器TL-Q5MC來檢測(cè)路上感應(yīng)到的鐵片,從而來來測(cè)量小車在行進(jìn)的過程中所遇到的鐵片數(shù)量,通過霍爾元件感應(yīng)磁鐵來產(chǎn)生脈沖,計(jì)算一秒所得的脈沖數(shù),從而計(jì)算出一秒小車輪子轉(zhuǎn)動(dòng)圈數(shù),再測(cè)量出小車車輪周長(zhǎng)即可計(jì)算出小車當(dāng)前速度,累加可得到當(dāng)前路程;或者通過語音芯片來控制小車的運(yùn)行等等。
[1]郭天祥.新概念51單片機(jī)C語言教程:入門、提高、開發(fā)、拓展全攻略[M].北京:電子工業(yè)出版社,2009,1.
[2]孫賢安,等.基于51單片機(jī)的小車蔽障電路實(shí)現(xiàn)[J].電氣技術(shù)與自動(dòng)化,2006,1
[3]裴彥純,陳志超.基于單片機(jī)系統(tǒng)的紅外遙控器應(yīng)用[J].現(xiàn)代儀器,2004.
[4]賴麒文.8051單片機(jī)C 語言徹底應(yīng)用[M].科學(xué)出版社,2002.
[5]彭偉.單片機(jī)C語言程序設(shè)計(jì)實(shí)訓(xùn)100例[M].北京:電子工業(yè)出版社,2010.
[6]曹開田.基于單片機(jī)的紅外遙控密碼鎖的設(shè)計(jì)與實(shí)現(xiàn)[J].應(yīng)用研究,2010.
[7]劉海偉.步進(jìn)電機(jī)和光電傳感器實(shí)現(xiàn)小車循跡[J].實(shí)用電子制作,2008.
[8]張燕,曾光宇.光電式傳感器的應(yīng)用與發(fā)展[J].科技情報(bào)開發(fā)與經(jīng)濟(jì),2007.
[9]俞龍,黃家能,孫道宗.基于雙單片機(jī)的懸掛物體尋跡控制系統(tǒng)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2006,8.
[10]趙廣濤,程蔭杭.基于超聲波傳感器的測(cè)距系統(tǒng)設(shè)計(jì)[J].傳感器與儀器儀表,2006.