#クランク角センサー信号をつくる
前回記事 (2)まずは動かしてみる
- 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/master -
DeviceDruid(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と接続して回転数を確認する予定です。