PIC電子工作ブログ
PIC、Arduino、Seeeduino XIAO、ESP32などを使った電子工作、IoT、プログラム、DIYなどに関するブログです。
ひとつはWDT(ワッチドッグタイマ)による無限ループ監視です。I2Cをソフトで実現しているのと、TOFセンサからの応答が想定外だったりして無限ループする可能性があるので、その対策です。WDTはタイマのカウント溢れにより約18ms毎にリセットがかかるものです。無限ループしていてもリセットで初期状態(プログラムの先頭に飛ぶ)になります。プログラムが正常に動いているときは、カウンタが溢れる前にWDTをクリアするCLRWDT命令を発行することでリセットがかからないようにします。
18msは短いのでプリスケーラを使ってもう少し時間を空けても大丈夫なように調整します。今回、1:32のプリスケーラ設定で18ms x 32 = 576ms以内にWDTをクリアするようにしました。18msの精度はあまり高くないようなので余裕を見て早めにクリアするようにしています。
先週末にPICやTOFセンサはユニバーサル基板に実装しましたが、もう1セットあるのでそちらを使いブレッドボード上でデバッグ中。某ジャンカー界隈では「ジャンクは2個買え」という教えがあるようですが、「部品も2個買え」です。万が一壊れていたときなど、自分が悪いのか部品が悪いのかの切り分けにも必要です。こうして部品が溜まっていく。
プログラムの二つ目の見直しは、小型液晶画面への表示機能の削除です。TOFセンサのデバッグ時に距離を表示していたI2Cで繋ぐ小型液晶は不要なので回路からも外し、プログラムからも削除します。液晶に数字を表示するために組み込んでいたBCD変換(バイナリから2進化10進数変換)のコードを削除したり、表示するコードを削除。これにより変数レジスタもかなり削減されたので整理しました。また、無駄なコードも見直して少しすっきり。
2026年3月1日日曜日
TOFセンサによる近接スイッチのユニバーサル基板実装花粉症が酷いので外出もせず、昨日のToFセンサによる近接スイッチのLED照明への組み込みの続きです。と言っても昨日は何もしなかったのですが。LED照明のカバー内へ組み込むためにユニバーサル基板に載せてみました。
写真はトランスレス電源が正しく動いているかの確認をしているところです。左の白い2本のコードからAC100Vを供給しています。ツェナーダイオードが手元に3.3Vのものしかなかったので、出力先にシリコンダイオードを直列に入れて少し電圧をドロップさせています。それでもLED程度の負荷で3.2V弱でていました。ToFセンサの定格3Vを若干オーバしていますが、PICやToFセンサを繋げば若干下がることを期待。
トランスレス電源が上手く動いていることが確認できたので、他の部品も載せて基板内の配線まで完了です。基板の中央が空いているのは、ここにLED照明の電源コネクタがくるためです。黄色いコードが出力で、LED照明の電源部に接続します。
全景はこんな感じ。カバーにToFセンサの長円穴、その隣にΦ3mmのLED用の穴を開けました。LEDはパイロットランプとして、LED照明が点灯していないときに点灯させます。夜、真っ暗な中でスイッチの場所が分かるように。
昨日の写真の再掲ですが、上記の基板を収める場所がここのカバーです。 今日の作業はここまで。今週どこかでプログラムの改変を行うつもりです。昨日書いたWDTによる無限ループ監視と、プロトタイプで距離を表示していたLCD表示の削除です。 今週末には完成させて、キッチンに取り付けたい、と思っています。そのためにも花粉症が酷くならないことを願っています。Translate
このブログを検索
リンク
- PIC電子工作 - Website
- PIC電子工作 - youtube.com/@PIC
- DIYの記録 - Website