● 実験テーマ136
「dsPIC30F_SDカードロガー(RTC+eneloop電圧記録)の実験」
(前テーマでのグラフの横軸は時間経過[分]であったが、これを時刻にしたく実験を行った。)
■ 2022.9.10
・dsPIC30Fを使ったSDカードロガーの実験は大昔、実験テーマ7で行っているが、
SDカードの読込を、RS232C経由で端末に読込ませる等、凝った事をやってるが上手く行かず
中途半端になっている感がある。
・そこで仕様をシンプルにすべく以下のように整理してみた。
(1) 変更部分
@ ロギング設定画面は無しにし、サンプル間隔:1分・収録データ数:1441(収録時間:24時間)固定にする。
A SDカードの読込は、PCのカードスロットに挿入してcsvファイルを読込ませるので、RS232Cは不要。
B EEPROMにロギング条件設定値を保存していたが、これも必要無くなる。
C 温度センサーからの電圧をロギングしていたが、これを電池電圧に変更する。
PICのADチャンネルは、AN3ではなく、AN1(ポテンショ入力部を兼用しDICピンで切替えて使えるようにする)
にする。
(2) 主な仕様
@ AD Sample Interval: 1分
A // SDカードへの収録データ数:1440データascii(16byte/1dataなので、23040Byte)← これは誤記 以下に修正 220926
SDカードへの収録データ数:1441データascii(16byte/1dataなので、23040Byte)
B SDカードへの収録時間:24時間((1441-1)/60分= 24時間)
C グラフ化する時の、時間軸の1目盛り当たりの表示:hh:mm:ss(1時間間隔)
(3) 操作手順
@ SW2を押しながらP_ONで、時計の時刻合わせを行う。
時刻設定画面にて以下のSW操作を行う。
・SW1 ON
1回目:年項目下位アドレスにカーソル表示後、カーソルオン
2回目:月項目下位アドレスにカーソル移動後、カーソルオン
3回目:日項目下位アドレスにカーソル移動後、カーソルオン
4回目:曜日項目下位アドレスにカーソル移動後、カーソルオン
5回目:時項目下位アドレスにカーソル移動後、カーソルオン
6回目:分項目下位アドレスにカーソル移動後、カーソルオン
7回目:秒項目下位アドレスにカーソル移動後、カーソルオン
・SW2 ON
ONする毎に、設定値インクリメント
・SW3 ON
設定値確定
A 時刻設定画面を抜けると、通常の時計+電圧表示画面になる。
B SW1を押すと、SDへの収録画面になり、収録が開始される。
C 収録途中で、SW3を押すと収録が中断され、その時点のセーブをしファイルをクローズする。
D 収録終了から通常モードに移行するには、電源を入れ直すか、reset swを押す。
<元ソースのメモ>
・INT0割込み処理:RTCからの同期パルスを使用し1秒毎
@ 頭にて時計と温度(ADC含む)表示(1秒毎に時計+温度表示)
A 末尾にて、ロギングインターバルのカウントを行い
時・分・秒のフラグを立てている。
■ 2022.9.22
・一応hex準備出来た。
ハード上での不備があって最初まともに動かなかった。
その不備とは、I2Cライン等の5pinコネクタと、INT0ライン等の4pinコネクタへの接続が必要だったが
接続してなかった。というかその辺のメモが残ってなく忘れてた。なにせ大昔の事なので・・・
・これで動き出したが未だ駄目。
@ 時計機能はOK
時刻合わせ機能OK
時刻のバックアップ機能OK
通常画面表示(時計+電圧)OK
A SW1_ONで収録開始するが、液晶1行目の表示が、"REC:xxxx/ 0010 "にならず、(テスト用でデータ数を10に変更してる)
通常画面の1行目の表示(2022/xx/・・)が変に残っている風になる。
B SW3を押しても中断しない。
■ 2022.9.23
・原因が解った。
Logging_mode_flagが抜けていた。
大昔作ったソースなので、この変数名の意味が直感で解らなかった。
'1'=ロギング画面表示
'0'=通常画面表示
という意味なので必要だった。
またBは長押しセンスに変更で一応解決
・再度SDカードをチェックしたら収録されてなかった。
DATA.csvを見ると容量が0byteになっていた。
→ N_WRITEによるエラー処理をコメントアウトにしていたが、これが無いとpfileポインタが更新されないようでNGだった。
エラー時は割込み禁止と、ファイルをクローズ・sd-csをノンアクティブし、cpuのrunを停止する処理にした。
■ 2022.9.24〜 2022.9.26
・データ数を1440に戻し24時間収録してみた。
いざ収録が終わって、Excelでグラフ化したが、時間軸に最終収録時間の「14:21:01」が表示されない。
また1分前の 14:20:01のデータまでしか表示されてなかった。
24時間収録のつもりが、23時間59分になってた。
→ 1441データ((1441-1)/60分=24時間)に修正して明日以降再度試すことにした。
■ 2022.9.27〜 2022.9.28
・1441データに修正して24時間収録した結果を以下にグラフで示した。
横軸が時刻表示になったので、よりリアルなグラフになったと思います。
<回路図>
・「easy_sd_logger_3」
・AE8564NBモジュール (秋月のRTC-8564NBモジュール基板の回路図:水魚堂にて作成)
・インターポーザ基板の回路図 (dsPIC2012→ dsPIC4013ピン変換の為の、2階建て基板)
<最終ソース>
(1) easy_sd_logger_3.c (大昔のソースの改版の為ライブラリ化はしてません。この他にMicroChip社のFAT16の各ファイルを追加すれば動きます)
← 実験テーマ1に戻る TOP PAGEに戻る 実験テーマ137へ →