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.
主な更新のみ
24/09/11
- MCU-based Melody ICs
24/08/12
- MCU-based Melody ICs
24/03/10
- Logic IC Collection
初版公開:2014/08/14
最終更新:
2023/05/26
AVRマイコンと 14 セグメント VFD(蛍光表示管)を使って、SDカードに 4 系統までのアナログデータを同時に記録できる、スタンドアローン動作の「SD カード・データロガー」を製作しました。
ログデータは CSV 形式で保存されるため、表計算ソフトを用いたグラフ描画や統計処理が容易です。
機器内にバッテリ動作の RTC(リアルタイムクロック)を組み込んでいるので、データと同時に時間を記録できるため、大変便利です。
また、MCU として安価なマイコンを使用しているので、同様の機能を持つ市販品に比べるとローコストで製作することができます。
注意点 (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 ドライバ」にそのまま出力します。
適当なプラスチックのケースに収めました。
(デバッグ中)
前面にスペースがないので、すべての端子類を背面パネルに配置しています。 押しボタンがむき出しなのが気になります。少し処理を考えなくてはいけませんね。
センサなど外部との接続は、スイッチ下のピンヘッダを通しての接続となります。配線には市販のピンソケット付きケーブルが便利です。