關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > 用HT46X23設計微波爐控制器實例分析

        用HT46X23設計微波爐控制器實例分析

        作者:Holtek揚生 時間:2008-03-25 來源: 收藏

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

        本文引用地址:http://www.104case.com/article/80617.htm

          本文通過實際產品為例,以產品功能要求、方案確定和芯片選型、硬件設計、軟件規劃及編寫等幾部分介紹如何用單片機設計

          功能要求

          設計產品首先了解產品的要求,了解越詳細設計反復修改就越少,特別是關于影響芯片選型及輸出控制等跟硬件直接相關的部分。本文介紹的微波爐控制器的主要功能如下:

          ?微波加熱,功率有10檔。

          ?燒烤加熱,功率有2檔。

          ?熱風烘烤加熱,溫度多檔。
         
          ?混合加熱,有三種組合模式:燒烤加微波、烘烤加微波、烘烤加燒烤。

          ?自動解凍,重量選擇有20檔。

          ?自動菜單,6大類,各類分別有重量選擇。

          ?顯示:88:88數碼管,四周帶14個圖標。

          ?按鍵:有功能選擇鍵、啟動鍵、取消鍵、熱風烘烤鍵,時鐘及定時鍵,自動菜單各功能鍵,總共11個。

          ?編碼開關:調節加熱時間。

          ?另有蜂鳴器、門檢測和門燈控制。

          方案確定和芯片選型

          了解產品的詳細要求后,需要確定具體的實現方案,首先是選擇合適的單片機。選擇合適的型號主要要看兩個方面:硬件資源和軟件資源。要選擇合理的單片機首先必須了解單片機的各系列及各款的資源,再了解需要什么樣的資源,下面分別從硬件和軟件來說明怎樣根據要求選擇單片機。在選擇單片機時,整個產品的方案也基本確定。

          硬件相關資源

          硬件相關的資源是指外圍硬件相關的如I/O數量、特殊驅動、工作電壓等。

          首先,選擇合適的單片機系列。看供電電壓及工作溫度抗干擾能力等是否滿足要求。盛群的MCU在系統振蕩頻率小于4MHz時供電電壓供電范圍為2.2V~5.5V,當8MHz時則為3.3V~5.5V,要提高系統的抗干擾能力,最好用5V電壓供電,當供電電壓較高時,MCU內部所有邏輯電平幅值較高,容差電壓大,干擾更強才能改變其邏輯狀態。工作溫度,選擇Holtek的48和46系列工業級單片機,工作溫度范圍為-40℃~85℃,完全能滿足微波爐控制器工作溫度的要求。在選擇合適的系列時,還要看特殊資源的要求,如中斷口、PWM、蜂鳴器驅動、A/D轉換等;在此產品的具體要求中,需要檢測爐腔的溫度以及在產品中需要對交流風扇調速,溫度檢測需要A/D轉換,交流風扇調速控制需要有過零中斷,所以,在這個產品中選擇了46系列單片機。但此產品不需要LCD驅動、高精度A/D轉換及比較器等資源,則不選擇HT46R6X、HT46R5X、HT46R1X等系列,而選擇HT46R2X系列。

          再就是選擇的具體I/O要求和什么樣封裝的單片機,在Holtek單片機中同型號的單片機有多種封裝,如HT46R23有DIP28或SOP28封裝,也有DIP24或SOP24封裝,其I/O分別為23個和19個。

          根據前面提到的功能要求,其I/O的需求列舉如下:

          繼電器驅動:微波、燒烤、熱風烘烤、門燈/轉盤、散熱風扇共5個輸出ports。

          蜂鳴器驅動:1個輸出ports

          按鍵有11個:11個輸入port

          門狀態檢測:1個輸入port

          編碼開關檢測:2個輸入port

          顯示數碼管:5個COM,9個段,需14輸出port

          過零中斷檢測:1個中斷輸入port

          溫度檢測:1個A/D輸入port

          簡單加起來總共需要20個輸出port,16個輸入port。考慮復用I/O,將9個數碼驅動段和5個公共端同時做輸入檢測;溫度檢測只能用A/D口PB.0,過零檢測只能用單獨的中斷PA.5來檢測,所以總共需要22個I/O,所以選擇28PIN的HT46R2x可以滿足要求。

          軟件相關資源

          軟件相關的資源主要包括程序空間即ROM的大小和數據空間RAM的多少,當功能較多且復雜時需要更多的ROM和RAM;當然還有定時器、中斷、以及其它某些特殊的資源;前面已經選擇了28PIN封裝的46R2X系列單片機,此產品功能相對比較豐富,程序空間要求比較多,選擇4K的ROM和192byteRAM的HT46R23應該能夠滿足要求,同樣封裝可以選擇28PIN的HT46R24,它有8K ROM和384byteRAM,可以做后備選擇,這樣不必擔心資源不夠時換IC,反復修改硬件就很麻煩。

          總之,在選擇資源時,要軟硬兼顧,如果程序簡單,硬件資源要求高,則可以選擇封裝小、I/O少的單片機,另外增加擴展IC來擴展I/O;當程序復雜,硬件資源要求少時,則選擇較小封裝、軟件資源多的單片機。

          硬件電路設計

          在選擇主芯片時,已經在考慮部分電路設計了,顯示、按鍵檢測、輸出驅動等都考慮好了,由于篇幅有限,只簡單介紹幾個關鍵問題:
        門檢測電路:給單片機檢測的門開關信號的同時,還要控制微波、燒烤、熱風烘烤繼電器的電源。

          供電部分:考慮數碼管顯示內容較多,驅動電流大,變壓器盡量選擇繼電器和單片機獨立供電,一方面降低變壓器功率,同時可以讓單片機的電源不受繼電器的工作狀態影響。

          過零檢測和觸發:選擇合適的光耦和可控硅驅動電路,實現過零驅動,過零檢測電路注意適當的濾波和隔離,減少通過電源耦合的干擾。
        微波爐控制器電路原理圖如圖1。

          另外,PCB設計時注意強弱電分開,注意電源與地的分布,注意生產的工藝性問題等。總之,合理的硬件設計和PCB布板對保證產品功能和性能十分重要。

          軟件規劃及編寫

            芯片配置選項設定

          根據硬件電路,將按鍵、編碼開關及門檢測部分的內部設置上拉電阻;盛群單片機的LVD功能很可靠,所以復位電路直接接到VCC,那么在設置配置選項時一定要開啟低電壓復位功能,不開啟容易上電復位不良。下面將主要選項設定列舉如下:

          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.

          軟件整體規劃及模塊化分解

          將復雜的功能分解,通過變量傳遞各模塊之間的關聯內容,模塊內部則盡量獨立完成,這樣讓程序的可移植性提高,調試更快。把復雜的問題簡單化是程序編寫的重要原則。

          1)主程序

          通過調用各子程序,整合各模塊的功能。數碼管掃描顯示對時間要求比較高,而且各個公共端要平均分配時間,所以主程序執行周期選擇固定周期。另外編碼開關也是掃描檢測方式,當編碼開關旋轉很快時,脈沖頻率較高,掃描周期也不能太長,綜合整體,主程序選擇4ms為執行周期,但顯示和按鍵及編碼開關則執行2次,相當于2ms的掃描周期。


        圖1  微波爐原理圖

          如果用4MHz的晶振,4ms時間可以執行4000條指令,程序設計合理情況下完全可以運行完各子程序,不擔心出現當處理事件多時顯示閃爍等問題。

          2)編碼開關、按鍵及門狀態檢測

          因編碼開關、按鍵及門狀態檢測I/O都同顯示驅動I/O復用,所以需統一處理。

          先關閉顯示COM,檢測SEG上的狀態,再關閉SEG,再檢測COM上的狀態。

          此部分程序還要完成按鍵檢測及消抖動處理、編碼開關的檢測、門狀態去抖動檢測,以有效按鍵變量、編碼開關左右旋轉標志、門狀態等為輸出。其它子程序根據按鍵、編碼開關操作和門狀態執行對應的操作和功能。

          3)過零檢測及過零觸發

          過零檢測在外部中斷程序中完成,中斷后根據當前運行狀態設置散熱風扇半功率、全功率和關三種狀態。開和關狀態直接設置控制光耦狀態,當需要半功率時,需要記錄中斷次數,調整導通和關閉周期,這里沒有用調整可控硅導通移相的方法調功,可減少電磁輻射。

          4)按鍵設置

          按鍵操作設置程序的輸入條件為有效的按鍵和編碼開關左右旋轉標志,再細分每個按鍵分別處理,在什么條件下設置對應的工作時間、輸出模式、顯示模式、蜂鳴器鳴叫等。

          5)顯示狀態設置

          設置4字節保存顯示數字部分內容,另2字節保存四周圖標變量,由于四周的圖標有閃爍和不閃爍狀態,另2字節設置圖標的閃爍狀態。

          6)顯示輸出掃描

          根據顯示狀態變量的8字節變量內容,設置數碼管對應COM和SEG,掃描顯示輸出。

          7)加熱輸出及功率控制設置

          加熱和功率控制程序通過統一的變量輸入,設置當前的微波、燒烤、熱風還是幾種混合加熱,以及設置內燈及散熱風扇輸出等。

          8)溫度檢測及計算

          設置A/D轉換,檢測熱敏電阻的值,并濾波處理,以及開路短路保護檢測。其輸出為故障狀態標志和當前爐腔溫度。在熱風烘烤輸出程序中根據溫度設置對應的加熱狀態。

          9)時鐘、定時及運行時間計算及對應輸出模式切換

          程序中關于時間的設置很多,大多都在這個子程序中完成,如時鐘計算、預約比較、倒計時、自動功能的多段加熱模式切換等。

          10)蜂鳴器設置

          兩個變量buz_n,buz_long來設置蜂鳴器鳴叫次數和單聲鳴叫長度。可單獨設置buz_long值為單聲的鳴叫,在上電和按鍵操作時設置單聲鳴叫。當定時結束或定時啟動或故障提示等情況時,需要設置鳴叫多時,設置buz_n值就可以了。

          11)定時中斷子程序

          定時中斷子程序相對很簡單,只設置中斷次數記錄就可以了。由于蜂鳴器鳴叫頻率為2KHz,所以定時中斷時間為250us。

          其中內容比較多的部分是:按鍵操作、顯示狀態設置、時鐘、定時及運行時間計算及對應輸出模式切換、加熱輸出及功率設置等部分。

          在軟件的編寫中,變量規劃很重要,下面還列出了幾個典型的變量規劃:

          整個產品的主要工作模式用run_state來記錄:

          run_state equ [40h]
          s_hotfan equ run_state.0     ;熱風烘烤
          s_micro equ run_state.1     ;微波
          s_grill equ run_state.2     ;燒烤
          s_mix equ run_state 3     ;混合模式
          s_auto equ run_state.4     ;自動解凍
          s_mu equ run_state.5     ;自動菜單工作模式
          s_fast equ run_state.6     ;快速啟動模式
          顯示模式用dsp_state來記錄:
          dsp_state equ [41h]
          s_time equ dsp_state.0     ;顯示時鐘狀態
          s_timer equ dsp_state.1     ;顯示定時時間狀態
          s_off_t equ dsp_state.2     ;顯示倒計時狀態
          s_code equ dsp_state.3     ;顯示菜單或工作模式狀態

          加熱模式heat_mode變量來控制當前的輸出,其具體數據說明如下:

          0則關閉所有輸出。

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

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

          bit7保存熱風烘烤輸出。

          當有混合狀態時,則同時設置對應的位就可以了。

          合理設計變量對整個程序的編寫很有用,同時也是對產品功能的規劃和理解的具體化,找出主要的和關鍵的控制關系,設計合適的、適當通用的算法。而且對于經常編寫同類產品時,移植程序變得很簡單;比如將此產品數碼管換為LCD顯示時,基本上只需要將顯示輸出部分修改為驅動顯示IC或顯示RAM就可以了,其顯示得內容還是顯示時間、定時、倒計時時間、菜單或模式,只需要修改對應得顯示表就可以了。

          程序編寫和程序調試

          軟件簡單規劃后,就需要具體的編寫,將任務分解后,每部分已經比較簡單了,調試時可以考慮各子程序單獨調試,人為模擬輸入各種情況下的數據及狀態,檢查輸出是否正確。再將相關聯的一起調試。除非很有把握,不要將程序全編寫完了再調試,那樣就不知道到底哪里有問題。

          程序簡單題綱如下:

          ;定義常量,某些固定的值,多次用到或經常修改的常量,單獨定義后調用。

          buz_l0 equ 50d    ;50*4=200ms設置所有默認蜂鳴器鳴叫聲音長度。
          sw_t0 equ 70d    ;有效按鍵響應時間,按鍵去抖動時間
          ......
          ;定義I/O,將各輸入/輸出單獨按功能或原理圖網絡標號定義,當原理圖修改時方便軟件修改
          buz_p equ pa.3
          grill_p equ pc.0
          micro_p equ pc.1
          ......
          ;定義變量,
          run_state equ [40h]    ;或則用自動變量定義
          ......
          ;程序開始
         org 0h
         jmp start_l
         org 04H       ;外部中斷向量
         jmp int_set     ;跳轉過零中斷處理程序
         org 08H       ;定時中斷向量,中斷周期為250us
         mov temp_a,a   ;保存
         mov a,status
         mov temp_s,a
         inc t_int0        ;每次中斷0.25us
         mov a,temp_s
         mov status,a
         mov a,temp_a
         reti
          ;中斷處理程序,注意先保存用到的ACC和標志寄存器status,返回前恢復
          int_set:
         ......;中斷處理程序,設置風扇輸出
         reti
          ;主程序開始
          start_l:
          ;初始化RAM、I/O、timer、中斷等,一般先將通用RAM全清零
          ;注意繼電器等關鍵變量的初始化,否則上電時繼電器可能會跳一下。
          ;初始化某些特殊變量
          ;主循環程序部分
          main:
         call sw_in_set ;注意按鍵設置會將顯示關閉,則顯示輸出程序在后
         call dsp_out_set ;顯示掃描程序
         call sw_out_set ;按鍵功能及狀態設置
         call ad_tem_set ;A/D轉換及溫度計算
         call dsp_state_set ;顯示狀態計算
          main_delay_2ms:
         mov a,t_int0 ;0.25*8=2   等待2ms時間到
         sub a,8
         snz c
         jmp main_delay_2ms
         call sw_in_set ;注意按鍵設置會將顯示關閉,則顯示輸出程序在后
           call dsp_out_set ;調用顯示掃描程序
         call heat_out _set ;調用加熱狀態及功率設置
         call buz_set ;調用蜂鳴器設置子程序
         call time_set
          main_delay_4ms:
         mov a,t_int0   ;0.25ms*16=4ms   等待4ms時間到
         sub a,16
         snz c
         jmp main_delay_2ms
         clr t_int0
         jmp main
          ;各子程序分列后面
          sw_in_set: ;按鍵檢測、編碼開關檢測、門狀態檢測
         ......
         ret
          dsp_out_set: ;顯示掃描程序
         ......
         ret
          sw_out_set: ;按鍵功能及狀態設置
         ......
         ret
          ad_tem_set: ;A/D轉換及溫度計算
         ......
         ret
          dsp_state_set: ;顯示狀態計算
         ......
         ret
          heat_out _set: ;調用加熱狀態及功率設置
         ......
         ret
          buz_set: ;蜂鳴器設置子程序
         ......
         ret
          time_set: ;時間及定時處理程序
         ......
         ret
          ;程序中會用到很多表,為調用方便,則將其放到最后頁面
         org 0f00h
          dsp_code_l0:
         dc 10011111b;0
          ......
          end ;程序結束

        蜂鳴器相關文章:蜂鳴器原理


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 新河县| 普兰店市| 阳山县| 陇南市| 南投县| 饶平县| 青田县| 修文县| 安新县| 偃师市| 兴业县| 东乡族自治县| 长葛市| 广州市| 专栏| 温泉县| 芮城县| 长子县| 夏河县| 民勤县| 大姚县| 双流县| 得荣县| 台州市| 逊克县| 息烽县| 章丘市| 铁岭市| 越西县| 鄂伦春自治旗| 北流市| 五台县| 利川市| 喀什市| 凌海市| 平原县| 青神县| 昌吉市| 富蕴县| 澎湖县| 辽源市|