PIC16F687・3色表示温度・湿度・不快指数計の製作 (2009/09/28/〜2009/10/18)

(Last update:2011/06/18)


まずはブレッドボードで動作確認基板表。
高さが問題になりそうな
半固定抵抗は手前に集中配置
基板裏不快指数が「暑い」の領域
不快指数が「快適」の領域不快指数が「寒い」の領域
ケーシングのラフレイアウト
厚みも部品配置もギリギリ ^^;ケーシングの様子。
厚みが確保できなかったため、
LED はクリアファイルを切り抜いて
保護シートに使用
ケーシング内部その1。
基板はホットボンドで固定ケーシング内部その2。
ボタンや電源コネクタ、LED は
ホットボンドで固定。
7セグ LED の配線が
毎度ながら面倒 ^^;
完成品。
左が温度 (℃)、右が湿度 (%)。
クリアファイルが LED 保護シートに
なっているのがお判りだろうか完成品裏面
3端子レギュレーターの放熱と
センサー引き出しのため、
裏蓋は開放して運用
不快指数(文字)は
1分毎に自動表示ボタンを押すと数値で
不快指数を表示
部品レイアウト表面
赤、橙はジャンパー線部品レイアウト裏面
回路図
動作の様子。
「電子の目」で撮影するとチラついてしまうが、
肉眼ではチラつきは判らない

静岡の F 様から製作レポートをいただきました (2011/05/08)
↓↓↓
管理人コメント:

専用基板ですっきり仕上がってますね ^^
なんと VFD 版の製作例が @o@
左:2色 LED で電飾版、右:フラット VFD 版

管理人コメント:

「想定外」の作品に驚きました ^^;

製作の経緯:

 久々に実家に帰ったところ、リビングに 7セグ LED 表示の温度・湿度計を発見。ところが湿度センサーがとっくに劣化し、湿度 2% とか表示している ^^; これは作り直さねば(ネタ発見!)。運よくヤフオクで 2色 7セグ LED (スタンレー NARG105) を格安に大量購入できたので、速攻で設計開始。


仕様:

 マイコンを使った 7セグ LED 表示の温度・湿度計は山ほど製作例があるので、もうひとヒネリもふたヒネリも欲しいところ。

 ひとヒネリ目は前回同様 3色表示にするとして、ふたヒネリ目は、温度と相対湿度から不快指数を自動計算して表示することにした。もちろん、温度、湿度、不快指数とも快適度に応じた3色表示。

 温度、湿度は 4秒毎にサンプリング〜表示し、不快指数は 1分毎に自動的に 3秒間、快適度に応じて文字表示(Hot, good, Cool)する。またスイッチを押すと、その間は数値で不快指数を表示する。(ちなみに、巷には温度・湿度計の製作例は多いのに、不快指数計算している製作例が極めて少ないのは何故であろうか?)


回路説明、設計時の考慮点等:

 今回のテーマは、「なるべく使用部品を減らす」こと。この方針に従って回路設計を行う。

 使用するマイコンは、3色 LED 4桁表示であることから、桁制御に 2色x4桁=8ポート、セグメント制御に 7ポート、センサ入力に 2ポート、の合計 17ポートが最低でも必要。これまで愛用してきた 16F88 ではポート不足なので今回は 20pin の PIC16F687 を使用する。(同系列でより多機能な 16F690 でもわずかな修正で対応可能のはず)

 さて、今回使用した2色 7 セグ LED は大型の スタンレー NARG105。ところがこれが曲者で、各セグメント毎に LED が 2つ直列接続されていて Vf が大きい(赤セグメント Vf = 3.4V、緑セグメント Vf = 4.0V)。通常であれば、こちらのように LED のハイサイトに桁制御トランジスタ、ローサイド側にセグメント制御トランジスタを配するわけだが、5V 駆動では十分な電圧を LED に印加できず、ダイナミック点灯では緑の輝度が足りなくなってしまう。

 こういった場合、普通なら 三端子レギュレーターに入力する前の高電圧を桁制御トランジスタを介して LED に流し込むのが定石。ただしこの場合は電圧レベルが異なる PIC からは桁制御トランジスタを直接ドライブできなくなるので、桁制御部分は NPN、PNP の 2 トランジスタ構成となってしまい、部品点数が多くなってしまうというため、ここでもひとヒネリ必要だ。

 次に桁制御トランジスタについて考えてみる。今回のダイナミック点灯制御は、セグメント単位でダイナミック点灯を行う完全ダイナミック点灯であり、点灯する LED は 常に 1つだけ。複数の LED が同時に点灯することは無いので、もし PIC のポート出力最大定格 25mA 以内で十分に LED が光るのであれば、PIC から直接 LED のコモン端子に電流を流し込めばよいのでわざわざ電流ブースト用の桁制御トランジスタを外付けする必要が無くなる。ところがここにも落とし穴があって、PIC の H 出力の最小値はデータシートから VDD - 0.7V とかなり低い。したがって桁制御トランジスタを減らすことが出来てもやはり輝度(特に緑の輝度)が確保できないことになる。

 次にセグメント制御側のトランジスタについて考えてみる。緑と赤が同時点灯する場合には 40mA 程度の電流が流れて PIC のポートあたりの許容電流定格を超えてしまうから、セグメント制御トランジスタは省略不可。となるとセグメント制御トランジスタで Vce(sat) ぶんの電圧降下が発生することになるが、LED 駆動に便利なトランジスタアレイの Vce(sat) は少し大きめのようで、ここにも工夫が必要そうだ。

 以上を総合的に勘案し、今回は PIC 電源電圧を 6V とする掟破り(?)の方法で PIC の H レベルの電圧を押し上げることで対応することにした。データシート上、16F687 の電源電圧は 5.5V までと規定されているので、あまりお勧めできる方法ではないが、PIC の電源絶対最大定格 (6.5V) と湿度センサ CHS-UGG の電源絶対最大定格 (7V) には収まっているのでこれでよしとする。またセグメント制御トランジスタには Vce 間での電圧低下を抑えるため、トランジスタアレイは使用せず、ディスクリートのトランジスタを使用する。

 輝度を左右する電流制限抵抗はオシロで実際に電圧を測りながら調整していく。その結果、緑 10Ωで約 23mA、赤 51Ωで約 15mA なら十分な輝度を確保しつつ PIC のポート許容最大電流 (25mA) に収められることが判った。

 さて、電源電圧が決まったところで、他の仕様も詰めていく。

 温度に関しては室内用なので、0℃からせいぜい 50℃まで計れれば十分。よって温度センサーは定番の LM-35DZ とする。湿度センサーは 2000円弱と多少値が張るが、相対湿度 5〜90% を ±5% でリニア出力する TDK の CHS-GSS を使用する。オペアンプのゲインは温度 11.73倍、湿度 5.86倍とする。これなら基準電圧 6V 時の A/D 変換値を温度なら 20 で、湿度なら 10 で割れば直読値が得られる。ただしオペアンプは H 側がフルスイングするものが必要となるため、今回は LMC662CN を使用。厳密に言うと LMC662CN よりもさらにフルスイングする LMV358 の方が適しているが、実用上はほとんど問題無い。

 7セグ LED 表示は今回も全セグメントを順次点灯していく「完全ダイナミック点灯」のため、電流制限抵抗も各セグメント毎に用意する必要はなく、アノードコモン側 1つで済む。消費電流は橙色点灯時でも最大 50mA 程度で済む。ただしプログラムをミスって LED を複数個同時点灯させたりすると PIC、電流制限抵抗、LED のどれがオシャカになっても不思議ではないので、プログラム改変時は要注意である ^^;

 三端子レギュレーターは、50mA 程度取れれば十分だが、6V 出力品はバラエティが無いため最大 500mA 出力の 78M06 を使用した。もちろん出力電圧可変可能な LM317 を 6V に調整して使用するのもアリ。12V 入力だと三端子レギュレーターがほんのり暖かくなるのでケーシング後の放熱には注意されたし。

 また今回は電源入力側にダイオードブリッジを入れておいた。これは整流用ではなく、電源アダプタのプラグ極性がどちらでも対応できるようにするため。三端子レギュレーターに通常品を使用したため、ダイオードブリッジでの電圧降下分も勘案して電源は 9V 以上、電流量は 50mA 程度が必要となる。試作機ではジャンク箱に転がっていた 12V/50mA の AC アダプタを使用した。


不快指数計算:

 不快指数は、T=温度(℃)、H=相対湿度(%) として

0.81T + 0.01H(0.99T - 14.3) + 46.3

で求まる。が、今回もアセンブラで実装する関係上、小数点やマイナス値が絡む計算は面倒なので、符号無し整数演算で対応できるよう下記のように変形する。

 (( 8100 + 99*H )*T + 463000 + 5000 - 1430*H ) / 10000

 +5000 は小数点以下1位を四捨五入するためのもの。要するに1万倍して整数演算とし、最後に引き算することで計算結果が常に正の値を取るようにしただけ ^^:。ただこの計算は 16bit に収まらないので、24ビット四則演算ライブラリを使用する必要がある。

 なお、理論上は極低温時に不快指数がマイナス値になることもあり得るが、今回は温度センサーが 0℃以上しか出力しないので不快指数の最小値(T=0, H=100 の時)は 32.5 で問題は生じない。


実装:

 今回は タカチの RG-105B (W=61, H=28, D=105) を使用した。このケースは裏面に電池交換用の蓋が付いているが、今回は3端子レギュレーターの放熱とセンサー引き出しのために蓋は付けず、開放して使用する。

 今回はケースの厚みに余裕がなく、実装後の高さを極力抑える必要がある。理想的には専用基板をおこして表面実装用 IC を使用すれば楽勝なのだが、何とかソケット付けの DIP で収まるよう工夫した。具体的には、通常なら LED は 3mm 程の厚みのスモークアクリル版を貼って保護するところを、今回は文具のクリアファイル(厚み 0.5mm 程度)を切り抜いて保護シートとした。

 それでも最終的には、オペアンプがややつっかえてしまって、わずかにケースがしまらなくなってしまった。結局ケースを強引に接着して密閉したが(爆)、オペアンプを基板直付けにしておけばよかったと反省。


今回の失敗:


 ブレッドボード上での開発中、センサーからの出力が不安定になる不具合が発生。原因究明に時間を取られたのだが、結局はブレッドボードへのオペアンプの挿し込みが悪くて接触不良を起こしていただけだった(核爆)。基本確認は重要ですね ^^;

 またセンサー類は当初ケース裏に収納して実装していたが、温度センサーが三端子レギュレータの発熱の影響を受けてしまい、結局写真のようにケーブルを引き出す形にせざるを得なくなってしまった。


注意点、改良案など:

 2色 7 セグ LED に NARG161 を使用すると、電源電圧は通常の 5V、セグメント制御トランジスタは配線容易なトランジスタアレイ、電流制限抵抗は緑 3.6Ω、赤 51Ω、で十分な輝度が確保できる。また高輝度の赤色単色 7 セグ LED ならセグメント制御トランジスタも省略し、電流制限抵抗 51Ωにしてかなり省部品で仕上げることができる(要プログラム修正)。製作例はこちら


プログラム:

改変自由だが商用利用厳禁

プログラム Ver 1.0 (2009/10/18)
3color-TH-Meter_v1.0.zip



 [電子工作のページへ]