基于低成本MCU的電流環(huán)路校準(zhǔn)器的設(shè)計(jì)與實(shí)現(xiàn)
我們還使用模擬/數(shù)字轉(zhuǎn)換器測量電流。PIC16F877內(nèi)部的模擬/數(shù)字轉(zhuǎn)換器具有10位分辨率,可以測量0至5V的電壓值。電流流經(jīng)0.47Ω電阻,并利用同相放大器放大到0~5V電平。另外,我們還使用了4x3的數(shù)字鍵盤和16x2大小而且?guī)D44780接口的GDM1602B指示器。
本次設(shè)計(jì)的設(shè)備有兩種模式:第一種模式產(chǎn)生大小由用戶輸入的電流,第二種模式讀取從外部電流環(huán)路檢測到的電流。在電流源模式,從鍵盤輸入的電流信息被送往微控制器并通過解碼器分析。由微控制器決定了的電流信息再通過SPI協(xié)議發(fā)送到DAC,然后產(chǎn)生4-20mA范圍內(nèi)的目標(biāo)電流值。在測量模式,連接輸入端的外部電流環(huán)值將顯示在LCD指示器上。
嵌入式軟件設(shè)計(jì)
我們在Code Composer Studio(CCS)環(huán)境中用PIC C語言開發(fā)微控制器上運(yùn)行的嵌入式軟件。在微控制器上運(yùn)行的軟件接收校準(zhǔn)器是否在用戶選擇的電流源或電流測量模式下工作的信息。圖5顯示了我們開發(fā)的主程序流程圖。
圖5:主程序流程圖
電流源模式
在電流源模式,嵌入式程序根據(jù)圖6所示的流程圖運(yùn)行。從這個流程圖可以看出,首先,用戶要輸入一個電流值,其中小數(shù)點(diǎn)左邊兩位,小數(shù)點(diǎn)右邊三位(精度為0.1%)。如果在輸入階段輸入了錯誤的值,用戶可以按#鍵取消這個值。如果想要一步步地處理,那么整個過程可以用5個值完成:4mA、8mA、12mA、16mA和20mA。
圖6:電流源程序的流程圖
不管何時只要按下*鍵,系統(tǒng)就會返回到模式選擇菜單(主菜單)
不管何時只要按下#鍵,都會進(jìn)行清屏,然后提供電流值輸入界面
一旦電流值的小數(shù)點(diǎn)右邊三位輸入完后,電流就會自動產(chǎn)生,等整個過程成功完成后,還會在LCD上的電流值旁邊顯示“OK”標(biāo)記。如果用戶輸入的電流值超出范圍,即小于4mA或大于20mA,LCD上將顯示“超出輸出范圍”的警告消息。
電流測量模式
在電流測量模式時,由電壓放大層產(chǎn)生的電平被模擬/數(shù)字轉(zhuǎn)換器讀取,然后在屏幕上顯示測量出的電流值,見圖7所示的流程圖。
圖7:電流測量模式下的程序流程圖
在鍵盤接口中,我們使用了PIC16F877的“根據(jù)狀態(tài)改變(change on-state)”中斷源來檢測是否有鍵按下。利用這個中斷源,當(dāng)微控制器的B輸入端口的狀態(tài)發(fā)生改變時,中斷將自動啟動。這樣,當(dāng)設(shè)備不在使用時,微控制器將進(jìn)入睡眠模式以節(jié)省功耗。
電流源與測量
如圖8所示,微控制器的數(shù)字輸出通過SPI協(xié)議接口連接到帶16位CMOS電流輸出的數(shù)字/模擬轉(zhuǎn)換器電路(AD420)。
評論