私の友人と私は、学習目的のために、このようなユニバーサル学習リモートコントローラーを設計したいと考えています。基本的にやりたいことは、赤外線パルスの保存と再生です。
36kHz、38kHz、40kHzの信号を検出したい。40kHzの信号は、25の期間になります秒。
8ビットPICマイクロコントローラーを使用したいので、現在は20MHz高速水晶発振器で動作するPIC16F616を選択しました。次の2つのオプションを使用できます。
Interrupt On Change
モジュールを使用します。- CCPモジュールのキャプチャモードを使用します。
最初のオプションは次のとおりです。
レジスタが次のように設定されていると仮定しますunsigned char _10_us = 0;
。このレジスタは時間を保持します。周期レジスタとTMR2モジュールは、すべての10割り込み作成するために設定されている秒。割り込みが発生すると、レジスタをインクリメントして終了します。これにより、最大時間は2.55ミリ秒になります。さらに時間を測定する必要がある場合は、追加のレジスタを定義し、必要に応じてインクリメントできます。_10_us
_1_ms
現在、あらゆる種類の変更(高から低または低から高)によって割り込みが生成されるたびに、プログラムは現在の時刻、つまり_10_us
レジスタの値を記録します。しばらくして、次の割り込みが生成されると、プログラムは保存された値を_10_us
レジスタから減算するため、その間にかかった時間は秒単位になります。
このオプションを使用すると、頭を悩ますことができます。TMR2割り込みは、約50命令ごとに発生します。割り込み処理には約20命令かかります。期間を計算して配列に保存するための30の命令が残っています。この方法は機能しますか?
2番目のオプションは次のとおりです。
CCP1ピンでイベント(高から低)が発生したときに割り込みを生成するように、CCPモジュールのキャプチャモードを設定します。割り込みルーチンでは、フラグを設定して、プログラム内のタスクが(必要に応じて)CCPR1H(おそらく必要ない)とCCPR1Lの値を計算して保存できるようにします。次に、キャプチャモードの構成を変更して、ローからハイのエッジが発生したときに割り込みをトリガーするようにします。そして、次のイベントを待ちます。使用したことがないため、この方法のパフォーマンスを推定することはできません。
別のオプション?
TSOP17xxシリーズなどの赤外線復調ICを使用できます。これで問題が完全に解決します。しかし、いくつかの質問が思い浮かびます。
読み取り距離の要件はそれほど大きくありません。1メートル(〜3フィート)。38kHzで動作することを意図したTSOP1738を選択した場合、36kHzと40kHzの信号でどれだけうまく動作しますか?
TSOP17xxシリーズのデータシートの4ページには、「応答性の周波数依存性」グラフが示されています。わかっている限りでは。
- 38kHzの約1.053である40kHzは、相対感度が約0.6になります。
- 38kHzの約0.95である36kHzは、相対感度が約0.65になります。
これらの値はどういう意味ですか?TSOP1738を使用しても問題ありませんか?