前回でドエルタイムの制御が出来るようになったので、今回は点火時期制御です。
点火時期を制御出来れば、「ECU」ってことになりますかね???
では、点火時期制御の考え方です。
クランク角を番地管理で把握できたので、後はそのポイントから「○○度遅れて点火」って制御させます。
↓の画像は、SP-TDCでのCB-Fの波形で上がクランク角、下が点火コイルです。
この②上死点前37度から、点火したい角度を引いたタイミングで点火信号を発生させます。
例えば上死点前10度で点火したい場合は37度ー10度=27度待って点火ってこと。
ただPICは角度の認識が出来ないので27度を時間に変えてカウントします。
今回のプログラムで回転数のカウントは51.2usで1カウント、それをクランク角で30度分計測してます。
0.4usでそのカウント数分だと0.234375度になり、27度/0.234375=115回繰り返せば26.95度になります。
もう少し具体的にはカウント数が「100」だったとすると、100×51.2×12=61,440us、1000000/61440×60=977rpmとなりますね。そのカウント「100」を0.4us×100=40us、40us×115=4600us待って点火となります。
逆算すると61440/360=170.666usが1度、27度なら170×27=4608usとなります。8us違いますが、誤差の内ってことで・・・
後は回転数に応じた点火時期の数値をテーブルに設定して、その都度計算させます。
では、うまく制御できるでしょうか?
40msの周期なので1500rpmですね。ズームアップ↓してみます。
上死点前10度で点火してますね。
では回転をあげて20ms、3000rpmです。
ちゃんと進角してますね。
次はベンチテストですの予定です。