2021.8.2 Coskx Lab
micro:bitにモータドライバボードを接続し,PWM信号でDCブラシモータを回転させ,
同時に,レーザ距離センサVL53L0Xを用いて測距しようとします。
ところが,モータの回転を上げると(PWMデューティ比を上げると)突然モータは回転したままになって,なにも出来ない状態になることがあります。
これは,レーザ距離センサVL53L0Xが応答しなくなって,プログラムが応答待ち状態になるためです。レーザ距離センサVL53L0Xが応答しないのはI2Cでの測距要求がノイズのために読み取れなかったことが考えられます。あるいはセンサは応答したけれどマイコン側が応答信号を読むことができなかったのかもしれません。
モータが回っていないときには普通に動作できるということは,モータからのノイズが原因と考えられます。
ここでは,モータノイズへの対策を考えます。
モータには電流を供給するため,2本のケーブルを使います。モータから発した電気的なノイズが,2本のケーブルをさかのぼって行きます。ケーブルは電磁ノイズの送信アンテナとなって周辺の配線に向けて電磁波を発生します。周辺の配線は受信アンテナとなってノイズを拾います。
一般にノイズはノーマルモードとコモンモードの2種類があります。DCブラシモータはこの2つのノイズが同時に出ています。
(1) それぞれのケーブルをさかのぼってくるノイズの極性が逆の場合はノーマルモードノイズと呼ばれます。
極性が逆であるため,2本のケーブルが接近していると,逆の電圧(高周波交流)が発生しているので,周辺に発生する電磁波はそれぞれが打ち消しあうようになります。(2本のケーブルが離れているとこの打ち消し効果が薄れます。)
ノーマルモードノイズに対する対策では,2本のケーブルの間にセラミックコンデンサを取り付けます。コンデンサは高周波ノイズに対して抵抗が小さいので,ショートさせたことになります。ノイズ発生源に近いほど,効果があります。
そうすることで2本のケーブルをさかのぼろうとする高周波の電気ノイズを低減でき,電磁ノイズの放射を低減できます。
(2) それぞれのケーブルをさかのぼってくるノイズの極性が同じ場合はコモンモードノイズと呼ばれます。
コモンモードノイズは,モータの金属ケースと2本のケーブルで一対のアンテナを形成するノイズで,周辺の配線に向けて電磁波を放射します。
コモンモードノイズへの対策では,金属ケースとケーブルをコンデンサでショーとさせます。
そのためモータの金属ケースから2本のケーブルのそれぞれに対してコンデンサを取り付けます。(図ではノーマルモード対策と合わせて対策しています。)
ノーマルモードノイズとコモンモードノイズの両方に対策します。
まず,出来上がりのイメージを考えておきます。
コンデンサをはんだ付けしてみたら,コンデンサが邪魔で減速機に組み込むことができなくなったのでは本末転倒です。
モータの端子の穴は十分に大きいので,コンデンサなどを差し込むことができます。
しかし,コンデンサをモータ端子だけでなく,モータの金属ケースにはんだ付けするのはたいへんです。
(1) 予備はんだ
通常のはんだ付けでも,はんだ付け予定の箇所に予めはんだを付けて(濡らして)からはんだ付けすると楽です。
モータの金属ケースははんだが付きにくいので,予備はんだは必須です。
はんだごてで,モータの金属ケースのはんだ付けしたいところを,はんだが溶けるくらいの温度まで熱してから,金属ケースとはんだごての間に糸はんだを差し込んでいきます。
溶けたはんだが,モータの金属ケースに付く(載る)はずです。
十分に冷ましてから,ドライバの先で剥がそうとしても剥がれなかったら成功です。
(2) コンデンサを配置
コンデンサは0.1μFのセラミックコンデンサを使います。コンデンサの脚の長さは短いほど良いのですが,最後にギヤボックスに組み込む時に邪魔にならないようにします。
はんだ付けはまだせずに,コンデンサを載せて(モータの端子の穴の中に入れてしまう)組上がりの様子を確認します。
(3) はんだ付け
コンデンサの脚を切らずにはんだ付けします。はんだ付けが終わってから,ニッパで不要な足を切り取ります。先に脚を短く切ってしまうとはんだ付けが難しくなります。
モータのノイズにいじめられているI2CのSCLとSDAの信号線をオシロで観察します。
(1) I2C通信しているときのSCLとSDAです。
モータは回っていない状態です。
SCL(緑)は送受信のタイミングを作る信号です。
SDA(黄)はSCLに合わせて送受信されるデータです。SCLが立ち上がる時のSDAが読み取られ,0または1の羅列の意味のあるデータになります。
(オシロスコープのDC特性表示で観察しています。)
(2) ノイズ対策前です。
モータは通電され,回転しています。
I2CのSCLとSDAの信号線の様子を,SCLとSDAの信号が来ていない状態で観察しています。(H:約3Vが定常的に見えています。)
2V(Peak to Peak)ほどのひげ状のノイズが時折見られます。
(オシロスコープのAC特性表示で観察しています。直流成分(約3V)はカットされています。)
(3) ノーマルモードノイズ対策後です。
モータは通電され,回転しています。
I2CのSCLとSDAの信号線の様子を,SCLとSDAの信号が来ていない状態で観察しています。(H:約3Vが定常的に見えています。)
0.8V(Peak to Peak)ほどのひげ状のノイズが時折見られます。ここまででもかなり改善されています。
(「4」の作業手順ではこの状態は作りませんが,参考のためにやってみました。)
(AC特性表示で観察しています。直流成分(約3V)はカットされています。)
(4) ノーマルモードノイズ対策・コモンモードノイズ対策後です。
モータは通電され,回転しています。
I2CのSCLとSDAの信号線の様子を,SCLとSDAの信号が来ていない状態で観察しています。(H:約3Vが定常的に見えています。)
ひげ状のノイズはほぼなくなりました。
(AC特性表示で観察しています。直流成分(約3V)はカットされています。)
モータへのノイズ対策により,I2Cの信号ラインへの影響が劇的に少なくなることがわかりました。
この効果はI2C信号だけでなく,システム全体の配線のノイズを減少させています。
小型DCブラシモータ+スイッチ+電池のシステムでは,モータのノイズは全く問題にならないのですが,マイコンシステムにモータを組み込む時には,ノイズ対策をしておかないと思わぬところで誤動作が起きてしまい,問題解決を送らせてしまいます。ノイズ対策は,面倒がらずにやっておきたいものです。