夜に時計のVFDが眩しくないように、明るさセンサーを追加しました。
部屋の明るさでVFDの明るさを変える
明るさセンサー
右にある部品が明るさセンサーです。
明るさセンサーにはHLPT550B3という物を使いました。樹脂の部分が暗い青い色をしているのが特徴です。
HLPT550B3は、人の目に近い色の感度特性になっています。一般的な、樹脂が透明な明るさセンサは、近赤外線に強い感度があり、赤から青い色になるに従って感度が低下してきます。このセンサは、樹脂に赤外線カットと、赤から黄色っぽい色の感度を弱める能力を持たせて、人の色の感度特性に近づけています。
使い方は、こんな感じです。このセンサはフォトトランジスタです。エミッタに抵抗を接続することで、光によって流れたコレクタ-エミッタ電流を電圧として測定します。
時計の基板には既にセンサの回路ができているので、基板にこのセンサをはんだ付けします。
HLP550B3のデータシートには正確に書かれていないのですが、この部品の長いリードがエミッタ、短いリードがコレクタです。一度間違えて取り付けてしまい、電圧が出ないので悩んでしまいました。
プログラム
AD変換するプログラムには、電圧で読み取れる「analogReadMilliVolts()」を使います。ESP32は製造時にADのキャリブレーションがされていて、普通のAnalogRead()で読み取るよりも「analogReadMilliVolts()」の方が正しい値を電圧値で読み取ることができます。
詳しくは、上記のページをご覧ください。
センサの値を取得して、VFDの全体の明るさを設定します。これを100msごとに行う関数を用意します。
上記の関数を、タスクを使って自動実行するようにしました。
明るさが変わるようになったよ
こちらが明るさMAXの状態です。
基板の背面のセンサに影を作って暗くすると、VFDが暗くなりました。センサは明るさに瞬時に応答しますが、プログラムでフィルターの効果を入れて1,2秒かけて部屋の明るさに追従するようにしました。
また、明るい状態から暗い状態へはゆっくりと追従し、暗い状態から明るい状態へは早く追従するようにしてみました。
これで部屋が暗くても、VFDが眩しくなくなりました。
コンデンサの鳴きを軽減
コンデンサが鳴く?
この時計、ほんの小さな音なのですが、ジーーーーーーーーーーって音が鳴っています。どこから鳴っているのか調べてみると、VFDの高電圧を生成しているDCDCコンバータ回路の出力コンデンサでした。
この時計は、なるべく寿命が長くなるようにコンデンサにセラミックコンデンサを使っています。VFDをダイナミック点灯する際の電流変化によって、コンデンサの「鳴き」という現象が発生しています。
セラミックコンデンサは電極で誘電体をサンドイッチしている構造をしています。これは圧電スピーカーと同じ構造です。セラミックコンデンサも圧電スピーカーのように、コンデンサへの電気の充放電によって、誘電体の形状が膨張・収縮を繰り返し基板を揺らします。充放電の周波数が人の聞こえる周波数である場合、振動が音となって聞こえてしまいます。
小さな音なのですが少しでも静かにしたいので、電解コンデンサを並列に接続して、セラミックコンデンサの充放電を緩和し、音を軽減しようと思います。
矢印のセラミックコンデンサに電解コンデンサを並列接続します。この他のコンデンサでも音は出ているのですが、矢印のコンデンサが主な原因のようでした。
電解コンデンサを追加
セラミックコンデンサに電解コンデンサを取り付けました。電解コンデンサには寿命が7000時間の比較的長寿命の物を使いました。一般的な電解コンデンサが1000hなので7倍寿命が長いです。この寿命は105度の状態での値です。コンデンサの寿命は大まかに10度低下すると2倍に伸びます。この基板の置かれる気温を平均35度とすると 7000時間×2×2×2×2×2×2×2 = 約90万時間 = 約9年。いい感じじゃないでしょうか。
このコンデンサの追加によって、かなり音が軽減しました。ケースに入れれば、おそらく音は聞こえなくなるでしょう。
リブート機能も追加
マイコンは長時間動いていると、動作が不安定になります。特にArduinoの場合は約50日でタイマーが最大値を超えて0に戻ります。これにより、使っているライブラリや作ったタイマーを利用したプログラムが正しく動作しなくなるかもしれません。
そこで、ある時間になったらこっそりと再起動するようにしました。
こっそり再起動するので、時間は深夜の3:30:30。表示がふわっと暗くなって消えて再起動し、ふわっと光り出します。ほんの1秒間で完了します。じっと見ていないと気づかないくらいです。
これで、1日ごとにマイコンが再起動して、長期にわたって正常に動作することでしょう。
時計の機能実装が完了しました
時計としての基本機能、WiFiによるNTPサーバによる時刻同期機能などなど色々実装し、予定していた全ての機能の実装が完了しました。
さて次回は、埃が被らないようにこのVFD時計を入れるケースを作りたいと思います。
これまでの歩みは以下の通りです。
コメント