赤外線通信をついに成功しました。
これまで悩んできた方法は、38kHzの信号をディレイ関数を用いてソフトで作り出す手法でした。
原因かは分かりませんがデューティー比が綺麗に50%になっていなかったうえ、受信プログラムもスタートビットを受け付けたら600us待機して次のビットを受け付けるという処理をすべて不安定なディレイ関数を用いて行っていました。
そのため取りこぼしが結構あったのだと思います。
そこで、38kHzの搬送波をPWMでつくり、送信データはシリアル通信機能を用いてTXから出力しました。
PWMの搬送波とシリアル信号のANDをとることで、シリアル出力を38kHzに変調する事に成功しました。
この変調した波形を赤外線LEDの点滅に使い、赤外線受信モジュールで受信しました。
これまで撮影してきた動画を紹介します。
・PWM機能のテスト
・シリアル通信のテスト(赤外線未使用)
・赤外線を用いたシリアル通信
成功へのヒントを下さった方々に感謝いたします。
2014年6月26日木曜日
2014年6月14日土曜日
赤外線通信、送信側の動作確認
実験中の赤外線制御が未だに上手くいかない。
(図a)
デジタルオシロで赤外線LEDの両端の端子電圧を測定した。
レンジはx10
次の波形は拡大したもの。
(図c)
1bitの'1'の送信は23usで1パルスとし、それを23回、約600us繰り返すことで受信機では1bitの'1'と判定される。
まず計測結果(図aから図c)をみるとあまりにも理想と違うものでした。
これは結果としてどう考察して良いかもわからない。
(図d)
実験の最後になにも考えずに撮った一枚ですが、これはプローブをx1にしていました。T1とT2の調整すらしていなかったので正確な計測ではないけど取り急ぎ電車にのりつつ長さを測って比から値を求めるとほぼ理想の値がでた。
(529usくらい)
もしこれがPICのソフト制御での制度の限界なら完全なソフト制御はPWM信号を常に送って、'1'の送信時はTXとPWMのANDを取ることにします。
※PWMを用いる手法はSNSを通して教えていただきました。
登録:
投稿 (Atom)