PICで気圧、温度、湿度計 by 24FJ64GA002 その8

計測データをメモリーに蓄える


PIC24Fで気圧、温度、湿度を観測してグラフィック表示を行いながらデーターをシリアル通信で送信できる装置を「Air3-24GS」と呼ぶ事にした(PICで気圧、温度、湿度計 のネーミングを考えるを参照)。この「Air3-24GS」の観測プロットデータのメモリーj上への記録開始と、記録の中断(再開は無し)、記録データの再プロット表示(リプレイ)をどのような操作で行えば良いのだろうか?

 

Air3-24GS
 
グラフ領域を右方向へ48回分プロットすると、旧プロットデーターを2回分空白にしながら左端から新しいプロットをはじめます。心電図のグラフと同じ方式です。
 

シリアル通信でのハイパーターミナルによる受信データー
 

現状であくまで暫定仕様である押しボタンの操作手順では、通常の観測モード中に単独で識別できるボタンは、黄色のタクトSWを単独でモード切替え用、灰色のタクトSWを単独でスリープモード用として割り付けたので、緑色のタクトSWだけが残っている。

通常の観測モード中にこの緑色のタクトSWを押せば、プロットされる毎に日時と気圧、気温、湿度の観測データーをメモリー上に記憶し、記録が記憶用の領域一杯になるか、あるいは、記録中に緑のタクトSWを押した場合には、メモリー上に記録が有る事をLCDに表示しながら通常の観測モードに戻せば良い。

こうしてメモリー上に記憶した観測データーを、プロット表示しながらリプレイさせるには、どう操作する事に決めれば良いのか?

あるいは、記録データを上書きして新規に観測データーを記録したい時にはどう操作する事に決めれば良いのか?

通常の観測モード中に緑色のタクトSWを押している間に黄色のタクトSWを押せば新規上書き記憶、同様に、通常の観測モード中に緑色のタクトSWを押している間に灰色のタクトSWを押せば記憶データの再生表示、とすれば良いかな?記録の中断は、記録中に緑色のタクトSWを押している間に黄色のタクトSWを押すことで認識させよう。記録を放っておけば記憶領域一杯に記録されて自動的に通常の観測モードに戻せば良いかな?
(Nov. the 3rd. 2010)

PIC16F886搭載のAir3-16GSの場合は、データメモリー(368byte)、EEPROM(256byte)と容量が少なく、気圧の計測データーのみを128個分記憶するのが精一杯だった。

PIC24FJ64GA002搭載の Air3-24GS では、日時、気圧、気温、湿度の4要素を持つ構造体:sRec を配列変数として240個分定義しても、データーメモリーにかなりの余裕があり、現状で3784/8192とその半分以上も容量が残っています。

///////////////////////////// 定義サンプル ////////////////////////////

typedef struct { // 構造体 SRecの定義
unsigned int readTimeDate0; // RTCCの観測時刻0データ記憶領域
unsigned int readTimeDate1; // RTCCの観測時刻1データ記憶領域
unsigned int readTimeDate2; // RTCCの観測時刻2データ記憶領域
unsigned int readTimeDate3; // RTCCの観測時刻3データ記憶領域
int Prs; // 気圧観測データ記憶領域
int Tmp; // 気温観測データ記憶領域
int Hum; // 湿度観測データ記憶領域
} sRec;

sRec vRecord[240]; // vRecord を構造体 sRec型の240個分の配列変数として宣言する。

////////////////////////////////////////////////////////////////////////

例えば、こうしておけば、それぞれのデーターをバラバラにすることなく、一括して扱えるので便利です。

240プロット分ということは、現在のプロット領域が48個なので、240/48=5。5画面分の記憶が出来るというわけです。

実際に気圧のデーターだけを実際にメモリー上に記憶させて、後からリプレイさせる事ができました。

また、スリープモードにしても、ウェイクアップ後にその記憶データーが消失しないで保存されている事も確認できました。

これで、EEPROM機能を搭載していないPIC24FJ64GA002で、観測データーをオフラインで長期間保存できそうです。

さーて、日時や、気温、湿度も記憶できる様にプログラミングしてみます。さらに、リプレイ時にシリアル通信として全ての情報を送り出す様にしなくては・・

最も難儀なのは、じつは押しボタン等の操作方法の決定です。GUIをいつか全面的に変更したいのですが、先ずは全体を作ってみて、プログラム容量のどの位をGUIに割り当てられるかという事を見極めてから、逐次画面全体を使った見やすい方法に変えていきたいと考えています。

現在のプログラム容量はPIC24FJ64GA002で4235/22014ですから、今の所は余裕の様には見えますが、GUIは思った以上にプログラム容量を浪費するので、しばらくは操作の面倒な簡易型のままにします。

さて、例によって、全データーの記憶と、リプレイが出来る様になるのはいつになる事やら?
(Nov. the 14th 2010)

●問題点
Air3-24GS上での、「観測データーのメモリー上への記憶」、「メモリーリプレイ」、「記憶データのシリアルデータ送信機能」、「スリープによる観測記憶データーの長期間保存」については、おかげさまで、ほぼ完成いたしました。

ところが残念なことに、稀に押しボタン処理のはまり込みが発生し、リセットをせざるを得ない状況になってしまう事が判りました。

押しボタン入力でチャタリング除去を含めて様々な機能を「単純な簡易入力処理」のみで動作させている事が主な原因であろうと思われます。

しばらくは、押しボタンの入力処理の方法を変更し、装置自身の信頼性を上げるべく勉強中です。ソフト公開は今しばらくお待ち下さい。って、誰も待ってないか!
(Dec. the 2nd. 2010)


注意事項
General disclaimer
トッ プページへ

なお、当ホームページで公開しているデーター(写真、音声)等を個人の枠を超えて複製・転用する事はご遠慮下さいませ。
ご意見/苦情/ご感想はこちらまで