大学編入試験に無事合格し,漸く本格的にやりたいことができるようになりました.
てなわけで,製作目標の中でも一番とっかかり易い,加速度計を作ろうと思います.
以前(5/24)の記事で,マトリクスLEDの準備はできました.
次は,プログラムを書かなくてはなりませんが,まず,加速度計の概念をご説明したいと思います.

左図について,
電源は,Gセンサとマイコンに電力を供給します.
Gセンサは,電源をくれてやると加速度の信号を吐きます.
その信号をマイコンで受け取り,処理します.
そして,マイコンに繋いであるLEDを光らせるわけです.

また,右図のものが今回使用する加速度センサです.価格は秋月で1000円也.
電源をくれてやると,それに応じてX,Y,Zそれぞれの方向の加速度が,出力端子の電圧となって現れます.
具体的には,例えば電源が3.3Vの場合,0Gで1.65V,1Gで1.72V…といった具合です.
今回はX,Yの2軸方向の値を用います. また,電源は私個人の気分により3.3Vを採用しました.
今となっては,「5Vにすればよかったかも・・・」なんて思っています.
また,LEDの表示についてはどうするのか? という見本を以下に示します.
○○○○○○○○
○○○○○○○○
○○○○○○○○ これが2軸とも0Gの状態.
○○○●●○○○
○○○●●○○○
○○○○○○○○
○○○○○○○○
○○○○○○○○
○○○○○○○○
○○○○●●○○
○○○○●●○○ これが,2軸ともに加速度が生じている状態.
○○○○○○○○
○○○○○○○○
○○○○○○○○
○○○○○○○○
○○○○○○○○
てな具合です.
下に,単軸方向へ段々加速度が変化するときの表示の様子を示します.
○○○●●○○○ ←0.00G 1.62V~
○○○○●○○○ ←0.05G 1.68V~
○○○○●●○○ ←0.10G 1.72V~
○○○○○●○○ ←0.15G 1.75V~
○○○○○●●○ ←0.20G 1.78V~
○○○○○○●○ ←0.30G 1.85V~
○○○○○○●● ←0.40G 1.91V~
○○○○○○○● ←0.50G 1.98V~
取りあえず,0.5Gまで計測できるように作りましたが,コレは「車載するのにはこんなもんで充分だろ」という勘で決めました. なぁに,ダメならプログラムをちょいと弄れば済む話です.
また,よこの電圧値はあくまで電源電圧が3.3Vの場合ですのであしからず.
計算式はデータシートに載っていますが,0Gの電圧=電源電圧/2を基準に,
1G毎に電源電圧/5づつ電圧が増加します.
そして,カタコトのC言語でプログラムを作成します.
AVRマイコンはATmega88Pという,足が多く生えている奴を使います.
マイコンの説明は,長くなりすぎるので割愛します.
ニコ動に良い解説動画がありますので(sm7775003様等)そちらをご覧ください.
B0~7をX軸出力,D0~7ポートをY軸出力にあて,C0をセンサからのX値,C1をセンサからのY値入力にして組んだプログラムが以下です.

この通り,素人にとっては目が痛くなるようなプログラムですが,やっていることはさほど複雑ではありません.
ポートD側が正,ポートB側が負になります. しかし,このプログラムでは非表示マスに逆電圧がかかるので,抵抗の他にダイオードをかませておくと安心だと思います.
そんなこんなでプログラムを書き込んで動かした様子がコチラ↓
というわけで,今後は愈々車載可能なカタチに持って行きたいと思います.
ありがとうございましたm(_ _)m
てなわけで,製作目標の中でも一番とっかかり易い,加速度計を作ろうと思います.
以前(5/24)の記事で,マトリクスLEDの準備はできました.
次は,プログラムを書かなくてはなりませんが,まず,加速度計の概念をご説明したいと思います.

左図について,
電源は,Gセンサとマイコンに電力を供給します.
Gセンサは,電源をくれてやると加速度の信号を吐きます.
その信号をマイコンで受け取り,処理します.
そして,マイコンに繋いであるLEDを光らせるわけです.

また,右図のものが今回使用する加速度センサです.価格は秋月で1000円也.
電源をくれてやると,それに応じてX,Y,Zそれぞれの方向の加速度が,出力端子の電圧となって現れます.
具体的には,例えば電源が3.3Vの場合,0Gで1.65V,1Gで1.72V…といった具合です.
今回はX,Yの2軸方向の値を用います. また,電源は私個人の気分により3.3Vを採用しました.
今となっては,「5Vにすればよかったかも・・・」なんて思っています.
また,LEDの表示についてはどうするのか? という見本を以下に示します.
○○○○○○○○
○○○○○○○○
○○○○○○○○ これが2軸とも0Gの状態.
○○○●●○○○
○○○●●○○○
○○○○○○○○
○○○○○○○○
○○○○○○○○
○○○○○○○○
○○○○●●○○
○○○○●●○○ これが,2軸ともに加速度が生じている状態.
○○○○○○○○
○○○○○○○○
○○○○○○○○
○○○○○○○○
○○○○○○○○
てな具合です.
下に,単軸方向へ段々加速度が変化するときの表示の様子を示します.
○○○●●○○○ ←0.00G 1.62V~
○○○○●○○○ ←0.05G 1.68V~
○○○○●●○○ ←0.10G 1.72V~
○○○○○●○○ ←0.15G 1.75V~
○○○○○●●○ ←0.20G 1.78V~
○○○○○○●○ ←0.30G 1.85V~
○○○○○○●● ←0.40G 1.91V~
○○○○○○○● ←0.50G 1.98V~
取りあえず,0.5Gまで計測できるように作りましたが,コレは「車載するのにはこんなもんで充分だろ」という勘で決めました. なぁに,ダメならプログラムをちょいと弄れば済む話です.
また,よこの電圧値はあくまで電源電圧が3.3Vの場合ですのであしからず.
計算式はデータシートに載っていますが,0Gの電圧=電源電圧/2を基準に,
1G毎に電源電圧/5づつ電圧が増加します.
そして,カタコトのC言語でプログラムを作成します.
AVRマイコンはATmega88Pという,足が多く生えている奴を使います.
マイコンの説明は,長くなりすぎるので割愛します.
ニコ動に良い解説動画がありますので(sm7775003様等)そちらをご覧ください.
B0~7をX軸出力,D0~7ポートをY軸出力にあて,C0をセンサからのX値,C1をセンサからのY値入力にして組んだプログラムが以下です.

この通り,素人にとっては目が痛くなるようなプログラムですが,やっていることはさほど複雑ではありません.
ポートD側が正,ポートB側が負になります. しかし,このプログラムでは非表示マスに逆電圧がかかるので,抵抗の他にダイオードをかませておくと安心だと思います.
そんなこんなでプログラムを書き込んで動かした様子がコチラ↓
というわけで,今後は愈々車載可能なカタチに持って行きたいと思います.
ありがとうございましたm(_ _)m