電動スライドドアの予約ロックの自作に挑戦③:回路図編
- 2026.10.23
- 車
前回の下調べ編からの続きです。
実は、ここまでの間にGoogle AIに相談しながらタイマーICを使って色々と試しましたが、スイッチとドアノブ操作時のアクションだけを拾うことはできませんでした。回路設計ができない僕の知能ではもちろん無理だけど、Google AIをもってしてもスイッチ配線の2-3Vだけに反応する回路が実現できなかったのです🥺
※ちなみに、エンジン始動時はこの2-3Vは3-4Vに上昇しますが、エンジン始動時にロックを掛けることはないので、2-3Vのみ対象にすれば都合が良いです☝
そこで、部品箱を漁っていたら、何か見慣れないICが出てきました。
Google AIに聞いたら、それはマイコンやん! それ持ってるなら早く言えよ!と叱られました🥺笑

Google AI曰く、マイコンにはA/Dコンバーターが入ってるから、電圧を範囲指定して特定の電圧だけ検知できるとのこと☝
ただ、問題はマイコンにプログラムを書き込むライターが必要とのこと。
どんなものか聞いたら、何か見覚えがあるなと思い、押し入れを漁ったら出てきました!

使った事もないし使い方も知らないけど、昔何か企んでいたようです🥺笑
さらに聞いたら、このメーカーがライター用ソフトを出してるとのことで、ダウンロードしてみたらライターが動きました✨
※但し最新バージョンではPICkit3の対応が廃止されていたので、旧バージョンを入れたら対応してました

ライター用ソフトはMPLAB X IDEと言うソフトで、ここへGoogle AIが書いてくれたプログラムを貼り、HEXファイルにコンパイルして、USBで繋いだPICkit3で書き込む、と言う流れになります。プログラムも使い方も全部Google AIが教えてくれたので、何も知らない僕でも書き込みできました☝笑
※ぶっちゃけつまずくことは多かったけど、ひとつずつ潰していったらクリアできました笑

ちなみに、Google AIが書いてくれたプログラム(C言語)はこちらです。
※僕が書いた訳じゃないのでクレームはGoogleへ☝笑
※何度もトライ&エラーして追加・修正の末に完成したコードです
#include <xc.h>
#pragma config FOSC = INTOSCIO
#pragma config WDTE = OFF
#pragma config PWRTE = ON
#pragma config MCLRE = OFF
#define _XTAL_FREQ 4000000
// ストライクゾーンを2.45Vの前後(2.20V-2.80V)に絞り込み
#define THRESHOLD_LOW 450 // 2.20V (下限) 1023/5*2.2≒450
#define THRESHOLD_HIGH 573 // 2.80V (上限) 1023/5*2.8≒573
// 通過ノイズを弾くため10回(100ms)連続一致を監視
#define ON_FILTER_COUNT 10
void main(void) {
CCP1CON = 0x00;
CMCON0 = 0x07;
OPTION_REGbits.nGPPU = 1;
WPU = 0x00;
GPIO = 0x00;
TRISIO = 0b00111011;
ANSELbits.ANS0 = 1;
ANSELbits.ADCS = 1;
ADCON0bits.ADFM = 1;
ADCON0bits.VCFG = 0;
ADCON0bits.CHS = 0;
ADCON0bits.ADON = 1;
GP2 = 0;
__delay_ms(1000);
unsigned int relay_timer = 0;
unsigned int adc_val10 = 0;
unsigned int low_voltage_counter = 0;
while(1) {
__delay_ms(10);
ADCON0bits.GO_DONE = 1;
while (ADCON0bits.GO_DONE == 1) {
__nop();
}
adc_val10 = (unsigned int)((ADRESH << 8) | ADRESL);
// 電圧範囲 & 100ms時間積分判定
// 2.20V-2.80Vの電圧範囲のみカウントアップ
if (adc_val10 >= THRESHOLD_LOW && adc_val10 <= THRESHOLD_HIGH) {
low_voltage_counter++;
// 10回(100ms)連続ならボタン操作とみなしてON!
if (low_voltage_counter >= ON_FILTER_COUNT) {
GP2 = 1;
relay_timer = 1000; // 10秒延長タイマー
low_voltage_counter = ON_FILTER_COUNT; // カウンターオーバーフロー防止
}
}
else {
// 範囲から一瞬でも外れたらリセット!
low_voltage_counter = 0;
if (relay_timer > 0) {
relay_timer--;
if (relay_timer == 0) {
GP2 = 0;
}
}
}
}
}
そして、マイコンへの書き込みに続いて、そのマイコンを使うための回路図もGoogle AIが描いてくれました。
と言っても、文章で教えてくれたものを僕が図面化しなきゃなりませんが💦

ホントに動くのかブレッドボードで試してみました。
実際に車両に繋いでみたら、スイッチ操作、外ハンドル操作、内ノブ操作のいずれにも反応してくれました✨
※実際には数え切れない回数のリベンジを経てます笑
※10秒は長くて煩わしいので5秒でテストしてます笑
無事、回路が成功したので、基板図も描きました。

左右のドアに付けたいので2ヶ作りました。

そして、スイッチ配線の2-3Vの反応とは別に、車両側の別のモードの電圧1Vや6Vに反応しないかどうか、12Vや0Vを与えてみて、それらが排除できていることを入念に確認しました。
そして、ついに予約ロック自作キットが完成しました✨

④実装編へつづく
-
前の記事
電動スライドドアの予約ロックの自作に挑戦②:下調べ編 2026.10.23
-
次の記事
電動スライドドアの予約ロックの自作に挑戦④:実装編 2026.10.23