【SDカード付きデータロガーの概要】
少ピンPIC24Fを使った4チャネルのアナログデータのロガーです。
周期的に計測したデータをSDカードにFAT16ファイル形式で保存します。
このSDカードを抜いてパソコンでファイルを読み出すことができますので、
そのままEXCELなどで計測データを扱うことができます。
長時間のデータロガーには持ってこいです。
FAT16ファイルシステムはマイクロチップ社から無償提供される
「FAT16 File System」を使いましたので、ファイルに関連するプログラムは
作る必要がなく、簡単にSDカードへのファイル保存ができます。
外観は下図のようになりました。
右側面に出ているのがSDカードです。
押しボタンスイッチ3個をケースの外に
頭だけちょっと出ている感じです。
計測信号は端子台で接続できるように
しました。
【機能仕様概要】
このデータロガーは基本機能だけに限定し、下表のような仕様としました。
これの応用は皆さんにお任せします。
項 目
仕 様
備 考
電源
バッテリ 3V〜4V
50mA以下リチウムイオン充電池を使用するDC/DCコンバータで5V生成
入力
チャネル0,1最大入力電圧:約0.3V〜3.3V
分解能:0.3mV〜3.3mV入力アンプ付き
ゲイン調整可能入力
チャネル2,3最大入力電圧:3.3V
分解能:3.3mV入力アンプなし
PICのピンに直接接続表示出力
液晶表示器 16文字×2行
測定値をリアルタイムで表示
ファイル保存の開始、終了表示基板に直接実装
スイッチ
基板にプッシュスイッチ実装
SW1:記録開始、終了
SW2:計測周期切替選択
SW3:予備SDカード
標準SDカード使用
最大2GBまで利用可能マイクロチップ社のFAT16ファイルシステムを利用
計測機能としては4チャネルだけとし、そのうち2チャネルにはアンプをつけて
約10倍のゲインとしています。
SDカードにはFAT16の形式でファイルを作成し、そこにタイムスタンプと一緒に
4つのデータを格納していきます。
書き込みフォーマットはCSV形式としましたので、パソコンでファイルを読み出せば
そのままテキストでも読めますし、EXCELでも読み込めます。
全体構成は下図のようになっています。
SDカードとのインターフェースはSPI通信によるシリアルインターフェースですので、
図のようにピンをRP4からRP9までで順番に接続しました。
SPIインターフェースはピン割り付けが可能なので、こういう場合に効率よくピンを
使うことができます。
液晶表示器は、4ビットインターフェースとして出力モードのみで使っています。
LEDを2個実装してデバッグ用や動作表示用として使います。
電源にはちょっと大き目のリチウムイオンバッテリを使って、携帯できかつ
長時間のログができるようにします。電源部は液晶表示器に5Vが必要ですので、
DC/DCコンバータを使って5Vを生成しています。PICなど周辺IC用の3.3Vの電源は
この5Vから3端子レギュレータで生成しています。
入力アンプ部は、標準的な非反転増幅回路とし、レールツーレールのオペアンプ
を使ってできるだけ0Vから3.3Vまでの範囲の出力ができるようにしますが、
完全に0Vあるいは3.3Vぴったりまで出力できるわけではなく、数10mV内側の
範囲が出力可能な範囲です。
アンプのゲインを半固定抵抗で調整できるようにして、入力のフルスケール値を
調整できるようにしておきます。テスタ等で調整して希望するフルスケール値に
合わせて下さい。
【回路】
回路図は下図のようになっています。
【基板組み立て】
中央が下側がPIC24Fその右にオペアンプ回路
SDカードのソケットが表面実装なのではんだ面
側に実装することになります。
カードの向きはソケットに逆向きのものがあるので
それを使えば部品面から表示が見えるように
できます。
カード横にDC/DCコンバータが実装されています。
バッテリにはリチウムイオンを使っています。
秋葉原で購入したものですがリサイクル品の様です。
大容量なので長時間動作にはちょうど良いでしょう。
【プログラム製作】
本製作例では、SDカードにファイルを保存するソフトウェアとして、マイクロチップ社製の
「FAT16ファイルシステム」を使いました。
このファイルシステムは、マイクロチップ社のUSB内蔵PIC18用の「USBマスストレージクラス」
でも提供されていましたが、独立して扱えるようにしたものです。
現状ではベータ版で未公開ですが、秋ごろには公開されるとのことです。
まず、このFAT16ファイルシステムの全体構成は、下図のようになっています。
基本となるファイルシステムを管理するのがFAT16.cで、ここでファイルのディレクトリと、
格納するファイルの配置の管理を行っています。
さらに、FATファイルシステムを使うアプリケーションに対して、API関数を提供し、アプリ
ケーションから簡単にファイルを生成し、読み書きができるようにします。
sdmmc.cがSDカードと物理的な接続と通信を行う部分で、_fat.defというヘッダファイルで
定義されたSPI関連のI/Oピンに対してアクセスを実行します。
したがって、このFATファイルシステムを実装する際に変更が必要になるのは、この_fat.def
ファイルだけになるようになっています。
このFAT16ファイルシステムを移植する際には下記のような手順で行います。
・_fat.defファイルを作成する
(雛形を修正して作成できる)
・SDカード用ドライバファイルをプロジェクトに登録
(sdmmc.h、sdmmc.c、sdmmc_1d1.cの3個のファイル)
・必要なファイルをプロジェクトに登録
(FAT16.c、FAT16.h、_FATDefs.h、GenericTypeDefs.h)
・アプリケーション部分を作成してコンパイル
このように内容の修正が必要となるのは、「_fat.def」ファイルだけで、あらかじめ雛形となる
ファイルが用意されていますから、そのコメントを読んで確認しながら修正すればよいように
なっています。
★★★ プログラムダウンロード
ログを開始すると液晶表示器の表示が更新されないという不具合があります。
上記プログラムで sdmmc.c のファイルを下記のようにコメントアウトして
修正してください。