基于GMS87C1404的干洗機(jī)自動控制系統(tǒng)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
關(guān)鍵詞:單片機(jī);MCU;干冼機(jī);VFD;GMS87C1404
1 概述
GMS87C1404是韓國HYNIX半導(dǎo)體公司(前身是韓國現(xiàn)代半導(dǎo)體公司)采用CMOS技術(shù)生產(chǎn)的8位單片機(jī),它具有功耗低、速度高等特點(diǎn),并具有豐富的片內(nèi)資源。GMS87C1404采用28腳封裝,有23個I/O口。由于該單片機(jī)的性價(jià)比高,因此,近兩年來在國內(nèi)家電行業(yè)中獲得了越來越多的應(yīng)用。
筆者依據(jù)GMS87C1404的特點(diǎn)和干洗機(jī)中自動控制系統(tǒng)的要求設(shè)計(jì)了一個基于GMS87C1404的干洗機(jī)自動控制系統(tǒng)。該系統(tǒng)在使用了一段時(shí)間后獲得了滿意的效果。
2 GMS87C1404的特點(diǎn)
圖1是GMS87C1404的引腳圖。它的主要特點(diǎn)如下:
●內(nèi)帶4kROM和192字節(jié)在片RAM(包括堆棧);
●8MHz時(shí)的指令周期為0.25μs;
●工作電壓范圍為2.5~5.5V;
●具有8位雙向多功能I/O口,可直接驅(qū)動LED顯示;
●內(nèi)含8位A/D轉(zhuǎn)換器;
●內(nèi)含1個8位時(shí)間間隔定時(shí)器;
●內(nèi)含4個8位定時(shí)/計(jì)數(shù)器;
●內(nèi)含2個10位高速PWM模式;
●內(nèi)含WATCHDOG定時(shí)器;
●帶有1個8位SPI串行接口;
●具有12個中斷源;
●具有1個可編程蜂鳴器驅(qū)動口;
●可支持省電模式STOP;
●可選用RC振蕩。
GMS87C1404中的四個定時(shí)器/計(jì)數(shù)器不僅可以作為四個8位定時(shí)器/計(jì)數(shù)器使用,同時(shí)通過對定時(shí)方式寄存器TM0、TM1和TM2、TM3中有關(guān)位的設(shè)置還可以使它們工作在如下7種定時(shí)方式:
(1)8位計(jì)數(shù)器和8位捕捉方式;
(2)8位捕捉方式和8位比較輸出方式;
( 3)8位定時(shí)/計(jì)數(shù)10位PWM方式;
( 4)16位定時(shí)器方式;
( 5)16位計(jì)數(shù)器發(fā)生;
(6)16位捕捉方式;
(7)16位比較輸出方式。
另外,除了T0、T1、T2、T3四個定時(shí)器以外,GMS87C1404還有一個時(shí)間間隔定時(shí)器BITR,該時(shí)間間隔定時(shí)器只要一上電就一直運(yùn)行而不能停止。它的時(shí)鐘源可以是RC振蕩器也可以是主振經(jīng)分頻后的信號。只要對CKCTLR寄存器中的BTCL位進(jìn)行置1操作,就可以使BITR清零并重新向上計(jì)數(shù),當(dāng)計(jì)數(shù)計(jì)到FF并溢出后,芯片中的計(jì)數(shù)器/定時(shí)器便產(chǎn)生 BIT中斷。因此,它可以作為在STOP方式下的片內(nèi)喚醒定時(shí)器使用,同時(shí)也可以作為WATCHDOG定時(shí)器使用或其它定時(shí)器使用。
GMS87C1404中共有12個中斷,分別為4個外部中斷、4個定時(shí)中斷、ADC中斷、WDT中斷、BIT中斷和SPI中斷。這些中斷中的每一個都具有各自的優(yōu)先級,并且中斷可以嵌套。
GMS87C1404的蜂鳴器輸出功能使得用戶可以方便地選用無源蜂鳴器,該器件通過RBFUN和BUR寄存器的設(shè)置可以使RB1腳輸出交替變化的方波以用于驅(qū)動蜂鳴器。其方波的頻率為:
f(Hz)=fxin/[2×分頻系數(shù)×(BUR+1)]
其中的分頻系數(shù)和BUR的值均可以由BUR寄存器來確定。
除了片內(nèi)所具有的WATCHDOG電路外,電源跌落檢測(PFD)電路是GMS87C1404的又一個獨(dú)特之處。對PFDR寄存器進(jìn)行適當(dāng)?shù)脑O(shè)置可以使其在Vdd上的電壓下降到2.5~3.5V的范圍內(nèi),或使用2.0~3.0V電壓范圍內(nèi)的保持時(shí)間超過50ns。通過該電源跌落檢測電路還可以使MCU復(fù)位。跌落的電壓是在OTP編程時(shí)由CONFIG寄存器的PFD位決定的。正是這一特點(diǎn)提高了GMS87C1404的抗干擾和抗死機(jī)的能力。
GMS87C1404的指令系統(tǒng)共有202條指令,其功能極為豐富。它不但包括了乘法和除法指令,同時(shí)還具有7條16位運(yùn)算操作比較指令,這七條比較指令分別為ADDWdp、CMPWdp、DECWdp、INCWdp、LDYAdp、STYAdp和SUBWdp。通過這些指令可大大簡化復(fù)雜和多字節(jié)的運(yùn)算編程操作,提高編程的效率。
3 干洗機(jī)自動控制系統(tǒng)的設(shè)計(jì)
干洗機(jī)是通過液泵將洗滌劑加入到內(nèi)桶中的衣物里并通過內(nèi)桶或外桶之間低速交替的正反轉(zhuǎn)動使洗滌劑與衣物上的油漬污漬充分作用、分解后再經(jīng)過高速旋轉(zhuǎn)甩掉被分解和多余的洗滌劑,然后通過蒸餾烘干來完成衣物的干洗過程。其中低速轉(zhuǎn)換的時(shí)間、高速甩干的時(shí)間和烘干的時(shí)間及烘干的溫度對被洗衣物的干洗效果至關(guān)重要,因此,這些環(huán)節(jié)不但要給予控制,而且要能預(yù)置、調(diào)節(jié)和存儲記憶。圖2是干洗機(jī)自動控制系統(tǒng)的電原理框圖。
該干洗機(jī)自動控制系統(tǒng)以GMS87C1404為核心元件,通過鍵盤和VFD(熒光數(shù)碼顯示)屏來實(shí)現(xiàn)人機(jī)交互。其外部輸入信號包括溫度、門控和過載信號。其中溫度信號直接經(jīng)GMS87C1404中的A/D轉(zhuǎn)換處理后可在VFD屏上顯示出來;而門控和過載信號實(shí)際上是開關(guān)量信號,這些信號經(jīng)兩路光耦隔離后進(jìn)入GMS87C1404。GMS87C1404根據(jù)用戶設(shè)定的參數(shù)和外部輸入的信號再經(jīng)程序處理后由驅(qū)動電路驅(qū)動9只繼電器,進(jìn)而實(shí)現(xiàn)對干洗機(jī)低速電機(jī)的正反轉(zhuǎn)動、液泵電機(jī)、高速電機(jī)(高速1、高速2)、加熱烘干電熱器、風(fēng)機(jī)電機(jī)、蒸餾閥門以及冷卻水閥門的控制,并對各執(zhí)行部件之間復(fù)雜的邏輯關(guān)系和相互制約關(guān)系進(jìn)行協(xié)調(diào)控制。同時(shí),在運(yùn)行過程中,還需要對低速轉(zhuǎn)動時(shí)間、高速甩干時(shí)間和烘干時(shí)間采用倒計(jì)時(shí)方式進(jìn)行顯示,當(dāng)烘干的溫度超過35度時(shí)自動打開冷卻水,以減緩烘干溫度的上升速度,當(dāng)烘干溫度超過設(shè)定溫度時(shí)則關(guān)閉電加熱器。電路中的 EEPROM選用24C01并通過二線I2C協(xié)議和GMS87C1404進(jìn)行通信,以實(shí)現(xiàn)對設(shè)置參數(shù)的存儲記憶。本干洗機(jī)自動控制系統(tǒng)設(shè)有全自動和半自動兩種工作方式。
由于GMS87C1404的I/O口數(shù)量有限,因此要實(shí)現(xiàn)5個端口對11個鍵信號的采集,就需采用鍵盤來完成設(shè)計(jì)。本系統(tǒng)采用雙向鍵盤方案。圖3所示是該方案的鍵盤電路原理圖。在該電路的5個口中,先將RC4、RC3作為輸出,RC5、RC6、RD2作為輸入,通過RC3、RC4進(jìn)行掃描來讀入RC5、 RC6、RD2口的值,從而獲得K1、K2、K3、K5、K7、K9、K11的鍵值;然后再反過來將RC3、RC4作為輸入,RC5、RC6、RD2口設(shè)為輸出,并對RC5、RC6、RD2進(jìn)行掃描以讀入RC3、RC4口的值,從而得到K2、K4、K6、K8、K10的健值。這樣就可有效地利用較少的 I/O口來實(shí)現(xiàn)對較多的鍵信號的采集。
因?yàn)閂FD屏具有高亮度,可設(shè)置簡單圖形和動態(tài)顯示的特點(diǎn),因而很適合用在干洗機(jī)中。本系統(tǒng)采用靜態(tài)VFD屏,該屏具有6位數(shù)碼和19個圖形文字符號共61個筆段。驅(qū)動電路采用四片CS6210串聯(lián)來完成,每片CS6210可驅(qū)動16個筆段。 GMS87C1404可通過3線串行接口將要顯示的數(shù)據(jù)送往CS6210。然后由CS6210根據(jù)所輸入的數(shù)據(jù)在相應(yīng)的引腳輸出對應(yīng)的VFD屏所需的- 24V電壓以點(diǎn)亮相應(yīng)的筆劃。
干洗機(jī)自動控制系統(tǒng)的主程序圖如圖4所示,其中的安全備份程序用于提高該系統(tǒng)的可靠性。雖然GMS87C1404已經(jīng)提供了性能良好的WATCHDOG電路和PFD功能,但二者僅能在干擾信號達(dá)到一定程度時(shí)給出復(fù)位信號以保證不死機(jī)。而斷點(diǎn)的現(xiàn)場恢復(fù)以及機(jī)器的不間斷運(yùn)行還需要通過軟件來加以實(shí)現(xiàn)。因此,設(shè)計(jì)時(shí)可通過軟件將數(shù)據(jù)備份程序運(yùn)行過程中那些關(guān)鍵的數(shù)據(jù)拷貝在RAM區(qū)域中一些未使用的區(qū)域。下面是數(shù)據(jù)備份程序BACKUP和數(shù)據(jù)恢復(fù)程序 RESTORE的程序清單。
BACKUP: LDX#01H;備份數(shù)據(jù)的起始地址
在初始化程序中,系統(tǒng)首先通過CHECK(自定義)寄存器與某一個定值(如 01010101B)進(jìn)行比較來判斷本次復(fù)位是上電復(fù)位還是因干擾后的WATCH-DOG或PFD復(fù)位,如果是上電復(fù)位,系統(tǒng)則正常初始化,并置 CHECK為設(shè)定值,否則系統(tǒng)將通過RE-STORE程序?qū)⒃鹊腂ACKUP數(shù)據(jù)進(jìn)行恢復(fù),然后再部分初始化并進(jìn)入主程序直接運(yùn)行,從而實(shí)現(xiàn)程序斷點(diǎn)的現(xiàn)場恢復(fù)和整機(jī)無異常感覺的連續(xù)運(yùn)行,另外,也可以在程序中的一些關(guān)鍵處設(shè)置軟件陷阱,這樣,一旦程序因干擾而沒有按正常的運(yùn)行途徑運(yùn)行而進(jìn)入陷阱時(shí),系統(tǒng)就會跳到RESTORE進(jìn)行數(shù)據(jù)恢復(fù)并使運(yùn)行程序恢復(fù)到正常的運(yùn)行次序,從而確保系統(tǒng)的可靠運(yùn)行。
參考文獻(xiàn)1.GMS87C1404 User's Manual.HYUNDAI MicroElectronics