【電子工作】バイクのCDIパルス信号を整形してArduino(ATmega328)でステッピングモータ式タコメーターを自作する

バイクのエンジン回転数を正確に把握するため、自作の電気式タコメーター製作を進めています。

今回のテーマは、CDIやピックアップコイルから出力されるパルス信号を安全にArduinoへ取り込み、ステッピングモーターを駆動するための「パルス整形回路」です。

実車の信号を扱う場合はソフトウェアよりも入力回路の設計が重要になることが少なくありません。

特にNSR50やNSF100のようなレーサー車両では点火系ノイズが大きく、適切な対策を行わないと回転数表示が不安定になります。

なぜパルス整形が必要なのか

エンジン回転数はCDIやピックアップコイルから取得できます。

しかし、この信号をそのままArduinoへ入力することはできません。

理由は大きく3つあります。

高電圧

点火系周辺では瞬間的に高い電圧が発生します。

マイコンの入力許容範囲を超える電圧が加わると、最悪の場合はチップが破損します。

ノイズ

イグニッションコイル周辺は非常に強い電磁ノイズが発生します。

ノイズがそのまま入力されると、

  • 回転数が飛ぶ
  • 異常に高い数値を表示する
  • 指針が暴れる

などの問題が発生します。

波形の乱れ

実車のパルス波形は理想的な矩形波ではありません。

マイコンが正しく認識できるよう、綺麗なデジタル信号へ変換する必要があります。

パルス整形回路の構成

今回の回路では3段階で信号処理を行っています。

STEP1:電圧制限とノイズ除去

まず抵抗による分圧回路を使用し、信号電圧を安全なレベルまで低下させます。

さらにダイオードやコンデンサを組み合わせ、

  • サージ吸収
  • 高周波ノイズ除去

を行います。

ここは回路全体の保護を担う重要な部分です。

STEP2:オペアンプによる波形整形

次にオペアンプを利用して信号を増幅します。

単純に電圧を上げるだけではなく、

  • 波形の立ち上がり改善
  • 微小信号の安定化

も目的としています。

STEP3:シュミットトリガによるデジタル化

最終段ではロジックICを使用し、

完全なH/L信号へ変換します。

これによりATmega328の割り込み入力へ安全かつ確実に取り込むことができます。

ステッピングモーターにX27.168を採用

指針駆動にはX27.168を選択しました。

このモーターは自動車の純正メーターにも広く採用されている実績があります。

特徴として、

  • 高精度な位置制御
  • 小型軽量
  • 消費電流が少ない
  • アナログメーター向き

というメリットがあります。

一般的なステッピングモーターではドライバーICが必要になる場合が多いですが、X27.168は比較的シンプルな構成で使用できます。

そのためメーターケース内への組み込みにも適しています。

実車で重要なのはノイズ対策

机上テストでは正常に動いても、実際の車両へ接続すると問題が発生することがあります。

私も試作段階では、

  • 高回転域で誤カウント
  • 指針の振動
  • 瞬間的な回転数ジャンプ

などを経験しました。

実車は想像以上にノイズ環境が厳しく、電子工作の難しさと面白さを実感しています。

今後の予定

現在はパルス整形回路の評価を進めています。

今後は、

  • 回路図の公開
  • Arduinoスケッチ解説
  • X27.168の制御方法
  • NSR50実車テスト

なども順次紹介していく予定です。

まとめ

バイク用電気式タコメーターを自作する上で重要なのは、

  • パルス整形回路による保護
  • ノイズ対策
  • 正確な回転数演算
  • ステッピングモーター制御

の4つです。

今回採用したATmega328とX27.168の組み合わせは、比較的シンプルな構成で高精度なアナログ表示を実現できるため、自作メーターとの相性は良好です。

引き続き実車テストを行いながら、サーキット走行でも使える実用的なタコメーターを目指して開発を進めていきます。


関連記事

【DIY】壊れた純正タコメーターを再生!ステッピングモーターによる電気式への改造

コメント