Arduinoでクルマのエンジンが動く? オープンソースECU Speeduino (3)クランク角センサー信号の生成
クランク角センサー信号をつくる
- Speeduinoで、エンジン制御を動かすには、エンジンが回転している情報をマイコンに与える必要があります。
- その準備として、Arduinoマイコンを使い、クランク角センサの疑似信号をつくります。
クランク角センサーって
- エンジンの回転を検出するセンサーです。
- エンジン回転数の計測、燃料噴射・点火タイミングの基準に使われます。
- 4サイクルエンジンでは、2回転(720 deg)で一通りの工程(吸気,圧縮,膨張,排気)が行われるため、カム角センサーなどを併用してエンジンの工程を識別しています。
クランク角センサー(カム角センサー)の波形パターンは、メーカーや車種等により様々です。
下記に、Speeduinoで対応しているクランク角センサーの情報があります。
https://speeduino.com/wiki/index.php/Decoders
クランク角センサー信号には、回転角の目印となる歯欠けがあり、波形の生成が面倒です。
SpeeduinoのコミュニティサイトのBEGINNER'S GUIDEに、Ardu-Stimというツールが紹介されてました。これを使って、Speeduinoにクランク信号を入力します。
https://speeduino.com/forum/viewtopic.php?f=21&t=221
用意するもの
Arduino Uno、または、互換ボード
(SPeeduinoとは別に、クランク角センサーの疑似信号生成に使います)
インストール
Ardu-Stimのソースコード
https://gitlab.com/libreems-suite/ardu-stim/tree/masterDeviceDruid(Ardu-StimのGUIに使用) Windows10(64bit)とLinuxに対応
https://devicedruid.com/downloads/
Ardu-Stimのビルド
- Arduino IDEを起動
- スケッチ→ライブラリをインクルード→ライブラリの管理より、SerialUIライブラリをインストールします。
- ビルドし、マイコンボードに書き込みます。
DeviceDruid
- DeviceDruidを起動します。
- シリアルポートを指定し、9600bpsに設定します。
- メニュー画面で、Wheel Optionsに進みます。
- List wheelsをクリックすると、クランク角センサの一覧が表示されます。 (定期的にpingが行われており、テキスト画面がスクロールしてしまうため、Druid Settings>Device poll intervalを最大にするといいみたいです。)
- Choose wheelsで25を入力します。 (ここでは、25: 36-1 crank with 2nd trigger on teeth 33-34というパターンを使用します。)
4.Topメニューに戻り、Set Fixed RPMで回転数(例えば1500)を入力します。
クランク角センサ信号の確認
ArduinoのIOピンから、設定した回転数のクランク角センサ信号が出力されます。
- Pin8: クランク角センサ信号
- Pin9: カム角センサ信号(2ndクランク角センサ信号)
クランク角センサー(カム角センサー)波形データ
Ardu-Stimのソースコードwheel_def.hに以下のようなデータで記述されています。
(bit0:パルス1,bit1:パルス2 0-3の値をとる)
wheeldef.h
// const unsigned char thirty_six_minus_one_with_second_trigger[] PROGMEM = "CM1/2,36,35t,1m:cM1/2,36,16m,1t,19m";
/* 36-1 with second trigger pulse across teeth 33-34 on first rotation */
const unsigned char thirty_six_minus_one_with_second_trigger[] PROGMEM =
{ /* 36-1 */
1,0,1,0,1,0,1,0,1,0, /* Teeth 1-5 */
1,0,1,0,1,0,1,0,1,0, /* Teeth 6-10 */
1,0,1,0,1,0,1,0,1,0, /* Teeth 11-15 */
1,0,1,0,1,0,1,0,1,0, /* Teeth 16-20 */
1,0,1,0,1,0,1,0,1,0, /* Teeth 21-25 */
1,0,1,0,1,0,1,0,1,0, /* Teeth 26-30 */
1,0,1,0,3,2,3,2,1,0, /* Teeth 31-35, second trigger during 33-34 */
0,0, /* 36th tooth MISSING */
1,0,1,0,1,0,1,0,1,0, /* Revolution 2 Teeth 1-5 */
1,0,1,0,1,0,1,0,1,0, /* Teeth 6-10 */
1,0,1,0,1,0,1,0,1,0, /* Teeth 11-15 */
1,0,1,0,1,0,1,0,1,0, /* Teeth 16-20 */
1,0,1,0,1,0,1,0,1,0, /* Teeth 21-25 */
1,0,1,0,1,0,1,0,1,0, /* Teeth 26-30 */
1,0,1,0,1,0,1,0,1,0, /* Teeth 31-35 */
0,0 /* 36th MISSING tooth */
};
参考
- Speeduino Forum Speeduinoのコミュニティサイト
https://speeduino.com/forum/ - Speeduino manual
https://speeduino.com/Speeduino_manual.pdf
最後に
クランク角センサの信号が生成できるようになりました。
次は、Speeduinoと接続して回転数を確認する予定です。
Author And Source
この問題について(Arduinoでクルマのエンジンが動く? オープンソースECU Speeduino (3)クランク角センサー信号の生成), 我々は、より多くの情報をここで見つけました https://qiita.com/covao/items/af936d3aa246510ef081著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .