



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