基于STM32的汽車空調調速模塊信號發生器的設計
摘要:適應汽車電子技術的發展,根據汽車空調調速模塊生產中的測試需要,設計了一種支持多類型信號輸出的汽車空調調速模塊信號發生器?芍С諳V-10V分辨率O.1V的直流輸出;頻率10Hz-lOOOHz,占空比O%-lOO%的PWM輸出;LIN-BUS總線輸出。涵蓋了目前主流的三種類型信號,具有輸出精度高、輸出穩定、使用簡單的特點。根據實際需要,設計了測試和老化兩種工作模式,測試模式用于人工測試產品使用,老化模式用于產品老化實驗階段自動循環掃描輸出。
關鍵詞:DC;LIN;PWM
引言
近年來,隨著汽車電子技術的發展,汽車已經深入人們的生活。汽車空調作為汽車舒適系統的重要部分,也越來越引起駕駛者的關注。汽車空調調速模塊主要用于控制空調鼓風機的轉速,進而改變空調出風量的大小,是汽車空調系統里的重要組成部分也是最容易損壞的部件。從過去簡單的純電阻分壓換擋到現在的電子開關式調速模塊的無級調速,集成度越來越高,功能也越來越豐富。汽車空調控制器ECU發出的調速信號類型也從DC直流、PWM占空比等模擬信號向LIN通信的數字化方向發展。以往測試模塊往往需要借助直流電源、DDS函數信號發生器,帶LIN通信的模塊測試時,甚至需要購買整套空調控制系統才可進行測試,成本高、操作復雜。本文設計的汽車空調調速模塊信號發生器則將上述幾種信號集成在了一個信號發生器里,并根據產品實際研發和生產需要,設計了簡潔的人機界面,大大降低了對操作工人的技術水平要求。同時增加了老化模式,方便產品老化需要。
本文提出的汽車空調調速模塊信號發生器設計方案支持OV~10V直流電壓信號輸出,分辨率O.lV,數字步進輸出;頻率范圍10Hz~1000Hz,0%~100%占空比下的PWM信號輸出:支持LIN2.0標準LIN-BUS總線通信輸出,數據幀內容可根據新增模塊進行升級擴展。
一、硬件設計
圖1為系統硬件框圖,硬件由MCU系統電路、DC輸出電路、PWM輸出電路、LIN通信電路、人機界面、系統工作電源等幾部分組成。三種類型信號通過繼電器切換選擇,最終在BNC公共端子上輸出。
1.1 MCU及相關電路
MCU選用當前主流ARMCortex-M3芯片,ST公司的STM32F103C8T6,其具有極高的性價比。它是一款TQFP48封裝的微控制器,系統工作時鐘最高可達72MHz,64KB flash、20K RAM,豐富的內存空間為以后的升級提供了保障。同時內部集成了硬件PWM、USART、I?C總線、內置復位、及看門狗電路等外設,適用很多高集成度、低成本的應用場合。通過外接一個8MHz的石英晶體振蕩器,保證了系統時鐘的準確性,將PWM輸出頻率和LIN-BUS總線的波特率誤差降到最低。外接了一片EEPROM芯片FM24CL16用于系統參數及用戶當前設置操作的掉電存儲,下次開機可以直接調用歷史設置。
1.2 DC輸出電路
DC信號由PWM濾波得到,如圖2。STM32F103C8T6的硬件PWM定時器為16位,足夠滿足直流OV~10V量程下步進O.lV的分辨率。使用其TIME1的CH1通道輸出頻率為lkHz的PWM,輸出為推挽方式。PWM輸出的高電平經過基準芯片LM385BZ-2.5穩壓到2.5V,然后再經由LM358構成的二階低通濾波放大電路輸出,為保證輸出直流信號的平滑度,又加了一級RC濾波:二階低通濾波器的截止頻率取16Hz。C23、C24直接取1μF,由f=1/2πRC計算可得R16、R17阻值為lOkQ;PWM的VPP為2.5V,為滿足DC最大10V輸出,至少需放大4倍,考慮預留余量取G=R18+R19/R18=4.3,同時為了使集成運放兩個輸入端對地的電阻平衡,取R18=lOkΩ, R19=33kΩ。輸出再經過一級跟隨器,可保證輸出信號的低阻抗‘副。另為防止輸出被短路,輸出串聯了lkΩ輸出限流保護電阻R22,并使用二極管1N4148做了反向保護。D3、D4兩個鉗位二極管和D5反向二極管用于防止輸出被誤接其它外部信號時對電路造成損壞。
1.3 PWM輸出電路
使用TIME1的CH2通道輸出頻率范圍10Hz―lOOOHz,占空比O%~l00%的PWM信號。信號的.幅值固定為SVVpp。為了提高PWM信號的驅動能力,輸出采用三極管構建了一個圖騰柱驅動電路。當PWM輸出低電平時,Q2截止,Q3導通,Q4截止,最終PWM OUT輸出為高電平:當PWM輸出高電平時,Q2導通,Q3截止,Q4導通,最終PWM~OUT輸出為低電平。為防止輸出被短路,在輸出端串聯了一個lOOmA的自恢復保險絲Fl,限制其最大輸出能力為lOOmA;D7的1N5819可防止與模塊連接時被誤反接進而可能對本電路的損傷。PWM輸出電路見圖3。
1.4 LIN通信電路
目前LIN總線技術正被越來越廣泛的應用到車身電子中,它是面向汽車低端分布式應用的低成本、低速率、串行通信總線。LIN接口由兩部分組成:協議控制器、線路接口。協議控制器可在MCU的一個標準UART上實現,MCU軟件負責管理LIN協議并實現以下功能,發送/接收8位字節、構成請求幀(接收為應幀)、發送幀。線路接口,負責將LIN總線的信號翻譯成無干擾的RX信號傳入LIN協議控制器:或將協議控制器的RX信號進行翻譯傳人LIN總線。物理層采用單線連接,兩個電控單元間的最大傳輸距離為40m,低傳輸速率小于20kb/s,采用NRZ編碼。在總線上發送的信息,有長度可選的固定格式。每個報文幀都包括2、4或8個字節的數據以及3個字節的控制、安全信息(同步場、標識符場和校驗場)。
STM32F103C8T6用作協議控制器,其內部的USART支持LIN模式。LIN接口則采用NXP公司的TJA1020,它是目前主流LIN物理接口芯片。信號發生器只向電子調速模塊發送調速指令的數據幀,故工作在master主機模式下。如圖4所示,LIN收發器的睡眠控制輸入NSLP引腳直接接到MCU工作電源3.3V上,使其一直處理喚醒狀態。本地喚醒NWAKE引腳則加限流電阻接到地上。TJA1020在主機應用下,需要增加一個額外的主機端電阻,通過在LIN和BAT引腳之間串聯一個反向電流二極管D12和電阻R35實現,為了提高EMC以及降低EMI,對地連接了一個電容負載C28。同樣為防止外部短路和反接,在輸出端還增加了一個loQ的限流電阻R36和lOOmA的自恢復保險絲F2,有效保護自身電路。
1.5 人機界面
人機界面用于輸出信號類型、輸出模式、輸出值等狀態的設定和顯示,電路見圖5。采用上下兩行4聯共陰數碼管顯示數值,上行數碼管Ul用于顯示LIN通信類型模塊的型號和PWM下的頻率值,下行數碼管U2則顯示DC信號下的輸出電壓值:PWM下的占空比:LIN下的輸出檔位等。數碼管驅動電路采用一種集成化的串行輸入/輸出共陰極顯示驅動器MAX7219,它連接微處理器與2個4聯共陰8段數碼管,具有自動掃描、數字的譯碼與非譯碼選擇、模擬和數字亮度控制功能。并外接了8個LED燈用于當前選擇的信號類型、測試/老化模式、輸出開啟/關閉等狀態指示。
設計了4個獨立按鍵和一個旋鈕式編碼開關做為用戶操作設置按鍵,使操作盡量簡單化。分別為Sl信號類型切換鍵、S2測試/老化模式切換鍵、S3輸出開/關鍵、編碼開關S4實現+/一及設置確定功能。
1.6 系統電源電路
系統直接采用220V市電供電,輸入首先經過一個lOOmAl250V的自恢復保險絲,確保內部發生意外短路故障時能快速有效地保護系統。再通過Ll共模電感和Cl安規電容構成的EMI電路,提高系統受外部電網波動或電源噪聲等EMI干擾。再使用15V/5W的工頻變壓器將電壓降到15V,并通過整流、濾波轉換成直流電壓輸出。系統需要較多種類電源電壓,首先通過高效率的降壓型DC-DC芯片LM2576-ADJ將電壓穩壓到SV供PWM電路和切換信號輸出通道的繼電器使用:MCU及其外圍電路工作需要的3.3V電源則由一片LDO芯片LD1117-3.3將SV進一步穩壓到3.3V得到。另外通過使用一片LDO芯片HT7550對地串聯一個6.8V穩壓管可直接將15V電源穩壓到12V,來為LIN通信電路提供工作電源。圖6為系統電源電路。
電路中還設計了一個掉電檢測電路,當系統發生斷電情況時可迅速通知MCU將用戶當前的操作設定存入EEPROM中,下次開機上電時再將數據讀取出來使用。將15V電源經30k Q和lOk Q電阻分壓后接到比較器LM311的同相端,反相端接到由LM38582-2.5基準電路輸出的2.5V參考電壓上。當斷電瞬間電源電壓從15V跌到10V時比較器迅速反轉產生一個下降沿輸出,觸發MCU的外部中斷,通知其進行掉電保護操作。
二、軟件設計
系統軟件采用C語言編寫,主程序包含了DC輸出及校準、PWM輸出、LIN通信幀編碼及輸出、顯示及按鍵掃描、掉電保護等幾個功能函數。
系統校準是廠家出廠前使用的校準程序,用于信號發生器首次上電開機時,DC通道的輸出值校準.校準采用上/下限兩點式線性校準方式,分別校準1V和10V輸出點,校準公式為y=x*(y2-yl)/(x2-xl)+yl。只需校準一次,校準值存入EEPROM,斷電不丟失。
系統使用MCU內部鎖相環將系統8M外部主時鐘倍頻到72MHz,保證在PWM輸出時可通過分檔改變TIME1的時鐘預分頻系數,實現頻率1Hz~lkHz,占空比O%~100%范圍內1%的分辨率和準確度。DC輸出時則需要根據輸出設定值,結合兩點式線性校準公式調整輸出PWM的占空比,從而改變輸出的電壓值。
LIN通信則按照LIN 2.O總線標準,使MCU的USART工作在LIN模式下,并編寫了一個LIN數據幀編碼及發送函數,波特率為9600,數據位8位,停止位1位,無校驗位。報文幀由報文頭和響應內容組成,見圖7:報文頭包括13位長度的同步間隔,同步域Ox55,標識符場Ox61;響應內容為5個字節,包括datal(給定速度0~255間任意值)、data2、data3、data4分別為固定值Ox02、Ox20、Ox00。校驗和域是數據域所有字節的和的反碼。
系統采用一個外部中斷用于掉電檢測,當中斷事件發生時,立即將用戶當前設定的參數寫入EEPROM。等待下次開機時再從EEPROM中讀取方便用戶繼續使用上次設定。存儲的主要參數有當前信號類型、DC輸出值、PWM輸出頻率和占氣空比、LIN模塊型號和檔位、測試/老化模式等。測試模式下,用戶可手工設置當前輸出具體值,并作出任意調整。老化模式下,用戶則只需選擇信號類型和模塊型號,信號發生器將定時每間隔5分鐘自動每次按滿量程的10%步進循環輸出。
三、結論
采用本方法設計的汽車空調調速模塊信號發生器已經達到了設計要求,并已形成產品在汽車空調調速模塊產品的測試、老化等生產檢測環節中使用,并取得了良好的使用效果。
【基于STM32的汽車空調調速模塊信號發生器的設計】相關文章: