はじめに
浅草ギ研の製品の中に、曲げると抵抗値が変わる曲げセンサーというものがあります。抵抗に電流を流すと電圧が生じますが、マイコンのADコンバータ機能(以後ADC)を使えば電圧を測定することができますが、これにより曲げセンサーの抵抗値=曲がり具合を測定することができます。ここではH8マイコンで曲げセンサーの抵抗値を測定する方法を紹介します。
電圧出力型センサの場合
このページでは曲げセンサについて解説しますが、電圧出力型センサーのプログラムもほぼ同じです。接続する場合は電圧出力型センサの信号出力線をAN0に接続します。(抵抗による分圧はしない)
曲げセンサー
曲げると抵抗が10KΩから20〜30KΩぐらいに増える。それだけです。
曲げの方向は、写真の面の反対側に曲げたときしか変化しませんので注意してください。(双方向の曲げは2つ使えば検知できる。)
抵抗値を読むには?
抵抗に電流を流すと抵抗の両端には電圧差が生じます。
この抵抗を2つ直列にすると
このように電圧は2等分されます(電流も減りますがここでは電圧だけに注目)。このように直列抵抗の両端電圧は電源の電圧差を維持しますが、抵抗の間は分圧されます。この分圧の度合いは抵抗値に(ほぼ)比例しますので、例えば下の抵抗を大きくすると中間点の電圧は上がります。
つまり、この下の抵抗を曲げセンサに置き換えると、曲がり具合によって(この回路の場合は)2.5V〜3.75Vぐらいの電圧が出力されることになり、この点をH8のADCで電圧測定すれば抵抗値、つまり曲がり具合が測定できます。
回路図
上の回路そのままです。測定ポイントはAN0につないで読み取ることにします。
この結果は、GDLに付属のシンプルタームでPC上に表示します。
5V電源は「H8を使ってみよう」のところで製作したものを使用してます。
実際の接続はブレッドボードで行いました。
プログラム
今回初となる機能はADCです。H8マイコンボード(ベステクのBTC064)に添付のサンプルプログラムと、H8/3694Fのデータシートを見て組めば使えるようになるかと思います。
テキストデータはこちら H8wBebdS.trxt
(右クリックで保存)
各特殊レジスタの設定はマイコンのデータシートを参照してください(インターネットでH8/3694Fで検索するとすぐに出てきます)。 wait関数はサーボコントローラのところで作ったものを流用してます。
ポイントは次の通り、
■ADCポートは8ピンあるが、ADC自体は1つしかないので、読む前にピンを指定する
■結果は10bit
■ピンによって結果が格納されるレジスタが違う(AN0で読んだ結果はADDRAに格納される)
■結果が16ビットの特殊レジスタに右詰めで格納される
というところです。
16ビット長のレジスタに左詰めで10ビットで格納されるので、下位6ビットは0が入ります。この値をこのまま出力してはわけがわからなくなりますので右に6ビットシフトしてから表示してます。 result
= (result>>6) のところ。
10ビット長で表される値は0〜1023です。よってADCは0〜5Vの電圧を0〜1023の値に変換してくれます。
上の回路でセンサーと抵抗がどちらも10Ωなので、センサーを曲げない状態では中間の値である500ぐらいが出力されるはずです。
また、センサーを曲げて30Ωになった場合は 30/40×1024=768 ぐらいの数値が出るはずです。
結果
結果は予想通りの値となりました。
下は出力イメージ。(シンプルタームで表示してます。)
曲げてないとき。
値=498ぐらい、
すこし曲げた。
値=600ぐらい
かなり曲げた。
値=780ぐらい
抵抗の値を変えると数値がかわりますのでいろいろ試してみてください。
これでH8で曲がり具合も測定できるようになりました。
2005年8月31日 |
|
|