アナログタコメータをつくる(2) Arduinoとステッピングモータ
- カテゴリ: HA36Sアルト
- 投稿日時: 2018/02/04(日) 23:39:41
前回は OBD2 スキャナを改造して信号線を引き出したところまででした。引き続き制御部をこしらえていきます。
クルマとマイコンを OBD2 で接続してゴニョゴニョしている例は Web にたくさん見つかりますが、方向性はだいたい二手に分かれるようです。車載ネットワーク CAN にまで踏み込んですべて自前でやるか、深いところは ELM327 に任せて表層だけすくい取るか。当然、自分は後者です。なのでスキャナの改造から入ったわけで。
さて Arduino です。3D プリンタの制御基板として長いこと使ってはいますが、あちらには Marlin というすばらしいファームウェアがあるので、プログラミングのことは全然わからずとも使えてました。せいぜい自分の環境に合わせてちょっとヘッダファイルを書き換えるくらい。内容は全く理解していません。
なぜかうちには Arduino UNO とその互換機が計3枚あります。純正品は職場の人にもらったもの、中華な互換機は 3D スキャナ Ciclop で使っているもの。やばいところをショートさせて壊してしまい同じものを買い増ししました。その後よくよく調べてみたらシリアル周りが死んでいるだけだったので、シリアル変換基板を入手すれば使えないことはないはず。なので合計3枚です。まあ互換機はともかくとして、せっかく UNO があるのだから、プロトタイプはこれを使って作り込んでいくことにしますかね。最終的にはもっと小さな Arduino に移植すればよいかと。
本プロジェクトで目指すのはこんなかんじのものです。
- 針のあるメカ式のアナログタコメータ
- オプティトロン、いわゆる自発光式とする。文字盤と針を光らせる
- Cdsで周囲の明るさを取得して文字盤バックライトの調光をする
ホントはタコメータとは別に LCD を装備して、エンジン回転数以外の情報、例えば吸気温度とかトルクとかも表示させる予定でスタートしたのですが、もろもろの事情でひとまずタコメータのみです。このあたりの詳細はいずれ。
まずは針をどうやって動かすのかというところから。
ひと昔前のタコメータは、簡単に言うとただの電流計または電圧計だったわけですが、最近のものはステッピングモータ駆動なのだそうです。ステッピングモータを Arduino で動かすのは簡単そうですよね。
スペック不明ですがどれもこれもたぶん 12V 駆動なんですよね。5V 出力の Adruino から直接駆動することはできませぬ。基板が燃えちゃいます。
モータドライバ A4988 ですね。Ciclop のシールドをショートで破損したときに手配した分の余りものです。これを使えば 12V のモータも動かすことができます。ひとまず繋いで動かしてみます。
Arduino はライブラリが重要です。標準で提供されている Stepper ライブラリ はそれはそれでよいものですが、今回のような外部ドライバには対応していないようです。その道で定番の AccelStepper を試してみました。参考にさせていただいたのはこちら。
シリアルモニタ経由で PC から入力した数値に応じて回転させたり、アナログ入力に可変抵抗をつないで読んでみたり。難なく動きます。いやー、こりゃ便利だわ。
12V 駆動のステップモータが動かせる事はわかりましたが、問題は原点出し。ご存知の通りステップモータは、電源が落ちると位置を忘れてしまいます。なので電源投入時に必ず原点出しというステップを踏む必要があります。
普通の産業用機器の場合は、位置を検出する何かしらのセンサを使って、ホーミングとか原点サーチとか、そんな初期化動作をするのが常道。機械式のリミットスイッチでもフォトインタラプタでもなんでもよし。
でまあ、最初はその線で進めてましたが、やめました。ドグやらステーなんやらでスペースをかなり食うんですよね。で、考えました。
トルクがめっちゃ小さいモータだったら、メカストに当てて更に回そうとすると脱調するじゃないですか。その時の位置は変わらないので、そこを原点にすればいいんじゃないかと。
調べると、どうやら最近の車載メータはみなそういう制御をしているっぽいことがわかりました。俗にオープニングセレモニーと呼ばれているアレが原点サーチの模様。考えることはみな同じなんですね。
ってことで、低トルクのステッピングモータを探します。Arduino は 5V 出力なので、できれば 5V 駆動品が良いです。
最初に見つけたのはこれ。28BYJ-48 というものです。インターフェイスボードとセットで 1.6USD 。
殻割りして減速機構をオミットすることも考えましたが、そうすると分解能が 5.625°/Pulse で荒すぎ。5線式と結線もちょっと特殊で、インターフェイスボードも思ったより大きいです。ちょっと今回の用途には向かないかな。
次に見つけたのはこれ。X27.168 というモータ。実はこれ、GMなどのメータパネルに使われているまさに自動車メータ用のステッピングモータです。ズバリこれでしょう。1.68USD。
X27.168 は Juken Swiss Technology というスイスの会社の製品です。どうやらメータ用ステッピングモータの専業メーカーみたいですね。
X27.168 の資料はフライヤー( ちらし ) の形で見ることができます。
http://www.jukenswisstech.com/JSTFiles/downloads/2011/06/X27_Flyer_v1.3.pdf
X27.168 は内部にメカストがあり一回転は回りません。動作範囲は最大315°。
更に、Arduino で使えるライブラリが見つかりました。
Switec X25 library
このライブラリを使えば、簡単に原点出しができます。すばらしい。感謝しかありません。
ライブラリを AccelStepper から SwitecX25 に入れ替え、モータドライバ A4988 を取り外してモータを Arduino に直結、適当なスケッチを書き込んで動作確認。よいですね。モータはこれに決定です。
次回は本プロジェクトの一番のキモである OBD2 ライブラリについて書く予定です。
Tweet
コメント
この記事へのコメントはありません