以前作った555がワンショット動作をしてリレーを一定時間だけONするってだけの基板であるが、取付後、毎日快調に動作している。そんな中で、DigiSpark互換機、ATTiny85というその名の如く小さなマイコンがあることを知った。Arduinoの開発環境が使えてGPIOは6本あり、三端子レギュレータ78L05も搭載されているので12Vをぶち込んでもいいだろう。データシートを見ると各GPIOは40mA流せることになっているから、普段よく使用する5VリレーのATQ209の定格励磁電流は28.1mAなので、追加部品不要で直接ドライブできる。実に好都合。
マイコンだと「何秒後にリレーを何秒ON」みたいなことは得意なわけで、そんなプログラムを組んでみる、11秒後にリレーを0.5秒ONしてやるだけのプログラムを作ってみた。
/*
アイドリングストップキャンセラー
・For ATTiny85 Internal Clock 8MHz
・ATQ209 DC5V_Relay
*/
unsigned long previousMillis = 0; // 最後に処理を行った時間
unsigned long interval = 11000; // 11秒
unsigned long waitTime = 30000; // 30秒
bool actionDone = false; // 一度だけ実行するためのフラグ
void setup()
{
pinMode(4, OUTPUT); // リレー接続端子
pinMode(1, OUTPUT); // ボード上のLED
// 実行までLEDを明滅させる
for (int i = 0; i < 5; i++) {
for (int brightness = 0; brightness <= 255; brightness++) {
analogWrite(1, brightness); // PWM による明るさ調整
delay(10); // 少し待つ
}
delay(40); // 40ms
for (int brightness = 255; brightness >= 0; brightness--) {
analogWrite(1, brightness); // PWM による明るさ調整
delay(10); // 少し待つ
}
delay(40); // 40ms
}
}
void loop()
{
unsigned long currentMillis = millis(); // 現在の時間を取得
// 11秒を超えたら一度だけリレーとLEDを500ms ONにする
if (currentMillis - previousMillis >= interval && !actionDone) {
digitalWrite(4, HIGH); // リレーON
digitalWrite(1, HIGH); // LED_ON
delay(500); // 500ms ON
digitalWrite(4, LOW); // リレーOFF
digitalWrite(1, LOW); // LED_OFF
actionDone = true; // 一度実行したのでフラグを立てる
previousMillis = currentMillis; // 最後の実行時刻を更新
}
// タイムカウントが30秒を超えたら待機状態へ
if (currentMillis - previousMillis >= waitTime) {
while (true) {
// ここで待機状態にする(動作しない)
}
}
}
で、これをArduinoIDEで焼こうと思ったらUSBでつないだだけではどうもうまくいかないっぽくて。先人の教えを調べるとArduino UNOを母艦にして焼くArduino as ISPというのが正攻法らしいのでそれに従ってみたらすんなり焼けた。

接続は以下のとおりとする。
UNO | ATTiny85 |
5V | 5V |
GND | GND |
D10 | P5 |
D11 | P0 |
D12 | P1 |
D13 | P2 |
焼けたら外してしまっていい。何回もやるもんじゃないからピンヘッダは最初から付けていない。

回路図を示す。部品点数が少ないのが良い。
点線から右側はUNOなので焼けたら不要、焼き直すことも無いと思うのではんだ付けして実装してしまった。と言っても実質VIN(ACC)とGNDとP4がリレーに行くだけ、配線は3本。行先はACCとGNDとアイドリングストップ信号線なのは変わらない。この基板の利点はCRが不要で任意のタイミングで動作させることができることに尽きるだろう。11秒としたのはエンジンが暖機状態だと13秒くらいでアイドリングストップ機構が発動してしまうからである。
以前作った555がワンショット動作をしてリレーを一定時間だけONするってだけの基板と交換が容易になるので、コネクタを同じにしておいて入れ替えてみたが動作は良好。