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 件のコメント:
コメントを投稿