概要

ある機械(アーム)の動作頻度と動く量を2日程度計測するために、PIC18Fを使用した加速度ロガーを開発した。
1秒に1回加速度をサンプルし、224回サンプルすると日時データを合わせて256ByteをEEP-ROMに書き込む。
128kBytesのEEP-ROMを2個使用しているので、224*(4*65536/256)=229,376秒 2日15時42分56秒間のデータを保存できる。
クロックはUSB-IOで接続済みの12MHzのセラミック振動子を使用しPLLで4倍にしている。書込みはPICKit3を前提とする。
保存されたデータはRS-232Cを介してパソコンへ取り込める。
ROMの容量の関係で日時の修正機能はパソコンからRS232C経由で設定する。
電源は単3のニッケル水素電池(1800mAh)4本を使用した。(写真は乾電池を使用しています。)
屋外で使用するために100円ショップで購入したプラスチックケースに格納し蓋にビニールテープを巻いて防水しました。(写真は撮影のために蓋を外しています。SDカードコネクタが写真に写っていますが、電気的に接続していません。)

初期メニュー

加速度ロガーを起動すると液晶に下記のメニューが表示される。
SW0:RUN SW1:next
logger
SW1を押すとメニューが切り替わる。
希望の内容が表示されたらSW0を押すと選択される。

ロガーモード

SW0:RUN SW1:next
logger

モニターモード

SW0:RUN SW1:next
monitor

日時表示

SW0:RUN SW1:next
clock

バッテリ電圧表示

SW0:RUN SW1:next
Battery

省電力モードに移行 再起動は電源を入れなおす

SW0:RUN SW1:next
power off

ロガーモード

液晶に下記の内容が表示される。
SW0:RUN SW1:next
Push -> Start
ロガーを開始させる時SW0を押すと計測を開始する。
SW0:RUN SW1:next
Push -> Start
計測中は、液晶に例えば下記の様に表示される。
X-0009 13/09/22■
00000  18:13:38
X-0009はX軸の加速度、2行目の最初の5文字は、現在選択されているEEP-ROMの先頭アドレス、日時と時刻の表示、右上の四角はバッテリの電圧を表している。
SW0を長押しすると計測を終了し初期メニューに戻る。

モニターモード

RS232Cでパソコンと接続する。専用ソフトにより計測データを取り込める。またターミナルによりEEP-ROMの読み込み、日時の設定を行える。
パソコン側は下記の設定にする。
ボー・レート 19200
データ 8bit
パリティ 無し
ストップ 1bit
フロー制御 無し

コマンド

ターミナルで接続した場合下記のコマンドが使える。

dihex [アドレス]

I2C EEPROMより指定アドレスを先頭とする256バイトのデータを読み込みIntel HexフォーマットでRS232Cに送信する

date 年 月 日

指定された日時で時計を設定する

time 時 分

指定された時刻で時計を設定する 秒は0で設定される

q

RS232Cモニターを終了し初期メニューに戻る

日時表示

日時が表示される。日時が間違っていればモニターモードで日時を修正する。
13/09/22
18:29:07
SW0を押すと初期メニューに戻る。

バッテリー電圧表示

日時が表示される。日時が間違っていればモニターモードで日時を修正する。
Battery        ■
05094mV
右上の四角はバッテリの電圧を表している。 電圧が4V~4.8Vまで四角の高さで表示している。
SW0を押すと初期メニューに戻る。

省電力モード

PICを省電力モードにする。電源を切断することが可能となる。液晶には
Power Off
と表示されている。

回路図

回路は次のとおりである。
回路図(PNG) 回路図(PDF) 回路図(DXF)

プログラムの説明

ソースファイル

以下のファイルと付帯するヘッダーファイルで構成されている
menu.c    ・・・ メインプログラム
logger.c  ・・・ 計測部 1秒置きの割り込み処理
mon.c     ・・・ モニター
rtc.c     ・・・ RTC関係
sw.c      ・・・ タクトスイッチ
adxl345.c ・・・ ADXL345
i2c_ex.c  ・・・ I2C
i2c_eep.c ・・・ EEP-ROM
lcd.c     ・・・ 液晶モジュール

ソースファイルのダウンロード alogger.zip

RS232Cによりロガーに保存された加速度データを読み出すプログラム

以下の2つのプログラムを併用することによりCSVファイルでデータを取り出すことができる。
プログラムはEEP-ROMの生データをそのままインテルHexフォーマットとバイナリ形式で保存するプログラム aread104
インテルHexフォーマットとバイナリ形式よりCSVファイルを作成するプログラム aconv102

aread104

RS232Cでパソコンと接続し、ロガーをモニターモードに設定後aread104を実行する。COMポートの一覧が表示されるので接続されているCOMポートを入力するとlogger.binとlogger.hexが作成される。
ソースファイルのダウンロード aread104.zip

aconv102

logger.binとlogger.hexから例えば以下のようなCSVファイルを作成する。
13/10/1 0:41:36,0.00,-1
13/10/1 0:41:37,0.00,-1
13/10/1 0:41:38,0.00,-1
13/10/1 0:41:39,0.00,-1
13/10/1 0:41:40,0.00,-1
13/10/1 0:41:41,0.00,-1
ソースファイルのダウンロード acond102.zip