2022/07/30(SAT) マイコン使ったウインカーリレーA
はい。ウインカーリレーやってます。
今日はプログラムがほぼ決まったので解説。
今回使っているマイコンは
PIC12F675ってやつ
今回はAD変換を使う必要があるので
それが内臓されている奴。
8ピンのマイコンです。
電源2入力4出力2
ということで、マイコンの足をフルに使います。
ピンアサインは↓こんな感じ
フォト

こんなにフルに使うのって滅多にないね
ざっくりとした回路図は↓こんな感じね
フォト

あ、ハザードスイッチのプルアップ抵抗書くの忘れたw
GP0の可変抵抗器は
点滅の速度調整に使います。
で、プログラム
アセンブラね。
コメント打ってあるから解説はいらないかもですが
ざっくりは下のほうに書きます
フォト

フォト

フォト

フォト

フォト

フォト

フォト

フォト

フォト

フォト

フォト

フォト

1〜14行目:コンフィグ設定とかほぼお決まり
18〜20行目:定数を宣言しています
22〜32行目:変数を宣言しています

35行目からプログラム開始。いきなりGOTOしてますけど

38〜71行目:ここは割り込み処理です
タイマー割り込みでウインカーの点滅を表現してます

73行目からが初期化処理です
各レジスタの初期化をしています
特記事項は特にないかな?
入力出力の設定をやってたりします

125〜163行目:メイン処理です
・AD値を取得します
・ハザードボタンが押下されたか判定
・ウインカー右?左?の判定
・オンの時の処理(146行目〜)
・オフの時の処理(157行目〜)

165〜189行目:ハザードボタンの判定
プッシュ型のスイッチを想定しているので
プログラム上でオン/オフをトグルしています

191〜220行目:点滅スタート処理
ウインカーやハザードがオンになった時にコールされます
オンとしたときに光るところから
ウインカーがスタートするようにしています
簡単にいうと
電球を光らせてタイマーをスタートさせています

222〜226行目:ちょっとしたウェイト処理
AD変換の待ち処理です

228〜235行目:AD値取得処理
可変抵抗器から値を拾います。
で、それを0〜255の数値に変換して
それをウインカーのタイマーの点滅間隔に使ってます。
10msのタイマーを何回ループするかとしています
なので、最速は10msで
最長は255×10ms=2550ms=2.55秒
となっています(たぶん)

スペシャルモードの解説
ハザードスイッチを押したまま電源を入れると
スペシャルモードとして立ち上がります
ハザード時に、右→左→右→左→右→左→・・・
となります。
という、いらねー機能www

あとは回路を実際に組むところですかね。
そこも小型化するのに課題がありそうですけど。