IRリモコン信号のデコード方法
NECフォーマットをはじめとする赤外線リモコンの受信は、色々と処理を実行中のマイコンにとって
意外とネックになるものです。 他の処理を邪魔しないで受信する幾つかの方法をご紹介
できればと思います。
意外とネックになるものです。 他の処理を邪魔しないで受信する幾つかの方法をご紹介
できればと思います。
必要なハードウェアリソースは
1.ポート入力の割り込み
2.タイマー
の2点です。
ポート入力の割り込みを使ってタイマーをスタート。
同時にポート入力割り込み極性を反転して割り込み待ち。
次にポート入力割り込みが入ったらタイマーのカウンタ値を読み取って時間を計測。
この時間がリーダーコードに相当するものかどうかを判断する。
リーダーコードと判断した場合には、信号のデコードへ入る。
信号のデコードも同様に「0」「1」との時間の長さを計測して判断します。
この時間の認識にある程度の幅を持たせておくというのがコツです。
実は、リモコン側のクロックや、計測しているマイコンのクロックがあまり正確ではない
ために計測誤差がでるからです。 また、デューティー比がぴったり5:5とならない事が多いです。
4:6~6:4くらいまで認識の範囲を広めておくと良いでしょう。
ちょっと違った手法としては、ポート割り込みがかかってから、タイマーをスタートさせ、
一定時間後にタイマー割り込みによりポートを読んで「0」「1」判定するという方法です。
毎回、時間計測する必要がなく、割り込み頻度も減るので処理が軽くなります。
時間計測の範囲判定などもいりません。 今回は、この手法を使いました。

以上が、リソースとしてタイマーを専有できるときのアルゴリズムです。
その他としては、高速にポーリングして信号をデコードす方法もあります。タイマー割り込みは
使うもののポート入力割り込みを使わないで受信できるのが特徴です。
今回のマイコンではADCで250us毎に割り込みを使っていますので、その時ついでに
IRセンサのポート読んで、高速ポーリングの手法をとっても良かったと、今更ながらに
気が付きました。
※) ノイズ・誤動作対策を、ある程度盛り込んでおく必要があるのは、マイコンによるI/O処理
全てにおいて同様です。 このあたりはテキトウに実験して自分がヨシとするまでつめます。
« 電子ボリューム実験基板 進捗 70% | トップページ | MUSES72320で実験したこと(1) »
「電子回路」カテゴリの記事
- アキュフェーズ ANCC 歪打消し回路シミュレーション(2)(2024.09.25)
- アキュフェーズ ANCC 歪打消し回路シミュレーション(2024.09.23)
- トラ技10月号に載っていたONKYOの特許を調べてみました(2024.09.14)
- innocent Key さんがエミッタ抵抗レスバッファの検討をされていました。(2024.07.05)
- あのアンプの入力部について(2024.01.20)
「マイコン」カテゴリの記事
- PICkit 3のProgrammer-To-Goを試す(2019.01.26)
- PICマイコンの開発環境 × Windows 8.1 は動作しないらしい(2014.07.21)
- IrBerryDACのPICプログラムソース公開(2014.03.13)
- MPLAB X IDE 手ごわい(2014.03.09)
- AppleRemoteの送信コードの謎(2013.11.27)
「電子ボリューム」カテゴリの記事
- MUSES72323 Balanceボリュームの表示機追加について(2022.12.24)
- MUSES72323 バランスボリュームもうじき頒布開始(2022.11.26)
- MUSES72323バランスボリューム基板 進捗(3)(2022.05.14)
- MUSES72323バランスボリューム基板 進捗(2)(2022.05.08)
- MN型ボリュームとは(2022.05.03)
コメント