采用PIC16F688的數(shù)字電壓表制作
簡介
該項目介紹了如何使用PIC單片機的數(shù)字電壓表。一個HD44780的基于字符的LCD用于顯示被測電壓。在這個項目中使用的是PIC單片機PIC16F688,有12個I / O引腳可以作為內(nèi)置10位ADC的模擬輸入通道,其中8。要測量的電壓被饋送到8個模擬通道之一。選擇AD轉(zhuǎn)換的參考電壓是電源電壓VDD(+5 V),。在輸入端使用一個電阻分壓器網(wǎng)絡(luò)是映射到ADC的輸入電壓范圍(0-5 V)輸入電壓范圍。該技術(shù)是表現(xiàn)為輸入電壓范圍從0-20 V,但它可以進一步擴展與選擇適當?shù)碾娮韬妥龅臄?shù)學描述如下。
電路圖
由于PIC端口不能直接輸入20V,輸入電壓成比例下降,使用一個簡單的電阻分壓器網(wǎng)絡(luò)。電阻R1和R2的規(guī)模下的輸入電壓范圍從0 - 20V ,0 - 5V,適用于PIC16F688的模擬輸入通道,AN2的。在端口引腳AN2和地面之間的并行連接一個5.1V的齊納二極管提供保護的情況下的PIC針20V輸入電壓不小心超出。液晶顯示器是在4位模式下,連接的ICSP頭,你可以重新編程和測試PIC,而它在電路使固件的開發(fā)更容易。當你滿意,并希望從實驗電路板的電路轉(zhuǎn)移到PCB上或通用的原型板,你?需要的ICSP頭。實驗板的電路圖和內(nèi)置的原型如下所示。
重要事項 :您需要受規(guī)管的+5 V電源的輸出精度 。ADC使用VDD轉(zhuǎn)換參考,并完成所有的計算與VDD = 5V。你可以得到一個穩(wěn)壓+5 V,使用一個LM7805線性穩(wěn)壓器IC 。
從LM7805 IC獲得+5 V的受規(guī)管
可變功率測試將DVM的供應(yīng)來源
ADC的數(shù)學的準確性取決于在輸入端的電阻的精度和穩(wěn)定的參考電壓,VDD = 5 V。我發(fā)現(xiàn),VDD是穩(wěn)定的,以5.02五,我測R1和R2,和它們的值是1267和3890歐姆 。因此,這給了5.02 V模擬的I / P ---> 0-1023數(shù)字計數(shù) =>分辨率=(5.02 - 0)/(1023-0)= 0.004907 V /計數(shù)
VA = 1267 * VIN /(1267 3890)= 0.2457 *輸入電壓
=>我/ P電壓= 4.07 * VA = 4.07 *數(shù)字計數(shù)* 0.004907
= 0.01997 *數(shù)字計數(shù)
= 0.02 *數(shù)字計數(shù)(約)
為了避免浮點運算,使用的I / P電壓= 2 *計數(shù)。
例如,假設(shè)VIN = 7.6V。然后,
VA = 0.2457 *輸入電壓為1.87V
=>數(shù)碼計數(shù)= 1.87/0.004907 = 381
=>計算的I / P電壓= 2 * 381 = 0762 = 07.6V(4位產(chǎn)品的前3位數(shù)字 )
固件
固件寫入和mikroC編譯器編譯。LCD_D6的代碼是在這里。
SBIT LCD_D7 RC3_bit;
在TRISC4_bit SBIT LCD_RS_Direction;
TRISC5_bit SBIT LCD_EN_Direction;
TRISC0_bit SBIT LCD_D4_Direction;
TRISC1_bit SBIT LCD_D5_Direction;
TRISC2_bit SBIT LCD_D6_Direction;
SBIT TRISC3_bit LCD_D7_Direction;
/ /高端液晶模塊的連接
字符Message1 [] =“DVM項目“;
unsigned int類型ADC_Value,DisplayVolt;
CHAR *伏=“00.0”;
無效的主要(){
:ANSEL = 0b00000100; / / RA2/AN2是模擬輸入
ADCON0的= 0b00001000; / /模擬輸入通道選擇AN2的
ADCON1 = 0X00;
CMCON0 =為0x07; / / Disbale比較
TRISC = 0b00000000; / / PORTC的所有輸出
TRISA = 0b00001100; / / PORTA所有輸出,除RA3和RA2的
Lcd_Init(); / /初始化液晶
Lcd_Cmd(_LCD_CLEAR); / /清除顯示
Lcd_Cmd(_LCD_CURSOR_OFF) / /游標關(guān)閉
Lcd_Out(1,1 Message1);
Lcd_Chr(2,10,“V”);
{
ADC_Value = ADC_Read(2)
DisplayVolt = ADC_Value * 2;
伏[0] = DisplayVolt/1000 + 48 ; ;
伏[1] =(DisplayVolt/100)%10 + 48;
伏[3] =(DisplayVolt/10)10%+ 48;
Lcd_Out(2.5伏);
delay_ms(100);
}(1) ;
}
輸出
DVM是測試各種不同的輸入電壓范圍從0-20 V的發(fā)現(xiàn)是非常準確的。在這里測試的一些快照。