電流容量の少ない電池を使って消費電流の大きなモータを回すと、電池の内部抵抗の影響で電源にかなりのリプルが発生する。このリプルは PIC と赤外線受光素子の動作に影響を与える。DC-DC コンバータを介して PIC と赤外線受光素子を駆動した場合は、その電源リプルは驚くほど抑圧されるので安定に動作するようになる。特に高感度な赤外線受光素子には効果絶大で、通常推奨される RC 回路によるフィルタは使わなくて済んだ。ところが DC-DC コンバータを省略した場合には、電源リプルが赤外線受光素子の動作に大きく影響するので赤外線受光素子の RC フィルタ回路は必須となる。今回は NJL74H380A のレンズ部分を含む不要部分を削り落としたあと、51Ω と 33μF を使ってフィルタ回路を組み込んでみた。
リチウム電池 1 セル用受信機回路図
mode 1, mode 2 IRXS312 HEX ファイル |
Futaba 用 | irxs312.hex for PIC12F629 |
JR 用 | irxs312j.hex for PIC12F629 | |
SANWA 用 | irxs312s.hex for PIC12F629 |
プログラムループは短いほどきめ細かいコントロールができる。そのためにはクロックを速くすればいい。反面、長時間をカウントするためにはカウンタの桁数が増えることになる。受信機では入力信号の先頭を検出するカウンタに 3msec のカウンタを必要とし、受信信号が途絶えたときにスロットルをオフにするためのフェールセーフカウンターに 1.2sec もの時間を必要とする。またエルロン、エレベータ、スロットルのパルス幅のカウントも 1 バイト収まったほうが処理が楽になる。このあたりを考慮した発信周波数の選定も重要である。今回は 6MHz の発振回路で試してみることにした。 6MHz で発振すると PIC では 1 ステップ 4 クロック で実行されるので 1 / 6 x 4 ≒ 0.67μsec となる。 1.2sec を作り出すには実に 180 万ステップも必要なのだ。
サーボパルスカウント、スロットルパルスカウントはともに 2 度カウントしてその平均値を出力するようにした。これは入力されたパルス幅をカウントするときに、プログラムループのどこでパルス入力があっても検出ルーチンにこないと認識できないため、プログラムループのステップ数に応じた誤差がでてしまう。パルスの終わりを検出するときも同じである。その誤差を少なくするため、前回カウントした値と今回カウントした値を加算して半分にし、平均値を出力するという方法をとっている。この半分にしたカウント値は保存して次回に使う。
1A もの電流をブラシモータに流すと電源リップルも相当なものになる。モータのブラシ間に 0.1μF のコンデンサを入れて、赤外線受光素子に RC によるフィルタ回路を入れ、受信機を最小限の部品構成で組んだ。リプルの一番多くなる PWM デューティ比 50% 前後の時の電源リプルと受光素子に供給される電源リプルをオシロで確認してみた。
サーボを搭載した低速で飛ぶ飛行機に最適な受信機だと思われる。部品も比較的入手の容易なものでまとめてみた。テスト版では 8 ピンのソケットを使い大きな DIP タイプの PIC を使っているが、この状態でも重量は 4.5g と軽量だ。ユニバーサル基板とソケットを省けば DIP タイプで組んでもさらに軽くなる。軽さを極めるなら 0.2mm の基板に SOIC タイプの PIC を使えばいい。おそらく 1g 台でできるだろう。