7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Arduinoでクルマのエンジンが動く? オープンソースECU Speeduino (3)クランク角センサー信号の生成

Last updated at Posted at 2019-01-04

#クランク角センサー信号をつくる
前回記事 (2)まずは動かしてみる

  • Speeduinoで、エンジン制御を動かすには、エンジンが回転している情報をマイコンに与える必要があります。
  • その準備として、Arduinoマイコンを使い、クランク角センサの疑似信号をつくります。:smiling_imp:

##クランク角センサーって

  • エンジンの回転を検出するセンサーです。
  • エンジン回転数の計測、燃料噴射・点火タイミングの基準に使われます。
  • 4サイクルエンジンでは、2回転(720 deg)で一通りの工程(吸気,圧縮,膨張,排気)が行われるため、カム角センサーなどを併用してエンジンの工程を識別しています。

クランク角センサー(カム角センサー)の波形パターンは、メーカーや車種等により様々です。
下記に、Speeduinoで対応しているクランク角センサーの情報があります。:sunglasses:
https://speeduino.com/wiki/index.php/Decoders

クランク角センサー信号には、回転角の目印となる歯欠けがあり、波形の生成が面倒です。:pensive:
SpeeduinoのコミュニティサイトのBEGINNER'S GUIDEに、Ardu-Stimというツールが紹介されてました。これを使って、Speeduinoにクランク信号を入力します。
https://speeduino.com/forum/viewtopic.php?f=21&t=221

###用意するもの
Arduino Uno、または、互換ボード
(SPeeduinoとは別に、クランク角センサーの疑似信号生成に使います)
###インストール

  1. Ardu-Stimのソースコード
    https://gitlab.com/libreems-suite/ardu-stim/tree/master

  2. DeviceDruid(Ardu-StimのGUIに使用) Windows10(64bit)とLinuxに対応
    https://devicedruid.com/downloads/

###Ardu-Stimのビルド

  1. Arduino IDEを起動
  2. スケッチ→ライブラリをインクルード→ライブラリの管理より、SerialUIライブラリをインストールします。
  3. ビルドし、マイコンボードに書き込みます。

ArdStim_Build.png

###DeviceDruid

  1. DeviceDruidを起動します。
  2. シリアルポートを指定し、9600bpsに設定します。
  3. メニュー画面で、Wheel Optionsに進みます。
  4. List wheelsをクリックすると、クランク角センサの一覧が表示されます。
    (定期的にpingが行われており、テキスト画面がスクロールしてしまうため、Druid Settings>Device poll intervalを最大にするといいみたいです。)
  5. Choose wheelsで25を入力します。
    (ここでは、25: 36-1 crank with 2nd trigger on teeth 33-34というパターンを使用します。)
    Devicecdruid_wheel.png

4.Topメニューに戻り、Set Fixed RPMで回転数(例えば1500)を入力します。
Devicecdruid_menu.png

###クランク角センサ信号の確認
ArduinoのIOピンから、設定した回転数のクランク角センサ信号が出力されます。

  • Pin8: クランク角センサ信号
  • Pin9: カム角センサ信号(2ndクランク角センサ信号)

IMG_000.png

###クランク角センサー(カム角センサー)波形データ
Ardu-Stimのソースコードwheel_def.hに以下のようなデータで記述されています。
(bit0:パルス1,bit1:パルス2 0-3の値をとる)
wheeldef.h

wheel_def.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 */
   }; 
   

##参考

##最後に
クランク角センサの信号が生成できるようになりました。:smile:
次は、Speeduinoと接続して回転数を確認する予定です。

7
7
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?