UFOライトの製作 2020.11.13

     マイコンを初めて学習する時にはまず最初にエルチカを行うのが定番となっていますが、そのLEDの点滅回路が今回のテーマです。

    1.LEDの点滅回路を組み込んだUFOのプラモデル

     YouTubeでUFOのプラモデルにLEDの点滅回路を組込んでいる動画を見つけました。点滅の仕方に一工夫があってちょっと興味をそそられました。

     この点滅回路ですが、YouTubeの他の動画を幾つか見てみると、Light Kit なる製品があるようですが、どこで購入出来るのかよく判りません。そこで似たような物をPICで作ってみることにしました。

     まずは、UFOのプラモデルです。YouTubeの作例でも使われていたPEGASUSの「AREA 51 UFO」というプラモデルを入手しました。いかにもUFOという感じのプラモです。

     とりあえず指示通りに組立ててシルバーで塗装しました。

    PEGASUSのUFOのプラモデル「AREA51UFO」です。ヤフオクにて入手しました。
    箱横側です。表と同じ絵柄です。
    MADE IN CHINAです。


    AREA51の説明が書いてあるようです。
    指示どおりに組立ててシルバーで塗装。汚し塗装はしていません。中にLEDを組み込んでみました。 動画です。怪しく光っている感じになったでしょうか。


    2.PICで点滅回路を作る

     8ピンのPIC12F629(675)を使います。2ピンは電源とグランドですからLEDの点滅に使えるのは残りの6ピンですが、GP3は入力専用ですので、実際は5ピンということになります。

     5ピンを使って10個のLEDを点滅させることにします。GP3は点滅速度を切り替えるスィッチの入力に使います。LEDは5mmの白色を8個、3mmの赤と青、各1個の計10個です。

    UFOライト回路図

     電源は、単4または単5の乾電池2本を使って3Vとしました。単3は大きいのでUFOの中に組み込むのが困難です。電池容量はあまり必要の無い回路ですので単5でも十分です。

     PIC12F629(675)は、2.0Vあれば動作しますし、LEDの点滅だけの回路ですから電源の安定化は必要ありません。電池を直結します。

     GPIOの出力が1でも0でもLEDが点滅するような回路にします。例えば、GP0の出力が0の時はD1が、1の時はD2が点灯します。5ピンで10個のLEDを制御できます。

     LEDを単純にオンオフするだけでは、UFOの窓から怪しげな光が発しているようには見えません。PWMで明暗を制御することにします。

     なお、使用するLEDは電池電圧が低下してもすぐに暗くならないように高輝度タイプのものを使いました。ユニバーサル基板で作成しました。


    こんな感じで電池や基板を収めています。
    基板中央にPICを、その周囲に5mmφの白色LEDを8個設置しました。 裏面には、LED(赤と青)電源スィッチ、点滅速度切替ボタンを取り付けました。
    3.ファームウエアの作成

     PICのプログラムはMPASMで作りました。この程度のものならアセンブラでも簡単と言いたい所ですが結構大変でした。

     PWMによる明暗制御を行うのは白色LEDだけです。青と赤のLEDは単純なオン・オフです。PWMはサイン波で行い、じわっと点灯したり、じわっと消灯するような感じにしました。

     また、この点滅速度はボタンスィッチで変更出来るようにしています。ただし点滅速度の変更をするのはPWMの白色LEDだけです。青と赤は一定の間隔で点滅させておきます。

     PWMは速度変更も含めソフトウエアのループ処理で行い、青と赤のLEDはタイマー割込みで行うようにしました。サイン波の計算はテーブル引きで行っています。

     こちらが出来上がったプログラム(main.asm)です。

    6段階の速度切替、一番速い点滅です。
    中間の速度の点滅です。青の点滅は常に一定です。
    闇夜のUFOです。10秒後あたりから動き出します。