元杜重工

*あつめたりつくったり* 過去資料整理中
鉄道・船・マンホールの写真と艦船プラモデル・電子工作も少々

PICでAD変換とPWM制御

2020年07月11日 | 電子工作
雨で外出もできないので久々にマイコン工作。

LEDキャンドル的なものを作ってみました。
スイッチ付けたらヒカルだけでは面白くないので、ボリュームで明るさを調整できるようにしました。

実用性を考えてサイズは最小化。5cm x 4cmくらい。
ボタン電池LR44 x2個で動きます。PIC12F1822使用。



回路はこんな感じ。
部品数が少ないのにちゃんと動くのがPICマイコンの偉いところ。


MPLABのXC8とPICkit3で構築。

◆ピンの設定
TRISA = 0b010000;
ANSELA = 0b010000; // RA4をアナログ入力
PORTA = 0b000000;
WPUA = 0b000000;

◆PWM関連
CCP1CON = 0b00001100 ; // PWM機能を使用する
CCP1SEL = 1; // CCP1/P1A の機能を RA5 に割り当てる
T2CON = 0b00000001 ; // TMR2プリスケーラ値を4倍に設定
CCPR1L = 0 ; // デューティ値は0で初期化
TMR2 = 0 ; // Timer2カウンターを初期化
PR2 = 255 ; // PWMの周期を設定(4MHzなら249=1000Hz)
TMR2ON = 1; // TMR2(PWM)スタート

◆AD変換関連
ADCON0 = 0b00001101; // AN3(RA4)をアナログ チャンネル選択 ADC を有効
ADCON1 = 0b00010000; // 左詰め FOSC/8 V_DDを参照

◆AD変換実行
GO_nDONE = 1;
while(GO_nDONE);
今回は左詰めにして上位8bitだけ参照してchar型の変数に格納して使いました。
i = ADRESH;
これを
CCPR1L = akarusa;       // 大きいほどLEDは暗い
すればほぼ出来上がり。

たったこれだけですが、鈍った半田ごて裁きを取り戻すにはよかったかも。簡単な工作ですが、ちゃんと調光できるので面白いですね。このくらいならマイコンいらなくねとか思うけど、まぁオートパワーオフとか炎のようにゆらゆら点灯とかもプログラム次第ではできるので。


最新の画像もっと見る

コメントを投稿