RA3ポートは基準電圧です。本来なら電源電圧に接続しないで、正確に出力された電源に接続するべきでしょう。
電源電圧を基準電圧に使うならRA3ポートを使って電源電圧に接続しないで、
プログラムで基準電圧に電源電圧を利用する設定をすればいいでしょう。
ADCON1.VCFG1 = 0; //基準電圧は電源電圧
ADCON1.VCFG0 = 0;
/*
概要:A/D変換した値をRS-232c通信でパソコンに送信
PIC16F88
A/D: RA1 (10KΩ半固定抵抗で分圧しアナログ値を生成)
基準電圧入力ポート:RA3
RS-232通信用:RB2/RX RB5:TX
Clock: 8.0MHz 内蔵発振器使用
Device Flags:
_CP_OFF _CCP1_RB3 _DEBUG_OFF _WRT_ENABLE_OFF
_CPD_OFF _LVP_OFF _BODEN_OFF _MCLR_OFF _PWRTE_ON
_WDT_OFF _INTRC_IO _IESO_ON__CFG2 _FCMEN_ON__CFG2
MikroC v8.2.0.0
*/
void main() {
//使用変数の定義
float volt,press,calc,adc_value;
char inter, deci;
PORTA = 0b00000000; //PORTAの初期化
PORTB = 0b00000000; //PORTBの初期化
OSCCON = 0b01110000; //内臓クロック8MHzに設定
//A/D変換clock設定 0.125us*16倍=2.0us at 8MHz > 1.6us
//Fosc=8MHz 8/2/8
ADCON0.ADCS1=0; //01 Fosc/8
ADCON0.ADCS0=1;
ADCON1.ADCS2=1; //1:Foscを1/2にする
ADCON1.VCFG1 = 1; //基準電圧入力ポートをRA3に設定
ADCON1.VCFG0 = 0; //Vref+ Vss
// A/D利用PORTの設定 // ANALOG=1, DIGITAL=0 //
ANSEL = 0b00000010; //RA3のみアナログ使用
TRISA = 0b00001010; //RA1,RA3のみ1:入力に設定、他は0:出力
//マイコンの初期化終わり
usart_init(9600);
do {
//アナログデータの取得 10bit(0~1023)
adc_value = ADC_Read(1); //RA1値をアナログデジタル変換(0~1023)
press = adc_value*0.005; //AD変換した値を電圧に 0.005=基準電圧(5v)/1023 pressは小数点未満二桁
inter = (int) press; //小数点未満の切り捨て
deci= (int) (press*10.0) - inter*10;//小数点未満の一桁目を取得
usart_write('V');
usart_write('O');
usart_write('L');
usart_write('T');
usart_write('=');
usart_write(inter | 0x30);
usart_write('.');
usart_write(deci | 0x30);
usart_write('V');
usart_write(13); //1310改行コード
usart_write(10);
delay_ms(1000);
} while(1);
}


0 件のコメント:
コメントを投稿