● 実験テーマ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へ →