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