けっこう苦労したが、結局問題は以下の3つと判明し、対策を施した。
1.PIC18F1320のRAMは256bytesあるが、Cのプログラムで使えるGlobal変数領域は64bytesしかない。
2.モーターとPICその他を同じ電池で駆動しているが、モーターが回ると電池の電圧が相当低下する。赤外線リモコンの受信器の動作可能電圧がギリギリ(2.7V)であることが判明。
3.超音波センサーのアンプがモータの動作時のノイズで反応してしまう。
対策1:
リンクのスクリプトを勝手に修正してみたが、うまくいかない。結局不要な変数を削除したりローカル変数に変更したりして、64bytesに収まるようにした。
対策2:
電源電圧が急激に変化するのを避けるため、モーターの起動時にPWMのデューティーを徐々に大きくしていく仕組みを組み込み、駆動時のPWMのデューティーを50%程度に抑えた。また、電池をエネループから普通のアルカリ電池に替えて電源電圧を高くした。
対策3:
モーターの端子にコモンモード用とノーマルモード用のノイズ対策コンデンサを取り付けた。
これで何とかついてこれるようになったが、起動と停止に時間がかかるので、クネクネする動きが大きくなった。
超音波センサーのアンプはPICの基板には実装できないため、小さい別基板に組み立てた。オペアンプも3Vで動作する7016Dというものを使うことにした。超音波の送信器も同じように小さな別基板に組み立ててある。超音波の送・受信器は今回はマルツで小形のものを調達して使ってみた。左右の受信器と中央の送信器をアクリルのバーに取り付け、それを本体に取り付けてある。
0 件のコメント:
コメントを投稿