1 引言 隨著微型計算機的迅速發(fā)展,單片機的性能也大大增強。本文介紹Silicon Labs公司的8位單片機C8051F001系列,該系列器件內(nèi)部集成了A/D轉(zhuǎn)換器,這給測量模擬信號帶來了極大方便。利用單片機自身的PWM口可實現(xiàn)對電機數(shù)字系統(tǒng)的控制,提高了控制精度,大大簡化了電路,符合小型化和低功耗的設計要求。 2 ADC的內(nèi)部結(jié)構(gòu)和特點 C8051F001/2/5/6/7系列自帶一個9通道的可配置模擬開關(AMUX),一個可編程增益放大器(PGA)和一個100 kS/s,12位分辨率的逐次逼近型ADC,ADC還集成了跟蹤保持電路和可編程窗口檢測器。AMUX、PGA、模數(shù)轉(zhuǎn)換方式和窗口檢測器都可通過軟件對特殊功能寄存器的設置來實現(xiàn)。模擬多路開關AMUX中的8個通道用于外部測量,第9通道內(nèi)部接至片內(nèi)溫度傳感器。采樣的模擬量由多路開關配置后進入可編程放大器。值得注意的是,PGA的增益對溫度傳感器也起作用。PGA增益可以用軟件編程為0.5、1、2、4、8或16,復位時的默認增益為1。可以對AMUX編程為工作在差分方式或單端方式。系統(tǒng)復位后AMUX的默認方式為單端輸入。ADC功能框圖如1所示。 3 ADC工作原理 從外圍設備中采集出來的模擬量被選通后,由采樣和保持電路通過PGA增益放大,經(jīng)過一個12位的逐次逼近寄存器(SAR)轉(zhuǎn)化為數(shù)字量,具體過程是將二進制規(guī)則變化的參考電壓逐次與模擬輸入電壓作比較,以尋找一個與輸入電壓最接近的參考電壓,最后在逐次逼近寄存器(SAR)中獲得12位的轉(zhuǎn)換結(jié)果。 4 初始化設置 設置寄存器REF0CNR的0位選擇是否應用內(nèi)部電壓基準緩沖器,設置AMUX配置寄存器A-MUX0CF以選擇模擬端口的輸入方式。通道選擇寄存器AMUX0SL的低3位用于選擇0~7個通道或者溫度傳感器(AMXAD0),配置寄存器ADC0CF用來設置SAR轉(zhuǎn)換時鐘和ADC內(nèi)部放大增益。控制寄存器ADCOCN用于設置ADC啟動方式、ADC窗口比較中斷及ADCOH和ADCOL的對齊方式。最后將ADCEN置1,使能ADC,準備轉(zhuǎn)換數(shù)據(jù)。寄存器ADCOCN的內(nèi)容如圖2所示。 5 ADC的啟動方式 A/D轉(zhuǎn)換的啟動方式有4種,由ADC0CN的ADC啟動轉(zhuǎn)換方式選擇位(ADSTM1,ADSTM0)的狀態(tài)決定。轉(zhuǎn)換觸發(fā)源有: 1) 寫1到ADC0CN的ADBUSY位; 2) 定時器3溢出(即定時的連續(xù)轉(zhuǎn)換); 3) 外部ADC轉(zhuǎn)換啟動信號的上升沿,CNVSTR; 4) 定時器2溢出(即定時的連續(xù)轉(zhuǎn)換)。 向ADBUSY寫1方式提供在需要時用軟件控制ADC啟動轉(zhuǎn)換的性能。ADBUSY位在轉(zhuǎn)換期間置1,轉(zhuǎn)換結(jié)束后復0。ADBUSY位的下降沿觸發(fā)一個中斷(當被允許時)并置1中斷標志ADCINT。注意:當轉(zhuǎn)換是由軟件(on-demand)啟動時,應查詢ADCINT標志(而不是ADBUSY)判斷轉(zhuǎn)換何時結(jié)束。轉(zhuǎn)換結(jié)果保存在ADC數(shù)據(jù)字的MSB和LSB寄存器:ADC0H和ADC0L中。轉(zhuǎn)換數(shù)據(jù)在寄存器對ADC0H:ADC0L中的存儲方式可以是左對齊或右對齊,由ADC0CN寄存器中ADLJST位的編程狀態(tài)決定。 6 ADC可編程窗口檢測器 8051中的ADC可編程窗口檢測器非常有用。它不停地將ADC輸出與用戶編程的限制量進行比較,并在檢查到越限條件時通知系統(tǒng)控制器,這在中斷驅(qū)動的系統(tǒng)中尤其有效,既可以節(jié)省代碼空間和CPU帶寬,又能提供快速響應時間。窗口檢測器中斷標志(ADCOCN中的ADWINT位)也可被用于查詢方式。參考字的高字節(jié)和低字節(jié)被裝入到ADC下限(大于)和ADC上限(小于)寄存器(ADC0GTH、ADC0GTL、ADC0LTH和ADC0LTL)。注意,窗口檢測器標志即可以在測量數(shù)據(jù)位于用戶編程的極限值以內(nèi)時有效,也可以在測量數(shù)據(jù)位于用戶編程的極限值以外時有效,這些全部取決于ADC0GTx和ADC0LTx的編程值。 7 實際應用 圖3是直流測速發(fā)電機與單片機的接口電路。在該系統(tǒng)中,通過單片機口產(chǎn)生PWM信號控制直流電機的轉(zhuǎn)速。在直流電機的軸上安裝直流測速發(fā)電機,用來測量電動機的轉(zhuǎn)速,測速發(fā)電機輸出是模擬量,所以必須經(jīng)過A/D轉(zhuǎn)換將輸出信號轉(zhuǎn)換成數(shù)字測速信號,通過單片機將測速信號和給定的PWM信號進行比較,用于加速或減速。從而形成電動機的閉環(huán)控制系統(tǒng)。 該電路采用了C8051005單片機。用模擬通道0采集信號,采用2.4 V內(nèi)部參考電壓,模擬輸入端具有限流和限壓保護。直流測速發(fā)電機要與被測電機同軸,兩者以相同轉(zhuǎn)速轉(zhuǎn)動,測速發(fā)電機的輸出電壓必須經(jīng)過RC濾波處理后才能得到穩(wěn)定的直流電壓。R1為限壓電阻,調(diào)整滑動變阻器的位置使測速電機達到最大轉(zhuǎn)速時,滑變抽頭采樣得到的電壓為2.4 V。通過脈寬調(diào)制PWM控制開關管工作的開關狀態(tài),柵極輸入高電平時,開關管導通,12 V電壓加在電動機兩端,時間為t1;柵極輸入低電平時,開關管截止,電動機兩端電壓為0,時間為t2。可得到占空比a=t1/(t1+t2)。在t2時段內(nèi),電源斷開,電動機電感通過二極管D1釋放電能,D1起到續(xù)流作用。 圖4為產(chǎn)生PWM波的程序圖,圖5為調(diào)速子程序的流程圖。 CA生成PWM波主要是調(diào)節(jié)PCA0CPH0的值改變PWM波的占空比a=[256-(PCA0CPH0)]/256。下面是調(diào)速子程序,設電機給定值存放在50H單元中。 8 進行A/D轉(zhuǎn)換時應注意的問題 8.1 信號處理 C8051F內(nèi)部基準電壓的范圍為AGND~AV±0.3 V,任意引腳在任何情況下(不論ADC或PGA的設置如何)必須使其輸入電壓保持在AGND和AV+之間,如果測試的模擬輸入電壓范圍為0~5 V,必須使信號衰減才能輸入ADC引腳。這里用到8051內(nèi)部的PGA(可編程增益放大器)。如果選用放大倍數(shù)為0.5倍,那么信號將衰減一半。如使用外部1.25 V參考電壓,PGA增益GAIN為0.5,允許的電壓輸入范圍是0 V~2.5 V,AIN電壓還必須在AGND和VREF/GAIN之間。假設一個12位的ADC,AINx引腳的輸人電壓小于AGND,結(jié)果將是0x000;如果輸入電壓大于(VREF/GAIN),結(jié)果將是0xFFF。 要注意的是,PGA不會改變信號的最大輸入范圍。同樣當使用外部VREF時,也要求VREF的最大值比AV+小300 mV,建議采用MAX873作為外部基準電壓源。 8.2 抗擾處理 C8051F的ADC轉(zhuǎn)換結(jié)果一般很準確,但如果A/D轉(zhuǎn)換后測得的數(shù)據(jù)跳變很大,那么很有可能是輸入信號中有干擾脈沖,需要加抗擾處理: 1) 將模擬電源和數(shù)字電源分開,電源之間的電壓差必須滿足數(shù)據(jù)手冊中的規(guī)定 D <0.5 V。 2) 將模擬地和數(shù)字地分開,不能混用。注意一定要在遠離CPU處(或電源處)通過導線連接,否則會在CPU的模擬地和數(shù)字地引腳之間產(chǎn)生電勢差,造成系統(tǒng)不穩(wěn)定,甚至死機現(xiàn)象。 3) 沒有用到的模擬引腳要接模擬地。 4) 在VREF引腳接0.1μF和4.7μF電容,用于濾波和抑制噪聲。 5) 模擬信號的輸入電壓不能超過AV+-0.3 V,為保證模擬輸入引腳不被高電平損傷,要采取保護措施,如加入穩(wěn)壓二極管MBR360等。另外為防止模擬輸入通過大的電流,還要在模擬引腳和模擬地之間加一只1μF的電容。 |