データロガー
vega 2007.12.18〜
改定 2008.1 .3
改定 2012.6 .9
いかがでしょうか、一家に一台データロガー!!
【データロガー】
マイコン(AVR)を使用した、自作データロガーです。
SDカードに記録するので測定にパソコンが不要です。電池で長時間動かすことも可能です。
SDカードをパソコン接続し、データを取り込みができます。Excelを使用しグラフにすることも簡単です。
6チャンネルの電圧データが記録できます。 SDカードに記録するので長時間の記録が出来ます。
温度の記録、測定器の記録など、さまざまな用途に使用できます。
SDカードの部分はこれをベースにしました。
https://ss1.xrea.com/vega.s58.xrea.com/astro/mirror/avr-sdcard/avr-sdcard.htm
SDカードのアクセスはすでに出来ていたので、データの蓄積の部分(ソフト)を作りました。
SDカードアクセスのは、chanさん作成のシステムを流用しています。
http://elm-chan.org/fsw/ff/00index_j.html
回路図 https://ss1.xrea.com/vega.s58.xrea.com/astro/mirror/avr-sdcard/logger.gif Ver1.0
回路図 https://ss1.xrea.com/vega.s58.xrea.com/astro/mirror/avr-sdcard/logger2.gif Ver2.0
SDカードソケット
9,10ピンは使用してないので配線の省略可能。
1,2ピンで電源制御は実質してないので、電源つなぎっ放しでも問題ない。
シリアルポートは、パソコンでモニターしなければ、省略可能。
AD変換の基準電圧は、外から供給するよりマイコンの電源を使用する方が良い。
機能など
@
AD変換の測定チャンネル 最大6チャンネル
A ロギング(測定)の周期 10ms単位で指定 最大9999秒 最小不明
B 測定結果のファイル(ファイル番号のようなもの)は、最大100個
log00.txt 〜log99.txt マイコンリセットの度にサイクリックに使用
C ファイルは、FATの形式でFAT12又はFAT16(FAT32には対応していません)
D 動作条件は、ファイルで指定(config.txt)
ここをパソコンで書き換えれば、動作条件を変更できる
E ロギング間隔(100ms単位)は、config.txtにより微調整(校正)可能
実績として、10秒間隔の記録で5時間動作して、4秒以内の誤差
config.txtの設定内容
@ ログファイルのスタート番号
A ログ間隔 10ms単位で 9999.99sec まで
A 測定チャンネル数
C
シリアルポートのデータ出力有無 (パソコンで動作確認)
消費電流は不明(測定してない)
SDカードの書き込みは、1回のロギング毎にファイルの後始末(ファイルクローズ)しますから、いきなりの電源断でも
データが残る確立大です。
欠点
@ クロックは、内臓8MhzのCR発振器を使用し、しかもロガーの単位は100msは、近似値を使用しています。
絶対的な精度は期待できません。
A 記録の間隔が1秒以下の短い間隔の測定は、考慮していません。
ソフトをその為に改造すれば、それなりに効果があると思います。
ファームのダウンロード
logger1
2008.01.2 まだエラー処理がいい加減です。 0ch が記録されません。
logger2
2008.01.3 まだエラー処理がいい加減です。 0ch
記録OK。
ヒューズは、こうなっています。 |
|
C:\combin>avrsp
-pb4 -rf -w Detected device is ATmega168. Low: 11100010 ||||++++-- CKSEL[3:0] Clock source selection ||++-- SUT[1:0] Startup time |+-- CKOUT (0:Output system clock on the CLKO pin) +-- CKDIV8 Clock division ratio (1:1/1, 0:1/8) High:11-11111 |||||+++-- BODLEVEL[2:0] (111:Disabled, 110:1.8V, 101:2.7V, 100:4.3V) ||||+-- EESAVE (Retain EEPROM at chip erase 1:No, 0:Yes) |||+-- WDTON (1:WDT normal, 0:WDT always on) ||+-- SPIEN (1:Disable ISP, 0:Enable ISP) *Available only in Parallel mode |+-- DWEN (On-Chip debugging via RESET pin 1:Disable, 0:Enable) +-- RSTDISBL (RESET pin 1:Enable, 0:Disable(PC6)) Ext: -----001 ||+-- BOOTRST *Refer to data sheet ++-- BOOTSZ[1:0] *Refer to data sheet Cal: 142 |
|
HIDaspx + ihidspx-GUI
での 読み出し結果です。 Lo : E2 Hi : DF Ex : F9 |
![]() |
基板に電源と、外部からAD変換の基準電圧のコードを接続します。 黄色と白のクリップ(?)で電圧を測定したいところへ接続します。 写真で差し込んであるのは、16MBのSDカード。 |
|
![]() |
これはニッケル水素電池を放電したときの電池 の電圧です。 2秒毎に測定しています。Excelで加工しています。 |
基板製造
SDカードソケットの回りは、少し細かい半田付けの必要があります。
プロテクトSWや挿入有無のSW、電源制御を使用しなければ配線が大分減ります。
又 UPしたファームは、内部の8Mhzを使用していますが、精度を上げたい場合は、外部の水晶発振子を
使用すれば、精度が上がります。 もちろんソース変更が必要です。
SDカードのソケットは、秋月電子で購入(¥150)可能。
データロガー専用にする場合は、ソケットを基板に直付けしたほうが良いと重います。
ファームウエア
Atmega168ならばファームをそのま使用できますが、他のもの(H8、SH2、AVRのその他)を使用する
場合は、chanさんのサンプルをベースにコンバートすれば、可能と思います。
使い方
a) フォーマットしたSDカードを挿し電源を入れる、config.txt(ロガーの設定データ)は自動的に生成され
5秒毎に6chのデータが記録がされる。
LEDの動作
@ 正常動作
電源を入れると、LED2が1秒間程度点滅した後、消灯する。
このタイミングで、LED3は、LED2の点滅時には、点灯(点滅ではない)し、その後消灯する。
ロギング時は、LED2、LED3が5秒毎(初期状態では)にフラッシュする。
LED2とLED3のフラッシュのタイミングは、LED2の後一瞬送れてLED3がフラッシュする。
A 異常動作例(SDカード実装しない場合)
電源を入れると、LED2は、点滅も点灯もしない。
LED3は、点灯したまま。
SDカードのフォーマットは、専用のがあるので再フォーマットする場合はそれを使用した方が
良い。 http://panasonic.jp/support/audio/sd/download/sd_formatter.html
大事なデータが入ったSDカードは、使用しないほうが安全と思います。
シリアルポートからも、SDカードが記録されるデータと同じ内容が出力されるのでパソコン等でモニターできる。
b)
フラシュしないタイミングでSDカードを抜き、パソコンで読んでみる、
2個のファイルが作成されいるはず。(中身も)
config.txt (設定データ)
log01.txt
(ロギングしたデータ)
c) config.txt を 変更すれば ch数や ロギング周期を変更できる。
初期状態はこのようになっている
01 000500 YYYYYY Y 0005
@ A B C D
@
次回起動時に使用するファイル(番号)
ここの二桁(xx)がlogxx.txt に対応する。 起動するたびに数字が大きくなり
99の次は00になる。
logxx.txt が存在しない場合は作成され、存在する場合は、前の内容が消滅する。
A 測定周期 10ms単位の数字6桁
ここを微調整すれば、周期の校正ができる。
誤差は、パソコンでシリアルポート(COMポート)で表示させるれば分かる。
実際の時間より遅れる場合は、数字を小さくし、進む場合は大きくする。
たとえば、001000
として、1時間で30秒進んでいる場合は、
1000*30/3600=8.33
であるから 001000 を 001008とすれば良い。
実例として10秒周期で 001014で誤差が最小になった。ここ場合Dは、0010 とする。
当然チップの個体により異なり、温度によっても変わる。
B
測定するチャンネル番号を選択する。左端は5チャンネルで、右端は0チャンネル。
Y(大文字)することでそのチャンネルが測定され記録される。
たとえば、 YYnnnY とすれば、5ch、4ch、0ch が記録される。
C
ここをYとすれば、SDカードに記録する内容が、シリアルポートに出力される。
Y以外にすれば、無駄が省かれ測定周期1秒以下の場合に有効かも。
D
表示上の記録周期 4桁で秒単位
Aと同じ(校正時は少し異なるが)にする。
今後直すとしたら
@ クリスタル発振子を使い、時計の精度を上げる。
A
記録方式を変え、短い測定周期を可能にする。