加速度センサを使ってみる

この前届いた加速度センサとUSB-シリアル変換器を使って加速度を測定してPCに送るプログラムを作ってみました。


左からPIC、加速度センサ、USB-シリアル変換器です。他にはセラロックや抵抗、パスコン、動作表示用のLEDなどがあります。
それぞれのデバイスが小さいのでコンパクトに収まっています。電源はUSBからもらうので接続も1本で済みました。


PIC側はPIC16F88を使用しました。プログラムとしては加速度センサの3軸それぞれについてAD変換するだけです。シリアルで送信するときはどの軸のデータか分かるように'X'、'Y'、'Z'とラベルを付けて送りました。


X軸のAD変換指示、完了

'X'を送信

AD変換結果のレジスタから値を持ってきて送信

Y軸のAD変換指示・・・


といった具合です。
受信側のPCではTeraTermなどを使うと勝手に文字にエンコードされてしまうので、受信用のソフトをC#で作ってみました。
その中身としては、送られてきたデータのラベル('X'、'Y'、'Z')を判断して、その次に送られてきたデータをその軸の数値として表示するだけ。
受信データの変数の型をcharでやったら値が正しく出てこなかったので、試しにbyte型でやってみたら無事に成功しました。C#はまだまだ勉強が必要だなぁと実感。


こんな感じです。取り込み間隔は100[ms]おき。それぞれのデータは8bit精度(0〜255)で送られてきます。X軸とY軸は127近辺が静止状態で、Z軸は177辺り(常に重力が加わっているため127にはならない)でした。


いつも読んでるはじめてのPICアセンブラ入門(本の中ではPIC16F877を使用)という本を参考に進めたらADCON1が名前は一緒なのに877と88じゃ中身が違うことになかなか気づかなくて最初うまく動いてくれませんでした。データシートは重要ですね・・・


次はセンサからのデータに応じてPCでグラフィックを変化させるようなものを作ってみたいとか思ってみたりしてます。