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