(電子工作)
 
 
 7セグメントLED温度計 (2006年 5月)

 
 
釧路は涼しいところ…というよりも、春秋は寒い日が多い。オートバイでのツーリング時は、じわじわと寒くなってきて、しばらくするとブルブルと震えるほど、体が冷えきってしまうことがある。
現在の外気温を知ることにより、「着こむタイミングを図ろう」と作ってみた。

制御は無し。スイッチ類も無し。温度を表示するだけ。

温度センサーは前回と同様、DS18S20を使用。
今回の電源はオートバイから取り出す。ミニ電池ではないから、省電力は考えなくても大丈夫。それで、見やすい(と思われる)7セグメントLEDを使うことにした。
基本回路とPICのソフトは、かなりの部分を流用できるので、楽勝〜!すぐ出来る。っと思ったのだが、問題点が続出…。 作り直すことにした。

 
   
JPEG 300x200 17.4KB

 基本仕様

 1.温度センサーはDS18S20。

 2.表示は3桁の7セグメントLED。

 3.ワンチップマイコンはPIC16F819。

 4.防水は高圧洗車ガンOK。

 5.バッテリー電圧をおまけ表示。
 
    この写真は、テスト仮設中の様子。
室内テスト時や薄暗いときは、とてもはっきりきれいに見えるが、直射日光が当たると表示が読めないことが判った。その対策として、ヒサシのようなカバーを付けてみたのと同時に、取付角度を変えてみたが、…あまり変わらなかった。

スピードメーターとタコメーターの液晶は、直射日光が当たってもちゃんと見える。
セグメントLEDが直射日光に弱かったとは気が付かなかった。
スモーク透明板を貼るとよくなりそう。

[LEDが日中見にくい問題について情報をいただいた。]

LEDのカバーに赤いアクリル板を使うと背景が黒くなり、光っている所は赤で透過するので日中の視認性がよくなりますよ(LEDと違う色やスモークだと発光部も減光してしまいます)。

なるほど!それは気付きませんでした。しかし現在、スモーク透明板で作ってしまいましたので、機会があれば試してみたいと思っています。ありがとうござました。

 
 
DS18S20デジタル温度センサーの入手

 
    インターネットのGoogleで検索してみたところ、x68k.netの個人売買コーナー(オンラインショップのくるくるバビンチョップ)で、500円/個を見つけた。早速注文したところ、すぐに品物が届いた。郵便局のEXPACK(エクスパック)500で送ってもらったので、送料は500円で済んだ。

[温度センサーの仕様]

温度範囲:-55゚C〜+125゚C
表示ステップ:0.5゚C(ただしその中間を求めることが可能。)
精度:±0.5゚C(ただし-10〜85゚Cの範囲内。それ意外は±2゚C。)
供給電圧:3.0〜5.5V
最大電流:1.5mA(通常1mA)

 
 
7セグメントLED

 
    秋月電子通商から、3桁のダイナミック点灯式を購入。
大きさは約25mmx19mm。1個200円。

ダイナミック点灯式とは、全桁同時点灯ではなく、1桁ずつ高速に切り替えて表示することにより、ピン数を少なくすることができるもの。それにより、18ピンPICで表示できるし、コンパクトに組み込むことができそう。

 
   
JPEG 200x150 8.14KB


JPEG 200x150 10.4KB


JPEG 200x150 9.11KB

 
    この写真は、ケースに収める前の、動作チェックの様子。基板は使用せず、空中配線で7セグメントLEDの裏側に組み立てた。

 
 
表示

 
    今回は表示ステップを0.1゚C間隔にしてみる。

表示範囲は、84.7〜-9.8の範囲とする。
表示例としては「15.2」、「07.3」、「-2.8」のようになる。その範囲だと表示ソフトがあまり難しくならなくて済むはず。
85゚Cを超えた場合は「HHH」表示とする。
-9.8゚Cを超えた場合は「LLL」表示とする。

上限を84.7゚Cという、半端な数字にしているのには訳がある。
温度センサーDS18S20の立ち上げ直後の初期状態では「85」が入っていて、通常はそれが表示されることはないが、短絡エラー テスト直後に85が表示されたことがあった。一瞬、とんでもない間違った値が表示されたと勘違いしたので、もし、85が入ったときは、「---」表示にすることにした。

 
 
PICを載せる前の電子部品配置状態

 
   
JPEG 300x200 17.2KB


JPEG 300x200 15.8KB

 
    18ピンソケット中央の「つなぎ部材」は切り取って、そこに、ポリスイッチや3端子レギュレーター、10μFチップコンデンサーなどを詰め込んだ。よく考えて、順序よくハンダ付けしないと、うまく組めない。


GIF 600x450 14.2KB

 
 
[3端子レギュレーター(5V)]

 
    秋月電子通商から購入の、XC6202P502TB。1個80円。
大きさはTO-92。最大動作電圧は20V、最大出力電流は150mA。

今回の使用電圧は12〜15V程度で、使用電流は50mA程度だから十分使えると思う。
また、オートバイ用途に限らず、適当なACアダプターや006Pの9V電池などでも使用できる。
電流値を実測してみたところ、電圧にかかわらず、25〜60mAくらいだった。

 
 
[チップセラミックコンデンサー 10μF]

 
    小さいのに容量がある。秋月電子通商で10個入り200円。
あっ、しまった。今気付いた。入力側にもこれを使ってしまった。耐圧は16Vなので、ちょっと心配…。
 ↓
もっと小さいのに25V10μFが秋月電子通商で取り扱われたので取り替えた。
また、より小さい10V10μFも秋月電子通商で取り扱われたので、その後製作したものの、5V側に付けた。
しかしこれがまずかった。16V10μFとは特性が異なるようで、電源ON後の起動プログラム途中で止まってしまう。
7セグ表示だけのテストでは、0.1μFの普通のパスコンを付加すると直ったのだが、それに温度センサーを接続すると、温度表示前で止まってしまう。16V10μFに取り替えると直った。これがレギュレーター(減圧)発振というものなのか。解決するまでは何が悪いのかすぐに判らず悩んだ。

 
 
[PICのピンと7セグメントLEDのピン接続配置は番号順ではない]

 
    通常はPICのRB0、RB1、RB2…と7セグメントLEDのa、b、c…を順に接続するのかもしれないが、ハード優先にして、一番近いピン同士で接続したので、ばらばらである。それに合わせてソフトで対応する。

 
 
[7セグメントLEDの抵抗値]

 
    ダイナミック点灯で3桁表示だから、通常の3倍の電流を流すようにする必要があると思っていたのだが、試してみるとそーでもなかった。
切替なしの1セグメント連続点灯テストでは、5V240Ωで13.9mA、330Ωで10.2mA、470Ωで7.3mAだった。今度はダイナミック点灯させてみたが、330Ω以下の抵抗値であれば、十分な明度で、あまり大差ないように思えたので、330Ωにした。
 ↓
その後、製作したものは、240Ωにした。直射日光が当たった場合、少しでも明るい方が見えやすくなるようにと思ったから。

 
 
[チップFET/2SK1772]

 
    PIC16F819の1ピン最大定格電流は25mAである。
7セグメントLEDの点灯状態によっては、各桁のカソードコモンに集中した電流が、25mAを超えてしまう。
すなわち、PICのピンに電流を直接吸い込ませると壊れるかもしれないので、FETを介することにした。
秋月電子通商で15個入り300円。絶対最大定格で30V1Aだから、十分使えるはず。

 
 
[水色のダイオードと抵抗]

 
    回路図の中で、水色の部分が「軸丸 哲也」さんからアドバイスをいただいて追加した部品。トラ技2003年1月号の温度コントローラーの回路図を見直すと、ダイオードは1S2076A、抵抗は10Ωが入っている。
ダイオードは 、おまじないのようなものかな?設置スペースがきびしいが、1S1588が手持ちであったので追加した。
抵抗は、センサー部の短絡(ショート)があった場合を考えると、IC保護に入れておくのがよいかな。短絡時の電流を少なく抑えるためには、抵抗値が大きいほうがよいと思うが、テストしてみたところ、1kΩ以上だとエラーが頻発して不安定になった。その半分の470Ωを入れることにした。抵抗の種類は、一般的な1/8Wカーボン皮膜抵抗を使用。

 
 
[バッテリー電圧表示]

 
    エンジン停止状態のバッテリー電圧をチェックすることにより、バッテリーの経年劣化状態を知ることができるかな?と思って付加した。
ただしこれは、おまけ機能ということで、正確なものではない。
A/D基準電圧は、手っ取り早いPIC元電圧を使用しているから、3端子レギュレーターの電圧変動により精度が変わってしまう。

バッテリー電圧は5.12分の1に分圧した。これはA/D変換のデジタル値(10進数)を、そのまま使うため。たとえばA/D値が127だとすると、12.7Vになる。ソフトの処理が簡単に済む。

分圧抵抗値はハンパな値 になっているが、50ppm(温度影響が少ない)手持ちのもので、1:4.12に最も近くなるものを組み合わせたもの。また、できるだけ小さくまとめたかったので、ボリューム抵抗は使わないようにした。
 ↓
その後、同じものを数個作ったのだが、手持ちの50ppm抵抗が少なくなり、同じ50ppmシリーズの、39.2Ωx1本と19.1Ωx2本並列に変更した。
抵抗の種類は、1/8Wの金属皮膜抵抗。

(現在は、1週間ぶりくらいにキーをオンすると、12.5Vくらいの電圧になっている。)

 
 
[A/D(アナログ→デジタル変換)補足]

 
    テストしていて判ったのだが、ポリスイッチで少し電圧降下がある。
8.0V〜14.0Vの範囲で実測したところ、その範囲内電圧で約0.1V下がる。
それではソフトで+0.1Vの補正が必要だと思ったのだが、補正なしで、なぜかまーまー正確だった。
しかし、これは室内ほぼ一定温度での測定なので、温度変化により、精度はもっと悪くなると思わる。

 
 
[電子部品代算出]

 
    ・温度センサーDS18S20…500円 (x68k.net)
・PIC16F819…300円 (秋月電子通商)
・丸ピンICソケット18ピン…50円 (秋月電子通商)
・ポリスイッチ…50円 (秋月電子通商)
・抵抗…全部で50円くらいかな。
・3端子レギュレーター XC6202P502TB…2個入りで100円なので、1個だと50円 (秋月電子通商)
・チップコンデンサー10μF/16V…2個で20円くらい (秋月電子通商)
・青LED…50円くらい (秋月電子通商)
・7セグメントLED C-533SR…200円 (秋月電子通商)
・FET 2SK1772…15個入りで200円なので、3個だと40円 (秋月電子通商)

合計 約1,300円

 
 
ソフト

 
    概略フロー図

GIF 300x450 4.71KB


電源ON時は約1秒間、全LEDを点灯する。
LEDは球切れしないはずだが、念のためのチェックモードとしている。7セグメントLEDは「8.8.8.」になる。

DS18S20の通信タイミングは、今までと同様にPIC内蔵のRCオシレーター4MHzを利用している。

DS18S20の計測と読み取り処理は短時間であり、ほとんどは待ち時間である。前回のディープな温度計では、LCDにデーターを送信した後、スリープに入れて省電力にしていた。
今回は、その待ち時間に、7セグメントLEDのダイナミック点灯処理をする。

1秒の時間を計るのは、16ビットのタイマー1を250kHzで使用すると、手っ取り早い(オーバーフロー1回で済む。)ので、内蔵RCオシレーターの周波数を切替て使うことにした。

周波数とオーバーフロー時間は次のようになる。
31.25kHz 125kHz 250kHz 500kHz
8.388608秒 2.097152秒 1.048576秒 0.524288秒

62.5kHzがないがPICの仕様である。

なお、RCオシレーター周波数の微調整機能を使用し、腕時計のストップウォッチだが、1秒補正してみた。RCオシレーターなので正確安定度は低いかもしれないが、ちょっとスッキリした気持ちになれた。
 
 
[温度センサー制御とLEDダイナミック点灯制御]

 
    ダイナミック点灯でチラツキはない。
しかし、DS18S20のリセット信号の送受信とデーター通信時は、7セグメントLEDをOFF状態にしている。それはほんの短時間なのだが、そのときチラツキに見える。

LCDの時は、1度データーを送れば保持されているが、今回のLEDダイナミック点灯は、1つのPICで制御しているから、 温度センサー制御とLEDダイナミック点灯制御を同時に動作させることは、かなり難しいプログラムになりそうだ。

そこで、ごまかし技を考えた。
7セグメントLEDのOFFと同時に、普通のLEDを点灯させる。ピカッと一瞬だけ光るが、それに目を奪われて、7セグメントLEDが一瞬消えたことに気が付かない。
ただし、一瞬だけ光るLEDは明るすぎてはいけない。明るすぎると、今度はそのLEDの点滅が気になる。

 
 
[センサーの断線と短絡]

 
    前回のディープな温度計のソフトは、センサーが断線した場合などの、エラー処理に問題があることが分かっていた。今回はエラー処理を見直し、4種類に分類表示するようにした。
断線、短絡、リセットエラー、CRCエラーを、それぞれ、Er1、Er2、Er3、Er4と表示するようにした。

■PICプログラム DS819_7.src 19.6 KB  ←ダウンロード

 
 
ケース(機械工作編)

 
   
JPEG 200x150 8.18KB


JPEG 200x150 7.62KB


JPEG 200x150 9.73KB

 
    ケースはアルミから削り出した。右の写真は、とりあえず両面テープで仮止めしてのテスト状態。
左下に青LED、右下は温度センサーをバランス良く配置したつもり。温度センサー取付 部は、風通しをよくするため、横穴を開けてある。上面はLEDに合わせて、目の細かい金網を半球に整形して取付た。

しかし、大失敗…。表示温度が信頼できない。

3桁の7セグメントLEDが発熱する。
手で触って少し温かい程度の発熱だが、その熱が温度センサーに伝わってしまう。オートバイで走れば風通しがよくなり、無視できると思ったのだが、思ったより高い温度表示になり信頼できない。正確な温度計との比較はしていないが、せっかく信頼できる温度センサーなので、このまま使用するのはやめて、少し離して設置することにした。 せっかく一体型でコンパクトにまとめようと思ったので残念だが、センサー部をヘッドライトの下に仮設してみたところ、とても良好になった。

失敗その1…温度センサーを発熱体の近くに設置した。(7セグメントLEDの発熱)
失敗その2…直射日光が当たると7セグメントLEDが読めない。(見えない。)

 
 
ケースその2

 
    デザインを変更して作り直し。
 
   
JPEG 200x150 6.40KB

 
JPEG 200x150 6.70KB

   
   
JPEG 300x150 10.9KB


 今度はディープな温度計のように、曲げ加工の
 骨格でやってみる。

 材料は2mm厚のフラットバーだが、曲げやすいよう
 に、ディープな温度計同様の溝加工をした。
 溝を深くすると、外アールを小さくすることができる。
 
   
JPEG 200x200 10.7KB


 捨て駒を作って、それに巻き付けるように曲げた。

 合わせ目にはセメダインスーパーXを塗布して、φ2.0mmのアルミピン
 を作成して止めてある。

 単純な骨格だが、なかなか手間だった。
 削り出しの方が早かったかもしれない。

 実は適当なフラットバーの手持ち在庫が無く、ホームセンターに買いに
 行ったのだが、2mmtは狭巾のものしか売っていなく、手持ち在庫のアン
 グル材をカットして、フラットバーにしたのだった。
 
   
JPEG 200x150 9.16KB


 4角にM1.4のタップ加工をして、上下のフタをしたところ。

 別々に作るとピッタリ合わないので、フタを少し大きめに作っておいて、
 組み立てた状態で、いっしょに外形切削する。

 緑色のものは、荷造りテープで、加工中のアクリル板キズ防止用。
 
   
JPEG 300x200 10.6KB


 青LEDのR三角部分は、割り出し台を利用して
 削り出した。

 □15mmの材料を2つに薪割りカットして、2等辺
 三角形を作る。
 
   
JPEG 150x150 7.55KB


 LED配線用の穴も、あらかじめ加工しておく。

 V台はバイスに、くわえる用に作成したもの。
 
   
JPEG 200x150 7.79KB


 底板

 ケース全体の厚さを、少しでも薄く見えるように、昔流行った腕時計の
 多面カットガラス風のデザインにするため、4mmtを使用した。

 内側のPICチップ部の凹と平面を先に加工する。
 外側を先に加工すると、バイスするのがむずかしくなるので。
 
   
JPEG 200x150 8.47KB


 底の角度削り状況

 青LEDのR三角パーツは、M2のネジで取付した。
 防滴仕様として、ネジゆるみ止め剤を塗布してある。

 底板といっしょに切削した。
 
   
JPEG 200x150 5.27KB


 ブラケット

 単純な「コ」の字形状にした。
 止めネジはM5のトラスネジだが、Oリングを使用して、浸水防止をした。
 
 
室内設置とアウトドア使用の対応ブラケット

 
   
JPEG 200x150 6.58KB


 当初はオートバイ専用で進めていたのだが、ついでに室内設置用も
 いっしょに作ることにした。
 また、それを屋外でも使用できるようにもした。

 背面の凸凹金具。
 これはアウトドア使用時用として、9Vの006P電池を取付できるようにした
 もの。
 
   
JPEG 200x150 6.44KB


 9Vの006P電池を付けた状態。

 この方法は、サトー電気の9V006PLEDライトがヒントになった。

 屋外でちょっと使いたいときに便利だと思う。
 
   
JPEG 200x150 6.55KB


 金具はアルミなので、絶縁するための部品を、ジュラコンで旋削した。
 
   
JPEG 200x133 7.40KB


 ブラケットの下地加工は、ほとんどがミーリング加工。
 折り曲げる前に加工しておいた。
 
   
JPEG 300x150 11.3KB


 M5トラスネジ取付部穴の面取については、
 ジグを製作して旋削した。

 折り曲げ加工後。
 
   
JPEG 200x100 4.98KB


 ドッキングステーション

  室内とアウトドア兼用バージョンの場合、通常は室内の壁などに
 常設することになると思うが、その場合はACアダプターを使用する
 ことにする。
 
   
JPEG 200x100 4.41KB


 裏側。
 006PソケットとACアダプターのソケットを、アルミ金具で固定しただけの
 もの。
 
   
JPEG 200x150 6.41KB


 合体した状態。
 
 
センサー部

 
   
JPEG 200x150 7.12KB


 アルミで金具を製作し、エポキシ接着材で固めた。
 反応が悪くならないように、センサー本体は、3mmくらい出してある。

 この金具は、ハンダ付け部の防水と、結束バンドで位置固定するため
 のもの。

 オートバイへの取付は、ヘッドライト後のスロットルワイヤーに共締め
 取付した。直射日光が当たらなく、風通しのよい場所。

 なお、線の長さは、約50cm。
 
 
配線止めバンド

 
   
JPEG 200x150 8.03KB


 オートバイ取付用に、配線止めバンドを製作した。
 0.5mmのアルミ板に熱収縮チューブを被せて、両面テープで貼付。
 
 
まとめと反省

 
   
JPEG 300x200 19.8KB


 [使用結果]

 肌寒い時は上半身を温かい服装にするのはもちろ
 んだが、ももひき(全足用の肌着)+Gパンで1時間耐
 えられるのは、15゚Cくらいまでで、それより下の気温
 になると、風を通さないオーバーズボン必須というこ
 とがわかった。

 0.1゚Cステップ表示については、なかなか良好。
 ソフトの変更だけなのだが、かなり高精度になったよ
 うな気がする。
 (マイナス温度表示で少し手こずったが。)
 
    スモーク透明板の結果は、なんとかぎりぎりOKかなと言ったところ。日陰ではバッチリだが、直射日光下では、かろうじて読める程度。左手で日陰を作るとよい。

今回のデジタル温度計はオートバイ用として製作したものだが、汎用として、室温やパソコン内部の温度表示にも使えるようになった。また、006Pの電池を接続すると、フイッシング時の水温測定やアウトドア用途にも使える。電池容量が仮に200mAhとした場合、連続でも6時間以上は持つはず。

 
 
 
    2008.01.05
LEDのダイナミック点灯について、雨宿りの軒下掲示板にとても参考になる投稿があった。僕が質問したのではないが、過去記事に埋もれてしまってはもったいないと思い、ここに転載させていただくことにした。

> バッテリィの電流容量の関係でLEDライトを点滅発光(10ms間隔でon/off)
> この場合、暗く感じるんでしょうか それとも、暗くは感じない?

デジタル降魔録のぺに≠ニ申します。

ダイナミック点灯(時分割でLEDを点灯させる方法)ではLEDの点灯時間が1mS〜1.5mS以下、消灯時間が10mSになると、人間にはチラつきを感じるようです。

ワタシが以前PICを使って作ったモノですが、7セグメント表示器を8個と単体のLEDを2個(合計66個のLED)をダイナミック点灯で表示させたときは、点灯時1mS、消灯時8mSでまぁまぁ明るかったです。
それ以上消灯時間を増やすとはチラチラした感じが見えるようになってきました。
点灯時間が1mS以上あれば結構明るく感じますが、消灯時間が10mSになると少しチラつくと思います。
この場合のチラつきというのは、点滅としているという感じではなく、超高速で瞬きをしているので、見つめていると眼が変な気分になるという・・・?感じです。(文章力がなくてすみません)

ご参考になれば幸いです。

 
                             
 
 
  バイクでフローターフィッシングとキャンプ > バイク(オートバイ)DJEBEL250XC > 気温計

 
  << トップページへ

   
inserted by FC2 system