楽々PIC

水田除草と言うブログを書いていますが、PIC関連の記事が意外に人気で驚いています。 PICを使った電子工作に興味を持つ方が多いことを知って、一緒にPICを学ぶブログを作りたいと思いました。 「楽々PIC」は教材と言うよりも少し実用性?のある楽しい道具を作りながら学ぶブログを目指します。

LEDの調光制御

 RRP1320-3 はフルカラーLED4個の調光制御を行います。 RGB3色 x 4灯で12個のLEDを独立に調光制御する方法について構想を書いてみます。

12個のLEDを独立にPWM制御で発光時間を16段階(滅灯含む)に調整する為、下図のように 1msec のタイマー割り込み( TIMER1 )を使って点灯と滅灯を切り替えます。 各 LED は 15msec で1周期の点滅パターンを繰り返すことで約67Hzの点滅になりますが商用周波数より若干高く、人の目には調光された連続点灯に見えるはずです。

LED制御

同時に、12個の制御開始点を分散させて消費電流を平準化したいと思います。 上図上部にあるように、LED1 の Red を0番目とすると、Green は 1msec 遅れた1番目を起点に制御します。 同様に LED1 Blue , LED2 Red と制御開始点をずらすことで 15msec の周期全体に分散配置し消費電流の平準化と制御起点での演算量を分散させたいと考えています。


楽々PIC」は楽しい道具を作りながら学ぶブログを目指します。



フルカラーLEDの電流制限

 RRP1320-3 では4個のフルカラーLEDを制御して光を演出します。 PWM制御でRGB3色LEDの点灯時間を加減するのですが、各色100%発光させた時に白色に見えるように電流制限したいと思います。 同時にLEDに供給する電流が PIC18F1320 の最大定格を超えないことと、3色合計の消費電力がLEDの許容損失を超えないように電流制限する必要があります。

ターゲットのフルカラーLEDは OST A5131A-R/PG/B で、カソードコモン、各LEDの順電流(最大定格) 50mA、許容損失 200mW です。 PIC18F1320 は最大電源供給電流(Vdd) 250mA 、最大電流(/端子 シンク・ソース共) 25mA 、最大電流(/ポート) 200mA のようです。  周囲温度や放熱特性の情報が見当たらないので、控え目に使いたいと思います。

フルカラーLEDの白色発光については、秋月電子通商さんが添付してくれた資料にもありますが、以下の資料でも確認して発光輝度(mcd)比でR : G : B = 3 : 7 : 1にするのが良いようです。

 フルカラーLEDの白色発光について
 http://www.nichia.co.jp/specification/jp/product/led/fullcolor.pdf


以上の情報と、LED( OST A5131A-R/PG/B )の資料より、下図のように電流制限抵抗を計算しました。

白色発光1

「RRP1320-3 回路案」時点では計算間違いの為、ブルーの制限抵抗が違っています。

LEDでの損失を最大定格の半分( 100mW )、PIC18F1320 の端子当たり最大電流を 15.6mA 、ポート当たりの最大電流 90mA以下、最大供給電流( Vdd ) 120mA + 自己消費と控えめな値になりました。 作って試してみた上で不具合があれば修正します。


楽々PIC」は楽しい道具を作りながら学ぶブログを目指します。


RRP1320-3 回路案

PIC18F1320 を使った3つ目の電子工作は、フルカラーLED4個の発光制御です。 点滅は勿論、RGB各色16段階(滅灯含む)の輝度を制御し、16段階=4bit x 3色で12bit(4096色) x 4灯の表現力で光を演出します。 ユックリと穏やかに表情を変え、時には最短0.1秒の明滅を交えて花火やネオンサインを思わせる演出を可能にしたいと考えています。 お馴染みの赤外線リモコンで演出パターンを切り替えて楽しめるツールを狙います。

PICマイコンのソース電流とフルカラーLEDの最大損失、白色発光時のRGB各色のバランスを考慮して、下図の回路を想定しています。 動作確認と並行して製作に取り掛かります。

RRP1320-3回路図

フルカラーLEDをターゲットにしていますが、要するに12個のLEDの点滅及び輝度制御が可能な回路ですから、他の応用も考えられると思います。

LEDに振り込む電流が PICkit3 の供給能力を上回るため、ACアダプター必須の予定です。


楽々PIC」は楽しい道具を作りながら学ぶブログを目指します。




赤外線リモコン受光モジュール

 RRP1320-2-01 には赤外線リモコン受光モジュールとして、 PL-IRM2161-C438 (下図右側)を使っています。 以前にRRP-1320-1 シリーズに使った、PL-IRM1261-C438 (下図左側)よりも安価に入手できるために変更したのですが、若干ノイズに弱いようです。

DSC00198

RRP1320-2-01 はLCDが無い為、受信コードやセンサー入力、汎用タイマー等のイベントに応じて異なるフレーズを発声させています。 赤外線リモコンで登録外コードを受信した時にチャイム音を鳴らすようにしているのですが、他のコードで発声の直後にチャイム音が鳴ります。 登録外コードを受信させてもチャイム音が2回聞こえます。

赤外線リモコンを操作しない間は発声しないようです。 ソフトウェアで以下のように対策してみましたが改善しません。
 (1) 赤外線リモコン受信の都度、32bit 未満のコードは無視する。
 (2) カスタムコード(先頭16bit )が全て0のコードは無視する。

ソースに問題が無いことを確かめる為に、上図左側の PL-IRM1261-C438 +プルアップ抵抗(20kΩ)に代えてみると不具合が無くなりました。 念の為、元に戻してPL-IRM2161-C438 の出力もプルアップ(20kΩ)してみましたが、改善しませんでした。

RRP1320-2-01-1 をダウンローして動作確認を行う際に、赤外線リモコンの設定が済んでいない場合は、登録外コードによるチャイム音で確認する必要があります。 動作確認後、登録外コード受信時のチャイム音が邪魔な場合は、RRP1320-2-01-1.asm の該当部分を下図のようにコメントアウトするかノイズ対策を行って下さい。

コメントアウト

RRP1320-1-02等を使って、お手持ちの赤外線リモコンの送信コードが解っている場合は、このままでも使えるのですが、RRP1320-2-01 単体で( MPLAB で Halt と Run を繰り返しながら)赤外線リモコンコードを調べようとすると、ノイズによる間違ったコードが多くて作業出来ません。

受光モジュールをPL-IRM1261-C438 (最初の図左側)に変更してドキュメントを作り直します。


楽々PIC」は楽しい道具を作りながら学ぶブログを目指します。


焦電センサー

 RRP1320-2-01 に焦電センサー(焦電型赤外線センサーユニット) SE-10 を使っています。 センサー感度 約2m、検知角度 約 120 度 で、人が動くと出力がLowになります。 ただし、感知保持タイマー回路が無く、常に人が居ても出力が散発的に High になります。

モノマルチ

人を検出して「いらっしゃいませ」と発声させたいのですが、このままでは頻繁に「いらっしゃいませ」を繰り返してしまいます。 そこでソフトウェアで感知保持タイマー機能を実現します。

上図のように時間 t のタイマー(リトリガラブル・モノマルチバイブレータの様な働き)を使って、感知保持を行います。 焦電センサー出力が Low の時にタイマーを初期値に戻し、TIMER0 で 0 になるまで DEC (-1)します。加工後の出力はタイマーが 0 以外の間 Low を保ち、0になったら High に戻します。

サンプリングの結果、焦電センサー出力が Low の時には毎回タイマーを初期値(10秒)に戻す様子を破線で示しています。 代表的なタイミングだけですが、上図のように次々と初期値に戻される為、散発的な High 出力(斜線部)が無くなります。 一方で、最後に焦電センサー出力が Low であった時刻から設定時間(10秒)後に加工後の出力が High に戻る遅延が発生しますが、人を検出して「いらっしゃいませ」と発声させる用途であれば困らないと思います。

下図は実施例(アセンブラ・ソース)です。

感知保持タイマー

加工出力 inpds<bit2> は直前に 0 クリアされています。 RB0 が 0 (アクティブ)であれば感知保持タイマーを初期化します。 感知保持タイマーが 0 になったら加工出力を 1 にセットします。

感知保持タイマーデクリメント

なお、感知保持タイマーは TIMER0 割り込みの中で、上図のように条件付きデクリメント(値0でクリップ)されます。


楽々PIC」は楽しい道具を作りながら学ぶブログを目指します。




ダウンロードコーナー
記事検索
アンケートに御協力下さい


アーカイブ
楽々PIC 宛てBlogMail


--- ご了承下さい ---

注意して記事を書いていますが、記事及びリンク先の情報による不利益について、一切責任を負い(負え)ません。
QRコード
QRコード
アクセスカウンター

    Atsuhiro Imai

    バナーを作成


    プロフィール

    jyosou_robot

    • ライブドアブログ