先週末はイベントがあって、三連休+1日年次休暇の四連休にしましたが工作の進捗はなく、平日に 見守りセンサのプログラムを修正 したりしていました。一応書けたけどテストはまだ。
そんな中、シエラレオネから国際郵便が届きました。聞いたことあるけど何処だっけ?
https://pic-garage.blogspot.com/
先週末はイベントがあって、三連休+1日年次休暇の四連休にしましたが工作の進捗はなく、平日に 見守りセンサのプログラムを修正 したりしていました。一応書けたけどテストはまだ。
そんな中、シエラレオネから国際郵便が届きました。聞いたことあるけど何処だっけ?
前回書いたESP32-C3-ROOMSにプログラムが書き込めなかった件 に対応するためbootモードを切り替えるピンをGPIO0からGPIO9に変更しました。しかし書き込めない。
ESP32-C3 Technical Reference Manual を参照したらJoint Download Boot mode(USB-Serial-JTAG)のときは、GPIO9をLowにして、かつGPIO8をHighにする必要があった。最初から確認しておけよ>自分
日に日に暖かくなってきてそろそろ梅の花が終わり、まもなく桜の季節です。出かけたりするにはよい気候になりました。しかし、花粉症が酷くてこのところの週末は家に引き籠っています。
昨日まで作っていた LED照明の非接触スイッチ は、電源モジュールが届くまで保留です。今日は昨年作った LINEに通知する見守りセンサのプロトタイプ をユニバーサル基板に載せて、ケース加工まで行いました。
ESP32はプロトタイプから変更して、ピン数の少ない小型のESP32-C3-WROOM-02です。初めて使います。
トラブルの発見は、SSRのコントロール用LEDと逆向きにパイロット用白色LEDを繋いでいたのですが、この白色LEDがチラチラ点滅していたことで気付いた。実際には消えてないのですが、電位がパルス状に0.1V位上下しているので点滅のように見えます。
オシロで電源電位を見てみると、TOFセンサがアクティブになると電位が下がって、かつ波打っていました。原因はトランスレス電源の電源容量が足りないとだと推測。TOFセンサはセンス時にレーザ光を発するために断続的に比較的大きな電流が流れます。このため電源電圧が不安定だったようです。
白色LEDの光度だけの問題で、SSRの動作には影響ないようでしたが、念のため電源部の電解コンデンサを200μFから470μF×3個の1,410μFに増量しました。場所がなくてダイオードブリッジとPICの上に寝かせています。それでも白色LEDのチラチラは治まらない。3.1V~3.2V位で波打っていたので白色LEDの順方向電圧に近くて目立ったのだと思う。
最終的に白色LEDは別系統で100Vに繋ぐことにしました。100KΩ抵抗を直列に入れて、LEDとは逆向きのダイオードも入れてます。常時点灯してしまうのと50Hzでチラチラしますが妥協です。
今回、LED照明の端っこのカバーに内蔵するのでスペース的に余裕がなくてトランスレス電源にしましたが、ちゃんとAC100VからDC 3Vを出力する電源モジュールを使ったほうがよいです。
と、ここまで書いてアリエクで薄型の小型電源モジュールを見つけました。ギリギリ収まりそうなので注文。送料が安くて国際郵便だと思うので到着までしばらくかかりそう。また、これを使うとヒューズが収まりそうにないので、ヒューズは外付けします。
例年になく花粉症が酷くなって、目がしょぼしょぼしています。鼻も詰まって十分な睡眠が取れてない。今日は会議で眠気を抑えるのが大変でした。以前も書いたけど、日本中で生産性が落ちて経済損失になっているのではないかと思う。
夕食後しょぼしょぼ目の状態でパソコンを睨んで、TOFセンサを使った近接スイッチ(非接触スイッチ)のプログラムを見直しました。
ひとつは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進数変換)のコードを削除したり、表示するコードを削除。これにより変数レジスタもかなり削減されたので整理しました。また、無駄なコードも見直して少しすっきり。
これで週末にはLED照明に組み込める目途は付きました。まだ修正するかも知れないので、ソースの公開はもう少ししてから。
花粉症が酷いので外出もせず、昨日のToFセンサによる近接スイッチのLED照明への組み込みの続きです。と言っても昨日は何もしなかったのですが。LED照明のカバー内へ組み込むためにユニバーサル基板に載せてみました。
写真はトランスレス電源が正しく動いているかの確認をしているところです。左の白い2本のコードからAC100Vを供給しています。ツェナーダイオードが手元に3.3Vのものしかなかったので、出力先にシリコンダイオードを直列に入れて少し電圧をドロップさせています。それでもLED程度の負荷で3.2V弱でていました。ToFセンサの定格3Vを若干オーバしていますが、PICやToFセンサを繋げば若干下がることを期待。
例年のことですが花粉症の症状が酷くなってきました。今週クリニックで薬を処方してもらい、点眼薬も始めたのですが目が痒くて辛い。鼻水のため鼻のかみすぎで鼻の下が赤くなってきてしまった。
そんな中、TOFセンサとPICで作った近接スイッチ を照明機器に組み込む検討を始めました。組み込む前にプログラムを一部改善して、WDT(ワッチドッグタイマ)で無限ループを避けるようにしたいと思っています。I2Cをソフトで実現しているのと、TOFセンサからの応答待ちなど、何らかのタイミングで無限ループしないとも限りません。WDTは時々タイマをリセットしないと、強制的にリセットがかかる(レジスタなどはそのままですが)仕掛けです。デッドマンスイッチのようなもの。
その改善前にLED照明機器に今回のスイッチが組み込めるか検討しています。LED照明はアマゾンで購入したそれほど高価ではないもの。2本購入して1本は納戸に取り付けました。 これをキッチンのシンクの上に取り付けようと考えています。現在はプルスイッチタイプの蛍光灯がついています。
ケーブルの途中に中間スイッチがあって、点灯させると結構明るい。明るすぎてゴーストがでています。