



摘要:針對(duì)于汽車技術(shù)上出現(xiàn)的通信量大、電氣系統(tǒng)通信技術(shù)的缺點(diǎn)等缺陷,重點(diǎn)研究了CAN總線智能節(jié)點(diǎn)的設(shè)計(jì)和實(shí)現(xiàn)。通過(guò)P87C591微處理器對(duì)步進(jìn)電機(jī)進(jìn)行控制和利用CAN接口進(jìn)行數(shù)據(jù)傳輸,將數(shù)據(jù)傳送到CAN總線上,而且完成了從信號(hào)的采集到顯示以及控制系統(tǒng)和傳輸系統(tǒng)的軟硬件設(shè)計(jì),實(shí)現(xiàn)了CAN總線的數(shù)據(jù)傳輸,使通信速率和容錯(cuò)性大大提高。
關(guān)鍵詞:CAN總線;步進(jìn)電機(jī);單片機(jī);發(fā)動(dòng)機(jī)轉(zhuǎn)速
DOI: 10.3969/j.issn.1005-5517.2012.9.014
引言
隨著汽車中電氣設(shè)備的不斷增加和新型電子通信產(chǎn)品的出現(xiàn),汽車的信息以及綜合布線的共享也要有更高的要求,在通常情況下,其電氣系統(tǒng)采用點(diǎn)對(duì)點(diǎn)的單一通信方式,這樣的話就增加了汽車的重量和復(fù)雜度,而且實(shí)時(shí)性也不高,汽車的數(shù)據(jù)也不能共享,因此解決現(xiàn)代汽車中電子儀表和眾多控制裝置之間數(shù)據(jù)交換的問(wèn)題,以及車載電子裝置之間的數(shù)據(jù)通信就顯得尤為重要,而CAN總線作為現(xiàn)場(chǎng)總線的一種就滿足了上述要求[1]。
文章中,主要針對(duì)以上缺點(diǎn)設(shè)計(jì)了一種基于CAN總線的發(fā)動(dòng)機(jī)轉(zhuǎn)速監(jiān)控顯示系統(tǒng)裝置,該裝置通過(guò)利用單片機(jī)驅(qū)動(dòng)步進(jìn)電機(jī)顯示轉(zhuǎn)速并利用CAN接口進(jìn)行數(shù)據(jù)傳輸,將數(shù)據(jù)傳送到CAN總線上,使通信速率和容錯(cuò)性大大提高,能夠?qū)崟r(shí)監(jiān)控發(fā)動(dòng)機(jī)的轉(zhuǎn)速情況,而且提高了測(cè)量精度、顯示精度和測(cè)量的實(shí)時(shí)性,克服了機(jī)械式顯示儀表無(wú)法回避的缺點(diǎn)[2]。
控制局域網(wǎng)CAN總線的系統(tǒng)研究
在該設(shè)計(jì)的系統(tǒng)中,采用了P87C591單片機(jī)作為微控制器,它主要是結(jié)合了SJA1000和P87C554(NXP微控制器)的功能,智能節(jié)點(diǎn)由該主控制器和82C250型總線收發(fā)器組成,而微控制器在控制著總線接口的同時(shí)也在控制著步進(jìn)電機(jī)驅(qū)動(dòng)器,以此來(lái)驅(qū)動(dòng)步進(jìn)電機(jī)顯示轉(zhuǎn)速。另外,微控制器還控制著CAN接口,將采集到的數(shù)據(jù)發(fā)送到CAN總線上,并且接收其他CAN節(jié)點(diǎn)的信號(hào),通過(guò)上述操作來(lái)完成數(shù)據(jù)的傳輸和顯示轉(zhuǎn)速的功能。
系統(tǒng)的硬件設(shè)計(jì)
基于CAN總線的發(fā)動(dòng)機(jī)轉(zhuǎn)速顯示系統(tǒng)主要是通過(guò)主控制器P87C591來(lái)進(jìn)行主要控制,以此來(lái)實(shí)現(xiàn)CAN總線的傳輸功能。在此系統(tǒng)中主要有兩部分,首先是主控制器P82C591控制著步進(jìn)電機(jī)驅(qū)動(dòng)器,用步進(jìn)電機(jī)驅(qū)動(dòng)器來(lái)驅(qū)動(dòng)步進(jìn)電機(jī),之后是控制CAN收發(fā)器82C250進(jìn)行數(shù)據(jù)的發(fā)送,最后再由CAN總線將數(shù)據(jù)傳輸?shù)搅硪粋€(gè)CAN收發(fā)器和控制器中,在這個(gè)電路中由步進(jìn)電機(jī)來(lái)驅(qū)動(dòng)指針顯示發(fā)動(dòng)機(jī)的轉(zhuǎn)速[3],并完成CAN總線的數(shù)據(jù)傳輸,同時(shí)來(lái)檢驗(yàn)數(shù)據(jù)傳輸是否正確,因此在這里主要的硬件設(shè)計(jì)介紹如下。
微控制器P87C591的設(shè)計(jì)
控制器P87C591主要是采用了80C51的指令,另外它包括了SJA1000CAN控制器中的PeliCAN功能,它還增加了一下其他的功能,主要集中在增強(qiáng)的CAN總線接收中斷、擴(kuò)展的驗(yàn)收濾波器和驗(yàn)收濾波器可在運(yùn)行中改變等功能,另外,PeliCAN寄存器可以直接由CAN特殊功能寄存器進(jìn)行訪問(wèn)[4~5]。
在此給出該控制裝置的結(jié)構(gòu)示意圖如圖1所示。
通訊模塊的電路設(shè)計(jì)
在CAN總線的設(shè)計(jì)中,非常重要的一點(diǎn)就是CAN總線節(jié)點(diǎn)連接電路的設(shè)計(jì),為此給出了微處理器與收發(fā)器的連接和收發(fā)器與CAN總線的設(shè)計(jì)連接圖,詳見(jiàn)圖2所示。
其中CAN收發(fā)器82C250與CAN總線的接口部分采用了一定的抗干擾和安全措施,82C250的CANH和CANL引腳各自通過(guò)一個(gè)5Ω的電阻R1和R2,然后他們?cè)倥cCAN總線相連,這兩個(gè)電阻可起到一定的限流作用,它們和5Ω的電阻R3共同保護(hù)82C250免受比較大的電流的沖擊。CANH和CANL與地之間并聯(lián)了兩個(gè)30P的小電容C2和C3,這兩個(gè)電容可以起到濾除總線上的高頻干擾并起到了一定的防電磁輻射的作用。另外,在地和兩根CAN總線的接入端之間分別反接了一個(gè)保護(hù)二極管,當(dāng)CAN總線有較高的負(fù)電壓通過(guò)時(shí),二極管的短路也可以起到過(guò)壓保護(hù)的作用,其中C1和C4也是30P的小電容。
步進(jìn)電機(jī)驅(qū)動(dòng)模塊
步進(jìn)電機(jī)的驅(qū)動(dòng)可以通過(guò)步進(jìn)電機(jī)驅(qū)動(dòng)器來(lái)控制,因此在這里選擇了步進(jìn)電機(jī)驅(qū)動(dòng)器M-SX12.017,該驅(qū)動(dòng)器是一個(gè)有四通道的單片CMOS集成驅(qū)動(dòng)器,它能夠接收主控制器發(fā)來(lái)的脈沖信號(hào),并將接收到的信號(hào)轉(zhuǎn)換為具有一定頻率的電平序列,該驅(qū)動(dòng)器可以同時(shí)驅(qū)動(dòng)四個(gè)步進(jìn)電機(jī)正反旋轉(zhuǎn),帶動(dòng)指針指示實(shí)際測(cè)量值[7]。
步進(jìn)電機(jī)采用為汽車儀表指示和其他指示設(shè)備設(shè)計(jì)的大扭矩、低功耗、精密的步進(jìn)電機(jī),其型號(hào)為微型步進(jìn)電機(jī)M-SX15.168,它的步進(jìn)馬達(dá)需要兩路邏輯脈沖信號(hào)驅(qū)動(dòng)[8],可工作在5~10V的脈沖下,輸出轉(zhuǎn)角為315°,最大驅(qū)動(dòng)頻率為1100Hz,針軸最高的速度可以達(dá)到600°/s,輸出軸的步距角最小可以達(dá)到1/12°,因此它可以用分步模式或微步模式驅(qū)動(dòng)。
串口通訊電路
將編寫好的程序通過(guò)電腦下載到單片機(jī)上,在這之間采用RS232串口來(lái)實(shí)現(xiàn)數(shù)據(jù)的傳輸。其中最為主要的是將HEX文件通過(guò)STC軟件進(jìn)行下載,而對(duì)于P87C591來(lái)講,它是一個(gè)全雙工的串行通訊口,因此單片機(jī)和電腦之間可以進(jìn)行串口通訊。
圖1 結(jié)構(gòu)示意圖
圖2 CAN總線的設(shè)計(jì)連接
圖3 主程序流程
圖4 CAN初始化流程
系統(tǒng)的軟件設(shè)計(jì)
要在系統(tǒng)中實(shí)現(xiàn)對(duì)發(fā)動(dòng)機(jī)轉(zhuǎn)速的監(jiān)控和顯示以及通過(guò)CAN總線進(jìn)行傳輸?shù)墓δ埽捅仨殞?duì)其進(jìn)行軟件的設(shè)計(jì)和優(yōu)化,因此該裝置的軟件設(shè)計(jì)主要集中在主程序模塊、CAN總線通訊模塊和表頭驅(qū)動(dòng)模塊三部分。
系統(tǒng)的程序流程
具體的主程序流程圖如圖3所示。
CAN總線通訊模塊的設(shè)計(jì)
在總線節(jié)點(diǎn)的軟件設(shè)計(jì)中分為兩個(gè)部分,一部分是初始化,即CAN控制器的初始化和單片機(jī)的初始化,另一部分是實(shí)現(xiàn)節(jié)點(diǎn)完成數(shù)據(jù)采集和對(duì)執(zhí)行機(jī)構(gòu)的控制功能。這里重點(diǎn)給出了CAN總線的初始化和節(jié)點(diǎn)數(shù)據(jù)采集等設(shè)計(jì)工作,CAN初始化處理編程的流程圖如圖4所示。
對(duì)于初始化結(jié)束之后,進(jìn)行數(shù)據(jù)的采集和處理。主要是對(duì)轉(zhuǎn)速的采集和數(shù)據(jù)處理,由于在工作時(shí)步進(jìn)電機(jī)必須保持步距角的恒定,要是采集的頻率選擇不好的話,就會(huì)引起儀表指針的抖動(dòng),因此要使指針能夠平滑地轉(zhuǎn)動(dòng),而且轉(zhuǎn)速是頻率信號(hào),并且變化較快,所以選擇采樣頻率為4Hz,采用周期為250ms。
表頭驅(qū)動(dòng)模塊設(shè)計(jì)
當(dāng)驅(qū)動(dòng)時(shí)間間隔到達(dá)時(shí),中斷程序就會(huì)被觸發(fā),驅(qū)動(dòng)間隔計(jì)數(shù)器清零;當(dāng)前指針的位置與由采樣程序算得的理論值相互比較,如果相等則不作驅(qū)動(dòng);如果當(dāng)前值大于理論值,那么驅(qū)動(dòng)指針逆時(shí)針走一微步,并且執(zhí)行當(dāng)前值減1,如果當(dāng)前值小于理論值,驅(qū)動(dòng)指針順時(shí)針走一微步,并且執(zhí)行當(dāng)前值加1,然后返回系統(tǒng)程序,由主循環(huán)安排定時(shí)循環(huán)。
結(jié)束語(yǔ)
(1)把CAN總線引入到汽車儀表顯示檢測(cè)中并利用CAN總線的通信速率高、容錯(cuò)性強(qiáng)的特點(diǎn),提高了現(xiàn)場(chǎng)數(shù)據(jù)通信的可靠性和實(shí)時(shí)性,并且節(jié)約和簡(jiǎn)化了汽車的總體布線。
(2)主控制器作為監(jiān)控顯示系統(tǒng)的核心,可以很大程度提高測(cè)量精度和測(cè)量的實(shí)時(shí)性,并且可以克服機(jī)械式儀表無(wú)法回避的缺點(diǎn)。
(3)本文用步進(jìn)電機(jī)來(lái)代替?zhèn)鲃?dòng)的動(dòng)磁式和動(dòng)圈式機(jī)芯作為驅(qū)動(dòng)裝置,可以大大提高顯示精度,而且可以減少指針的抖動(dòng)。