周 濤
(中國船舶重工集團公司第七二三研究所,江蘇 揚州 225101)
傳統電源多采用硬件控制,體積龐大,計算精度低;而電子行業電路集成度越來越高,體積越來越小,體積龐大的電源即將被市場淘汰,也更加難以滿足應用要求。
軟件控制已成為行業主流趨勢,具有可控性強、靈活性高、可移植性強等優點;同時便于參數更改。無論是研發過程中的更改調整,還是使用中與整個系統的完美契合,軟件控制都更具優勢。
因此,為了達到電源小體積、高控制精度的要求,采用了軟件控制的方法。
本文介紹了一種基于PIC18F4580單片機電源控制系統的設計,首先提出了整個系統的設計方案;然后對硬件電路各部分進行設計,給出電路原理;接著進行軟件部分設計,包括通訊部分;最終經過電源的整機調試與使用,證明了該電源控制系統的有效性和可靠性。
該控制系統用于150 V 1 kW開關電源的控制,根據電源的控制要求,完成控制系統的設計。電源基本控制要求如下:
(1) 輸入電壓、輸入電流、輸出電壓、輸出電流、溫度采集并監測狀態;
(2) 通過CAN接收上級開關機命令,及時開關機,并發送開關機狀態;
(3) 根據電壓值、電流值、溫度值判斷電源工作狀態,實時監測故障狀態,出現故障及時關機,上報故障狀態;
(4) 實時監測旋轉編碼器,根據旋轉情況調節電壓電流基準;
(5) 數碼管顯示輸出電壓、輸出電流值,指示燈指示電源工作狀態。
根據控制要求,整理出需7路AD采樣口、3路旋鈕按鍵I/O口、7路電壓電流基準調節引腳、2路CAN口收發接口、3路數碼管顯示數據傳輸口、2路指示燈口、1路電源開關機輸出口。而PIC18F458采用精簡指令集和哈佛總線結構,采用流水線取指令方式,具有實用、低功耗、高速度及抗干擾能力強等特點[1],綜合考慮,選擇PIC18F4580作為控制芯片。
控制系統主要包含六大部分:微控制器、CAN通訊、旋轉調節、采樣、顯示和開關部分,系統結構框圖如圖1所示。

圖1 系統結構框圖
微控制器為系統的CPU,完成系統的整體控制。
基礎外圍電路、引腳分配如圖2所示,20 MHz晶振、20 pF電容、20 Ω串聯電阻組成震蕩電路,作為外部時鐘源;C26、C30作為芯片供電端濾波電容,保證芯片正常工作;XP1、R38、R39、C28組成程序燒寫電路,可隨時燒寫程序;AN0~AN6用作7路采樣電路AD輸入口,RB0用作電源開關機信號輸出口,RB1、RB4、RE2作為旋鈕按鍵信號輸入口,CANTX、CANRX用于CAN通訊,1腳、32腳、44腳作為顯示電路控制口,36腳、37腳、42腳、43腳作為電源調節控制口,RD0、RD1作為指示燈控制口。

圖2 微控制器電路圖
CAN總線遙控技術為本系統的核心。不同于傳統的手動式電源系統,該系統可以實現遠程控制的功能。
單片機作為控制器, ISO1050作為CAN收發器。該收發器具有電鍍隔離功能,其可為總線、CAN控制器提供差分發射、差分接收能力,信號傳輸速率高達1 Mbps。
控制器實現遙控的基本要求,收發器對接收的指令、需發送的上報數據進行收發。CAN控制器設計具體內容見軟件設計部分,此處不再贅述。
此外,實際應用中,還需在CAN總線兩端的CAN接頭上接入120 Ω的匹配電阻,以消除阻抗不連續的反射現象[2]。CAN通訊電路圖如圖3所示。

圖3 CAN通訊電路圖
旋鈕調節電路實現電源輸出電壓、電流的可調,為電源的附加功能,便于調試、實際使用。
該部分是簡單的開環線性控制系統,其響應嚴格地由描述系統行為的數學模型、系統輸入和初始條件所確定。系統使用人員通過旋鈕開關設定目標輸出值,順時針旋轉數值增加,逆時針旋轉數值減小,慢速旋轉細調,快速旋轉粗調,顯示部分會實時顯示具體數值,單片機作為控制器,隨時采集目標數據,對數據進行線性計算,將數據發送給數模轉換芯片,經過匹配處理將控制信號接入電源完成線性控制。
其中,選用小型回轉式編碼器EC11作為旋鈕按壓開關,其中按壓實現電壓基準和電流基準控制的切換,旋轉改變數值。旋鈕按鍵電路如圖4所示,EC11輸入端1、3、4腳各接5.1 kΩ的上拉電阻,默認為高電平,同時并聯一個去抖動電容,一般機械按鍵抖動頻率為100 Hz左右,當按鍵閉合抖動時接觸時間在毫秒級,綜合考慮,選1 000 pF電容作為去抖動電容。

圖4 旋鈕按鍵電路圖
數模轉換器選用12位精度的數模轉換器(DAC)芯片TLV5614,具體電路設計如圖5所示,該芯片采用5 V電源供電,防止模擬電路和數字電路相互干擾,可以在兩端串聯磁珠,電路原理圖未顯示,實際設計中已考慮。芯片的4腳與單片機42腳相連供數據傳輸,芯片5腳接單片機時鐘端。芯片6、7腳接入單片機,實現單片機對TLV5614芯片的控制。

圖5 數模轉換電路圖
為隔離前后級之間影響,接一電壓跟隨器實現阻抗匹配,具體電路如圖6所示。

圖6 電壓跟隨電路圖
因為電源本身已對采樣信號進行處理,此處只進行簡單的抗干擾、保護設計。采樣電路如圖7所示,電阻R2可防止大電流對單片機輸入口造成損壞; C2、R5組成高頻濾波電路,濾除輸入端高頻干擾信號;BAV99防止高電壓和負脈沖對芯片造成損壞。

圖7 采樣電路圖
顯示部分由驅動芯片MAX7221和數碼管組成,實現硬件顯示功能。顯示電路圖如圖8所示。驅動芯片1(數據信號)、12(片選信號)、13腳(時鐘信號)與單片機相應引腳相連,用以實現單片機對顯示的控制。

圖8 顯示電路圖
軟件設計基于集成開發環境(MAPLAB IDE),采用C語言編寫,程序主要包括初始化、電源開關機、電壓電流輸出調節、故障保護、顯示和通訊部分。程序流程圖如圖9所示。

圖9 程序流程圖
首先,單片機喚醒上電后進行系統初始化,檢測通訊是否正常;同時掃描旋鈕按鍵,讀取數據并存儲,數據經CPU計算后輸出,用以調節電源輸出。接著,實時監測遙控開關機指令,收到開機信號后,判斷電源輸入端是否正常,在電源輸入端正常的情況下發出開機信號,此時開始計時,計時結束監測更新電源工作狀態并上報數據;若收到關機指令,進行關機處理。
整個過程,隨時進行故障監測,遇到故障立即進行故障處理。顯示部分有2種工作狀態:在設置電壓基準和電流基準值時,隨旋鈕變化,實時顯示設置值;此外,顯示當前電源輸出電壓值和輸出電流值。
3.2.1 CAN控制器功能框架
CAN控制器按功能劃分為位時序邏輯、接口管理邏輯、位流處理器、接收濾波器、錯誤管理邏輯和信息緩沖器6個部分,用以實現CAN 2.0協議中物理層和數據鏈路層要求的全部功能,CAN控制器功能框架如圖10所示。

圖10 CAN控制器功能框架圖
接口管理邏輯通過地址/數據總線、控制總線連接主控制器。發送緩沖器能夠存儲一個完整的報文,當主控制器發出發送命令時,接口管理邏輯會使CAN核心模塊從發送緩沖器讀CAN報文。當收到一個報文時,CAN核心模塊將串行位流轉換成用于驗收濾波器的并行數據;通過這個可編程的濾波器,能確定主控制器要接收哪些報文。所有接收的報文由驗收濾波器驗收,并存儲在接收先進先出(FIFO)。存儲報文的多少由工作模式決定,因此,數據超載可能性被大大降低。
3.2.2 CAN控制器程序結構
CAN總線控制程序采用“自上而下”的設計方法,將控制器劃分為寄存器、位時序邏輯和位數據流處理器三部分。寄存器介于CAN控制器和微處理器之間,是它們交換數據的接口,主要用來存儲CAN控制器的中斷、命令、狀態等信息。位時序邏輯模塊主要是實現CAN總線協議中對位同步的控制[3],負責監視串行CAN總線輸入,并處理與總線有關的時序問題。位數據流處理器模塊是一個控制數據流的序列發生器。
按照芯片數據手冊以及系統需求,配置相關寄存器,配置收發報文對象,完成程序編寫,具體程序此處不再贅述。
3.2.3 CAN總線通信波特率計算
位定時是CAN總線上一個數據位的持續時間,主要用于CAN總線上各節點的通信波特率設置。為了優化網絡性能,對位定時中的采樣點位置、定時參數、信號傳播延遲進行設置。
標稱位速率為一理想的發送器在沒有重新同步的情況下每秒發送的位數量。標稱位時間劃分成同步段(Sync_Seg)、傳播時間段(Prop_Seg)、相位緩沖段1(Phase_Seg1)、相位緩沖段2(Phase_Seg2),即:
Tbit=(TSync_Seg+TProp_Seg+TPhase_Seg1+TPhase_Seg2)×
Tq
(1)
式中:Tbit為位標稱時間;Tq為時間份額。
時間份額是派生于振蕩器周期的固定時間單元。
綜合考慮,將同步段、傳播段、相位緩沖段1、相位緩沖段2分別設置為1、1、4、4時間量程,采用10時間份額的位標稱時間,即:
Tbit=(1+1+4+4)×Tq=10Tq
(2)
波特率預分頻器的位時間份額Tq由波特率預分頻值(BRP)決定,振蕩器頻率被分頻的值用于產生位時間份額。位時間值是該份額的整數倍,波特率預分頻的有效值為0~63,即:
Tq=2×(CBRP+1)×Tosc
(3)
式中:Tosc為控制器系統時鐘;CBRP為波特率預分頻值。
因為控制器時鐘頻率為20 MHz,所以Tosc=0.05 μs。
為了得到250 kbit/s的通信波特率,代入以上公式,可計算出CBRP=3。根據計算結果對相關寄存器進行設置,即可實現預定波特率的設置。
綜合以上軟硬件設計,印制了電路板。經過硬件電路的反復調試以及軟件程序的反復修改,形成最終產品。整機聯調、試驗均滿足要求。現已通過質量檢驗并交付使用,進而驗證了該電源控制系統的有效性和可靠性。