新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 微波爐控制器的選型及其實(shí)例分析

微波爐控制器的選型及其實(shí)例分析

作者: 時(shí)間:2012-01-18 來(lái)源:網(wǎng)絡(luò) 收藏

的工作環(huán)境相對(duì)比較惡劣。首先是爐腔溫度比較高,控制器附近溫度也會(huì)比較高,達(dá)到60℃~70℃;另一方面,微波輻射對(duì)單片機(jī)抗干擾的要求也很高,在做多次快速開(kāi)關(guān)門試驗(yàn)中,當(dāng)少量微波泄露時(shí),對(duì)控制器有一定的輻射,以及反復(fù)開(kāi)通和關(guān)斷大功率負(fù)載會(huì)產(chǎn)生較強(qiáng)的干擾。所以選擇合適的單片機(jī)十分重要,在多年的家電產(chǎn)品設(shè)計(jì)中,經(jīng)常用盛群半導(dǎo)體(holtek)的48系列及46系列8bit單片機(jī)設(shè)計(jì),無(wú)論在適應(yīng)工作環(huán)境還是抗干擾等方面都完全滿足要求,在成本及供貨等方面比國(guó)外芯片也有更明顯的優(yōu)勢(shì)。

本文通過(guò)實(shí)際產(chǎn)品為例,以產(chǎn)品功能要求、方案確定和芯片選型、硬件設(shè)計(jì)、軟件規(guī)劃及編寫等幾部分介紹如何用單片機(jī)設(shè)計(jì)。

功能要求

設(shè)計(jì)產(chǎn)品首先了解產(chǎn)品的要求,了解越詳細(xì)設(shè)計(jì)反復(fù)修改就越少,特別是關(guān)于影響芯片選型及輸出控制等跟硬件直接相關(guān)的部分。本文介紹的微波爐控制器的主要功能如下:
微波加熱,功率有10檔。
燒烤加熱,功率有2檔。
熱風(fēng)烘烤加熱,溫度多檔。
混合加熱,有三種組合模式:燒烤加微波、烘烤加微波、烘烤加燒烤。
自動(dòng)解凍,重量選擇有20檔。
自動(dòng)菜單,6大類,各類分別有重量選擇。
顯示:88:88數(shù)碼管,四周帶14個(gè)圖標(biāo)。
按鍵:有功能選擇鍵、啟動(dòng)鍵、取消鍵、熱風(fēng)烘烤鍵,時(shí)鐘及定時(shí)鍵,自動(dòng)菜單各功能鍵,總共11個(gè)。
編碼開(kāi)關(guān):調(diào)節(jié)加熱時(shí)間。
另有蜂鳴器、門檢測(cè)和門燈控制。

方案確定和芯片選型

了解產(chǎn)品的詳細(xì)要求后,需要確定具體的實(shí)現(xiàn)方案,首先是選擇合適的單片機(jī)。選擇合適的型號(hào)主要要看兩個(gè)方面:硬件資源和軟件資源。要選擇合理的單片機(jī)首先必須了解單片機(jī)的各系列及各款的資源,再了解需要什么樣的資源,下面分別從硬件和軟件來(lái)說(shuō)明怎樣根據(jù)要求選擇單片機(jī)。在選擇單片機(jī)時(shí),整個(gè)產(chǎn)品的方案也基本確定。

硬件相關(guān)資源
硬件相關(guān)的資源是指外圍硬件相關(guān)的如i/o數(shù)量、特殊驅(qū)動(dòng)、工作電壓等。

首先,選擇合適的單片機(jī)系列??垂╇婋妷杭肮ぷ鳒囟瓤垢蓴_能力等是否滿足要求。盛群的mcu在系統(tǒng)振蕩頻率小于4mhz時(shí)供電電壓供電范圍為 2.2v~5.5v,當(dāng)8mhz時(shí)則為3.3v~5.5v,要提高系統(tǒng)的抗干擾能力,最好用5v電壓供電,當(dāng)供電電壓較高時(shí),mcu內(nèi)部所有邏輯電平幅值較高,容差電壓大,干擾更強(qiáng)才能改變其邏輯狀態(tài)。工作溫度,選擇holtek的48和46系列工業(yè)級(jí)單片機(jī),工作溫度范圍為-40℃~85℃,完全能滿足微波爐控制器工作溫度的要求。在選擇合適的系列時(shí),還要看特殊資源的要求,如中斷口、pwm、蜂鳴器驅(qū)動(dòng)、a/d轉(zhuǎn)換等;在此產(chǎn)品的具體要求中,需要檢測(cè)爐腔的溫度以及在產(chǎn)品中需要對(duì)交流風(fēng)扇調(diào)速,溫度檢測(cè)需要a/d轉(zhuǎn)換,交流風(fēng)扇調(diào)速控制需要有過(guò)零中斷,所以,在這個(gè)產(chǎn)品中選擇了46系列單片機(jī)。但此產(chǎn)品不需要lcd驅(qū)動(dòng)、高精度a/d轉(zhuǎn)換及比較器等資源,則不選擇ht46r6x、ht46r5x、ht46r1x等系列,而選擇ht46r2x系列。

再就是選擇的具體i/o要求和什么樣封裝的單片機(jī),在holtek單片機(jī)中同型號(hào)的單片機(jī)有多種封裝,如ht46r23有dip28或sop28封裝,也有dip24或sop24封裝,其i/o分別為23個(gè)和19個(gè)。

根據(jù)前面提到的功能要求,其i/o的需求列舉如下:
繼電器驅(qū)動(dòng):微波、燒烤、熱風(fēng)烘烤、門燈/轉(zhuǎn)盤、散熱風(fēng)扇共5個(gè)輸出ports。
蜂鳴器驅(qū)動(dòng):1個(gè)輸出ports
按鍵有11個(gè):11個(gè)輸入port
門狀態(tài)檢測(cè):1個(gè)輸入port
編碼開(kāi)關(guān)檢測(cè):2個(gè)輸入port
顯示數(shù)碼管:5個(gè)com,9個(gè)段,需14輸出port
過(guò)零中斷檢測(cè):1個(gè)中斷輸入port
溫度檢測(cè):1個(gè)a/d輸入port

簡(jiǎn)單加起來(lái)總共需要20個(gè)輸出port,16個(gè)輸入port??紤]復(fù)用i/o,將9個(gè)數(shù)碼驅(qū)動(dòng)段和5個(gè)公共端同時(shí)做輸入檢測(cè);溫度檢測(cè)只能用a/d口 pb.0,過(guò)零檢測(cè)只能用單獨(dú)的中斷pa.5來(lái)檢測(cè),所以總共需要22個(gè)i/o,所以選擇28pin的ht46r2x可以滿足要求。

軟件相關(guān)資源

軟件相關(guān)的資源主要包括程序空間即rom的大小和數(shù)據(jù)空間ram的多少,當(dāng)功能較多且復(fù)雜時(shí)需要更多的rom和ram;當(dāng)然還有定時(shí)器、中斷、以及其它某些特殊的資源;前面已經(jīng)選擇了28pin封裝的46r2x系列單片機(jī),此產(chǎn)品功能相對(duì)比較豐富,程序空間要求比較多,選擇4k的rom和 192byteram的ht46r23應(yīng)該能夠滿足要求,同樣封裝可以選擇28pin的ht46r24,它有8k rom和384byteram,可以做后備選擇,這樣不必?fù)?dān)心資源不夠時(shí)換ic,反復(fù)修改硬件就很麻煩。

總之,在選擇資源時(shí),要軟硬兼顧,如果程序簡(jiǎn)單,硬件資源要求高,則可以選擇封裝小、i/o少的單片機(jī),另外增加擴(kuò)展ic來(lái)擴(kuò)展i/o;當(dāng)程序復(fù)雜,硬件資源要求少時(shí),則選擇較小封裝、軟件資源多的單片機(jī)。

硬件電路設(shè)計(jì)
在選擇主芯片時(shí),已經(jīng)在考慮部分電路設(shè)計(jì)了,顯示、按鍵檢測(cè)、輸出驅(qū)動(dòng)等都考慮好了,由于篇幅有限,只簡(jiǎn)單介紹幾個(gè)關(guān)鍵問(wèn)題:

門檢測(cè)電路:給單片機(jī)檢測(cè)的門開(kāi)關(guān)信號(hào)的同時(shí),還要控制微波、燒烤、熱風(fēng)烘烤繼電器的電源。
供電部分:考慮數(shù)碼管顯示內(nèi)容較多,驅(qū)動(dòng)電流大,變壓器盡量選擇繼電器和單片機(jī)獨(dú)立供電,一方面降低變壓器功率,同時(shí)可以讓單片機(jī)的電源不受繼電器的工作狀態(tài)影響。

過(guò)零檢測(cè)和觸發(fā):選擇合適的光耦和可控硅驅(qū)動(dòng)電路,實(shí)現(xiàn)過(guò)零驅(qū)動(dòng),過(guò)零檢測(cè)電路注意適當(dāng)?shù)臑V波和隔離,減少通過(guò)電源耦合的干擾。

微波爐控制器電路原理圖如圖1。

微波爐控制器的選型及其實(shí)例分析
圖1 ht46x23微波爐原理圖

另外,pcb設(shè)計(jì)時(shí)注意強(qiáng)弱電分開(kāi),注意電源與地的分布,注意生產(chǎn)的工藝性問(wèn)題等??傊?,合理的硬件設(shè)計(jì)和pcb布板對(duì)保證產(chǎn)品功能和性能十分重要。

軟件規(guī)劃及編寫

芯片配置選項(xiàng)設(shè)定
根據(jù)硬件電路,將按鍵、編碼開(kāi)關(guān)及門檢測(cè)部分的內(nèi)部設(shè)置上拉電阻;盛群?jiǎn)纹瑱C(jī)的lvd功能很可靠,所以復(fù)位電路直接接到vcc,那么在設(shè)置配置選項(xiàng)時(shí)一定要開(kāi)啟低電壓復(fù)位功能,不開(kāi)啟容易上電復(fù)位不良。下面將主要選項(xiàng)設(shè)定列舉如下:
pa3/pfd: enable pfd
pull-high pb: enable
pull-high pc: disable
pull-high pd: enable
osc: crystal
wdt clock source: wdtosc
wdt: enable
lvr: enable
lvr voltage: 3.2v
clrwdt: two instructions.
軟件整體規(guī)劃及模塊化分解

將復(fù)雜的功能分解,通過(guò)變量傳遞各模塊之間的關(guān)聯(lián)內(nèi)容,模塊內(nèi)部則盡量獨(dú)立完成,這樣讓程序的可移植性提高,調(diào)試更快。把復(fù)雜的問(wèn)題簡(jiǎn)單化是程序編寫的重要原則。

1)主程序
通過(guò)調(diào)用各子程序,整合各模塊的功能。數(shù)碼管掃描顯示對(duì)時(shí)間要求比較高,而且各個(gè)公共端要平均分配時(shí)間,所以主程序執(zhí)行周期選擇固定周期。另外編碼開(kāi)關(guān)也是掃描檢測(cè)方式,當(dāng)編碼開(kāi)關(guān)旋轉(zhuǎn)很快時(shí),脈沖頻率較高,掃描周期也不能太長(zhǎng),綜合整體,主程序選擇4ms為執(zhí)行周期,但顯示和按鍵及編碼開(kāi)關(guān)則執(zhí)行2次,相當(dāng)于2ms的掃描周期。


如果用4mhz的晶振,4ms時(shí)間可以執(zhí)行4000條指令,程序設(shè)計(jì)合理情況下完全可以運(yùn)行完各子程序,不擔(dān)心出現(xiàn)當(dāng)處理事件多時(shí)顯示閃爍等問(wèn)題。

2)編碼開(kāi)關(guān)、按鍵及門狀態(tài)檢測(cè)
因編碼開(kāi)關(guān)、按鍵及門狀態(tài)檢測(cè)i/o都同顯示驅(qū)動(dòng)i/o復(fù)用,所以需統(tǒng)一處理。
先關(guān)閉顯示com,檢測(cè)seg上的狀態(tài),再關(guān)閉seg,再檢測(cè)com上的狀態(tài)。
此部分程序還要完成按鍵檢測(cè)及消抖動(dòng)處理、編碼開(kāi)關(guān)的檢測(cè)、門狀態(tài)去抖動(dòng)檢測(cè),以有效按鍵變量、編碼開(kāi)關(guān)左右旋轉(zhuǎn)標(biāo)志、門狀態(tài)等為輸出。其它子程序根據(jù)按鍵、編碼開(kāi)關(guān)操作和門狀態(tài)執(zhí)行對(duì)應(yīng)的操作和功能。

3)過(guò)零檢測(cè)及過(guò)零觸發(fā)
過(guò)零檢測(cè)在外部中斷程序中完成,中斷后根據(jù)當(dāng)前運(yùn)行狀態(tài)設(shè)置散熱風(fēng)扇半功率、全功率和關(guān)三種狀態(tài)。開(kāi)和關(guān)狀態(tài)直接設(shè)置控制光耦狀態(tài),當(dāng)需要半功率時(shí),需要記錄中斷次數(shù),調(diào)整導(dǎo)通和關(guān)閉周期,這里沒(méi)有用調(diào)整可控硅導(dǎo)通移相的方法調(diào)功,可減少電磁輻射。

4)按鍵設(shè)置
按鍵操作設(shè)置程序的輸入條件為有效的按鍵和編碼開(kāi)關(guān)左右旋轉(zhuǎn)標(biāo)志,再細(xì)分每個(gè)按鍵分別處理,在什么條件下設(shè)置對(duì)應(yīng)的工作時(shí)間、輸出模式、顯示模式、蜂鳴器鳴叫等。

5)顯示狀態(tài)設(shè)置
設(shè)置4字節(jié)保存顯示數(shù)字部分內(nèi)容,另2字節(jié)保存四周圖標(biāo)變量,由于四周的圖標(biāo)有閃爍和不閃爍狀態(tài),另2字節(jié)設(shè)置圖標(biāo)的閃爍狀態(tài)。

6)顯示輸出掃描
根據(jù)顯示狀態(tài)變量的8字節(jié)變量?jī)?nèi)容,設(shè)置數(shù)碼管對(duì)應(yīng)com和seg,掃描顯示輸出。

7)加熱輸出及功率控制設(shè)置
加熱和功率控制程序通過(guò)統(tǒng)一的變量輸入,設(shè)置當(dāng)前的微波、燒烤、熱風(fēng)還是幾種混合加熱,以及設(shè)置內(nèi)燈及散熱風(fēng)扇輸出等。

8)溫度檢測(cè)及計(jì)算
設(shè)置a/d轉(zhuǎn)換,檢測(cè)熱敏電阻的值,并濾波處理,以及開(kāi)路短路保護(hù)檢測(cè)。其輸出為故障狀態(tài)標(biāo)志和當(dāng)前爐腔溫度。在熱風(fēng)烘烤輸出程序中根據(jù)溫度設(shè)置對(duì)應(yīng)的加熱狀態(tài)。

9)時(shí)鐘、定時(shí)及運(yùn)行時(shí)間計(jì)算及對(duì)應(yīng)輸出模式切換
程序中關(guān)于時(shí)間的設(shè)置很多,大多都在這個(gè)子程序中完成,如時(shí)鐘計(jì)算、預(yù)約比較、倒計(jì)時(shí)、自動(dòng)功能的多段加熱模式切換等。

10)蜂鳴器設(shè)置
兩個(gè)變量buz_n,buz_long來(lái)設(shè)置蜂鳴器鳴叫次數(shù)和單聲鳴叫長(zhǎng)度。可單獨(dú)設(shè)置buz_long值為單聲的鳴叫,在上電和按鍵操作時(shí)設(shè)置單聲鳴叫。當(dāng)定時(shí)結(jié)束或定時(shí)啟動(dòng)或故障提示等情況時(shí),需要設(shè)置鳴叫多時(shí),設(shè)置buz_n值就可以了。

11)定時(shí)中斷子程序
定時(shí)中斷子程序相對(duì)很簡(jiǎn)單,只設(shè)置中斷次數(shù)記錄就可以了。由于蜂鳴器鳴叫頻率為2khz,所以定時(shí)中斷時(shí)間為250us。

其中內(nèi)容比較多的部分是:按鍵操作、顯示狀態(tài)設(shè)置、時(shí)鐘、定時(shí)及運(yùn)行時(shí)間計(jì)算及對(duì)應(yīng)輸出模式切換、加熱輸出及功率設(shè)置等部分。

在軟件的編寫中,變量規(guī)劃很重要,下面還列出了幾個(gè)典型的變量規(guī)劃:
整個(gè)產(chǎn)品的主要工作模式用run_state來(lái)記錄:
run_stateequ[40h]
s_hotfanequrun_state.0 ;熱風(fēng)烘烤
s_microequrun_state.1 ;微波
s_grillequrun_state.2 ;燒烤
s_mixequrun_state 3 ;混合模式
s_autoequrun_state.4 ;自動(dòng)解凍
s_muequrun_state.5 ;自動(dòng)菜單工作模式
s_fastequrun_state.6 ;快速啟動(dòng)模式
顯示模式用dsp_state來(lái)記錄:
dsp_stateequ[41h]
s_timeequdsp_state.0 ;顯示時(shí)鐘狀態(tài)
s_timerequdsp_state.1 ;顯示定時(shí)時(shí)間狀態(tài)
s_off_tequdsp_state.2 ;顯示倒計(jì)時(shí)狀態(tài)
s_codeequdsp_state.3 ;顯示菜單或工作模式狀態(tài)

加熱模式heat_mode變量來(lái)控制當(dāng)前的輸出,其具體數(shù)據(jù)說(shuō)明如下:

0則關(guān)閉所有輸出。

bit0_bit3 (10_1)保存微波100% /90% /80% /70% /60% /50% /40% /30% /20% /10% /10檔,即最后4bit來(lái)記錄微波輸出功率,在自動(dòng)解凍、自動(dòng)菜單、混合等非簡(jiǎn)單微波模式時(shí),加熱功率輸出時(shí)只需要判斷此變量,就直接設(shè)置微波輸出。

bit4_bit5保存燒烤功率100%和50%。

bit7保存熱風(fēng)烘烤輸出。

當(dāng)有混合狀態(tài)時(shí),則同時(shí)設(shè)置對(duì)應(yīng)的位就可以了。

合理設(shè)計(jì)變量對(duì)整個(gè)程序的編寫很有用,同時(shí)也是對(duì)產(chǎn)品功能的規(guī)劃和理解的具體化,找出主要的和關(guān)鍵的控制關(guān)系,設(shè)計(jì)合適的、適當(dāng)通用的算法。而且對(duì)于經(jīng)常編寫同類產(chǎn)品時(shí),移植程序變得很簡(jiǎn)單;比如將此產(chǎn)品數(shù)碼管換為lcd顯示時(shí),基本上只需要將顯示輸出部分修改為驅(qū)動(dòng)顯示ic或顯示ram就可以了,其顯示得內(nèi)容還是顯示時(shí)間、定時(shí)、倒計(jì)時(shí)時(shí)間、菜單或模式,只需要修改對(duì)應(yīng)得顯示表就可以了。

程序編寫和程序調(diào)試

軟件簡(jiǎn)單規(guī)劃后,就需要具體的編寫,將任務(wù)分解后,每部分已經(jīng)比較簡(jiǎn)單了,調(diào)試時(shí)可以考慮各子程序單獨(dú)調(diào)試,人為模擬輸入各種情況下的數(shù)據(jù)及狀態(tài),檢查輸出是否正確。再將相關(guān)聯(lián)的一起調(diào)試。除非很有把握,不要將程序全編寫完了再調(diào)試,那樣就不知道到底哪里有問(wèn)題。

程序簡(jiǎn)單題綱如下:
;定義常量,某些固定的值,多次用到或經(jīng)常修改的常量,單獨(dú)定義后調(diào)用。
buz_l0equ50d ;50*4=200ms設(shè)置所有默認(rèn)蜂鳴器鳴叫聲音長(zhǎng)度。
sw_t0equ70d ;有效按鍵響應(yīng)時(shí)間,按鍵去抖動(dòng)時(shí)間
。。。。。。
;定義i/o,將各輸入/輸出單獨(dú)按功能或原理圖網(wǎng)絡(luò)標(biāo)號(hào)定義,當(dāng)原理圖修改時(shí)方便軟件修改
buz_pequpa.3
grill_pequpc.0
micro_pequpc.1
......
;定義變量,
run_stateequ[40h] ;或則用自動(dòng)變量定義
......
;程序開(kāi)始
org0h
jmpstart_l
org04h ;外部中斷向量
jmpint_set ;跳轉(zhuǎn)過(guò)零中斷處理程序
org08h ;定時(shí)中斷向量,中斷周期為250us
movtemp_a,a ;保存
mova,status
movtemp_s,a
inct_int0 ;每次中斷0.25us
mova,temp_s
movstatus,a
mova,temp_a
reti
;中斷處理程序,注意先保存用到的acc和標(biāo)志寄存器status,返回前恢復(fù)
int_set:
......;中斷處理程序,設(shè)置風(fēng)扇輸出
reti
;主程序開(kāi)始
start_l:
;初始化ram、i/o、timer、中斷等,一般先將通用ram全清零
;注意繼電器等關(guān)鍵變量的初始化,否則上電時(shí)繼電器可能會(huì)跳一下。
;初始化某些特殊變量
;主循環(huán)程序部分
main:
callsw_in_set;注意按鍵設(shè)置會(huì)將顯示關(guān)閉,則顯示輸出程序在后
calldsp_out_set;顯示掃描程序
callsw_out_set;按鍵功能及狀態(tài)設(shè)置
callad_tem_set;a/d轉(zhuǎn)換及溫度計(jì)算
calldsp_state_set;顯示狀態(tài)計(jì)算
main_delay_2ms:
mova,t_int0;0.25*8=2 等待2ms時(shí)間到
suba,8
snzc
jmpmain_delay_2ms
callsw_in_set;注意按鍵設(shè)置會(huì)將顯示關(guān)閉,則顯示輸出程序在后
calldsp_out_set;調(diào)用顯示掃描程序
callheat_out _set;調(diào)用加熱狀態(tài)及功率設(shè)置
callbuz_set;調(diào)用蜂鳴器設(shè)置子程序
calltime_set
main_delay_4ms:
mova,t_int0 ;0.25ms*16=4ms 等待4ms時(shí)間到
suba,16
snzc
jmpmain_delay_2ms
clrt_int0
jmpmain
;各子程序分列后面
sw_in_set:;按鍵檢測(cè)、編碼開(kāi)關(guān)檢測(cè)、門狀態(tài)檢測(cè)
......
ret
dsp_out_set:;顯示掃描程序
......
ret
sw_out_set:;按鍵功能及狀態(tài)設(shè)置
......
ret
ad_tem_set:;a/d轉(zhuǎn)換及溫度計(jì)算
......
ret
dsp_state_set:;顯示狀態(tài)計(jì)算
......
ret
heat_out _set:;調(diào)用加熱狀態(tài)及功率設(shè)置
......
ret
buz_set:;蜂鳴器設(shè)置子程序
......
ret
time_set:;時(shí)間及定時(shí)處理程序
......
ret
;程序中會(huì)用到很多表,為調(diào)用方便,則將其放到最后頁(yè)面
org0f00h
dsp_code_l0:
dc10011111b;0
......
end;程序結(jié)束

蜂鳴器相關(guān)文章:蜂鳴器原理


關(guān)鍵詞: 微波爐控制器

評(píng)論


技術(shù)專區(qū)

關(guān)閉