ノキア5110グラフィックLCDで
気圧、温度、湿度の3つの表示をさせるには? その1
実は、2線式通信(I2Cとは異なる)の湿度センサーユニットが既に存在している事をパレットソフトさんから教えてもらいました。 |
元々の気圧、気温計測装置と、湿度センサー実験ボード。 この2台を1つにまとめなくてはなりません。 |
PIC 16F886による、ブレッドボード上での実験がうまくいきました。 自宅の装置では、気圧 1012hPa、気温 31.7℃、湿度67%。ほぼ一致しました。暑ーい! |
計測開始から指令から、全てのデータを取り込みまで320msかかっています。 ch1(黄色)がSCKでRC6、ch2(紫)がDATAでRC7です。 約10kHzでPICとSHTが通信している様です。 |
全てを一つにまとめました。まだ、湿度のグラフプロットができていません。 |
ハード回路はノキアのインターフェースの1カ所を、他の実験の都合で変更しています。(RC3に接続していたD/(INV)CをRC5へ変更しています。) これは、プログラム容量が少なくなってきた為に、上位の18LF2550と共通化をする為です。 18LF2550にはRC3が存在せず、内部のVSUB電源になっています。ここに0.1uのコンデンサを介してGNDに繋ぎます。その他は全く共通にPICを差し替えて使用できます。 18LF2550はプログラムメモリーを16KW持ち、RAM容量も2KBあります。USB通信機能を持っています。12MbpsのUSBに対応する為に最大クロック周波数が48MHzと高速です。 「LF」タイプの場合は3.0V付近で16MHzで動作可能ですが、2.0Vまで直線的に4MHzまで下がります。(詳しくは、「その17 PICで気圧計 by 18LF2550 基礎実験その1」、または、マイクロチップ社発行のデーターシートを参照して下さい。) 18LF2550は、18F2550の使用可能電圧幅を広げた製品で、2.0Vから5.5Vまで動作可能で、3.3V系の駆動が可能なのですが、現在日本国内では残念ながら入手する事はできませんので、ご注意下さい。 私は訳あって、マイクロチップ社の海外ダイレクト通販で入手しましたが、航空便になるので送料がかなり割高になってしまい、相当数を購入しないと単価はそれほど高く無くても、結構高い買い物になってしまいます。また、購入手続きは全て英語となります。届くまでに、2週間程かかります。 現在、16F886で何処までプログラミング可能なのか調べています。でも、湿度センサーから通信で得られるA/D変換値データを物理量に変換するのには、浮動小数点演算が必須なのです。 その為内部が8ビットCPUの16F系では、どうしてもかなりのメモリー領域を浮動小数点演算で消費してしまいます。 実験的には16F886で、湿度センサー自身で温度を計測するのは可能でしたが、プログラム容量的に他のプログラムとの共存が無理な事と、温度計測サイクルに320msも時間がかかるので止めました。 その為、計測湿度値に温度補正をかけていませんが、補正をかけなくても殆ど日常仕様する範囲であれば差はありません。 |
ソースリストは、ただ今、グラフ表示の修正実験中です。 |
ただ今、ここまでのソフトウエア全体の見直しをして、プログラムソースのダイエット化を薦めています。眺めれば眺める程、無駄や、要らない変数宣言等、他人のプログラムを切った張ったをしてきた残骸が観られました。無駄な変数の宣言を減らすと、そこそこメモリーの節約になるようです。 また、特定のI/O2ビット分を占有してしまうので私はあまり好きでは無いのですが、16F系はUSART機能をもっているので、RS232Cについてはビットのパタパタ通信を止めて、PIC内部のUSARTを使ってみました。でも、思った程のメモリーの節約にはなりませんでした。 そして、何よりも節約に効果が有るのは、浮動小数点関係の変数宣言や、計算を減らす事です。実数から整数にキャスティング(型変換)する事も、なるべく一回で済む様に、今、関数の共通部分をまとめています。じっくり見直すことで、7895バイトだったプログラムサイズが、7200バイト位まで減らす事ができました。もう少し減らす事ができれば、分離表示方式等のプロットがプログラミングできるかもしれません。 例によっていつになる事やら!(Aug. the 1st. 2010) |
なお、当ホームページで公開しているデーター(写真、音声)等を個人の枠を超えて複製・転用する事はご遠慮下さいませ。 |
ご意見/苦情/ご感想はこちらまで |