| 
 
 
 |  | 
         
          |  | 準備編 
 |   
          |  | 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保持する。
 }
 
 と続いて記載するわけです。
 
 プログラムのたたき台として記載しているのは流れをきちんと説明したいためで、
 私も意味を理解したいので記載しているので、細かい間違いはご勘弁ください。
 
 なんかサイト作成していて面倒に感じてきた。
 こんなこと書かないでプログラム書いて勝手に修正して 「はいこれでプログラム作成して動きました」
 といきたいが、「小学生からの・・」と余計なタイトルなので丁寧に書き続けます。
 
 連日つかれたぁ。
 
 続く
 
 |   
          | 
 |  |  
            |  | 
 |  |