PICで気圧、温度、湿度計 by 24FJ64GA002 その3
内蔵リアルタイム・クロック・カレンダも使う?

ハード回路を考える


PIC24Fに内蔵されたRTCC(リアルタイム・クロック・カレンダー)機能を使って、気圧、気温、相対湿度を計測して、計測時間も情報として付加しようというわけですが、PIC24FJ64GA002 I/SP のデジタルI/Oポートは、最大で21個です。

現在必要なI/O数は、
モノクロLCD:ノキア5110LCD(5)、
気圧センサーユニット:AE-SCP1000-D01(5)、
湿度センサーユニット:SHT-11(2)、
UART-TX,UART-RX (2)、
ICSP(2)、
押しボタン1(3)、
外付けクリスタル:RTCC用SOSC32.768kHz(2)で、
PIC24FJ64GA002の21個のデジタル I/Oを完食です。
(ディップスイッチを押しボタンに変更ました。時間の設定や、モード切り替えを行う為です。)

でも、困った事が判明しました。

RTCCを使用すると、PB14がRTCC1Hzクロック/クロックアラーム出力として占有されてしまう様です。
うーむ、痛いなぁ。

押しボタンを1個減らすか?・・
うーむ、長押し検出や、2個同時押し検出とか、押しボタンの検出ライブラリーの開発が面倒だし・・
3個が便利なんだけどなぁ。モード、+、ーとかね。

UART-RXを止めて、従来通りUART-XTで単純にパソコンには観測データを転送するだけにするか?・・
XPort03RをRS232Cコネクターの変わりに接続して、LANを通して遠距離で双方向通信をパソコン側と行い、パソコン側から時刻やプロット出力間隔の変更等、押しボタンの変わりに遠隔操作が出来る様にするつもりでしたが。これも将来の拡張性を無くしてしまうのでもったいない。

PIC24F系には残念ながらEEPROMが内蔵されていません。

アウトドアでデーターを収集する場合(?)に、ノートパソコンにRS232C接続でデーターを記録するすしかなくなります。ノートパソコンが重いという「ものぐさ」な私には、難儀な話です。

PIC24Fの貴重なメモリー内に記憶する様にプログラミングしてして、装置の電源を切らない様にして持ち帰り、パソコンへRS232Cを通じて吐き出すしかありません。

RS232Cを使用しない(コネクタを接続しない)場合に、3.3VのDC-DCコンバーターを内蔵してアルカリ乾電池2本で持ち運び式にすると、今までの経験的からいって16F886ならば約1ヶ月持つのに対して、24FJ64GA002 では2週間程稼働するというところでしょうか。

参考までに、パレットソフトさんのPIC12F683 でデータ通信型、PIC16F648 & キャラクタディスプレーで簡易グラフィック表示方式の気圧観測システムでは、約2ヶ月位アルカリ乾電池2本で稼働いたします。単にPICの処理能力が高ければ良いとは言えないのです。目的に合った適材適所でPICも選ばなくてはいけません。

「だから何だ?2週間もあれば、家まで持ち帰ってパソコンに繋げられるじゃないか!」って言われると、それまでですが・・趣味ですから、外に携帯したいんです。理由はありません。

外部にEEPROMでも搭載したい位ですが、またしてもI2C通信用のI/Oポートが必要となります。

PIC24FJ64GA004 (秋月電子通商@450円)を使えば、最大デジタルI/O数が35個でPIC24FJ64GA002(秋月電子通商@350円)よりも14個も多くて良いのですが、DIPタイプではなくてTQFP、つまりフラットタイプなので、そのままでは私の様な1つ目基板上で電子工作する場合には、ピン変換基板(@3480円!た、高いなぁ!)にハンダ付けして使う事になり・・ 自分で変換基板をエッチングで作ると云ってもやっぱり高くつくし、面倒だし・・

いっそ、ICSP接続を止めて、別途プログラミング専用基板を作って、今までの様にPICを抜き差ししながらデバッグをしようか?ううっ!この辺が実用的だが・・
ハード回路図を下記の様に決定しました。(Oct. the 10th 2010)


そういえば、PIC24Fのデジタル入力ポートにも、プルアップ抵抗(50k)が内蔵されているのでした。この内部のプルアップ抵抗のおかげでデジタルI/O入力が解放状態でもHighレベル状態を保ちますが・・

でも、初期状態のままでは、内蔵プルアップ抵抗は無効なのです。CNPUnで目的の端子のプルアップを有効にすれば使えます。リセット状態では、無効になります。

なお、PIC24FJ の内部プルアップのビット位置は、そのポート番号とは何ら関係がない位置です。チップのピン番号に対する機能割り付け一覧表の、CN番号がCNPUn用のビット番号になります。



今回は、RB0(CN4)、RB1(CN5)、RA2(CN30)に押しボタンスイッチがあるので、

CNPU1 = 0x0030
CNPU2 = 0x4000

となります。

今回の回路では、ICSP接続でプログラミング中に、共用している押しボタンさえ押さなければ、ICSPとRB0、RB1(PIC24FJのPGECx/PGEDx端子)を、押しボタンスイッチ入力と共有できます。

なぜならば、リセット状態でICSP接続通信を行いプログラミングしますので、リセットが解除されて、プログラムが走ってプルアップの再設定がされるまでは、プルアップが無効なのです。これはICSP接続の端子にも都合がいいのです。

ディップスイッチ等の、フリー状態で開放にならないスイッチと共有すると、いちいちICSP動作時にディップスイッチをOPENにしなければなりません。

これを忘れると、ICSP出力がグランドとショートします。でも、押しボタンなら押さなければ必ずスイッチとしてはOPEN状態ですから安心ですが・・

押しボタンを押しながらICSPで書き込んだらアウトですが、少なくとも私はそんな面倒な事はしません。

よーし、これでハード回路がやっと定まった。

そして、システム全体の処理も移植しなくては・・

今度こそ、例によっていつになる事やら!趣味ですから・・(Oct. 18th 2010)


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

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