2011年10月19日作成 2011年10月23日更新
ノックセンサーをマイコンに繋いでノッキングを検出させるための下調べとして、ノックセンサーの出力信号を録音してみました。ノックセンサーをそのままオーディオレコーダーのハイインピーダンス入力(ギターとかを繋ぐ端子)に繋いで録音しています。アンプやフィルターは通していません。
上段が通常時の波形(7200RPMまで)で下段がノッキング発生時の波形(約5000RPMまで)。上と下の回転数が同じになるように位置をあわせてあります。
低速の部分を選択して拡大した様子。
ヒゲのように飛び出しているところが、ノッキングの発生した所です。低速だとエンジンの騒音成分が少なくてわかりやすいですね。周波数が高くて振幅の大きい所がノッキングだということがわかります。
高速の部分を選択して拡大した様子。
騒音成分が多くなって、ノッキングした所が埋もれて見分けにくくなります。
フィルターで 3kHz 以下を削ってみます。
低周波の騒音分が少なくなって、ノッキング波形が目立つようになりました。
高速の部分を選択して拡大した様子。
低速の時のように、ヒゲのようなノッキング波形がよくわかります。
高速にAD変換ができる状況なら、ハイパスフィルターを通して低周波を削ったあとに、22kHz とか 44kHz くらいでAD変換して値が閾値以上ならノッキングと判断するような処理でよさそうです。
自作ECUのように点火や噴射の処理のついでにノックセンサーも扱う場合など、処理に余裕が無い場合にはハイパスフィルターを通して低周波を削った後に、ピークホールド回路を通してから点火1回毎とか低頻度でAD変換して、値が閾値以上ならノッキングと判断すればよさそうです。実際の波形を見てみると上死点前をミュートするような処理は必要無いように思います。
いずれの場合でも、回転数によって閾値は変える必要がありますね。
マイコンでノッキングを検出させるために、ノックセンサーをこのような回路を通してマイコンのアナログ入力へ接続しました。
前述のように、低周波の騒音成分を除去するために、ハイパスフィルターを設けています。この回路でカットオフ周波数が約 2.8kHz くらいになります。カットオフ周波数を上げるために、もっと小さな容量のコンデンサを使用したほうが良いような気がしますが、ICのパスコン用にたくさん持っている 0.1uF を使用しました。
アンプへの入力信号が 0V より低い電圧になるとバイアスを掛けたりと面倒なので、クランプ回路で信号を持ち上げてあげます。クリップ回路で切り捨てるよりも信号のピークが高くなって、後の処理にも良い影響が出るんじゃないかと思います。
(図はかなり適当に書いたので正確ではないです)
入力信号の大きさを調整するためにアンプを入れてあります。今回使用したノックセンサーは増幅しなくても大きな信号が得られたので、R1=∞Ω(開放) R2=0Ω(短絡)と、増幅率 1倍のアンプ(ボルテージフォロア)として使用しています。
フィルターの前にアンプを置いて、ハイインピーダンスでセンサーの信号を受けたほうがいいような気もするのですが、バイアスが面倒(部品が少し増える)なので、こうなりました。
オペアンプを使ったピークホールド回路で信号の最大値を保持します。
ピークホールド回路のおかげで、マイコンではクランク180度毎とかのように時々値を取り込んで、値が回転数毎に設定した閾値よりも大きければノッキングと判定するというように、簡単な処理でノッキングの判定ができます。
ピークホールド回路を使用しない場合だと、波形を取りこぼさないように1秒間に何万回も値を取り込んで処理を行わなければならず大変です。
ピークホールド回路で特定のクランク角の範囲だけの信号を保持したり、保持した最大値をリセットするために、ミュート回路を用意したのですが、実際にノックセンサーの出力波形を見てみるとノッキング時の波形が想像よりもわかりやすいものだったので、特定のクランク角の範囲だけを抜き出すような処理は必要ありませんでした。保持した値もピークホールド回路の 1MΩ の抵抗器を通して徐々に減少するので、ミュート回路は無くても良いです。
('A`)