赤外線リモコン Ver 3
少し前に「赤外線リモコン」をやっていました、アセンブラーで作ったものですが最近MCを始めたのでC言語に移植してみました。、10日程かかりましたが、まだ慣れてない事もあって無駄も多いかも知れません。
メモリーは倍程度使っています、少し効率を考えると悪い感じもしますが、ライブラリーが使えるのと慣れれば開発が楽なのは分っているので、その内に[C]を始めようと思っていました。
以前[PIC-11]、[PIC-12]などでやっていましたがその延長です。
[サーボモーター]のコントロールボタンにこの赤外線を使ってみました。
他にも「SWの変わりにリモコンでコントロール出来るようになる」ので便利になりそうです。
|
珈琲マークは意味がありません。
|
フォマット
また、簡単に説明をしておきます。
☆周波数は38.5KHz:この辺の周波数の物がたくさん売られ、部品類が作るのに利用出来ます。
13mSecのオンオフで作れる。これは受光素子の関係でTVのリモコンなどに使われています。周波数は多少変更してもかまわない。
☆間隔は600uSecで先人が決めた数字をそのまま使うことにしました。
☆「フォマット」ですがTVのリモコンに使われている方式とは異なり、単にON-OFFをしているものです。
(下の写真はIFR-LEDの端子から、TEST中の特別なもの)
|
これで今まで誤動作で困ったことは一度もありません、十分使えます。
さすが直射日光があたっている時は動きませんでした・・・。
合計 8+16+16Bitの40Bitになります。初めの信号0を8Bit送信(何もしない)ので不要な感じもしますが、連続送信時にLED(赤外線)を休ませるのに意味を持っています。
手順 |
内 容 |
A | 信号0を8Bit |
B | 信号1を1Bit |
C | グループ識別用に3Bit |
D | 信号1を1Bit |
E | 信号0を1Bit |
F | SW用として5Bit |
G | 信号1を1Bit |
H | 信号0を4Bit |
I | BからHまでを、もう一度 |
|
スイッチの処理
ボタンDATAは5Bitあるので理論的に31個のSWまで対応出来ます。ここで使ったのは3Bitの最大7個です(0は使わない)。
人がちょっと押しても、50-200mSec程度継続してしまいます。押して直ぐ反応し、そのキーの処理をして、またキー入力になってもまだ押されている場合、何度もキー入力を受け付けることになります。
赤外線を出す時間は短く、前記の例では40Bit*0.6mSですから24mSec(2.4/100秒)しか掛りません。ボタンが押され続けると何度も信号が出るのを避ける為に200mSecの時間待ちを入れています。これで普通の使用では一度押すと1回の赤外線信号(パルス)が出るだけです。
| 押されても一度!
使い方ですが、押している間だけ信号が適当に出た方が良い場合があります。そこでその様な押している期間が200mSec以上押されている時は、信号が休みのタイミングを取りながら信号を出すようにしてあります。
もう一つ別のSWでセットすると「SWが離れるのを待ってから次のスイッチ入力を受け付ける」ようにしました。これは時折変更するわけではないので、ピン(ジャンパー)で設定を変更する方式にしました。
これはボタンを押すと一度の信号しが出ません、長く押していても(数秒でも)です。
|
PIC12F629を使いました、このPICは2V以上で動きますので乾電池2本でも十分作動します、マンガン・アルカリ・Ni-Cd・NI-MHなど色々な物が使えます。
電流はLEDがほとんど消費しています。
電源電圧(2.5V)-LED(1.5V)-ICなど(0.1V)/68Ω=13mA
電源電圧(3.0V)-LED(1.5V)-ICなど(0.1V)/68Ω=20mA
一度のパルス幅は24mSecです。その中にはゼロがかなり含まれており、1の時でもON-OFFで半分しか電流は流れていません。実質5mSecではないでしょうか。従って赤外線LEDは多少の無理は平気です。
| 省エネ対策
電池からのエネルギーは全体としてほとんど使われず休み状態です。そこで休みの間はICを休ませます。これの命令がSLEEPで、これを実行するとPICはほとんど電流が流れません。
スタンバイ状態に入ると私のテスターでは測定出来ません、1μA以下となり電池のON-OFFスイッチは不要レベルです(現在は実験の為に付いています)。
エネループ(NI-MH)2本を使っていますが、半年経過してもほとんど電池電圧が低下していません。
ボタンを押すと瞬間的に(24mSec・実質5mSecの25mA)信号が出て終わりです。
|
ボタンの意味
ボタンはGP0[1]、GP1[2]、GP2[4]の3Bitですが2進数の重み付けをしています、最大0-7まで付けられますが0はSW OFFとして使うので7個付けられます。
1,2,4以外の3,5,6の動作はダイオード2個必要です、7はダイオード3個必要になります。
| 飛びはどのぐらい
赤外線リモコンのコントロール範囲ですが約3mです。光軸が合って3.5mという所、これは2.4Vニッケル水素(NI-MH)電池の時で、3Vの乾電池ならもう少し飛ぶかも知れません。
光は距離の2乗に比例して拡散するので、通達距離を2倍にするには光パワーを4倍にする必要があります。普通LEDへ流す電流を増やしても直線的に増加しませんので、2個・4個・8個と数を増やしてエネルギーを増す方法が良く取られています。その様な例をたくさん見られますし32個接続しているのを見たことがあります。
高価な赤外線LEDが売られています、これは効率の良いものもありますが、多くは高速動作に適したものが多く、発光エネルギー効率が良いわけではありません。
このセットでは38KHz程度ですから数MHz用の値段の高い物を使うのより、安価な物を多段接続の方が飛ばすには効率的と思われます。
前記の様に動作時間は非常に短く、TRやFETを使って簡単にドライブ出来ます。 |
ハードのボタン
ボタンですがメカニカルSW(タクトスイッチ)が安価に売られています。IC用としては適当ではありませんが使えます。もし接触不良を起こす場合、安価ですからどんどん交換することをお勧めします。つまり交換することを承知で使うのです。
以前は秋葉原でインピーダンスの高いSWも売られていたのですが、中国製の安価な製品に押され最近は見かけません。
| Cで作ったプログラム
[プログラム]はまだなれないので効率良く作れないのですが、一応アセンブラで作ったものと差し替えをしても同じ動作をしているので問題ないと思います。
2009/MAR/24
|