いやー、残暑ですね。
ガッツリ夏!っていう感じはすこーしずつ緩和してきて、夜なんか「ちょっと涼しいかも」と思える日も増えてきました。
2020年が始まったなーと思ってたらコロナだ!自粛だ!っていう騒ぎが起きて、バタバタしてるうちにもう今年も3分の1になってしまいました。
年齢を重ねるにつれて時間の進み方が早くなるっていうことを身をもって知っている今日この頃です。
こんにちは!ポニ丸です!
前回、ファームウェアを実装しましたが、今回はやぎ星人が我が家に来て結合デバッグをやります!
結合デバッグっていうのは、簡単に言うと役割分担したシステムのパーツ(今回でいうと私が担当しているデバイスとやぎ星人が担当してくれているアプリ)を合体して動かしてみて不具合がないかチェック、そして、明確になった不具合を改善するっていう開発フェーズの一つです。
早速、スマホ上のアプリを使ってBLE接続をして動作確認してみました!
アップした動画見て客観的に思ったのが「ちゃんと片付けてから撮れよ!」っていうツッコミでした。
見づらくてすいません笑
スマホアプリ上のボタンを押すと通信仕様に基づいた動作命令(開く、閉じる、止まる)がBLEでデバイスの方に送信されます。
デバイスは受信データに入っている動作命令を取得してモータを回転させます。
右下の方に見切れてる昇降スイッチを操作せずにちゃんと遠隔で操作できてることが確認できました!
がっ
モータ回転中にBrownoutする問題が再度発生している!!
さらに残念なことがあって、そんな不具合が起きてる場面を動画におさめていないんですよ。。
ほんとごめんなさい。
ただ、この問題は解決しないといけないのでまじめに考えます!
まず、デバイスの回路図そのままだとわかりづらいので”ほぼ”等価となる回路で簡略化しました。
電圧3.3[V], 電流最大2.0[A]の電源から並列にマイコンとモータに分岐してます。
並列回路の特性として、電流は分配し電圧は同じなので以下の式が成り立ちます。
電流:I = IIC + Im
電圧:V = VIC = Vm
繰り返しになりますが、電圧は並列回路においてどの点でも同じなので一旦忘れます。
電流問題
ということで、マイコンの動作に必要な電流IICが足りなくなっているのが原因っぽいです。
電源は最大で2[A]までしか電流を供給できないという制限から、モータが回転することによりマイコン側で必要になる電流が不足するレベルまでImが大きくなっているのが根源かなー。
このブログを参考にすると、Wi-Fi通信をしているときの消費電流は600[mA]ほどらしいです。
今の現象からわかるようにマイコン側の消費電流が少なくなるとリセットかかってしまうので、モータの消費電流を抑える方向で調整したいですね。
がっ
モータのデータシートを見間違えている。。
使用しているモータのデータシートがコレなんですが、今まで見てたのが「AT MAXIMUM EFFICIENCY」の欄だったんです。MAXIMUMとあるのでこれが最大値なのかな、と。
ただ、今回問題が起きて色んなサイトにお邪魔してわかったのが
モータが停止時から動作する際の消費電流が一番大きく、「STALL」欄の電流値がそれにあたる
とのことです。
・・・完全に設計やらかしてますね。
当初はモータ側の最大消費電流を0.64[A]、余裕見て1[A]だという計算で電源を2[A]供給のものにしていましたが2.70[A]消費するみたいですね。
大・誤・算・Death!
余裕見てモータ側で3[A]消費する、マイコン側で特に突入電流で1[A]消費するという計算で、合計4[A]供給できる電源が必要になるっていうことですね。必要の半分しか供給できていない。
電源回りの再検討が必須です。回路改造しなくちゃいけません。はんだ付けやり直しです。ヨシダです。
電圧問題
それと、問題がもう一つ。一旦置いといた電圧です!
モータって動作する際に逆起電力っていうのが発生するんですよ。簡単にいうとモータを回転させる方向を逆方向に電流が流れる(電圧がかかる)現象のことです。
これによって3.3[V]だった電源電圧がどうなっているかというと、こうなります。
回転し始めが左端辺りになるんですが、3.3[V]あった電圧がこの時点で2.5[V]程度まで下がっています。
その後モータ回転数の変化により電圧が大きく変化し、最大では6.56[V]、最小では0[V]まで振れてしまっています。
この現象には2つ問題があるんじゃないかと推測します。
問題:電圧降下
3.3[V]の電圧がモータの回転によって2.5[V]あたりまで低下していることです。
ちなみにこの波形はBrownoutしなかった時のものなんですが、Brownoutしたときはトリガされなかったことから2.5[V]よりもっと低下したことがBrownoutの直接的な原因だと考えます。
問題:電圧の揺れ
かなり大きく揺れてしまっています。
最初に書いたように並列回路では電圧値は分岐のどっちでも同じなので、モータの回転によって電圧の変化があればもちろんマイコンに入力される電圧にも影響が出ます。
幸い揺れている時間が短いためか、これほどの大きな揺れがあってもマイコンが落ちる事態にはなっていません。
マイナスの方向に揺れる分には動作保証電圧の下限を割ることでリセットがかかるだけかと思いますが、プラス方向に揺れたときは動作保証電圧を上限を超えることになるので故障の原因といえるでしょう。
解決に向けて調査
よくよく調べてみると、モータと電源系統をわけるのが常套手段らしいです。電圧の揺れよりも電圧降下によるマイコン側の電圧不足を防ぐ目的のようですが。。
なので、DC/DCコンバータをマイコンの直前に入れてモータ側で電圧が変化しても安定した電圧を供給できるようにしないとですね。
これに関しては知ってたんですけど「動いてるから・・」と気づいてないフリしてました。横着した私が悪かったです。すみません。
まとめ
1.回路全体での消費電流は4[A]であることが判明し、電源の最大供給電流4[A]を保証する電源に変更
2.モータ回転時に逆起電力による電圧の揺れが発生し、その幅がマイコンの動作保証電圧を超えるケースがあるため、DC/DCコンバータを導入してちゃんと保証電圧をマイコンに供給できるよう変更
3.ブレッドボードで組んだ回路ではわからなかった現象が発生することがある。憤りを感じるがこれも勉強と受け止めるべし!
今回、作ったファームを書き込んだデバイスとスマホアプリを接続して結合デバッグを行いました。
結果的にハード的な欠陥が見つかりましたので次回修正をかけていこうと思うんですが回路の修正はメンタルやられますね。
まあ、ハード系の経験がない私ですからこういった問題が発生することも想定内ではあるんですが、実際問題が発生するとボディブローのように効いてきますね。ハードなので買い物が必須になりますし。。
とはいえ完成が見えてきているので心を癒しながらこれからも向き合っていこうと思います!
ではでは!
コメント