|
|
|
準備編
|
|
TOPページ > コンピューターROMチューン入門 > マイコン制御方法
概要:
マイコン制御の作成。プログラムの作成。随時このページを更新します。
ペリを制御するサイトは知る限りこのサイトしかない!またプロの記事も見つけられていないので、結果的に嘘になってしまったらごめんなさい。素人の趣味レベルの電気知識と素人プログラマーだから許してください。
|
|
|
|
■つまらないプログラムの作成が続きます:
全然だめじゃん。
C言語(正式には違いますが)だと、プログラム並列で動かない。
割り込みでプログラムを考えたが、今の方法ではだめ!回らない!もう。
そこでプログラムの考え方(発想)を変えました。
回転⇒噴射時間算出⇒噴射信号⇒噴射 ではなく 回転⇒噴射必要時間算出⇒事前噴射(予想)
テイストで書いているとよくわからないですよね。※私もわからん。
ので図を作成してみました。
※スマフォではちときついぞい。
ようするに、点火と点火の間(最小で2ms)の間に、次のプログラムを実行し、さらにフロントローターの点火後にやってくるリアローターの点火(最小で1ms)の間にプログラムを実行し終了するように考えたわけです。
うおー。(心の叫び)
ロータリーの点火間が短いぞぉ。レシプロ(4サイクル)ならゆくりなのに!
RX-7 SAターボ(最初のロータリーインジェクション車両・昭和59年)ではどうやってた!
DENSO(マツダの電子系外注・そうTOYOTA)さんすごい。さすがプロ。
で具体的にはどう描くかというとこんな感じになるのかなぁ。と考えてみました。
Val1=digitalRead(IG1)
Val2=digitalRead(IG2)
if (Val1==HIGH){ //最初のエンジンスタート。最初の点火信号。
newtime = micros();
}
oldtime = newtime
まずは点火信号がつながった信号をデジタルで読み込みを宣言し、電気が来たら、時間を読み込みます。
そのとき、マイクロ秒で読み込みます。
その結果をoldtimeとして保管します。
これが電源を入れてスターターを始動した時に最初に行います。
続いてメインのプログラムです。
if (Val1 == HIGH){ //2回目以降の点火信号で回転数を予想
digitalwrite(IJA550,LOW) //燃料噴射をSTOPします。
digitalwrite(IJA860m,LOW)
digitalwrite(IJA860s,LOW)
newtime = micros();
X1= oldtime - newtime
oldtime = newtime
if (X1 <= 222) //9000rpm以上
delay Microsecond(0) //x1の時間
digitalwrite(IJA550,HIGH)
digitalwrite(IJA860m,HIGH)
digitalwrite(IJA860s,HIGH)
if (222 < X1 <= 235) //9000rpmより下から8500rpm以上
delay Microsecond(35) //x1の時間
digitalwrite(IJA550,HIGH)
digitalwrite(IJA860m,HIGH)
digitalwrite(IJA860s,HIGH)
・・・と続いて
if (800 < X1 <= 1000) //2500rpmより下から2000rpm以上
delay Microsecond(800) //x1の時間
digitalwrite(IJA550,HIGH)
digitalwrite(IJA860m,HIGH)
digitalwrite(IJA860s,HIGH)
・・・と続いて
if (4000 < X1) //500rpmより下
delay Microsecond(3800) //x1の時間
digitalwrite(IJA550,HIGH)
digitalwrite(IJA860m,HIGH)
digitalwrite(IJA860s,HIGH)
回転数から次の燃料噴射を予想して、インジェクションの信号から実際の噴射までの遅れ時間を予想して先に信号を送る方法に書き換えました。
本当でしたらマップを作るのですが、どうもよくわからない。
のでプラグラムベタ打ちの暴挙に出た。
このプログラムはフロントローターのプログラム(燃料噴射)なので、リアも同じように記載します。
具体的には以下のようになります。
if (Val2 == HIGH){ //点火信号リアローター側が入るとリアの燃料噴射を開始します。
digitalwrite(IJA550,LOW) //燃料噴射をSTOPします。
digitalwrite(IJA860m,LOW)
digitalwrite(IJA860s,LOW)
if (X1 <= 222) //9000rpm以上
delay Microsecond(0) //x1の時間
digitalwrite(IJB550,HIGH)
digitalwrite(IJB860m,HIGH)
digitalwrite(IJB860s,HIGH)
・・・と続く
フロントの燃料噴射時間をリアローターにも実行します。
これで、もとに戻り、燃料噴射を停止して、新たな回転数を算出して燃料噴射時間を産出します。
プログラムのたたき台を考えて、具体的に進めると「はっ」として作り直し。
4回目の正直!今度こそ作成開始できますように。
とりあえず、このパソコンにはArduinoのプログラム作成ソフトをインストールしていないので実施。
※詳しくは他のインストールを詳しく掲載しているサイトに譲ります。
どうだぁ。準備できたぞぉ。
最近、車のハッキングが流行しているが、とうとう車に乗車しなくてハッキングされたとか。
車もウィルスソフトをインストールする時代が来るのかぁ?
そんなことはないなぁ。車の安全基準は民生品の比じゃないからねぇ。
それで思い出した。
テスラモーターの車、リチウムイオン電池を使っているんだけど、あれって18650セルでしょ!
民生品をそのまま流用していたんですね。
安全対策を取っているようですが、画像ではモザイクがかかっていました。
だから品質が均一なPanasonic(三洋)に注文したのだと。
この情報はナショナルジオ・・・とかというケーブルテレビを見て知りました。
18650セルはノートパソコンのバッテリーと同じなので価格が抑えられるが、1本でも不良があればそれに引きずられる性格だったりします。
その場合、そのセルを無視するように作成したのかな?
ネットでもバッテリー交換するやから(私も含め)普通に秋葉原で購入できるセルですからねぇ。
この辺りは、私のような素人の記事よりプロの方々のサイトをご覧ください。
以前は中古パソコン販売を手伝っていた際。バッテリーってコスト高なので作業したことがあります。
面白いですよ。そして思った以上に手間だけでコスト削減できないことに気が付きます。
超面倒!二度とやりたくないと思います。
続く |
|
|
|
|
|