<Homeへもどる>   <前に戻る>

自作データロガー しかも格安!




<<< 一台目 >>>

なんて事はない。
単純に0-5Vのアナログ入力を1023段階に細切れにして数値として記録する。それをRS232Cで繋げたパソコンで取り込むだけ。最大連続データ記録時間はパソコンが扱えるファイルサイズの最大値まで。1分当たり50KB使う計算なので、2GBがファイルサイズ上限だとすると、約699時間=29日間も記録できちゃいます!(笑)

さて、いきなりですが、かかった費用の計算。

メーカー型番単価数量合計
秋月通商PICプログラマーV3.56700円16700円
PIC 12F675200円1200円
3端子レギュレーター200円(4個セット)1200円
DCジャック100円(4個セット)1100円
RS232Cコネクタ50円150円
8ピンICソケット100円(10個セット)1100円
ピンソケット50円150円
コンデンサ 16V47uF15円115円
プリント基板60円160円
タクトスイッチ10円110円
その他200円
合計金額7685円

てな感じで、PICプログラマーを除いたら1000円かからなかった(笑)

それなりに精度も出るし、分解能も実用上十分に高い。

こんな感じに完成。

ソケットに乗っかってる赤い基板(写真上部)は3軸加速度計。車で言うと、前後方向の加速度と左右方向の加速度、さらにZ軸もあるため傾きも計測できる。

次に簡単な仕様を。

アナログ入力3ch、0〜5V
サンプリング間隔1秒当たり46回
電源電圧8〜20V
本体サイズ75mm x 50mm x 15mm
出力ポートRS232C
対応OSWindows他いろいろ使えるはず(^^;
通信速度9600bps
その他USB-シリアル変換での接続も可能

そのうちケースにでも収めて使ってみるかも。

<<< 二台目 >>>

さて、一台目がそれなりに結果を残してくれた。
実際問題、46回/秒(21ms/回)というサンプリング間隔はオーバースペックなほど短い。これの1/3程の間隔でもGRIDのLM-1並ということ。つまり、単純にアナログポートをもっと増やしてやれば、12回/秒程度のサンプリングは簡単に実現可能。

ということで、二台目の設計。
CPUとも言える心臓部には「PIC 16F88」を採用。A/D変換に7ポート使えるので、それらはそのままアナログ入力に。残り3ポートをデジタル入力とログ開始トリガ用のスイッチ、リセットスイッチに割り当て、2ポートをRS232Cの通信用に、動作周波数は外部のオシレータを使って20MHzとする。

PIC16F88動作周波数20MHzに設定
アナログポート7ch
デジタルポート3ch
ピンアサイン1アナログ入力
2アナログ入力
3アナログ入力
4リセット
5Vss
6デジタル入力
7デジタル入力
8シリアル送信RX
9デジタル入力
10トリガスイッチ
11シリアル受信TX
12アナログ入力
13アナログ入力
14Vdd
15CLK0
16CLK1
17アナログ入力
18アナログ入力

これで、アクセル開度、空燃比、吸気音、エアフロ電圧、O2センサ電圧、回転数、車速、インジェクタ開弁率、その他、様々なデータ収集が可能になる。はず!(笑)

乞うご期待!!??

 というわけで2台目、とりあえずできあがり!?

 実走テストでノイズも乗らず、精度も良く、なかなか良好な結果を残した。以下mixiの日記抜粋。

まずは仕様変更。
スタートボタンを押しながら電源オン(或いはリセット)で、PCとの通信(RS232C経由)を57,6kbpsに、なにもせずに電源オン(或いはリセット)で115.2kbpsの通信速度に設定される。
また、電源投入後、スタートボタンを押すごとに、
 「精度重視の最速ログモード」
      ↓
「データ量重視の省エネログモード」
      ↓
   「ロギング停止」
となるようにプログラム。


最速モードでは1秒当たり223回のサンプリング。
省エネモードでは1秒当たり30回のサンプリング。

さてさて、最速モードはデータ量が大きくなり過ぎるし、そこまで精度を出しても無駄ばかりなので結局使えない(^^;
省エネモードでも十分すぎるサンプリング数だね。


てことで、車に積み込み実走テスト。

ん〜、思ったよりもいい感じ。
ノイズの影響もないし、10bitのA/D変換は十分な精度。
部品代だけで言えば2000円くらいか?

スゲー使える。


今後、設定項目を少し増やすか、SRAMでものっけてPCレスのロギングに対応するか、LCD繋げてリアルタイムで表示できるようにするか・・・
要検討。

<<< データロガーVer2.1 >>>

自作データロガー、細かく分けるとモードが4つ。
PCへデータを送る速度が高速・低速の2つ。
ロギング動作として高速・低速の2つ。
(実際はもっと増やせるし、サンプル用に使ってたりする)
前者は電源オン時(或いはリセット時)スイッチが押されてるかどうかで判別するから分かりやすいけど、後者は分かりずらかったりする。
LEDを制御して点滅させるとかでモードを判別すりゃいいんだけど、チカチカとあまり見た目によろしくない。

てことで、無駄に7セグLEDを使い、動作モードを数字で表示してみることに。

とはいえ、PIC16F88ではI/Oが計16本で、7本がA/Dコンバーター(センサ入力)、2本がシリアル通信用、2本が外部クロック供給、リセットに1本、LED用に1本、トリガスイッチに1本、と使うと残りは2本。
たった2本じゃ7セグLEDの1セグ分しか動かせない・・・
さてさて、どうしたもんかね。
やっぱりI/Oのもっと多いPIC使うしかないのかな。。。

しばし試案の後、PICとPICをつなげて表示部分を分割すればいいんじゃねぇ!?
てことで、手持ちのPIC16F84Aで7セグの制御を担当させることに。
で、ロガー部分とは1本の線で結ぶ。
要は簡単なシリアル通信をさせるという設計。

データロガー部分から8bit分のデータを流し、7セグ制御部分で受け取る。で、各ビットを見てフラグが立っているかどうかで、現在のモードを判別し、それを元に7セグLEDを駆動。

ん〜、このシリアル通信をさせる制御には苦労させられた。
そもそも、最初に使ったPICが壊れてたことが更に事を深みに導く原因に。
それから、実際データの送受信にあまり長い時間はかけたくないので、100μsecごとに1bit送出、というタイミングにした。8bitは1msec以内に7セグ制御部分に受け渡せる設計だ。

最終的には写真のようにモードに対応した数字を表示させることで、パッと見で分かるようになった。
めでたしめでたし。



<Homeへもどる>   <前に戻る>