PWMで38kHzは無理

PWMがうまく動いたのをうけて赤外線リモコンの送信器を作ろうとしたところ問題が発覚。38kHzのキャリアがうまく出せない。いちばん近い周波数が37.5kHz。家電製品はこの程度の誤差を認めてくれると思うけれど解析をμ秒単位でやっているのに比べて雑すぎる。設計の一貫性に欠けて美しくない。いったんは不要と判断したポートへの周波数出力を検討。

というわけで、レジスタ操作ユーティリティregister.cに、ポートへの周波数出力を追加し、GitHubのgistを更新。関心があるかたはご覧いただきたい。動作確認したところ、38.01kHzの出力に成功。もっとも、これで何もかもうまくいくわけではない。

周波数を出力できるのは実質GPIO4だけで、1-wireインタフェースとかぶる。デューティ比は50%固定でNECフォーマットの33%に合わせることができない。停止がほんの少し遅れる(たぶん数n秒)。これらの問題と、正確な周波数をだせない問題のどちらを呑むかという究極の選択。力の限り悩んだとしても結論はふたつにひとつ。時間を掛けるのはもったいないのでGPIO4の周波数出力を選択する。でもなぁ。くよくよ、ぐすぐす。

広告
カテゴリー: RaspBerryPi パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中