GWにがんばって作った、愛車カプチーノ用のフラッシャーリレー。
車に乗る用事が無いので実車にて確認できてませんでしたが、先日ちょっと走ってみると、不具合発生…。
最初は好調で、tiny13くんが起きて、寝て、起きて、寝て、とけなげに働いてると思うと「かわいいな~w」などと思いながら走ってたのですが、そのうち「点きっ放し」になってしまった。
ウインカーSWを切れば物理的にランプへの通電が切れるので当然消灯しますが、リレーがONしっ放しになってる様です。予想通りですが、エンジン・ACCを一回切って掛け直すと、動作不良も復活します。
30分ぐらいの走行で、点きっ放し2回は発生しました。これは…、ノイズによるデバイス誤動作ではないかしら…?
またもや先輩から「デバイス側の不具合なのか回路側の不具合なのか切り分けすべき。動作不具合の時にPB0とPB1の電圧を測定して」との助言。
どうしようかと考えましたが、結局せま~~~い車内にノートパソコン持ち込んで、USBオシロで測定しました。
基板から1mずつ4本線を出して準備。この状態で、多分よりノイズを拾うようになったのだろう、近くの公園までちょっと車動かすだけで、不具合多発。さらにオシロのプローブを繋ぐと、ほとんどまともに動かないというほど不具合さらに多発。やっぱりノイズによるデバイス誤動作の気がする…。
まず通常動作時:
![](https://blogimg.goo.ne.jp/user_image/50/b9/f5895037615bf35ae2b7912c0d0d7169.png)
電源電圧:3.3Vの変動は、時間軸拡大してみてもそんなに大きくない。200kΩでプルアップしてるPB0のHレベルは、いまいちデコボコしてる。点滅周期は約1.5Hzぐらいに調整してある。
次に、「点きっ放し」が始まった所の結果:
![](https://blogimg.goo.ne.jp/user_image/71/f3/fff43f5973ba4fe81615f1c221d37afa.png)
やっぱりリレーON指示のPB1がHのままで、回路側でFETが勝手にONしっ放しになってる訳ではなく、tinyからリレーON指令が出っ放しになってると思われる。(リレーがONの間は、PB0はHのままになって正常。)
ところが、誤動作は「点きっ放し」だけでなく、点かないとか、一瞬点くとか様々発生。
その中で、「点灯」だけ短くなって周期が早くなってしまう誤動作が発生!
その時の電圧観測結果:
![](https://blogimg.goo.ne.jp/user_image/74/55/eee9b9a2b73b0360613c34b2a106e1d7.png)
点灯と消灯の時間はどちらも、最初にADCから取った値=voltを使って、「(定数+volt/2)×2ms」で、SW変化の待ち時間を含めて同じになるようにプログラムしてる。
こんな点滅になるためには…、点灯の方だけ上式の「定数+」が抜けた状態じゃないとこの点灯時間にならない…。
そんな事が起きるか分からないけど、tiny内で「命令の抜け(飛ばし)」が起きてるとしか思えないなぁ…。(たとえば、ノイズでクロックが1個余分にカウントされて、命令終了前にプログラムカウンタが1個進んでしまうとか??)
という事で、何かノイズ対策を検討する。先輩からはWDTを勧められたけど、それはあくまでも「誤動作した時のリカバリー」策。「誤動作しにくくなる対策」の方がいい気がするし、ICSP使用になってないので、プログラム書き換えるのめんどくさくってww。
外部と繋がってて一番怪しいのは、PB0への入力信号。電圧が違うのでダイオード(BAV99)でブロックしてるつもりだけど、微小高電圧のノイズがブロックしきれてないのかも。
手持ちの家電ジャンクを覗いてみると、仕様不明だがDIP4のフォトカプラが見つかった。これを使って信号ラインを切り離そう。
回路検討、Markingからフォトカプラの型番がぴったり見つからないけど、シャープのPC817というフォトカプラが名前が似てる…。これを参考に、LED側はVf=1.2V、If=6mA程度で抵抗設定して、ブレッドボードで動作確認。各抵抗等を下記で設定。
![](https://blogimg.goo.ne.jp/user_image/43/99/95108331d2ffc6d7389f4d7db2a1df86.png)
PB0のプルアップは200k→50kに変更。(これだとtinyの内部プルアップを使うのと変わらないけど、プログラム書き換えが面倒なので、外部プルアップのままにするw。)
スペース厳しいけど、これでフォトカプラ部の基板を作って今まで作った基板に追加する。
DIP4なので、最小で万能基板の2×4穴は要るけど、さすがにそれじゃ厳しい。3×4穴使う。表はフォトカプラのみ。
![](https://blogimg.goo.ne.jp/user_image/5b/d0/37b4df33f41c674b0d8d074096aacd2f.jpg)
裏はSMD部品を無理やり搭載し、出入りの線を4本接続。
![](https://blogimg.goo.ne.jp/user_image/30/2e/124eaf493fb4544056754f6c9b1bb946.jpg)
なんとかこれが「最小」基板かな?これを何とかケーシングに収まるように搭載すると、こんな感じに完成。
![](https://blogimg.goo.ne.jp/user_image/01/1d/bf63831c03b5e4d57466015d19d35ecf.jpg)
フォトカプラは、両面テープでtinyに張り付けて何となく固定。まあ、何とか配線切れずにもつかな~?
これで机上で試運転→一発OK!
車に搭載して、ちょこっとその辺を5分ぐらい走ってみたところ、まあ問題なさそう。「良くなった」かどうかは、もうちょっと長時間走ってみないと分からないけど、少なくとも悪くはなってなさそう。
そもそも車あまり動かさず、おもちゃ病院と試合(アイスホッケーと野球)に行く時ぐらいしか車使わないので、コロナでどれも中止中で全然車を使わないw。まあいずれ確認して、これでもまだ誤動作発生する様なら、次はWDTによるリセットを考えてみますw。
車に乗る用事が無いので実車にて確認できてませんでしたが、先日ちょっと走ってみると、不具合発生…。
最初は好調で、tiny13くんが起きて、寝て、起きて、寝て、とけなげに働いてると思うと「かわいいな~w」などと思いながら走ってたのですが、そのうち「点きっ放し」になってしまった。
ウインカーSWを切れば物理的にランプへの通電が切れるので当然消灯しますが、リレーがONしっ放しになってる様です。予想通りですが、エンジン・ACCを一回切って掛け直すと、動作不良も復活します。
30分ぐらいの走行で、点きっ放し2回は発生しました。これは…、ノイズによるデバイス誤動作ではないかしら…?
またもや先輩から「デバイス側の不具合なのか回路側の不具合なのか切り分けすべき。動作不具合の時にPB0とPB1の電圧を測定して」との助言。
どうしようかと考えましたが、結局せま~~~い車内にノートパソコン持ち込んで、USBオシロで測定しました。
基板から1mずつ4本線を出して準備。この状態で、多分よりノイズを拾うようになったのだろう、近くの公園までちょっと車動かすだけで、不具合多発。さらにオシロのプローブを繋ぐと、ほとんどまともに動かないというほど不具合さらに多発。やっぱりノイズによるデバイス誤動作の気がする…。
まず通常動作時:
![](https://blogimg.goo.ne.jp/user_image/50/b9/f5895037615bf35ae2b7912c0d0d7169.png)
電源電圧:3.3Vの変動は、時間軸拡大してみてもそんなに大きくない。200kΩでプルアップしてるPB0のHレベルは、いまいちデコボコしてる。点滅周期は約1.5Hzぐらいに調整してある。
次に、「点きっ放し」が始まった所の結果:
![](https://blogimg.goo.ne.jp/user_image/71/f3/fff43f5973ba4fe81615f1c221d37afa.png)
やっぱりリレーON指示のPB1がHのままで、回路側でFETが勝手にONしっ放しになってる訳ではなく、tinyからリレーON指令が出っ放しになってると思われる。(リレーがONの間は、PB0はHのままになって正常。)
ところが、誤動作は「点きっ放し」だけでなく、点かないとか、一瞬点くとか様々発生。
その中で、「点灯」だけ短くなって周期が早くなってしまう誤動作が発生!
その時の電圧観測結果:
![](https://blogimg.goo.ne.jp/user_image/74/55/eee9b9a2b73b0360613c34b2a106e1d7.png)
点灯と消灯の時間はどちらも、最初にADCから取った値=voltを使って、「(定数+volt/2)×2ms」で、SW変化の待ち時間を含めて同じになるようにプログラムしてる。
こんな点滅になるためには…、点灯の方だけ上式の「定数+」が抜けた状態じゃないとこの点灯時間にならない…。
そんな事が起きるか分からないけど、tiny内で「命令の抜け(飛ばし)」が起きてるとしか思えないなぁ…。(たとえば、ノイズでクロックが1個余分にカウントされて、命令終了前にプログラムカウンタが1個進んでしまうとか??)
という事で、何かノイズ対策を検討する。先輩からはWDTを勧められたけど、それはあくまでも「誤動作した時のリカバリー」策。「誤動作しにくくなる対策」の方がいい気がするし、ICSP使用になってないので、プログラム書き換えるのめんどくさくってww。
外部と繋がってて一番怪しいのは、PB0への入力信号。電圧が違うのでダイオード(BAV99)でブロックしてるつもりだけど、微小高電圧のノイズがブロックしきれてないのかも。
手持ちの家電ジャンクを覗いてみると、仕様不明だがDIP4のフォトカプラが見つかった。これを使って信号ラインを切り離そう。
回路検討、Markingからフォトカプラの型番がぴったり見つからないけど、シャープのPC817というフォトカプラが名前が似てる…。これを参考に、LED側はVf=1.2V、If=6mA程度で抵抗設定して、ブレッドボードで動作確認。各抵抗等を下記で設定。
![](https://blogimg.goo.ne.jp/user_image/43/99/95108331d2ffc6d7389f4d7db2a1df86.png)
PB0のプルアップは200k→50kに変更。(これだとtinyの内部プルアップを使うのと変わらないけど、プログラム書き換えが面倒なので、外部プルアップのままにするw。)
スペース厳しいけど、これでフォトカプラ部の基板を作って今まで作った基板に追加する。
DIP4なので、最小で万能基板の2×4穴は要るけど、さすがにそれじゃ厳しい。3×4穴使う。表はフォトカプラのみ。
![](https://blogimg.goo.ne.jp/user_image/5b/d0/37b4df33f41c674b0d8d074096aacd2f.jpg)
裏はSMD部品を無理やり搭載し、出入りの線を4本接続。
![](https://blogimg.goo.ne.jp/user_image/30/2e/124eaf493fb4544056754f6c9b1bb946.jpg)
なんとかこれが「最小」基板かな?これを何とかケーシングに収まるように搭載すると、こんな感じに完成。
![](https://blogimg.goo.ne.jp/user_image/01/1d/bf63831c03b5e4d57466015d19d35ecf.jpg)
フォトカプラは、両面テープでtinyに張り付けて何となく固定。まあ、何とか配線切れずにもつかな~?
これで机上で試運転→一発OK!
車に搭載して、ちょこっとその辺を5分ぐらい走ってみたところ、まあ問題なさそう。「良くなった」かどうかは、もうちょっと長時間走ってみないと分からないけど、少なくとも悪くはなってなさそう。
そもそも車あまり動かさず、おもちゃ病院と試合(アイスホッケーと野球)に行く時ぐらいしか車使わないので、コロナでどれも中止中で全然車を使わないw。まあいずれ確認して、これでもまだ誤動作発生する様なら、次はWDTによるリセットを考えてみますw。
※コメント投稿者のブログIDはブログ作成者のみに通知されます