除了洗衣機之外,家裡的冰箱,電磁爐,電子鍋,熱水瓶等電器產品都漸漸走上數位化了,數位化的原因有幾個,一是容易操作及控制,另一個是可以使用微控制器來控制其功能,使其功能增強及帶來使用上的方便,例如溫度控制、定時控制和壓力控制等。
在自然界的各種訊號,如溫度、濕度、壓力、光、聲音、氣體皆是類比訊號,要將自然界裡的訊號做各種處理,就需要一個感測器將自然界的各種訊號,轉換成電壓或是電流訊號,再將類比的電氣訊號,透過一個類比數位轉換器(ADC),轉成數位化的資料,再由一個微控制器的來對數位資料做處理。
要是將ADC內建於微控制器中,在使用上更加便利,也可大幅度的降低成本。將類比資料做數位化的好處是容易處理、運算及顯示,尤其是我們日常生活中的各種家電產品如冷氣機、除濕機、電冰箱、洗衣機、微波爐、電磁爐、電毯 、電子鍋、充電器、麵包機、豆漿機、洗碗機、電暖器、充電器、烘碗機、煙霧偵測器、瓦斯偵測警報器、火災偵測器、毒性氣體偵測器、酒精測試器、血壓計、體溫計、壓力計、溫度計、重量計、體重計、距離測量儀、傳真機、掃描器、數位相機、影印機、胎壓器、氣壓計、烤箱、光度計、彩色電視機、電動按摩器等產品不勝枚舉。
感測器
在使用ADC時,大部分都會與感測器互相搭配使用,感測器是一種能夠將各種物理量如:溫度、濕度、壓力、光、聲音、氣體等變換為電氣量的元件,因此其複雜度很深,在應用上很廣泛。我們可以依照不同的用途來選擇不同的感測器,再透過ADC轉換,便可以製作出各種不同的產品,一般常見的感測器有溫度感測器、壓力感測器、濕度感測器、光感測器、煙霧感測器、氣體感測器等。
類比數位轉換器(ADC)
當微控制器要處理類比訊號時,需要將類比信號先透過類比-數位轉換器(ADC)加以轉換,把類比訊號轉換成相對的數位訊號,此時就需要ADC。一般市售有單獨的ADC IC,或者是內建有ADC之微控制器,就成本上的考量,在需要微控制器做控制的產品上,使用有內建ADC功能之微控制器,較能節省成本,產品可靠度也較高,生產上較簡單且元件庫存較少,除非需要特殊規格的ADC及微控制器,才需要分別搭配特殊規格的ADC及微控制器IC。
ADC的參考電壓有單獨的一根接腳或是與IC的電源接在一起,內含類比-數位轉換器的微控制器亦是如此,若ADC參考電壓為微控制器之工作電壓,則微控制器腳位圖上就只會標示一個工作電壓(VDD)的腳位,而無ADC參考電壓輸入腳位。
ADC最重要之特性之一 : ADC的精確度,在一般所定義的ADC轉換曲線如(圖一),X軸為輸入電壓,Y軸為數位輸出值。(以10位元ADC為例,LSB = ADC參考電壓 ÷1024)
當類比電壓輸入在0.5LSB~1.5LSB之間時,經由ADC得到的轉換值是1,由此類推到各個電壓的轉換值。所以一般使用時都必須先確定ADC的參考電壓為何,再由轉換結果的數位資料值,去得到類比輸入電壓的範圍。由上圖可知,當ADC轉換值為1時,我們可以因此得到類比的電壓值為1LSB±0.5LSB,0.5LSB為數位化過程中所必須犧牲掉的轉換誤差。一般常用的類比-數位轉換器為8位元~10位元,較精確的產品則需要12位元~14位元的ADC,本文將介紹一顆內含10位元ADC的微控制器。
盛群半導體新推出一系列內建ADC之微控制器,在此針對其中一顆內含有10位元ADC的微控制器(HT46R23)做介紹,此型微控制器不僅內建ADC,更加入PWM之控制輸出功能,故其相當適合用來做溫度控制、壓力控制及濕度控制的各類型產品或家電產品。HT46R23的主要規格如(表一)所示。
包裝 |
28SKDIP及28SOP兩種 |
I/O 接腳 |
23根 |
PWM 輸出 |
兩組﹔與PD0/PD1共用腳 |
PFD輸出 |
與PA3共用腳 |
外部計數器 |
與PA4共用腳 |
外部中斷 |
與PA5共用腳 |
系統震盪器 |
RC震盪器或石英晶體震盪器(陶瓷震盪器) 擇一 |
ADC類比訊號 |
8個通道類比輸入AN0~AN7與PB0~PB7共用腳 |
ADC |
10位元ADC; 9位元精確度 |
工作電壓 |
3.3V~5.5V |
程式記憶體EPROM |
4096×15 |
資料記憶體RAM |
192×8 |
Timer |
16位元+7階預除器 |
低電壓偵測 |
3V±0.3V |
堆疊 |
8層 |
序列匯流排 |
HOLTEK BUS(與I2C BUS相容; 只提供SLAVE模式)與PA6及PA7 共用腳 |
Note : I2C is the trademark of Philips. |
HT46R23這顆內含10位元ADC的微控制器,可以廣泛用在各種產品上,其主要的定位是在於各種家電及工業控制方面,就其整個功能來說,提供了一個與I2C BUS相容(SLAVE模式)的序列匯流排及兩組PWM輸出,PWM可用來做電流及電壓控制,對於各方面的應用都非常適合。尤其是對於電源雜訊的處理,該型微控制器在設計上特別考量電源雜訊之處理,故擁有極佳的抗雜訊能力。
HT46R23微控制器說明
HT46R23使用8位元精簡指令集微控制器,內含63個功能強大的精簡指令集,有8個硬體做成的堆疊(STACK),在呼叫副程式時,可以呼叫到8層之多。內建一個看門狗計時器(WDT),可以預防微控制器誤動作時,將微控制器重新RESET,一個低電壓偵測器(LVR),當電壓過低時,會自動將微控制器RESET,避免微控制器的誤動作。程式記憶體(PROGRAM ROM)的空間有4K可以使用,而且為一次燒錄型,對於寫程式來說,有很大的應用空間,對產品而言也有很大之彈性。如(圖二)。
OPTION ROM
另外也提供OPTION ROM,提供OPTION在燒錄的時候,視需求來選擇哪一種功能,內建有192 byte的資料記憶體(DATA MEMORY)空間,在中斷部分提供了四種中斷,外部中斷接腳的中斷、內部計時器或外部計數器的中斷、10位元ADC的中斷或是序列匯流排的中斷。
輸入輸出腳共有23根,其中PA有8根,PB有8根,PC有5根,PD有2根,其中PA3與PFD輸出共用接腳,PA4與外部計數器輸入腳共用,PA5與外部中斷輸入腳共用,PA6及PA7與序列匯流排接腳共用,PD0/PD1與PWM0/PWM1輸出共用接腳,PB0~PB7與ADC類比輸入腳AN0~AN7共用。其中PA3與PFD輸出功能共用,PD0/PD1則與PWM0/PWM1共用,是在燒錄程式時,由OPTION項目所選擇的,我們也可以只選擇使用一般的I/O功能就好。
PA4當外部計數器輸入腳時,PA4必須設為輸入腳,PA5當外部中斷輸入腳時,PA5也必須設為輸入腳。至於PB0~PB7與AN0~AN7 ADC類比訊號輸入,可以由軟體選擇要當類比訊號輸入或是數位訊號輸入輸出使用。16位元的計時計數器輸入,可以選擇由外部計數器輸入腳(PA4/TMR)輸入,或是選擇內部計時器當計時的參考頻率。如(圖三)。
由系統頻率經過一個預除器,可以選擇8個參考計時頻率給16位元的計時計數器,這8個計時頻率,從系統頻率到系統頻率除以128。選擇適當的頻率給計時計數器,使用可以較彈性。另外PFD的輸出頻率,也是由16位元計時計數器來控制,PFD的頻率為16位元計時計數器溢位的頻率除2,假設16位元計時記數器的輸入為1μ秒,假設我們設定16位元計時計數器內容為65286,則計數250次就會發生溢位,則PFD輸出的週期為 : 1μ秒×(256-6)×2=500μ秒,所以PFD的頻率為 1/500μ秒 = 2kHz,由以上可知只要設定16位元計時計數器的數值,就可決定PFD的輸出頻率。提供兩組PWM之功能,對於電流與電壓的控制提供一個最佳的解決方案。如(圖四)。
PD0/PWM0接腳輸出串聯一個電阻及電容接到一個NPN電晶體(B1),來控制上面PNP電晶體(B0)是否導通,在PWM輸出高準位時,NPN電晶體及PNP電晶體皆在導通的狀態,VCC電壓對電感(L0)充電(IL增加)。當PWM輸出低準位時,NPN電晶體及PNP電晶體皆在不導通的狀態,VCC電壓不對電感充電, 電感由經D0釋放能量(IL下降), 若on/off頻率很高, IL幾乎維持一定, 形成PWM方式定電流控制。
由PB0/AN0讀入類比電壓值, 將電壓值÷R0的電阻值,就可得到流經R0的電流,若是電流小於我們欲設定的電流,則增加PWM輸出的DUTY來增加電流,若是電流大於我們欲設定的電流,則減少PWM輸出的DUTY來減少電流,由此來做電流控制。利用控制PWM輸出的DUTY,可以讓電感儲存的電流能量,維持在一定的大小,由此來做定電流控制。至於電壓控制,亦是採用相同原理,但必需加入一個大電容,以達到穩定電壓之功能。
當使用PWM功能時,需要在OPTION選項選擇使用PWM功能,並且需選擇PWM輸出是除64或是除128,當寫入PWM 暫存器之數值改變時則PWM輸出之DUTY隨之改變,該注意的是,一但選擇除64或是除128之後,PWM之頻率便固定,無法再由軟體調整,其頻率是固定系統頻率除64(其PWM輸出是6+2模式,其定義為PWM輸出之頻率為一般輸出的4倍)或是除128(其PWM輸出是7+1模式,其定義為PWM輸出之頻率為一般輸出的2倍),若是要改變PWM之頻率,只能改變系統頻率來改變PWM之頻率。
要讓PWM之輸出由PD0/PWM0或是PD1/PWM1輸出,必須將PD0/PD1輸出設定為輸出腳,且必須寫1到PD0/PD1暫存器的位置,寫0會讓PD0/PD1接腳,輸出在LOW的狀態。其PWM輸出是(6+2)或(7+1)模式,其定義為PWM輸出之頻率為一般輸出的4或2倍,其原理為將 PWM輸出分為四或二段,輸出低準位的部分及輸出高準位的部分,平均各分為四或二段,若是無法分為四或二段的餘數,就補在其中的一段。參考(圖五)、(圖六)。