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