小学生からのフルコン作成入門


     
 
車に興味をもち自分で整備を始めた初心者が作るサイト。
The site that I am interested in a car, and the beginner who began preparation makes with oneself
初心者が悩むようなことを自分の経験で記載していきます。
ど素人私一人で作業を行っています。プロの助言と本を参考にして何処まで出来るか!
皆さんのレストアに役立てばと思い写真を多く使用して説明しております。皆さんもはまってみますか??
※サイトに書かれている作業による事故等の責任は取れません。個人の責任で作業をしてください。
I do not get responsibility of accidents by work written in a site.Please work by personal responsibility.

   

 

 





 
  準備編
TOPページ > コンピューターROMチューン入門 > マイコン制御方法
概要:
マイコン制御の作成。プログラムの作成。随時このページを更新します。
ペリを制御するサイトは知る限りこのサイトしかない!またプロの記事も見つけられていないので、結果的に嘘になってしまったらごめんなさい。素人の趣味レベルの電気知識と素人プログラマーだから許してください。
 
つまらないプログラムの作成が続きます:

さて今回は、アクセルを全開にしているときについてです。

アクセルを全開しているとき、水温もO2センサーも見ていません。
それは簡単です、早く走りたいのですから燃費等の改善は必要ないと思ったからです。
なので最初に書いたブロック図にはあったのですが省いて、いきなり燃料噴射プログラムへ飛びます。

続いて、アクセルOFFのときについてです。

こちらは水温だけ見ています。
理由は、水温が低いときはエンジンが温まっていないので、アクセルOFFといえども燃料を多めに噴射。
水温が高ければ燃料は最低限のみと分けたのです。

このプログラムについてはひとつ前のページで細かく記載しているので省略します。
いや、省略するからわからなくなるので、また正しい文法ではなくてもプログラムを書きます。

[アクセルOFF]
[BA]

Void loop()
int threshold1 = 409    //水温センサーのアナログ入力が約2Vを基準に判断するための数値
ValW = analogRead(A1)   //ValWにアナログ入力をA1ピン(水温)の数値を取り込む

if(ValW>=threshold1) {   //ValWの信号が2V以上=水温70度以下 の場合

 [10%増の燃料噴射マップ:10%増量プログラムへ]
}

elae{              //ValWの信号が2V以上=水温70度以上 の場合

 [10%減の連量噴射マップ:10%減量プログラムへ]

こんな感じです。
「threshold」は前のページで説明したのでココでは説明しません。

続いてアクセルONのときの説明をします。
ここで、燃料噴射のプログラムと噴射タイミングのプログラムを説明します。
※水温等は何も見ないので。


[アクセルON]
[10%増量プログラム]

void loop()

val1=digitalRead(IG1)        //IG1につながった点火信号を読み込みます。
if(Val1==HIGH){           //もし、IG1がHIGH(5V)だったら。
                     //※通常数万ボルトの点火信号を5Vレベルに落とす回路を作成します。
newtime1=micros();         //マイクロ秒のオーダーで現在Anduinoが動き出してからの時間をnewtime1に読み込み保存します。
}
oldtime1=newtime1         //続いて先ほど読んだ時間をoldtime1に保存します。
if(Val1==HIGH){           //また、IG1がHIGH(5V)になったら。
new=micros();            //マイクロ秒のオーダーで現在Anduinoが動き出してからの時間をnewtime1に読み込み保存します。
X1=newtime1-oldtime1      //ここで前回読み込んだ時間と最新の時間の差分を計算し、x1に結果を保存します。


if x1<=2000             //X1が2000μs以下だったら。(回転数10000rpm)なので
delayMicroseconds(3133);     //3133μsまって、ローターが360度後に燃料噴射できるようにする。
digital write(IJA550;HIGH);     //550ccのインジェクターをONにして燃料噴射開始。
digital write(IJA860m;HIGH);    //860ccのインジェクターをONにして燃料噴射開始。
digital write(IJA860s;HIGH);    //860ccのインジェクターをONにして燃料噴射開始。
delayMicroseconds(2000);     //噴射する時間2000μs保持する。
}
if 2000<x1<=2105          //X1が2000μsより上で2105μs以下だったら。(回転数9500rpm)なので
delayMicroseconds(3361);     //3361μsまって、ローターが360度後に燃料噴射できるようにする。
digital write(IJA550;HIGH);     //550ccのインジェクターをONにして燃料噴射開始。
digital write(IJA860m;HIGH);    //860ccのインジェクターをONにして燃料噴射開始。
delayMicroseconds(2105);     //噴射する時間2105μs保持する。
digital write(IJA860s;HIGH);    //860ccのインジェクターをONにして燃料噴射開始。
delayMicroseconds(2043);     //噴射する時間2043μs保持する。
}

と続いて記載するわけです。

プログラムのたたき台として記載しているのは流れをきちんと説明したいためで、
私も意味を理解したいので記載しているので、細かい間違いはご勘弁ください。

なんかサイト作成していて面倒に感じてきた。
こんなこと書かないでプログラム書いて勝手に修正して 「はいこれでプログラム作成して動きました」 
といきたいが、「小学生からの・・」と余計なタイトルなので丁寧に書き続けます。

連日つかれたぁ。

続く

 
 
   
 
このサイトで公開している文章、画像の全ては私に著作権があります。
無断使用、無断転写はご遠慮くださいませ。