加速度センサで遊んでみよう その1 2/3
3.ハードウェア というわけで作ってみたのが図3の回路(ブロック図)。センサに加速度が加わったら、どの方向にどれだけ加速度が加わったのかをLEDディスプレに表示するというものです。もちろんXY軸のセンシングが可能ですから、LEDディスプレイをマトリックスにして、360°検出可能としました。センサ出力は、そのままAD変換器にてCPUにとりこまれますから、DC加速度を測定していることになります。 |
センサ出力をアナログ値で検出し、ADにてデジタル値に変換しCPUへとりこみ、LEDディスプレイへ表示をするというものです。 図3 ブロック図 |
3-1 センサ部 この加速度センサのアナログ出力は、加速度がかかっていないときはおよそ2.5Vが出力され、この値を中心に+方向に加速度がかかれば電圧が高くなり、-方向に加速度がかかれば低くなります。 センサ出力にアナログ値を用いたのは、後段にフィルタをつけたかったためです。もしDuty比出力を用いた場合、フィルタはデジタルフィルタを用いなければならなくなります。となりますと、Z80では処理能力が不足しそうですし、なんといっても私自身、まともにデジタルフィルタを作ったことがありませんから、それだけでかなり苦労しそうです(これが一番の理由だったりするんですけど。いつかはちゃんとやってみたい項目ですね)。これが、アナログ出力を用いた理由です。 3-2 フィルタ部 センサ出力は、アナログフィルタにてノイズが除去されます。ここでいうノイズは、比較的早い周期の振動も含めています。今回、車の荷重センサとして用いてみたかったため、車におけるエンジンの振動や通常走行時のロードノイズなどを取り除くことが目的です。実際にどの程度の周波数のノイズが発生するかわかりませんので、とりあえずカットオフ周波数数十Hzの2次アクティブローパスフィルタを2段入れてみました。このローパスフィルタは、コンデンサC1,C2の比と増幅度を選ぶことで、フィルタの減衰特性をベッセルやらバターワースやらチェビシェフやらと目的に応じて決定できます。ここでは何にも考えず、増幅度は1倍、コンデンサと抵抗の値はほとんど適当といういいかげんな決め方をしています。いろいろ実験してフィルタ特性を気にするようになったらまともに設計すればよく、いまは、フィルタを入れればノイズが取り除ける可能性があるかということがわかればそれでいいのです。
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
オペアンプを用いたアクティブローパスフィルタ。オペアンプの増幅度やC1,C2の比などから、フィルタ特性を変えることが出きる。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
図4 オペアンプを用いたアクティブローパスフィルタ
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3-3 ADC部 フィルタによって余計な振動成分が除去された後、ADにてデジタル値に変換されます。ADにはMICROCHIP社のMCP3204を用います。このADは12bitの分解能、4チャンネルの入力を持ち、出力はシリアルデータででてきます。4チャンネル入力といっても、独立した4個のADを持っているわけではなく、ADは一個で4つの入力からひとつの入力を選択することになります。ADのCH1入力にX軸加速度出力を、CH2入力にY軸加速度出力を接続します。 ADのVrefにより、このAD変換器のフルスケールが決定します。この回路では、Vref=5Vとしていますから、AD入力が5Vとなったとき、フルスケールである4095が出力されます。なお、加速度がかかっていないとき、加速度センサ出力は2.5Vになりますから、AD出力は、2048が出力されていることになります。 3-4 CPU CPUには使い慣れたAKI-80を用います。AKI-80CPUボード単体で、外部IOを16本もっていますから、そのうち3本をDAからのデータとり込みに、6本をLED表示用に用います。
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3-5 表示部 表示は2つのデマルチプレクサを用いることで実現します。デマルチプレクサは、2進数入力に応じたピン出力をHもしくはLにするものです。例として3to8Demultiplexerである74HC138の真理値表を図4に示します。例えば、2進数入力であるABCにおいてA=1,B=0,C=1(十進数で5)が入力された場合、5番出力だけがLレベルとなります。このデマルチプレクサを2つ用いると、任意のX,Y入力に対応した座標のLEDを表示する回路を作ることができます。それが図3で、X入力にD0=0,D1=1,D2=1(十進数で6),Y入力にS0=1,S1=1,S2=0(十進数で3)が入力された場合、X軸用デマルチプレクサ出力は6番出力だけがHとなり(X軸用74HC138の出力には、すべてインバータをつけていますから、任意の2進入力に対応した出力ピンがHとなります)、Y軸用デマルチプレクサ出力は3番出力だけがLレベルとなりますから、X=6,Y=3の座標のLEDだけが点灯します。したがって、X,YのデータをこのLED表示機に与えてあげれば、それに対応した座標のLEDが点灯してくれるのです。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
G2=G2A+G2B |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
図5 74HC138 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
図6 LED表示器の動作 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3-6 回路図 全回路図はこちらです。 gcir1.pdf |