• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PIC18でのA/D変換)

PIC18でのA/D変換

このQ&Aのポイント
  • PIC18F67J60-l/PT(40MHz)で、C18を使ってA/D変換を行うプログラムを作成しました。結果の値がばらついたり、0か1023が表示され、安定しません。
  • ピンの接続を何度も確認したり、接続状況を変えたのですが、問題を解決するまでに至りませんでした。
  • プログラムに問題があるか、初心者なのでよく分かりません。参考書や資料を見る限りではプログラムに問題はないと思うのですが、皆様のご指摘を頂きたいと思います。

質問者が選んだベストアンサー

  • ベストアンサー
  • zwi
  • ベストアンサー率56% (730/1282)
回答No.1

PIC18F67は使ったことが無いので、ADCONのレジスタの細かいビットは不明ですが、気になることとして。 >結果の値がばらついたり、0か1023が表示され、安定しません。 結果の値がばらつくのは、vrefかアナログ信号自体に盛大にノイズが乗っていませんでしょうか?オシロスコープがあれば一度確認してみてください。ノイズが確認されたらパスコンやシールド線でノイズ対策を施します。時々のばらつき程度であればプログラムで平均をとりノイズ値を標本外とする手もあります。 0か1023しか表示されないのは、まともにアナログ信号を受けていません。チャンネル毎の問題でしょうか? チャンネル毎なら正常なチャンネルと異常なチャンネルの配線を入れ替えてみてどうなりますか?もし入れ替わったら、センサとマイコンの間に問題があることになります。センサの不良かも知れません。 あと、Delay10TCYx(0);でウェイト時間は十分でしょうか? アナログチャンネル切り替え後のウェイト時間が不十分だとアナログ変換値が正常になりませんのでハードの仕様を確認してみてください。 とりあえず試しにウェイトを増やしてみるのも良いかもしれません。

-TaKaHiRo-
質問者

お礼

ご回答ありがとうございます。 この書き込みの後、いろいろ試していて、 何とかAN4以外のピンからの出力を取り込み、 A/D変換した値を表示することに成功しました。 ノイズ等の影響はそれほどなく、 値がばらついたのは、接続が甘かったのが原因だったと思います。 とりあえずですが、何とかなりました。 違うピンで行おうとすると、コンパイルでエラーになってしまいましたが… (自己解決できなかったら、再度質問してみます) 大変分かりやすいご回答、ありがとうございました。

その他の回答 (1)

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.2

補足: 加速度センサは使ったことが無かったのですが、ドリフトと呼ばれる値のばらつきが起きる様です。下記サイトを参照↓ http://www008.upp.so-net.ne.jp/funfly/adxl202.html この場合は加速度センサの出力がPWMと違いますが同様なドリフトが起こっている可能性があります。一度確認してみてください。 加速度センサをオシロスコープへ接続するなど。一定値が出ていることを確認します。

-TaKaHiRo-
質問者

お礼

補足、ありがとうございます。 一定値が出力されるか、確認してみます。

関連するQ&A