Menu

My Works
- LEDチェッカ
- 太陽電池式回路テスタ
- TTL Pong
- DSP プリセットラジオ
- 電動式 CVCC 電源装置
- OLED MP3 プレーヤ
- etc.

Report
- MIDI のハードウェア
- aitendo DSPラジオ一覧表
- etc.

Parts Collection
- Logic IC
- Calculator LSI
- CMOS Melody IC
- etc.

Blog

Recent Updates

主な更新のみ

24/03/10
- Logic IC Collection


簡易 SDカード・データロガーの製作

初版公開:2014/08/14
最終更新: 2023/05/26


  

AVRマイコンと 14 セグメント VFD(蛍光表示管)を使って、SDカードに 4 系統までのアナログデータを同時に記録できる、スタンドアローン動作の「SD カード・データロガー」を製作しました。

ログデータは CSV 形式で保存されるため、表計算ソフトを用いたグラフ描画や統計処理が容易です。

機器内にバッテリ動作の RTC(リアルタイムクロック)を組み込んでいるので、データと同時に時間を記録できるため、大変便利です。

また、MCU として安価なマイコンを使用しているので、同様の機能を持つ市販品に比べるとローコストで製作することができます。

仕様 (Specification)

注意点 (Limitation)

プロジェクトファイル・ダウンロード

プロジェクトの構成

今回の製作では、配線数の最適化と設計の再利用のために、表示器のドライブ回路とメイン基板を分けて設計を行いました。
両基板の間のデータ転送はシリアル通信で行うので、1-MCU 構成とくらべて、配線の大幅な効率化が実現できます。

この「簡易 SDカード・データロガー」は、「シリアル VFD ドライバ」と「SD データロガー・コントローラ 」の2つの独立したパートによって構成しています。
「シリアル VFD ドライバ」は、非同期シリアル(UART)信号によって VFD をコントロールするデバイスとして設計したので、他のプロジェクトにも汎用的に応用できます。

「シリアル VFD ドライバ」の詳細は 別ページにまとめました。

詳細

以下は SDデータロガーの コントローラ部分 の説明です。

主な使用部品

・ATmega88V
MCU として ATMEL の 8bit AVR を使用します。28 ピンの 8 bit AVR マイコンから、ATmega88V を使用します。
8kB の ROM を一杯に使用しているので、機能拡張には ATmega168 など、もう少し ROM の大きいマイコンを使用する必要があるでしょう。

・MSM62X42B (MSM62X42BRS)
沖電気製の RTC(リアルタイムクロック)です。
昔の Z80 や 8085 のシステムでしばしば使用されていたものだと思います。
水晶発振子内蔵で、ランク A 品なので誤差 20ppm と、良く手に入る RTC より若干精度が良いのが少し自慢です。
本来は +5V 電源用の製品ですが、 CMOS なので +3.3V でも動作します。
ただし仕様外の動作なので、事前に動作テストしたうえで、タイミングに余裕を持たせて制御しています。

SII や EPSON からも同様の 4bit I/F の IC が出ていたと思います。

・uPC29M33T
NEC の +3.3V 0.5A LDO 電圧レギュレータです。
手持ちの都合で使用しましたが、すでにディスコンのようです。
代わりとしては、100mA 以上の出力が可能な LDO レギュレータが使用可能です。

・CR2032
+3V リチウムバッテリです。
はんだ付けできるタブ付きバッテリを使用すると便利です。
電源が入っていない状態でも、このバッテリにより RTC の計時動作を継続します。
RTC の実測消費電流から、少なくとも 9 年以上の連続計時動作が可能な計算です。

詳細説明

基本的に、ログをしていない場合は時計として機能します。また、ロギング中はアナログ電圧のモニタ動作を行います。

ログファイルのフォーマット

メモリーカードに書き込まれるログファイルは、1行が1つの時刻のデータを表す、以下のようなフォーマットになります。

20yy/mm/dd,hh:mm:ss,d1,d2,d3,d4

yy/mm/dd : 年月日
hh:mm:ss : 時刻
dN : チャンネル N の ADC 生データ (0-1023)

メモリカードとして、SD カード、MMC カード および SDHC カードが使用できます。
今回はファイルシステム(FAT)制御のために Petit FatFs を使用しました。

操作方法

[MENU] [OK] [+] [-] の 4 つのボタンによって操作を行います。

☆状態遷移表

表示画面と動作説明

・時計動作

・時刻設定
時計動作の状態で [OK] を長押しします。
[+] [-] [OK] でチャンネルの切り替えを行います。

・アナログ電圧モニタ動作
センサの接続状況確認のために、ADC で変換された 値を表示するモードです。

A-D 変換された生のデータ (0-1023) が表示されます。
[+] [-] でチャンネルの切り替えを行います。

・ログ動作
ログを記録する前に、PC での前処理が必要です。

(前処理)
SD カードのルートに "log.csv" というファイルをあらかじめ用意する必要があります。
このファイルには、必要なログを書き込むのに足りるだけのサイズを確保します。
必要なファイルサイズの計算式は以下の通りです。
 N = 42 * Tdur / Tint
N = ファイルサイズ [byte]
Tdur = ログを取る期間 [sec.]
Tint = サンプリング周期 [sec.]

(操作)
「LOGGING」画面で [OK] ボタンを押下します。

ログを取る周期を [+] [-] により設定して、[OK] ボタンを押下します。

ログを取っている最中は、アナログ電圧のモニタリングを行います。
[+] [-] でチャンネルの切り替えを行います。
ロギングが終了したら、[MENU] ボタンを押下して終了します。

*SD カードが認識できない場合、エラー表示「CARD ERn」が表示されます。

・RX THRU 動作

外部からの UART 信号を 「シリアル VFD ドライバ」にそのまま出力します。

製作

適当なプラスチックのケースに収めました。


(ケース内部)

 
(デバッグ中)


(背面)

前面にスペースがないので、すべての端子類を背面パネルに配置しています。 押しボタンがむき出しなのが気になります。少し処理を考えなくてはいけませんね。

センサなど外部との接続は、スイッチ下のピンヘッダを通しての接続となります。配線には市販のピンソケット付きケーブルが便利です。

 
(温度記録中のようす)


(ログデータのグラフ表示)