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


     
 
車に興味をもち自分で整備を始めた初心者が作るサイト。
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チューン入門 > マイコン制御方法
概要:
マイコン制御の作成。プログラムの作成。随時このページを更新します。
ペリを制御するサイトは知る限りこのサイトしかない!またプロの記事も見つけられていないので、結果的に嘘になってしまったらごめんなさい。素人の趣味レベルの電気知識と素人プログラマーだから許してください。
 
つまらないプログラムの作成が続きます:

全然だめじゃん。
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本でも不良があればそれに引きずられる性格だったりします。
その場合、そのセルを無視するように作成したのかな?

ネットでもバッテリー交換するやから(私も含め)普通に秋葉原で購入できるセルですからねぇ。
この辺りは、私のような素人の記事よりプロの方々のサイトをご覧ください。
以前は中古パソコン販売を手伝っていた際。バッテリーってコスト高なので作業したことがあります。
面白いですよ。そして思った以上に手間だけでコスト削減できないことに気が付きます。
超面倒!二度とやりたくないと思います。

続く

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