09/02/28 21:39:23 +wiPFhvD
12F683のADコンバータについて質問です。
可変抵抗で分圧した電圧を入力すると、きちんと値を取り込めているのですが、
オペアンプの出力を繋げると、ADの取り込み値が常時最大値となってしまいます。
AD入力をオープンにしても取り込み値は最大値となります。
オペアンプはLM358で、1Kと10KのRで11倍の非反転増幅器としています。
音声のライン入力を入れると、出力が増幅されることは確認しています。
PICのADにオペアンプ直結でインピーダンスの問題は無いと思うのですが、
どこか間違っている事があるのでしょうか。
また、AD入力をオープンとすると最大値を読み取るのは正しい動作でしょうか。
ちなみに入力をグランドに落とすと、0入力となります。
以上なにか判る事があれば教えてください。
AD入力は以下のように行っています。
void init_a2d(void){
ADCON0=0; // select Fosc/2
// ADCON1=0; // select left justify result. A/D port configuration 0
ADON=1; // turn on the A2D conversion module
}
/* Return an 8 bit result */
unsigned char read_a2d(unsigned char channel){
// PIC12F675
if((ADCON0 & 0x02)==0){
channel &= 0x03; // truncate channel to 2 bits
ADCON0 &= 0xC3; // clear current channel select
ADCON0 |= (channel<<2); // apply the new channel select
ADCON0 |= 0x02; // A/D変換開始
while(ADCON0 & 0x02)continue; // A/D変換完了待ち
}
return(ADRESH); // return 8 MSB of the result
}