2013年10月6日日曜日

マイコンでA/D変換

マイコンでA/D変換(アナログ情報をセンサーで読み取ったものをデジタルの情報に変換すること。)を最近やることになったので、その情報をまとめとく。
A/D変換が標準で搭載されてるマイコンもあれば搭載されてないのもあるので、そこは事前に調査してください。ちなみに自分はATmega328を使いました。
●回路のつなぎ方について
AVCCに基準電圧を送って、入力モードになってるPC0~PC5に、センサーの方をつなぐ。データシートをみると、例えばPC0はADC0とも書かれています。データシートに書かれてる「AD~」は、A/D変換関連だと思っていいです。基準電圧というのは、これとセンサーから流れてきた電圧と比較して、データを読み取るためのもので、まぁ複雑なものを作るとき以外はVCCと同じ電圧でいいんじゃないでしょうか?VCCは電源のことです。
具体的な回路については省略します。ググれば出てくると思うので。
補足メモ:コンデンサーはノイズ除去装置
●プログラミングについて
データシートの24項あたりを見れば大体わかるのですが、自分はまずデータシートの読み方をよくわかってなかったので読んでもわかりませんでした。
レジスタ変数の表の見方ですが、レジスタ変数は大体8bitでできていて、2進数で扱うことが多く、データシートの表もビット単位で描かれています(←自分はここがわかってなかった。)
A/D変換でよく使うレジスタ変数を簡単にまとめてみた。
ADMUX        :A/D多重器選択レジスタ:チャンネルを選択する(24.8項)
ADCSRA      :A/D変換制御/状態      :状態を表すハード側が決定
ADCH/ADCL:A/Dデータレジスタ        :デジタルのデータが入ってる)


追記

サンプルプログラムをUPしました。文字コードはShift-JISです。Google上で閲覧すると文字化けするかも。ソースファイルの上半分のコメントアウトしてる部分は練習用に書いたやつを残してるだけなので、無視していいです。
ADC_sample.c

追記2
ADC_sample.cのアクセスをちゃんと設定してなくて閲覧できないようだったので修正しました。すいません。あと、文字化けしまくってるのでダウンロードして使ってください。

0 件のコメント:

コメントを投稿