C8051F040的車用CAN總線智能節(jié)點(diǎn)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
電氣與電子系統(tǒng)是車輛的重要組成部分,其工作狀態(tài)直接影響車輛的性能。按照傳統(tǒng)設(shè)計(jì)思想設(shè)計(jì)車輛電氣系統(tǒng)時(shí),往往采取堆積各種子系統(tǒng)的途徑來(lái)提高系統(tǒng)的性能,因此車輛內(nèi)部各子系統(tǒng)之間單純面向任務(wù)而不考慮與全局的關(guān)系。隨著子系統(tǒng)及裝置數(shù)量不斷增加,傳統(tǒng)設(shè)計(jì)方法遇到了一系列問題:線路增多、布線復(fù)雜、電磁干擾增加、系統(tǒng)可靠性下降、檢查維修困難等。為了解決上述問題,現(xiàn)代車輛采用了綜合電子系統(tǒng)。總線是綜合電子系統(tǒng)的基礎(chǔ),通過總線節(jié)點(diǎn),綜合電子系統(tǒng)可采集、使用、分配和共享車內(nèi)所有電子系統(tǒng)的各種信息,達(dá)到弱化矛盾、增強(qiáng)整體功能的目的。CAN總線由于具有性價(jià)比高、可靠性高、實(shí)時(shí)性好、靈活性強(qiáng)等特點(diǎn),得到廣泛應(yīng)用。本文針對(duì)CAN總線,提出了一種基于C8051F040的通用總線智能節(jié)點(diǎn)的設(shè)計(jì)方法。
1 總體設(shè)計(jì)
本文采用C8051F040單片機(jī)作為智能節(jié)點(diǎn)的主控芯片來(lái)設(shè)計(jì)CAN總線通用智能節(jié)點(diǎn)。智能節(jié)點(diǎn)通過現(xiàn)場(chǎng)信號(hào)調(diào)整、高速數(shù)據(jù)采集獲取該節(jié)點(diǎn)下設(shè)備的參數(shù),并通過總線收發(fā)器將數(shù)據(jù)發(fā)送到CAN總線,同時(shí)根據(jù)參數(shù)及總線上的其他信息和命令對(duì)設(shè)備進(jìn)行控制。通過CAN總線智能節(jié)點(diǎn),可將車輛電氣系統(tǒng)各子系統(tǒng)及設(shè)備緊密聯(lián)系在一起,構(gòu)成一個(gè)實(shí)時(shí)控制網(wǎng)絡(luò),如圖1所示。
考慮到智能節(jié)點(diǎn)的通用性,經(jīng)過對(duì)車輛各子系統(tǒng)和設(shè)備參數(shù)進(jìn)行分析,確定了智能節(jié)點(diǎn)主要指標(biāo)。
①信號(hào)輸入:8路模擬信號(hào)輸入,16路數(shù)字信號(hào)輸入,2路脈沖量輸入;
②控制信號(hào)輸出:2路模擬控制信號(hào)輸出,8路數(shù)字信號(hào)輸出;
③CAN總線接口:1個(gè)CAN總線接口(支持CAN2.0A和CAN2.0B)。
2 硬件設(shè)計(jì)
CAN總線節(jié)點(diǎn)有兩種設(shè)計(jì)方法,一種采用通用微控制器結(jié)合獨(dú)立CAN控制器加上收發(fā)器,另一種采用集成CAN控制器的微控制器結(jié)合CAN收發(fā)器。本文采用第二種設(shè)計(jì)方法,選用1片C8051F040單片機(jī)作為智能節(jié)點(diǎn)的主控芯片。主控芯片內(nèi)部集成CAN控制器,兼容CAN2.0A和CAN2.0B,配合總線收發(fā)器后可完成CAN通信。此外,主控芯片還使用內(nèi)部集成的A/D轉(zhuǎn)換器完成對(duì)模擬信號(hào)的采集,同時(shí)向被控設(shè)備輸出模擬和數(shù)字控制信號(hào)。主控芯片各種資源的相關(guān)情況見參考文獻(xiàn)。
智能節(jié)點(diǎn)的硬件系統(tǒng)包括:模擬信號(hào)采集電路、開關(guān)信號(hào)采集電路、開關(guān)信號(hào)輸出、LCD電路、CAN總線電路等。硬件原理框圖如圖2所示。
2.1 模擬信號(hào)采集電路
模擬信號(hào)采集電路用于采集受控設(shè)備輸出的模擬信號(hào)。該電路由模擬信號(hào)調(diào)整電路、SPI總線A/D轉(zhuǎn)換器MCP3208、高速光電耦合器2801以及外圍電路組成,其電路原理圖如圖3所示。
[!--empirenews.page--]
模擬信號(hào)調(diào)整電路可用于測(cè)量模擬電壓信號(hào)、模擬電流信號(hào)以及電阻信號(hào)。以連接到MCP3208第1通道的電路為例:當(dāng)R2斷開,R4和R1連接適當(dāng)阻值的電阻時(shí),該電路可用于測(cè)量模擬電壓信號(hào);當(dāng)R2斷開,R4短路,R1連接采樣電阻時(shí),該電路可用于測(cè)量模擬電流信號(hào);當(dāng)R1斷開,R4短路,R2連接適當(dāng)阻值的電阻時(shí),該電路可用于測(cè)量電阻信號(hào)。R5與二極管D1和D2組成保護(hù)電路。R6、R9及C4組成分壓和濾波電路。
為了保證系統(tǒng)穩(wěn)定、可靠工作,控制模塊的數(shù)字地與模擬地嚴(yán)格分開。因此,模塊沒有使用C8051F040內(nèi)部集成的A/D轉(zhuǎn)換器,而是使用外部SPI總線A/D轉(zhuǎn)換器MCP3208。MCP3208是12位逐次逼近型模/數(shù)轉(zhuǎn)換器,具有片上采樣和保持電路。該A/D轉(zhuǎn)換器使用與SPI協(xié)議兼容的簡(jiǎn)單串行端口與主控芯片相連,轉(zhuǎn)換速率可高達(dá)100 ksps。主控芯片C8051F040是8位單片機(jī),其SPI端口要求以8位數(shù)據(jù)為一組來(lái)收發(fā)數(shù)據(jù)。同時(shí),為了與MCP3208通信,將主控芯片SPI口設(shè)置為主方式,時(shí)鐘下降沿輸出數(shù)據(jù),時(shí)鐘上升沿鎖存數(shù)據(jù)。
設(shè)計(jì)中,8路模擬信號(hào)經(jīng)調(diào)整后與MCP3208的8個(gè)模擬輸入端相連。A/D轉(zhuǎn)換器的電源與參考電壓輸入端通過電感L1與5 V電源相連,模擬地通過電感L2與5 V電源地相連,以減小電源擾動(dòng)對(duì)A/D轉(zhuǎn)換的影響。同時(shí),MCP3208的SPI接口與單片機(jī)之間也使用光電耦合器隔離,從而保證數(shù)字地與模擬地嚴(yán)格分開。圖中只給出了MOSI與MISO光耦隔離的原理圖,SCLK與CS隔離的原理相同。
2.2 開關(guān)信號(hào)采集電路
開關(guān)信號(hào)采集電路用于采集受控設(shè)備輸出的開關(guān)信號(hào)。該電路由光電耦合器2801及其外圍電路組成,其電路原理圖如圖4所示。當(dāng)外部開關(guān)信號(hào)的高電平信號(hào)接于開關(guān)信號(hào)采集電路輸入端時(shí),光耦內(nèi)部發(fā)光二極管工作,光敏三極管導(dǎo)通,光電耦合器輸出低電平信號(hào)。主控芯片通過I/0口掃描光電耦合器輸出端即可采集開關(guān)信號(hào)。R1、R2、C1組成輸入分壓濾波電路。
2.3 CAN總線接口電路
由于C805lF040內(nèi)部集成了CAN總線控制器,外電路中只要設(shè)置總線收發(fā)器即可完成通信。CAN總線接口電路用于完成CAN總線通信,由總線收發(fā)器VP251、光電耦合器0211及外圍電路組成,其電路原理圖如圖5所示。
CAN總線接口電路采用VP251作為總線收發(fā)器,該收發(fā)器主要用于單端信號(hào)與差動(dòng)信號(hào)之間的相互轉(zhuǎn)換。此外,單片機(jī)最小控制電路與總線收發(fā)器之間采用光電耦合器隔離,以提高系統(tǒng)工作的可靠性。光電耦合器采用2片高速光耦O211,1片用于接收,1片用于發(fā)送。
2.4 開關(guān)信號(hào)輸出電路
開關(guān)信號(hào)輸出電路用于向外部被控對(duì)象輸出驅(qū)動(dòng)信號(hào)。該電路由光電耦合器2801組成,其電路原理圖如圖6所示。當(dāng)開關(guān)信號(hào)輸出電路接收到低電平信號(hào)時(shí),光耦內(nèi)部發(fā)光二極管工作,光敏三極管導(dǎo)通,光電耦合器輸出低電平信號(hào)。
2.5 電源電路
電源電路用于向其他功能電路供電。電源由輸入濾波器CXDB2、電源模塊PWB2405、三端穩(wěn)壓器AMS1117及外圍電路組成,其電路原理圖如圖7所示。
[!--empirenews.page--]
為了限制傳導(dǎo)干擾,電源模塊使用電磁干擾(EMI)濾波器CXDB2來(lái)抑制電源輸入中的傳導(dǎo)噪聲。輸入電源經(jīng)過濾波后送入2個(gè)獨(dú)立的電源模塊PWB2405中獲得3組5 V電源。5V-2為模擬信號(hào)輸入與A/D轉(zhuǎn)換電路提供電源,5V-1向CAN總線收發(fā)器供電,5VG為模擬電源,地。VCC為采用5 V電壓的數(shù)字電路提供電源,同時(shí)向三端穩(wěn)壓器模塊AMSlll7提供電源。AMSlll7將VCC轉(zhuǎn)換為2組3.3 V電源,3.3 V-1為C8051F040內(nèi)部A/D轉(zhuǎn)換器提供電源和參考電壓,3.3V-2為單片機(jī)最小控制電路提供數(shù)字電源。
3 軟件設(shè)計(jì)
3.1 主程序
主程序流程如圖8所示。智能節(jié)點(diǎn)上電后,主程序首先完成系統(tǒng)初始化,主要內(nèi)容包括:初始化I/0口、A/D轉(zhuǎn)換器、SPI總線、LCD、CAN總線等,然后進(jìn)入循環(huán)工作狀態(tài)。程序采用掃描方式完成模擬信號(hào)采集和開關(guān)信號(hào)采集。采集得到的數(shù)據(jù)經(jīng)過濾波、補(bǔ)償?shù)确绞教幚砗?,通過CAN通信子程序發(fā)送到CAN總線。此外,循環(huán)工作過程中,系統(tǒng)還會(huì)通過LCD子程序顯示相關(guān)信息。
3.2 信號(hào)采集程序
智能節(jié)點(diǎn)信息采集量較大,如何實(shí)現(xiàn)對(duì)多種、多路信號(hào)實(shí)時(shí)采集是系統(tǒng)設(shè)計(jì)的關(guān)鍵。電氣系統(tǒng)典型信號(hào)主要包括模擬信號(hào)、開關(guān)信號(hào)等。
采集模擬信號(hào)時(shí),利用外部12位A/D轉(zhuǎn)換器,采用軟件查詢的方式采集模擬信號(hào)并進(jìn)行數(shù)字濾波處理。由于所要采集的模擬信號(hào)較多,因此必須實(shí)現(xiàn)采集通道動(dòng)態(tài)切換;采用定時(shí)掃描C8051F040數(shù)字I/O口的方法采集數(shù)字信號(hào)。
3.3 CAN通信程序
C8051F040內(nèi)部的CAN控制器集成了用于接收及發(fā)送的所有硬件,與使用外部CAN控制器相比,可以大大減少占用CPU的時(shí)間。CAN總線接收采用中斷方式完成,發(fā)送采用查詢方式完成。CAN總線接收和發(fā)送的流程如圖9所示。
4 結(jié)論
本文提出了一種基于C8051F040單片機(jī)的CAN總線智能節(jié)點(diǎn)設(shè)計(jì)方案。通過該智能節(jié)點(diǎn)能夠?qū)崿F(xiàn)設(shè)備的數(shù)據(jù)采集與控制,而且根據(jù)需要加入適當(dāng)算法后,還可以實(shí)現(xiàn)智能控制和故障診斷等功能。該智能節(jié)點(diǎn)已應(yīng)用于某型車輛的模擬教學(xué)平臺(tái)中,通過由16個(gè)節(jié)點(diǎn)組成的CAN控制網(wǎng)絡(luò)完成了對(duì)整個(gè)平臺(tái)設(shè)備的綜合控制,性能良好。