最近の記事 - RSS

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

単一モードで複数のチャンネルをA/D変換してみる、赤外線センサー編。

H8/3664F(QFP)にはA/D変換のチャンネルが8チャンネルある。(DIP版は4チャンしかないっぽい)
しかしこれらに全部アクセスするためには、前回ボリュームを読むのに使ったスキャンモードでは不可能らしい。

スキャンモードは一度スタートさせるとクリアさせない限りずーっとスキャンし続ける。
チャンネルも、一応設定は出来るが同時には4チャンネル(ADDRA・ADDRB・ADDRC・ADDRD)の結果しか読めない。(多分)

それに比べて単一モードは、スタートさせると「一度だけ」変換を実行してクリアされる。
それと、チャンネル設定の幅が増えて、合計で8チャンネル使用可能になる。

必要な時に必要なタイミングで使えれば良いので、単一モードのほうが有用かな。
用途に応じて使い分けるんだろうけど…。

とりあえずソースはコチラ。
前回と大して変わっていないが、今回は単一モードなのでループ内で毎回A/D変換を定義している。

それと、いくらなんでもループ内で適当にカウントするのはお粗末過ぎたのでタイマーAを利用したウェイトを挟んだ。
お粗末さに変化は現れなかった。(あれ?)

PB0/AN0とPB1/AN1にフォトトランジスタ(TPS611)を接続。
Vcc(5V)→抵抗(可変が望ましい)→↑ポートへ→エミッタ→コレクタ→GND といった具合に…わかりにく!
この辺を参考にして…。
フォトダイオード(TLN110)をP5-0とP5-1に接続した。
こっちは普通のLEDと同じ。TLN110の最大定格は5V・100mAなので抵抗は15Ωを挟んだ。適当だな…。
ad_single_test_002.jpg
光って見えるけど、赤外線LEDなので肉眼では変化なし。
ad_single_test_003.jpg
見慣れない色の光なのでちょっとかっこいい…。でも色的に紫外線っぽい。

で、結果がこれ。
今回は8ビットシフトさせたので0~255(256段階)の値が吐き出される。
ad_single_test_001.gif
センサーの設置が超適当で指向性も確保してないため大分ばらつきはあるが、おおむね良好。

…というか、0.1mmずれただけでも結果が超変わるので相当シビアな事がよく分かる。
これは実用的にするのは骨そうだ…。がっちり固定しなくては。
あと多少部屋の明るさとかも関係している。
可視光カットでも太陽光とか蛍光灯とかから微量に検出するのかな。
カメラのフラッシュとかは大丈夫なんだろうか。

試しにTPS601とTLN101で試してみたがほぼ同じ結果。
しかしメタルパッケージで指向性は良いがいかんせん出力が弱いためか、かなり近づけないと反応しない。

TPS708は探し回ったがちょっと手に入らなさそう。
代替品はあるので特にこだわらなくてもいいだろう。

熱伸縮チューブで覆うなり、ABS樹脂角材に穴を開けて専用ホルダーを作るなりしよう。

※覚書

単一モード・低速変換時のADCSRの設定。

CH BYTE A/Dレジスタ 出力レジスタ ポート コネクタ(秋月)
AN0 0x08 0000 1000 AD.ADDRA PB0 CN1-10
AN1 0x09 0000 1001 AD.ADDRB PB1 CN1-9
AN2 0x0A 0000 1010 AD.ADDRC PB2 CN1-8
AN3 0x0B 0000 1011 AD.ADDRD PB3 CN1-7
AN4 0x0C 0000 1100 AD.ADDRA PB4 CN1-3
AN5 0x0D 0000 1101 AD.ADDRB PB5 CN1-4
AN6 0x0E 0000 1110 AD.ADDRC PB6 CN1-5
AN7 0x0F 0000 1111 AD.ADDRD PB7 CN1-6

覚え書くまでもなかったかもしれないが、参考までに。

ハードウェアマニュアルの内容がだんだん理解できてきた。
素晴らしい情報源だったのね…。
スポンサーサイト
管理者にだけ表示を許可する

トラックバックURL

http://nukopan.blog58.fc2.com/tb.php/28-1801a265

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。