スピードメーター補正デバイス 完成

連日になるけど、スピードヒーラーみたいなの自作する続き。

AmazonからATTiny85 USB開発ボードが届いたので早速検証したけど、やっぱUnoと同じスケッチだとエラーが出る。割り込みに宣言が必要だったり、諸々。

試行錯誤した部分を全部すっ飛ばして最終版が下記。

const int sensorPin = 2; // センサーからのパルスを受け取るピン(INT0)
const int outputPin = 3; // パルスを出力するピン
const int ledPin = 1;   // 本体LED(確認用)

volatile int inputPulseCount = 0;
volatile bool pulseFlag = false;
int pulsesPerRevolution = 8; // 1回転あたりの入力パルス数
float pulseRatio = 1.214;  // タイヤサイズの比率
float accumulatedPulse = 0; // 出力パルスの生成タイミングを累積する変数

void setup() {
  pinMode(sensorPin, INPUT_PULLUP);
  pinMode(outputPin, OUTPUT);
  pinMode(ledPin, OUTPUT);
  attachInterrupt(0, countPulse, RISING); // INT0を割り込みとして設定
}

void loop() {
  if (pulseFlag) {
    pulseFlag = false;
   
    inputPulseCount++;
    accumulatedPulse += pulseRatio;

    // 出力パルスを生成
    while (accumulatedPulse >= 1.0) {
      digitalWrite(outputPin, HIGH);
      digitalWrite(ledPin, HIGH);
      delayMicroseconds(500);
      digitalWrite(outputPin, LOW);
      digitalWrite(ledPin, LOW);
      delayMicroseconds(5000);
      accumulatedPulse -= 1.0; // 累積を減算
    }

    // 1回転が完了したらカウントをリセット
    if (inputPulseCount >= pulsesPerRevolution) {
      inputPulseCount = 0;
      accumulatedPulse = 0;
    }
  }
}

void countPulse() {
  pulseFlag = true;
}

後は車体に取り付けるための準備。



2番ピンにスピードセンサーからの入力、変換されたパルスを3番ピンでメーターへ出力。
VINとGNDはメーターとセンサーの間に割り込ませて完了。

カプラ類は先日壊れたスピードヒーラーのを流用。

新たに購入する必要がある場合は、Hi-1000com様にて入手可能。
何でもあるから本当毎度助かってます・・・。

●住友電装090型MT防水シリーズ3極Fコネクタのみ(三角型)[白色](端子別)/3P090WP-MT-T-F-tr - 配線コム (shop-pro.jp)

●住友電装090型MT防水シリーズ3極Mコネクタのみ(三角型)[白色](端子別)/3P090WP-MT-T-M-tr - 配線コム (shop-pro.jp)

スピードヒーラーみたいに熱圧縮チューブで防水にしようかと思ったけど、メンテ用にUSB端子を使えるようにしておきたかったのでケースを設計してプリント。


念のためケーブルを通す部分とかの隙間はホットボンドで塞いでおく。

あとは車体のメーターとスピードセンサーの間に割り込ませてイグニッションON。
ちょっと走りに行ったけど、問題なさそう。

とりあえず、これで暫く様子見。

ちなみにパーツ代としては、

ATTiny85 3個で1700円
AWG28ぐらいの線が 5m 10色セットで980円

なので実質1000円かかってない感じ。


コメント