August 11, 2008

サーボ信号をアナログ電圧に変換

ラジコン用サーボの信号はパルスの幅によってその強弱が表現されるので、それを直接計測するためにはタイマの機能の一つであるインプットキャプチャを使う必要があり、チャンネル数が増えると大変やっかいです。実際オートパイロットシステム Super Sylphideでは、FPGAを用いてタイマを多数構成しこの信号を計測しました。

マイコンでこの計測を簡易的に行うにはどうしたらいいでしょうか? マイコンに搭載されている機能を思い浮かべてみると、多くのマイコンではA/D変換機のチャンネル数が8chと、比較的多く搭載されていると思います。そこで、サーボに指令値を与えるパルスの幅に応じたアナログ電圧を生成できれば、マイコンでも簡易的にこの指令値が計測できることになります。

そこでPIC16F88と12bits D/Aコンバータ MCP4921を使って、サーボ用信号をアナログ電圧に置き換える装置を作ってみました。できあがりは写真の通りで、1台で1ch分ですが、非常にコンパクトになりました。

pwm2ac.jpg
夏休み前のOlimex最終便

Eagleの回路図レイアウト図をおいておきます。16F88は表面実装品を使っていますが、秋月のPICライタ等で書き込めるように、関係端子のみDIPと同形状のサブ基板に引き出してあります。

pwm2ac_brd.png
上がメイン、下がサブ。

PICのプログラムは無償コンビのsdcc + gputilsで開発しました。sdccのPICのサポートもかなり充実してきているようなので、有償コンパイラがそれなりの値段をすることを考えると有難い限りです。プログラムはpwm2acディレクトリの中にあります。開発環境を整えた上でmakeをしてください。開発環境の構築は『PICマイコン開発環境 (SDCCのインストール)』等が参考になると思います。

最後にPIC16F88を選んだ利用ですが、PIC16F88にはA/D変換機が入っています。ということは、逆の機能も、という魂胆が見え見えということです。

23:59 fenrir が投稿 : 固定リンク | このエントリーを含むはてなブックマーク | この記事をLivedoorでクリップ! | この記事をdelicious.comでブックマーク | このエントリをドリコムRSSにクリップ | トラックバック
このエントリーのトラックバックURL: http://fenrir.naruoka.org/mt/mt-tb.cgi/654
コメント
コメントする









名前、アドレスを登録しますか?
(次回以降コメント入力が楽になります)
  • 匿名でのコメントは受け付けておりません。
  • 名前(ハンドル名可)とメールアドレスは必ず入力してください。
  • メールアドレスを表示されたくないときはURLも必ず記入してください。
  • コメント欄でHTMLタグは使用できません。
  • コメント本文に日本語(全角文字)がある程度多く含まれている必要があります。
  • コメント欄内のURLと思われる文字列は自動的にリンクに変換されます。