電磁爐控制板設計原理:電磁爐MCU軟件設計

小家電 電磁爐 軟件 廚衛電器 創新電子 2017-06-07

第四章 電磁爐MCU軟件設計

電磁爐控制板設計原理:電磁爐MCU軟件設計

§1 程序總體結構

由上面的分析可知,本程序應分為兩大部分:主程序和定時器中斷服務程序。主程序為前臺程序,是循環執行的,主要實現那些需要實時處理的功能,如功率控制、定溫控制、無鍋檢測和報警等;定時器中斷服務程序為後臺程序,是定時執行的,主要是為前臺程序服務的,包括提供良好的人機界面,為主程序提供狀態轉換及定時數據,以及實現各種需要計時、定時控制的功能等等。

為了使程序運行穩定可靠,前、後臺程序應遵循如下原則:

1、前、後臺程序可以雙向傳送數據。但後臺數據提供給前臺,是為了協助主程序實現電磁爐的某些功能。如程序在中斷中檢測到開機鍵按下,傳遞至前臺,主程序就進行開機處理;而前臺數據提供給後臺,是輔助性的,是為了更好地實現前臺功能服務的。如蜂鳴器延時,在前臺打開蜂鳴器,並設置好延時時間,就可以不管了,而後臺接收到蜂鳴器打開的信號後,對所設延時時間計時到後,關閉蜂鳴器。又如無鍋檢測需要在控制線打開50MS以後才能開始,可以這樣來實現這個功能:在程序的任何地方(包括前臺主程序中)先設置好延時時間,再打開控制線,在中斷中接收到控制線開的信號後(相當於前臺向後臺傳遞了打開控制線的信息),即對50MS的延時時間進行定時,當主程序循環執行到無鍋檢測時,首先便判斷50MS定時到否,若定時到(相當於後臺向前臺傳遞了控制線打開時間已經超過了50MS的信息),則進行無鍋檢測;若定時未到,則轉去執行其它程序。這樣就保證了主程序的實時性。在實際程序中,還有很多這種前、後臺程序精密配合的例子。

2、由於中斷可能發生在主程序的任何地方,後臺為前臺提供的數據隨時會改變,因此在一次主程序循環中,此數據最好只使用一次。若在一次主程序循環中,一個後臺數據不得已被使用了兩次以上,則應在第一次和最後一次使用之間關閉中斷,或在中斷中禁止改變此數據。否則,如果中斷恰好發生在一次主程序循環中兩次使用同一個後臺數據之間,並且在此次中斷中,這個數據被改變了,那麼由此導致的後果將不可預測。

3、在中斷服務程序中,也可以單獨實現一些需要週期性控制的功能。例如定時時鐘。又例如,在加熱狀態的最低火力檔,除了輸出相應的PWM佔空比外,還需要每過3秒將控制線反轉。

§2 主程序結構

一、總框架

軟件流程圖如圖4.1所示。上電初始化後便進入主程序循環,實際上主程序循環可分為兩個:開機循環和關機循環。

上電後,默認為關機狀態,所以程序進程進入關機處理,然後再不斷檢測開機鍵是否按下,關機處理是一次性的,所以關機循環僅僅單純地等待開機鍵的按下。

在關機狀態下,按下開機鍵,程序進程進行開機初始化後,便進入另一個循環:開機循環。開機初始化是一次性的,在開機循環中,程序不但要檢測關機鍵是否按下,還要進行開機處理,開機處理中包括了功率控制、定溫控制、無鍋檢測和報警等,是實現電磁爐主要功能的地方。在開機狀態下,按下關機鍵,則又可進入關機循環。

電磁爐控制板設計原理:電磁爐MCU軟件設計

從總框架流程圖中所能看出的控制信號只有一個:開機還是關機,在實際編程時設置了一個開關機標誌位powflg,1為開機,0為關機,可來自於中斷(鍵盤,定時時間到),也可來自於主程序本身(無鍋檢測,報警檢測)。本主程序結構的制定機理,保證了在一次主程序循環中,只使用了一次powflg信號,並且還需保證在主程序循環的其它進程內部不再使用此標誌。

二、上電初始化

上電初始化中包括了口線初始化、測試鍵檢測、鍵盤顯示掃描初始化、定時器中斷初始化、AD轉換初始化中,流程圖如下。延時500MS是等待電路狀態穩定,否則,上電後馬上按開/關鍵,可能引起誤報警(市電電壓E1)。圖中A為主程序循環的入口點

電磁爐控制板設計原理:電磁爐MCU軟件設計

三、關機處理

關機信號(powflg)可以來自於電磁爐上電、鍵盤、定時時間到、無鍋檢測和報警檢測。關機狀態下有如下特徵:

1、顯示全滅,只有開/關鍵有效,這個功能可以在中斷中實現。

2、控制線關斷,PWM輸出關機佔空比。

3、電風扇關閉。關閉條件為IGBT溫度低於50度。

4、能檢測到開機信號。

後三個功能在主程序中實現,流程圖如下

電磁爐控制板設計原理:電磁爐MCU軟件設計

四、開機處理總框架

流程如圖4.4所示。開機處理為主要實現電磁爐功能的地方,實時性強,程序量較大。此處只畫出總框架,較細節的流程見後。

電磁爐控制板設計原理:電磁爐MCU軟件設計

圖中的輸出處理標誌puthdlflg,被設置為1時,表示主程序正在進行輸出處理,中斷後不允許判鍵,否則可能引起輸出邏輯混亂。

五、AD轉換子程序

AD轉換流程如圖4.5所示。

1、ADC值緩衝區adcbfr(首地址),5個字節對應存放5個通道的ADC值,用間接方式尋址。

2、ADC定時計數器adctmr。在1MS中斷中計數,每10MS進行一次AD轉換。

3、累加和adcsumh/adcsuml、最大/最小值adcmax/adcmin作為中間計算暫存器。

4、另外還使用了自定義的通用寄存器r0、r1來分別計數通道數和採樣次數。

本MCU的AD轉換器,當進行切換通道後的第一次採樣時,由於內部模擬開關的切換,將對該通道外部的模擬信號線帶來較大的尖峰干擾,因此採取以下軟件措施:

電磁爐控制板設計原理:電磁爐MCU軟件設計

1、儘量減少通道切換的次數。本系統的5通道AD轉換,可以用兩種方法:第一是,一次採樣切換5個通道,採樣6次,最後一起計算AD轉換結果;第二是,一個通道採樣6次,立即計算該通道的AD轉換結果,再切換5個通道。前者通道切換次數為30次,後者為5次。顯然,第二種方法更適合本MCU。但第一種方法更能體現信號線上電壓,在一個ADC週期內的平均值。

2、切換通道後,先進行一次假採樣,再延時60US。

3、為了減小對模擬信號線上電容的影響,應降低AD轉換的頻率。如ADC定時,10MS轉換一次。

六、報警檢測

程序流程如圖4.6所示。程序中設置瞭如下變量對報警檢測進行控制:

1、報警標誌almflg。開機初始化時被清除,連續5次有異常時被置位。此信息被傳入中斷,用於控制報警顯示延時及報警顯示(見定時器中斷)。

2、報警延時計時器almtcnt。almflg被置位的同時,被設置為20,在定時器中斷中,在almflg=1的條件下,每250MS減一,共延時5秒,時間到信息被傳入本流程。

3、報警計數器almcnt。開機初始化及整機運轉正常被清除,有一個異常時加一,連續加至5時,產生報警。

4、報警號almnumb。區分報警類型,此信息被傳入中斷,用報警顯示。

電磁爐控制板設計原理:電磁爐MCU軟件設計

七、無鍋檢測

程序流程如圖4.7所示。程序中設置瞭如下變量對報警檢測進行控制:

1、無鍋檢測標誌noguoflg。開機初始化及首次檢測到有鍋時被清除,首次檢測到無鍋時被置位。該標誌置位後將會被傳入定時器中斷,用於控制無鍋報警提示、每2秒打開控制線等。

2、控制線打開持續時間計數器ctrlcnt。每當有控制線關斷時,設置此計數器,在定時器中斷中,檢測到控制線打開且此計數器不為0時,將其減1,直至減為0時被傳入主程序,在開機循環中,檢測到此單元為0,才可進行一次有無鍋負荷電流測試。

3、延時2秒計數器noguocnt1。當首次檢測到無鍋時被設置為2秒延時時間初始值8(對250MS進行計數),在定時器中斷中,在無鍋檢測狀態(noguoflg=1)下,進行向下計數,計數到其值為0時,打開控制線,且重置此計數器,返復循環。

4、無鍋檢測次數計數器noguocnt。當首次檢測到無鍋時被設置為15次,當連續15次檢測到無鍋(負荷電流太小)時,設置關機標誌。

電磁爐控制板設計原理:電磁爐MCU軟件設計

八、輸出處理

輸出處理由功率控制和控制線控制兩部分組成。後者包括了定溫控制(見後一頁)。功率控制流程如圖4.8所示,其中變量設置說明如下:

1、加熱/定溫狀態切換標誌heatflg。1為加熱,0為定溫,開機初始化為1。只有鍵盤可改變此標誌。

2、加熱檔位寄存器heatreg和計數器heatcnt。heatreg高5位低電平有效,每1位對應一加熱檔,heatreg.7為“保溫” ,控制顯示比較方便;heatcnt對5檔進行計數,0為“炒”,控制查表比較方便。開機初始化heatreg=f7h,heatcnt=0,為“炒”檔。只有鍵盤可改變此標誌。

3、最小火力控制變化定時計數器minpowcnt,在定時器中斷中將其減為0後,傳入主程序。當處於“加熱—保溫”時,主程序重置此計數器,並將控制線反轉。

電磁爐控制板設計原理:電磁爐MCU軟件設計

九、定溫控制

功率控制流程如圖4.9所示。其中變量設置說明如下:

1、由於溫度變化比較緩慢,因此3秒對其控制一次已經足夠。定溫控制定時器kptmr,當切換為定溫工作狀態時被初始化。在中斷中對其進行計數,定時計數為0時,傳入主程序,主程序對其進行重置。

2、定溫檔位寄存器keepreg和計數器keepcnt。keepreg高5位低電平有效,每1位對應一溫度檔,keepreg.7為“70” ,控制顯示比較方便;keepcnt對5檔進行計數,0為“240”,控制查表比較方便。開機初始化keepreg=f7h,keepcnt=0,為“240”檔。只有鍵盤可改變此標誌。

電磁爐控制板設計原理:電磁爐MCU軟件設計

相關推薦

推薦中...