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