おぼえがき

バイクの細かな整備情報などをアップしていきます。

AIを使ってバイクのECUを自作しよう②点火システムを作る

前回からのつづき

outofnikuyoku.hatenablog.com

 

リアルタイムでエンジン回転数を検出できるようになったので、ここに点火回路を組み込むだけ!と思っていましたがそう楽ではありませんでした。

 

1.MOSFETを使用したTCI点火回路の自作

これがどうにも上手くいきませんでした。

配線の繋ぎ方が違う?そもそも部品の選定を間違えている??など色々考えましたが、そもそも知識が乏しすぎて何が正しくて何が間違いなのか分からなくなってきました。

AIに2SC3355トランジスタの足の配置を聞いたらデータシートと違う回答が返ってきたりもしたので、AIの言うこともわりと間違えたり正しかったり、、、頭が痛くなります。

 

2.汎用DC-CDIを使う

そこで思いつきました。点火回路は自作せずに、既存のCDIで置き換えれば良いのでは…??

Amazon | Yctze 4 ピン CDI ボックス 4 ピン DC CDI 4 点火モジュールはレブリミットを排除し、ほとんどの 50cc 70cc 9 11 スクーター ATV DY100 の速度を向上させます。 | バイク用CDI・リミッターカット | 車&バイク

f:id:kamaboko13:20260722191757j:image

物価高騰の影響か、数年前から2倍近く値段が上がっていますがこの辺のものを使います。

今回のレッツ4のように点火コイルがない車種の場合(そもそもFI車に点火コイルはありませんが)AC-CDIは使えないのでDC-CDIを使います。

この方法ならArduinoからは点火用の信号を出すだけであとはCDIが点火に必要な工程を担ってくれます。ドエルタイム(IGコイルに電力をチャージする時間)の制御なども省略できるのでコードもかなり短くなります。

f:id:kamaboko13:20260722191810j:image

3.無事完成!!!

Arduinoから点火信号を出すようにし、クランキングしてきちんと火花が出ることを確認。

ジェミニと少しコードの修正をしながらセルを回すと…エンジンがかかりました!!!

嬉しかったので動画も撮りました。

youtube.com

(レッツ4と言っていましたが実験で使っているのはV50です。エンジンは同じなのでご容赦ください)

少し進角ぎみの感じですが、これはコードの修正でいくらでも改良可能です。

一応Arduinoでクランク角を監視しているのでCDIの点火特性に合わせて任意のタイミングで点火させることが可能です。言い換えれば、直流12Vで動くCDIであれば何でも流用可能という事です。

以下が今回のソースコード。

 

const int INPUT_PIN = 2;       // VRセンサー入力
const int IGNITION_PIN = 13;   // CDI駆動信号

volatile unsigned long lastPulseTime = 0;
volatile unsigned long firstPulseTime = 0;
volatile unsigned long pulse4Time = 0;
volatile unsigned long pulse5Time = 0;    
volatile unsigned long rotationPeriod = 0;
volatile bool newRotation = false;

volatile bool triggerPulse4 = false;
volatile bool triggerPulse5 = false;

volatile int pulseCount = 0;

const int PULSES_PER_ROTATION = 10;
const unsigned long DEADBAND_TIME = 400UL;

// ★【超重要パラメータ】パルス5(TDC仮定)から何度遅らせて点火するか
// 息が詰まる場合は点火が早すぎるため、遅延度数(DELAY_DEGREES)を大きめ(20〜30)にするか、
// 下記のパルス4直接点火を試します。
float DELAY_DEGREES = 15.0;

enum SparkState { IDLE, WAITING_FOR_SPARK };
SparkState sparkState = IDLE;
unsigned long targetSparkTime = 0;

void onPulse() {
  unsigned long currentTime = micros();
  unsigned long interval = currentTime - lastPulseTime;
 
  if (interval > DEADBAND_TIME) {
    if (pulseCount == 0) firstPulseTime = currentTime;
    pulseCount++;
   
    // 4個目の突起(TDCの36度手前)
    if (pulseCount == 4) {
      pulse4Time = currentTime;
      triggerPulse4 = true;
    }

    // 5個目の突起(TDC仮定)
    if (pulseCount == 5) {
      pulse5Time = currentTime;
      triggerPulse5 = true;
    }
   
    if (pulseCount >= PULSES_PER_ROTATION) {
      rotationPeriod = currentTime - firstPulseTime;
      newRotation = true;
      pulseCount = 0;
    }
    lastPulseTime = currentTime;
  }
}

void setup() {
  Serial.begin(9600);
  pinMode(INPUT_PIN, INPUT_PULLUP);
  pinMode(IGNITION_PIN, OUTPUT);
  digitalWrite(IGNITION_PIN, LOW);
 
  attachInterrupt(digitalPinToInterrupt(INPUT_PIN), onPulse, FALLING);
}

void loop() {
  unsigned long currentTime = micros();
  static float usPerDegree = 0.0;

  if (newRotation) {
    unsigned long currentPeriod;
    noInterrupts();
    newRotation = false;
    currentPeriod = rotationPeriod;
    interrupts();
   
    if (currentPeriod > 0) {
      usPerDegree = (float)currentPeriod / 360.0;
    }
  }

  // ----- テストモードA: パルス5から微小遅延させて点火 -----
  if (triggerPulse5 && usPerDegree > 0.0) {
    unsigned long p5;
    noInterrupts();
    triggerPulse5 = false;
    p5 = pulse5Time;
    interrupts();

    // DELAY_DEGREES 分だけ待ってから点火(=点火時期を遅らせる)
    unsigned long waitTimeUs = (unsigned long)(DELAY_DEGREES * usPerDegree);
    targetSparkTime = p5 + waitTimeUs;
    sparkState = WAITING_FOR_SPARK;
  }

  if (sparkState == WAITING_FOR_SPARK && (currentTime - targetSparkTime < 1000000UL)) {
    if ((long)(currentTime - targetSparkTime) >= 0) {
      digitalWrite(IGNITION_PIN, HIGH);
      delayMicroseconds(100);
      digitalWrite(IGNITION_PIN, LOW);
      sparkState = IDLE;
    }
  }
}

完全にAI任せのコードなのでまだまだ改良の余地はあると思いますが、ひとまずこれで。

点火系の回路図は

f:id:kamaboko13:20260722191825j:image

 

Arduinoからのピックアップ信号に1kΩの抵抗と保護用のダイオードを付けているだけの簡単なものです。

 

4.おわりに

無事動いてくれて何よりです。やっぱりAIってすごい…!!!

自作と言いながら汎用CDIを使っちゃってる所は大目に見ていただければと思います。

そして本当なら燃料噴射部分も自作しないとECUとは言えない訳ですが、レッツ4はDCP(ディスチャージポンプ)というちょっと特殊な仕組みなので汎用性もないし…今回は点火だけでおしまいにします。どうしても燃料噴射カットのリミッターを解除したい…という方はキャブ仕様にしてください。

今後いい感じにボロいFI車が入った際にはインジェクターの制御の方も挑戦したいと思います。

f:id:kamaboko13:20260722191836j:image

AIを使ってバイクのECUを自作しよう①RPMを検出する

・もしかして、AIを使えば難しいプログラミングも不要なのでは…?

バイクの主流がインジェクション車になって20年近く経ちます。一部の人気車種ならサブコンがメーカーから出ていますが、そうでない車種が多いのも事実。それじゃあ自分でECUを自作して進角制御や燃料噴射量の制御、はたまたリミッター解除をしよう!となるのですが、20年が経過した今でもネット上で検索してもきちんとまとまった情報は出てきません。(やっている人は何人かいるようですが)
自分も昔挑戦して、結局諦めていました。

これの失敗の原因は後程触れますが、何せ当時は手に入れられる情報量が少なすぎた。


しかし今は最先端のツールがあります。それがAI!!
これに相談しながらトライ&エラーを繰り返し、制作していきます。CHATGPTとGeminiを使いましたがGeminiがおすすめです(チャッピーはすぐ口答えする)。

・今回使用したもの

・ArduinoR4minima

Amazon.co.jp: Arduino UNO R4 Minima [ABX00080] - Renesas RA4M1 - USB-C、CAN、DAC (12ビット)、OP AMP、SWDコネクター。 : パソコン・周辺機器


・スズキ アドレスV50(CA44A)

・フォトカプラ(PIC817)

・抵抗器10kΩ,100Ω

・ショットキーバリアダイオード(11EQS03L)

・12V-5Vレギュレータ(BP2593-50)

・ほか配線やテスターなど

 

 

・まずエンジンの回転数を検出しよう

これができないと点火も燃料噴射も始まりません。
「ただのタコメーターでしょ?」と思う方も多いかもしれませんが、最近インジェクション車のフライホイールは歯が複数個付いています。(初期のインジェクション車は歯が

一つでした)クランク角度を正確に認識するためなのですが、これが厄介です。

先ほどのアドレスV125の記事も、ピックアップコイル(VRセンサー)の数を一つだけだと勘違いして設計したためクランク1回転でとんでもない量の火花を飛ばす点火回路になっていました。(それじゃあ動くわけない)

 

単純に1回転1パルスならピックアップからのノイズの除去だけで制御が済むのですが、今回10個の信号と欠歯(歯と歯の感覚が広い部分)を検出してクランク角がどこにあるのか正確に判断しなければいけません。

f:id:kamaboko13:20260715111118j:image

そこのところをGeminiと対話して作ったコードがこちら

const int INPUT_PIN = 2;


volatile unsigned long lastPulseTime = 0;
volatile unsigned long firstPulseTime = 0;
volatile unsigned long rotationPeriod = 0;
volatile bool newRotation = false;
volatile int pulseCount = 0;

const int PULSES_PER_ROTATION = 9; // レッツ4仕様(10-1欠歯)
const unsigned long DEADBAND_TIME = 1000;

void onPulse() {
  unsigned long currentTime = micros();
  unsigned long interval = currentTime - lastPulseTime;
 
  if (interval > DEADBAND_TIME) {
    if (pulseCount == 0) {
      firstPulseTime = currentTime;
    }
   
    pulseCount++;
   
    if (pulseCount >= PULSES_PER_ROTATION) {
      rotationPeriod = currentTime - firstPulseTime;
      newRotation = true;
      pulseCount = 0;
    }
   
    lastPulseTime = currentTime;
  }
}

void setup() {
  Serial.begin(9600);
  pinMode(INPUT_PIN, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(INPUT_PIN), onPulse, FALLING);
 
  Serial.println("=================================");
  Serial.println("  レッツ4 RPMメーター (バグ修正版)");
  Serial.println("=================================");
}

void loop() {
  unsigned long safeLastPulseTime;

  // 1. 変数データの安全なコピー(データの衝突を防ぐ)
  noInterrupts();
  safeLastPulseTime = lastPulseTime;
  interrupts();

  // 2. 停止判定(判定時間を2.5秒に延長し、安全にコピーした時間で比較)
  if (micros() - safeLastPulseTime > 2500000) {
    static unsigned long lastZeroPrint = 0;
    if (millis() - lastZeroPrint > 1000) {
      Serial.println("RPM: 0 (Engine Stopped)");
      lastZeroPrint = millis();
    }
    return;
  }

  // 3. クランク1回転の計算
  if (newRotation) {
    unsigned long currentPeriod;

    // ここでも安全にデータをコピー
    noInterrupts();
    newRotation = false;
    currentPeriod = rotationPeriod;
    interrupts();
   
    if (currentPeriod > 0) {
      float rpm = 60000000.0 / currentPeriod;
     
      static unsigned long lastPrintTime = 0;
      if (millis() - lastPrintTime > 200) {
        Serial.print("クランク1回転の時間: ");
        Serial.print(currentPeriod);
        Serial.print(" us | ");
        Serial.print("RPM: ");
        Serial.println*1 {
    digitalWrite(IGNITION_PIN, LOW);
    isDwelling = false;
  }
}

 

こうなります。

f:id:kamaboko13:20260715195303j:image

こんな具合です。

現時点では点火回路が完成していないので、仮で13番のLEDをチカチカさせているだけ。実際に点火するかまでは確認していません。

この辺り自分もあまり詳しくはないので、AIの言いなりです。何か実際の走行でトラブルが起こる可能性も十分あり得ます。

 

・おわりに

久しぶりにarduinoを使いましたが、やっぱり自分で(AIの力を借りながらですが)何かを作るのって面白い!

仕事そっちのけで何時間もパソコンとバイクの前で試行錯誤するのは大変ですが、うまく動いてくれた時の達成感はたまらないものがあります。

 

次は実際に点火させてエンジンを始動させる事、そしてインジェクターの制御まで進みたいと思っています。詳しい人がいましたら改善案やコメントお待ちしております!

f:id:kamaboko13:20260715111154j:image

つづく

*1:int)rpm);

        lastPrintTime = millis();
      }
    }
  }
}

こうして文章で書くと単純ですが、これをAIから生成させるにはかなり苦労しました…聞き方が悪かったのかもしれませんが何回も訂正を要求しました。
回転数の検知もとくに問題なく動いています。

f:id:kamaboko13:20260715110629j:image

 

・回路図

手書きなので分かりにくいかもしれませんが、あくまでも自分のメモ用ということで…

f:id:kamaboko13:20260715110528j:image

 

・点火機能を付けよう
RPMが正確に出せるようになったら次は点火制御です。これもGemini頼りですが

const int INPUT_PIN = 2;       // VRセンサー
const int IGNITION_PIN = 13;   // 点火出力ピン

// ドエルタイム(通電時間:3.5ms = 3500us)
const unsigned long DWELL_TIME = 3500UL;

volatile unsigned long lastPulseTime = 0;
volatile unsigned long firstPulseTime = 0;
volatile unsigned long rotationPeriod = 0;
volatile bool newRotation = false;
volatile int pulseCount = 0;

// レッツ4 10パルス固定
const int PULSES_PER_ROTATION = 10;
const unsigned long DEADBAND_TIME = 400UL;

// 点火タイマー用の変数
bool isDwelling = false;
unsigned long dwellStartTime = 0;

void onPulse() {
  unsigned long currentTime = micros();
  unsigned long interval = currentTime - lastPulseTime;
 
  if (interval > DEADBAND_TIME) {
    if (pulseCount == 0) {
      firstPulseTime = currentTime;
    }
   
    pulseCount++;
   
    if (pulseCount >= PULSES_PER_ROTATION) {
      rotationPeriod = currentTime - firstPulseTime;
      newRotation = true;
      pulseCount = 0;
    }
   
    lastPulseTime = currentTime;
  }
}

void setup() {
  Serial.begin(9600);
  pinMode(INPUT_PIN, INPUT_PULLUP);
 
  pinMode(IGNITION_PIN, OUTPUT);
  digitalWrite(IGNITION_PIN, LOW);
 
  attachInterrupt(digitalPinToInterrupt(INPUT_PIN), onPulse, FALLING);
 
  Serial.println("=================================");
  Serial.println("レッツ4 常時点火システム(稼働)");
  Serial.println("=================================");
}

void loop() {
  unsigned long currentTime = micros();

  // 1. クランク1回転(10パルス分)が確定したら、即座に通電開始
  if (newRotation) {
    unsigned long currentPeriod;

    noInterrupts();
    newRotation = false;
    currentPeriod = rotationPeriod;
    interrupts();
   
    if (currentPeriod > 0) {
      // 13番ピンを通電(HIGH)にし、時間を記録
      digitalWrite(IGNITION_PIN, HIGH);
      dwellStartTime = currentTime;
      isDwelling = true;

      // RPM表示(確認用:不要ならシリアル通信ごと消去して負荷をゼロにできます)
      float rpm = 60000000.0 / currentPeriod;
      static unsigned long lastPrintTime = 0;
      if (millis() - lastPrintTime > 250) {
        Serial.print("RPM: ");
        Serial.println((int)rpm);
        lastPrintTime = millis();
      }
    }
  }

  // 2. 裏で常に時間を監視し、3.5ms経過したら通電をカットして「点火」
  if (isDwelling && (currentTime - dwellStartTime >= DWELL_TIME

スポットクーラーの冷気が出ない 〜JA-SP25G 〜

夏の猛暑に向けてヤフオクで購入したスポットクーラーの修理です。

 

f:id:kamaboko13:20260518170814p:image

動作確認済みとのことで引き取ってきましたがどうも冷気が出ていないような気がする…。

ガス漏れかと思いましたが、よくよく音を聞いてみるとコンプレッサーが動いている音がしていない感じです。

流石ヤフオク…やられました。

 

このまま泣き寝入りは悲しいのでとりあえず分解してみる事に。

f:id:kamaboko13:20260518171003j:image

スイッチの配線が焦げて外れてる!!

f:id:kamaboko13:20260518171019j:image

スイッチ交換したら動きそうな感じです。

 

f:id:kamaboko13:20260518171126j:image

しかしそこすらもケチりたい自分。スイッチを分解してみると配線の一つに使われていないものを発見。

テスターで当たってみると【切】以外では接点が繋がるよう。おそらくオプションパーツの取り付け用の端子でしょう。

 

そこに外れていた配線を繋げてみると無事冷気が出ました!!

 

ただ、【切】以外の時は常に繋がっている状態のため送風モードでも冷気が出ます。

まあ暑い時に使うものだしいいかな〜。

結果的に良い買い物ができました。

 

※修理を試す場合は自己責任にてお願いします

ヤマハ アクシスZ~冷寒時のアイドリングが低い~

アクシスZ、空冷ながらエンジン音が静かで個人的には好きなバイクなのですが、どうにも暖気完了までのアイドリングが低いです。

 

試しにスロットルボディやISCVも清掃、プラグやエアクリーナーも交換しましたが全く改善せず。ネットにも同じ症状の人がいるようです。

《 バ イ ク 》アクシスZの不調 | 釣りと天気と、ほんとにときどきFX

 

音などを聞いてみても全く同じ症状です。

OBDにつないで各センサーの値を見てもとくに異常なし。

ただ、感じとしては冷寒時の燃調がかなり濃い感じです。

そこで考えました。

「濃いなら薄くしてあげればいいのでは…?」

あいにくインジェクション車なのでキャブのようにセッティングはできません。

なので

 

 

油温センサーを外して、ダミーの抵抗器をつけてあげます。

センサーは油温が上がると抵抗値が下がる仕組みのためセンサーは外さないといけません。

(間違えて外したままキーONにするとECUリセットするまでチェックランプ点きっぱなしになるので注意)

こうすることでエンジンは温まっている状態であるとEUCを騙すことができます。(熱い時は少ない燃料で点火させようとします)

 

そしてエンジン始動!

ブルルルン!

かなり始動しやすくなりました!!少し吹かせばアイドリングもすぐに安定します。

ただ、今度は薄すぎてエンジンがかかりにくいような感じです。

 

470Ωで75℃くらいでした。

 

220Ωで99℃。車体により差はあると思いますが、このあたりでベストな値を見つけていけばかなり症状はよくなるのではないかと思います。

 

ただ、これも本来的に言ったらおかしい事をしているわけで、おそらくはECU本体(あくまで予想ですが)を交換すれば改善するのかな~~?という気はします。

 

しかし1本1円の抵抗で改善できると考えればかなりお得!

大した手間でもないので一度試してみるのも良いかと思います(コメントで参考情報などお待ちしてます)

 

自作PCを組みました~はじめてでも案外何とかなる~

 

自作PC、前々から興味はあるけど実際手を出すには中々ハードルが高く(万が一組み立てミスで壊したら高い!など)踏み出せない人も多いのではないでしょうか。

 

自分もそのクチだったのですが、秋葉原の某PCショップの自作コーナーに行って気が変わりました。

www.sycom.co.jp

※イメージ

「えっ…めちゃくちゃかっちょいい~~~~!!!!」


ガラス張りのケースに光るファンやメモリ、もはやインテリア!

とはいえ何の知識もないので店員さんに

「AEとかで動画編集とかする用に自作したいんですけど、いくらくらいですかね…?」

と聞くと(動画のくだりは知った風を出したかっただけ。実際は編集なんてしない)

 

「3~40万くらいですね」

とのこと。いやそんな高いの買えないよ!!!!

 

結局その日は見るだけで帰宅。それでもやっぱり光るPCを諦められず。

(いや待てよ。別に自作PCだからって高性能にする必要無いのでは…??)

 

自作PCシミュレータというサイトを見つけ、とりあえず適当に部品を選択していく。

2tom.jp

 

あれ、10~15万あれば余裕でPC組めるじゃん!!?

 

別に大した作業もしないし、これでいいと思う!!

 

 

そして次の休日また秋葉原へ。

前回の失敗として、何の前知識や目的もなく質問したのが良くなかった。

向こうも客商売だから冷やかしの相手はしたくないのだろう。そこで今回は

 

・組むのに何の部品が必要でどういった規格があるのか

・何のために自作PCにしたいのか

・予算はどれくらいか

 

くらいは調べたり考えたりしてきた。

つまりは店頭サンプルみたいなギラギラのPCが欲しいけど、初心者でどの部品がどの部品に適合するかわからないので部品の選定を手伝って欲しい~という形で声をかけることに!

「こいつ買う気があるな」と思ってもらえると話も早く、スムーズに相談に乗ってもらうことができました。

パーツ選びの順番としては

1.PCケース(見た目の肝!)

2.CPU(そこまで性能はいらないので安いやつで…)

3.メモリ(これもそこそこで)

4.SSD(一応1TBにした)

5.マザーボード(店員さんに丸投げ)

6.電源(同じく)

 

といった感じで選んでいきました。(グラボはコストカットのため省略)

マザーボードと電源は投げ出した訳ではなく、前に選んだ部品との適合やら兼ね合いで決まってくる部品らしいので店員さんに選んでもらいました。

一応この6つの部品(+OS)さえ揃えばちゃんとPCとして動くと考えると、思いのほか難しいことはないのかなとも思う。

 

あと、後々部品の追加や修理することも考えPCは自分で組み立てることにしました。(組み立て代行費用をケチったとも言う)

 

そして届いた部品がこちら!!!

 

「PC自作 組み方」あたりで検索して調べながら恐る恐る組み立てていきます。

 

自作PCの作り方【手順その1】各PCパーツの紹介・CPU取り付け | 株式会社アスク

 

これがCPUってやつか…!!

ケースには最初からLEDファンが搭載されているものを選びました

 

配線がすごい

光学ドライブないけどOSどうやってインストールするんだ!?と思ったらUSBなんですね~すごい!

 

 

とりあえず繋ぐものを繋いで無事起動!!

 

ちょっと難しそうに見えますが各パーツは基本付けられる所にしか付かないようになっているため、そこまで難航はしませんでした。(それでも3時間くらいはかかりましたが…)

 

つまずいた部分としては、LED用の配線(説明書が全部英語)、ケースのスイッチ用配線(オーディオ?の部分と端子が同じで誤配線してた)追加ファンの取り付け位置(裏表逆に付け間違えた)

くらいだったと思います。

 

あとは配線をうまい具合にまとめて無事完成!!!!

 

うお~~~~めっちゃ良いじゃん!!!!

 

LED色はケースのスイッチで自由に変えられる!楽しい!!

 

メモとして今回使用した部品を挙げておきます

・PCケース:KING45PRO

・CPU:CoreUltra5 225BOX(定格3.3GHz10コア10スレッド)

マザーボード:B860Pro-A Wifi

・メモリ:DDR5-5600 8G×2

・電源:SN7100

・CPUファン:RT400

・追加ファン:AX120

・OS:Windows11

合計¥158,440

 

正直なところ、グラボも無いしCPUの性能も大したことないのでこんなにでかいケースや7個もファンは要らないと思うのですが、個人的にはかなり満足です!

それでも以前まで使っていたPCが13年前のしょぼいノートPCだったことを考えると凄まじい進化!金額もそこそこ抑えられることができましたし(光らせる事や見た目を考えなければもう3万円くらいは安くできそう)組み立てる楽しさも味わえました。

 

あと何年かしてPCの性能が追い付かなくなった場合でもまた自分でパーツ交換すればOKというのも良いところです。

 

自作PC気になっている方、ぜひ一度試してみるのも良いかと思います。

 

 

 

 

 

スズキレッツ4〜カムチェーンテンショナー流用

スズキのレッツ4、悪いバイクではないのですがカムチェーンテンショナーがわりとすぐ壊れます。

 

テンショナーがダメになるとベチベチとチェーンのうなる音が…千切れてエンジンがお釈迦になる前に直しましょう。

と、ここで普通に交換してもあまり面白くありません。

 

f:id:kamaboko13:20250917185624j:image

意外な事にジョグのテンショナーがそのまま流用可能なのです。(取り付けする際にはファンシュラウドに隙間ができるのでテープなどで覆います)

 

それにジョグ用ならテンショナーのスプリングが破損しても交換可能ですし、経済的です。

f:id:kamaboko13:20250917185629j:image

といってもスプリングは純正から出でいないのでホームセンタースプリングです。

↑のものだと少し短いので、もう少し長いのがあればベスト

 

この方法はCA4AAなどレッツ系のエンジンでも共通して使えるため何かと便利です。

また、ジョグにレッツのテンショナーも使えるというわけで活躍する場面は色々あると思います。

 

中古シリンダーなどを購入する時は是非テンショナー付きのものをおすすめです笑

動かない燃料メーターの修理〜SA36Jジョグ〜

 

SA36Jジョグにありがちなトラブルの一つとして、燃料メーターの不動があるかと思います。

どうにか直らないものかとメーター側の接点を磨いてみたりするも変化なし。

燃料計自体をバラしてみると

f:id:kamaboko13:20250917184637j:image

 

写真左側の抵抗が焼けていました。テスターで測ってみるも断然しているようです。

この抵抗をスクラップから見つけてきたメーターのものから移植して交換

(抵抗値37.0Ωと75.0Ωでした。参考までに)

 

すると無事メーターが動きました!

メーターの針を付け直す際には何回か位置を調整しながら良いポイントにあわせましょう。

 

 

追加:ただ、燃料計の故障にもいくつかパターンがあるようで、コイル自体が焼けている時はメーター交換しかないと思います。