基于P87C591的CAN總線超聲測(cè)距系統(tǒng)設(shè)計(jì)方案
?介紹一種以Philips公司的P87C591作為超聲波傳感器控制核心及CAN總線控制器,以TJA1040作為CAN總線收發(fā)器的CAN總線智能超聲波測(cè)距系統(tǒng);詳細(xì)介紹其硬件電路構(gòu)成、工作原理及軟件設(shè)計(jì)思想。該系統(tǒng)硬件結(jié)構(gòu)簡(jiǎn)單,實(shí)用性強(qiáng)。
關(guān)鍵詞? 超聲波測(cè)距? CAN總線? P87C591? TJA1040? LM386? CX20106A
引言
移動(dòng)機(jī)器人的安全避障問(wèn)題一直是該項(xiàng)研究的基本問(wèn)題,目前解決此問(wèn)題的基本方法是采用多路超聲波傳感器通過(guò)適當(dāng)?shù)陌惭b角度達(dá)到獲取多路測(cè)量信息的目的。對(duì)于多路超聲波傳感器的擴(kuò)展,一般是在機(jī)器人系統(tǒng)控制核心之上進(jìn)行。這樣做的缺點(diǎn)在于,超聲波傳感器的擴(kuò)展占用了大量的系統(tǒng)硬件資源,另外大量的測(cè)量信息的處理也浪費(fèi)了系統(tǒng)軟件資源。針對(duì)這一問(wèn)題,筆者采用CAN總線擴(kuò)展多路超聲波傳感器的作法。這種作法有幾個(gè)優(yōu)點(diǎn): 首先,CAN總線具有良好的傳輸防錯(cuò)設(shè)計(jì),保證了數(shù)據(jù)通信的可靠性;其次,多路超聲波傳感器的設(shè)計(jì)可由CAN總線智能節(jié)點(diǎn)實(shí)現(xiàn),大大節(jié)省了系統(tǒng)硬件資源和軟件資源;第三,由于CAN總線對(duì)于網(wǎng)絡(luò)內(nèi)的節(jié)點(diǎn)數(shù)在理論上不受限制,所以隨著對(duì)移動(dòng)機(jī)器人研究的不斷深入,對(duì)于整個(gè)機(jī)器人系統(tǒng)的總體設(shè)計(jì)可以靈活地在CAN總線上進(jìn)一步開(kāi)發(fā)。本文介紹的CAN總線智能節(jié)點(diǎn)的設(shè)計(jì)以Philips公司的P87C591作為超聲波傳感器的控制核心。由于P87C591具有片上自帶的CAN控制器并且為CAN的應(yīng)用提供了許多專(zhuān)用的硬件功能,因此又將它作為了系統(tǒng)的CAN總線控制器,大大節(jié)省了主控系統(tǒng)的資源。CAN總線的收發(fā)器采用TJA1040。系統(tǒng)總體結(jié)構(gòu)框圖如圖1所示。
機(jī)器人系統(tǒng)控制核心由ARM實(shí)現(xiàn)。其主要功能是處理需要復(fù)雜計(jì)算的信息,將經(jīng)過(guò)處理的信息再送回CAN總線,并對(duì)整個(gè)網(wǎng)絡(luò)進(jìn)行管理。超聲波智能節(jié)點(diǎn)控制系統(tǒng)的主要功能就是判斷障礙物位置,將對(duì)移動(dòng)機(jī)器人前進(jìn)方向有阻礙的障礙物信息通過(guò)CAN總線傳回主控系統(tǒng),由主控系統(tǒng)作出相應(yīng)處理并進(jìn)行避障動(dòng)作。本文將著重介紹超聲波智能節(jié)點(diǎn)控制系統(tǒng)。
1? 超聲波智能節(jié)點(diǎn)控制系統(tǒng)的硬件設(shè)計(jì)
超聲波智能節(jié)點(diǎn)控制系統(tǒng)的硬件電路如圖2所示。P87C591是51系列單片機(jī),對(duì)于大部分熟悉51單片機(jī)的使用者來(lái)說(shuō)它的使用方法十分簡(jiǎn)單。下面分別介紹各個(gè)組成部分。
圖2? 超聲波智能節(jié)點(diǎn)控制系統(tǒng)
1.1? 控制部分
超聲波傳感器的控制部分采用Philips半導(dǎo)體公司生產(chǎn)的P87C591。它是一個(gè)單片8位高性能微控制器,具有片內(nèi)CAN控制器,是從80C51微控制器家族派生出來(lái)的。它采用了強(qiáng)大的80C51指令集,并成功地包括了Philips半導(dǎo)體公司SJA1000 CAN控制器的PeliCAN功能;全靜態(tài)內(nèi)核提供了擴(kuò)展的節(jié)電方式;振蕩器可停止和恢復(fù)而不會(huì)丟失數(shù)據(jù);改進(jìn)的1∶1內(nèi)部時(shí)鐘預(yù)分頻器在12 MHz外部時(shí)鐘速率時(shí),實(shí)現(xiàn)500 ns指令周期;內(nèi)部具有的16 KB內(nèi)部程序存儲(chǔ)器完全滿(mǎn)足本系統(tǒng)要求。
作為系統(tǒng)控制核心,P87C591擔(dān)負(fù)兩個(gè)主要任務(wù)。其一是作為超聲波傳感器的控制核心,在其普通I/O口上擴(kuò)展了超聲波傳感器的接收和發(fā)射部分電路,利用單片機(jī)軟件功能產(chǎn)生40 kHz信號(hào)并通過(guò)驅(qū)動(dòng)放大發(fā)射出去,再利用接收部分電路進(jìn)行接收。另外可以對(duì)其余口線繼續(xù)進(jìn)行超聲波傳感器的擴(kuò)展,實(shí)現(xiàn)多個(gè)超聲波傳感器系統(tǒng)的設(shè)計(jì)。其二是利用P87C591的片內(nèi)CAN控制器實(shí)現(xiàn)與CAN總線的連接。這樣的設(shè)計(jì)改變了過(guò)去在機(jī)器人控制核心上進(jìn)行超聲波測(cè)距系統(tǒng)的設(shè)計(jì),不但將超聲波檢測(cè)與處理的工作轉(zhuǎn)移到了單片機(jī)上,大大節(jié)省了機(jī)器人控制核心的系統(tǒng)資源,還將CAN總線智能節(jié)點(diǎn)的大部分控制工作也轉(zhuǎn)移到了單片機(jī)上,節(jié)省了硬件資源,同時(shí)CAN總線的采用大大提升了系統(tǒng)的抗干擾能力,使機(jī)器人控制系統(tǒng)更加穩(wěn)定地工作。
1.2? 超聲波傳感器發(fā)射部分
超聲波傳感器發(fā)射部分硬件電路如圖3所示。
LM386是一種音頻集成功放,具有自身功耗低、電壓增益可調(diào)整、電源電壓范圍大、外接元件少和總諧波失真小等優(yōu)點(diǎn),廣泛應(yīng)用于錄音機(jī)和收音機(jī)之中。它是一個(gè)三級(jí)放大電路。
本部分硬件電路相對(duì)簡(jiǎn)單,主要就是利用LM386的驅(qū)動(dòng)放大功能將單片機(jī)產(chǎn)生的40 kHz方波放大輸出。因?yàn)樵谥悄艹暡ü?jié)點(diǎn)控制系統(tǒng)中單片機(jī)的工作相對(duì)較少,為節(jié)省硬件,不妨將40 kHz方波的產(chǎn)生這部分工作交由單片機(jī)的定時(shí)器來(lái)完成,這樣只需十分簡(jiǎn)單的硬件電路即可完成。UST1為超聲波發(fā)射頭。
1.3? 超聲波傳感器接收部分
超聲波傳感器接收部分的硬件電路如圖4所示。
電路采用集成電路CX20106A。這是一款紅外線檢波接收的專(zhuān)用芯片,常用于電視機(jī)紅外遙控接收器??紤]到紅外遙控常用的載波頻率38 kHz與測(cè)距超聲波頻率40 kHz較為接近,可以利用它作為超聲波檢測(cè)電路。實(shí)驗(yàn)證明,其具有很高的靈敏度和較強(qiáng)的抗干擾能力。適當(dāng)改變C1的大小,可改變接收電路的靈敏度和抗干擾能力。R1和C1控制CX20106A 內(nèi)部的放大增益,R2控制帶通濾波器的中心頻率。一般取R1=4.7 Ω,C1=1 μF。其余元件按圖4取值。US_R1為超聲波接收頭,當(dāng)收到超聲波時(shí)產(chǎn)生一個(gè)下降沿,接到單片機(jī)的外部中斷INT0上。
當(dāng)超聲波接收頭接收到40 kHz方波信號(hào)時(shí),將會(huì)將此信號(hào)通過(guò)CX20106A驅(qū)動(dòng)放大送入單片機(jī)的外部中斷0口。單片機(jī)在得到外部中斷0的中斷請(qǐng)求后,會(huì)轉(zhuǎn)入外部中斷0的中斷服務(wù)程序進(jìn)行處理,在移動(dòng)機(jī)器人的避障工作中,可以在中斷服務(wù)程序設(shè)定需要單片機(jī)處理的最短距離,比如0.5 m。對(duì)于距離大于0.5 m的障礙物,可以不做處理直接跳出中斷服務(wù)程序;對(duì)于距離小于或等于0.5 m的障礙物信息,則在中斷服務(wù)程序中進(jìn)行處理并通過(guò)CAN總線上報(bào)機(jī)器人系統(tǒng)控制核心,由機(jī)器人系統(tǒng)控制核心發(fā)出命令指導(dǎo)機(jī)器人的避障動(dòng)作。對(duì)于多超聲波傳感器系統(tǒng),每一個(gè)超聲波傳感器在判斷到對(duì)機(jī)器人行動(dòng)有障礙物時(shí)可分別在其中斷服務(wù)程序中對(duì)障礙物信息進(jìn)行簡(jiǎn)單處理,上報(bào)給機(jī)器人系統(tǒng)控制核心的信息可以相對(duì)簡(jiǎn)單,只需機(jī)器人系統(tǒng)控制核心控制機(jī)器人的實(shí)際動(dòng)作,比如左轉(zhuǎn)30°,而不必機(jī)器人系統(tǒng)控制核心再次進(jìn)行計(jì)算,這樣
會(huì)節(jié)省大量系統(tǒng)資源去作其他更為復(fù)雜的工作。
1.4? CAN總線設(shè)計(jì)部分
CAN總線設(shè)計(jì)部分的硬件電路如圖5所示。
TJA1040是Philips半導(dǎo)體公司生產(chǎn)的完全可替代PCA82C250的高速CAN總線收發(fā)器。該器件提供了CAN協(xié)議控制器和物理總線之間的接口,以及對(duì)CAN總線的差動(dòng)發(fā)送和接收功能。TJA1040具有優(yōu)秀的EMC性能,而且在不上電狀態(tài)下有理想的無(wú)源性能;它還提供低功耗管理,支持遠(yuǎn)程喚醒。值得一提的是TJA1040的自動(dòng)防故障功能,在引腳TXD上提供了一個(gè)向VCC的上拉,使引腳TXD在不使用時(shí)保持隱性電平。引腳STB提供了一個(gè)向VCC的上拉,當(dāng)不使用引腳STB時(shí),收發(fā)器進(jìn)入待機(jī)模式。如果VCC掉電,引腳TXD、STB和RXD就會(huì)變成懸浮狀態(tài),防止通過(guò)這些引腳產(chǎn)生反向電流。
這部分電路硬件相對(duì)簡(jiǎn)單,但對(duì)于CAN總線的抗干擾能力需特別注意。本設(shè)計(jì)主要突出以下幾點(diǎn):
圖中6N137是光電耦合器,P87C591的RXDC腳(即P1.0口)作為CAN接收器的輸入腳,TXDC口(即P1.1口)作為CAN發(fā)送器的輸出腳,都通過(guò)6N137連接至CAN發(fā)送器TJA1040。采用光電耦合器6N137的目的是增強(qiáng)CAN總線節(jié)點(diǎn)的抗干擾能力,這樣的設(shè)計(jì)可以很好地實(shí)現(xiàn)總線上各CAN節(jié)點(diǎn)間的電氣隔離。但要注意的是,光耦部分電路所采用的兩個(gè)電源VCC和V必須完全隔離,否則光耦就失去了意義。可采用專(zhuān)用的電源隔離模塊來(lái)實(shí)現(xiàn)。
?、?TJA1040作為CAN總線收發(fā)器,與CAN總線的接口部分也采取了抗干擾措施。TJA1040的CAN_H和CAN_L引腳各自通過(guò)一個(gè)5 Ω電阻與CAN總線連接,電阻可以起到一定的限流作用,保護(hù)TJA1040不受過(guò)流的沖擊。
?、?CAN_H和CAN_L與地之間并聯(lián)了2個(gè)30 pF的電容,可以過(guò)濾掉總線上的高頻干擾和一定的電磁輻射。
?、?2根CAN總線接入端與地之間分別反接了一個(gè)保護(hù)二極管。當(dāng)CAN總線有較高的負(fù)電壓時(shí),通過(guò)二極管的續(xù)流可起到一定的過(guò)壓保護(hù)作用。
?、?總線兩端接的120 Ω電阻起匹配總線阻抗的作用,忽略掉它會(huì)使數(shù)據(jù)通信的抗干擾性能及可靠性大大降低甚至無(wú)法通信。
1.5? 其他
除以上提到的幾個(gè)主要部分之外,還有單片機(jī)的復(fù)位電路、外部時(shí)鐘電路和電源等幾個(gè)部分,本文只提供了一種最簡(jiǎn)單方案。在實(shí)際應(yīng)用中,對(duì)于較為復(fù)雜的現(xiàn)場(chǎng)環(huán)境可以相應(yīng)添加看門(mén)狗復(fù)位電路和獨(dú)立電源設(shè)計(jì)等復(fù)雜電路。值得注意的是,對(duì)于復(fù)位電路和電源電路應(yīng)該給予足夠的重視。
2? 超聲波智能節(jié)點(diǎn)控制系統(tǒng)的軟件編寫(xiě)
軟件的編寫(xiě)工作主要有兩個(gè)部分:超聲波測(cè)距部分和CAN總線的通信部分。
2.1? 超聲波測(cè)距部分的軟件設(shè)計(jì)
超聲波發(fā)射部分的軟件設(shè)計(jì)相對(duì)簡(jiǎn)單。在軟件編寫(xiě)工作中,需要將超聲波持續(xù)發(fā)射一段時(shí)間以便被接收器準(zhǔn)確接收。以下程序可作參考:
START:MOV TH0, #00H;將定時(shí)器初值設(shè)為0,產(chǎn)生一個(gè)方波即產(chǎn)生一次中斷
MOV TL0, #00H
MOV 10H, #4D;將10H單元做一個(gè)計(jì)數(shù)器實(shí)現(xiàn)200 ms定時(shí)
SETB TR0;啟動(dòng)定時(shí)器T0
FS:CPL P2.0;P2.0口產(chǎn)生方波,對(duì)于6 MHz晶振頻率近似為40 kHz
REPEAT:MOV R0,#12
DJNZ R0,REPEAT
DJNZ 10H,FS
RET
……
END
當(dāng)超聲波接收器接收到回波時(shí),硬件電路產(chǎn)生低電平觸發(fā)P87C591的外部中斷0口。軟件編寫(xiě)的主要思想是,在中斷服務(wù)程序中由寄存器預(yù)先設(shè)定一個(gè)數(shù)值,這個(gè)數(shù)值是機(jī)器人避障的最短距離。從超聲波發(fā)射頭發(fā)射方波開(kāi)始,到超聲波接收頭接收到回波為止,把這段時(shí)間換算成為距離,與上述最短距離相比較。如大于最短距離,則不作處理,跳出中斷服務(wù)程序;如等于或小于最短距離,則執(zhí)行相應(yīng)動(dòng)作。圖6是這部分程序的流程。
2.2? CAN總線通信部分的軟件編寫(xiě)
這部分軟件編寫(xiě)主要由以下幾部分組成:初始化、接收處理、發(fā)送處理、中斷處理及錯(cuò)誤處理函數(shù)。由于系統(tǒng)中任意節(jié)點(diǎn)在任意時(shí)刻均可主動(dòng)與其他節(jié)點(diǎn)通信,故各個(gè)
節(jié)點(diǎn)通信程序大致相同。具體程序的編寫(xiě)可參考P87C591的用戶(hù)手冊(cè)。
結(jié)語(yǔ)
本文論述了以CAN總線擴(kuò)展多路超聲波傳感器的基本思想,介紹了一種以Philips公司P87C591作為超聲波傳感器控制核心及CAN總線控制器和以TJA1040作為CAN總線收發(fā)器的CAN總線智能超聲波測(cè)距系統(tǒng)。與以往移動(dòng)機(jī)器人超聲波傳感器測(cè)距系統(tǒng)相比,這個(gè)設(shè)計(jì)增加了CAN總線部分的設(shè)計(jì),將多路超聲波傳感器的擴(kuò)展轉(zhuǎn)移到智能節(jié)點(diǎn)部分上完成,簡(jiǎn)化了移動(dòng)機(jī)器人系統(tǒng)控制核心的工作;采取了比較簡(jiǎn)單的硬件設(shè)計(jì),主要是將超聲波傳感器的控制核心和CAN總線控制器集中到一起,采用P87C591一個(gè)器件完成兩種芯片的工作,大大節(jié)省硬件。另外,CAN總線的擴(kuò)展也會(huì)令后續(xù)的移動(dòng)機(jī)器人系統(tǒng)的進(jìn)一步開(kāi)發(fā)變得更為靈活。實(shí)踐證明這個(gè)設(shè)計(jì)可行,只是對(duì)于實(shí)際工作中不同應(yīng)用場(chǎng)合的有些電路(比如復(fù)位電路、電源電路等外圍電路)在設(shè)計(jì)細(xì)節(jié)上還有待進(jìn)一步細(xì)化。另外,軟件編寫(xiě)方面還應(yīng)特別注意多超聲波傳感器的抗干擾問(wèn)題。
評(píng)論
查看更多