自作ECU その5

前回でドエルタイムの制御が出来るようになったので、今回は点火時期制御です。
 
点火時期を制御出来れば、「ECU」ってことになりますかね???
 
 
 
では、点火時期制御の考え方です。
 
クランク角を番地管理で把握できたので、後はそのポイントから「○○度遅れて点火」って制御させます。
 
↓の画像は、SP-TDCでのCB-Fの波形で上がクランク角、下が点火コイルです。
 
イメージ 1
①が上死点前67度、②が上死点前37度になります。
 
この②上死点前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違いますが、誤差の内ってことで・・・
 
後は回転数に応じた点火時期の数値をテーブルに設定して、その都度計算させます。
 
では、うまく制御できるでしょうか?
 
イメージ 2
 
 
40msの周期なので1500rpmですね。ズームアップ↓してみます。
 
イメージ 3
死点前10度で点火してますね。
 
 
 
では回転をあげて20ms、3000rpmです。
 
イメージ 4
 
ちゃんと進角してますね。
 
次はベンチテストですの予定です。