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