|
|
|
準備編
|
|
TOPページ > コンピューターROMチューン入門 > マイコン制御方法
概要:
マイコン制御の作成。プログラムの作成。随時このページを更新します。
ペリを制御するサイトは知る限りこのサイトしかない!またプロの記事も見つけられていないので、結果的に嘘になってしまったらごめんなさい。素人の趣味レベルの電気知識と素人プログラマーだから許してください。
|
|
|
|
■つまらないプログラムの作成が続きます:
前回、ms では駄目を記載しましたが。
あるハードの設計を業務としている方のブログで読んで「やられたぁ」と思ったのですが。
やっぱりインターネットは嘘つきでした。
というより、インターネットで掲載していた内容が古かったのでしょうね。
Anduino(スペルあってたか?)でも μs でプログラムが書けることが判明。
よかった。よかった。
そこで念のため作成を始める前に関数の紹介をすると。
※実際には関数一覧に記載されているので何も紹介するほどではないが・・・
差分を計算するための関数ですが millis ではなく micros を使えば 10の-6乗オーダーで計算できます。
続いて delay ですが、 delayMicroseconds を使えば 10の-6乗でdelayができます。
あーーすっきりした。
さて今回は、アクセルをパーシャルにしているときに 水温をチェックしエンジンの状況を判断し、水温が暖かいことで、O2センサーが温まっていると判断し、空燃費の計算をして燃料の調整をするプログラム部分を書きます。
?と思ったあなたのためにもう一度言い回しを変えて説明します。
O2センサーはきちんと動作するのはセンサーが温まっていないと駄目なわけです。
それを、水温が70度以上になっていることで、十分マフラーまで温度が高く、O2センサーも使える状態だと判断するのです。
[BA]グループ水温
[BC]グループO2センサー
のプログラムを [アクセルパーシャル]で考えます。
Void loop()
int threshold1 = 409 //水温センサーのアナログ入力が約2Vを基準に判断するための数値
ValW = analogRead(A1) //ValWにアナログ入力をA1ピン(水温)の数値を取り込む
if(ValW>=threshold1) { //ValWの信号が2V以上=水温70度以下 の場合
[0%の燃料噴射マップ:通常プログラムへ]
}
elae{
int threshold2=102 //O2センサーのアナログ入力が焼く0.5を基準に判断するための数値
ValO=analogRead(A0) //ValOにアナログ入力をA0ピン(O2センサー)の数値を取り込む
if(ValO>=threshold2) { //ValOの信号が0.5V以上=燃料が基準の空燃費より濃い(リッチ)の場合
[5%減の連量噴射マップ:5%減量プログラムへ]
elae{ //ValOの信号が0.5V以上以外=0.5V以下=燃料が基準の空燃費より薄い(リーン)の場合
[5%増の連量噴射マップ:5%減量プログラムへ]
さあ、この部分にはハードも登場しているので、さらに何を言っているのか判らない方も多いかと。
私もわからん!
少ない電気の知識から説明すると。
水温は抵抗で温度を測ります。
でもそのままマイコンにつないでも???となってしまいます。
そこで オームの法則 ♪「ランラララランランラン」♪ byナウシカ
I=V/R ね。
これ学校の先生時代に私が教えていた方法を伝授します。
みなさん電気といったら何を思い出します。
そう「100V」!電圧!
なので電圧が王様と覚えます。
以下のてんとう虫の絵を描いて、王様の電圧 V と一番上に書いて
下には電流 I と 抵抗 R を記載します。
知りたい部分を押さえると式の完成。
電流を手で隠せば V/R となります。どうです。
超脱線。
で、水温センサーは一般的に 0.3kΩから20kΩの変化があるそうです。
それを電圧で読めるように抵抗で計算すると以下の図のようになります。
コンデンサーはノイズを軽減するもので意味を理解しなくてもココでは問題ありません。
※今回は中古で適当な車から外したので実験します。上記の内容は一般的に!ということです。
一時間で短いのね。
このサイトでちょこちょこ書いていますが、今は子ども小さいので夜や週末時間が取れないので、毎朝7:30に品川近辺でタリーズでこのサイトを作成しています。
で、メールを確認してその後作業を始めるとちょうど1時間だけ自分の時間で、その1時間が上記の記述までだった。
特に、レストアは1日作業なので、時間が取れない。うーむ。そうやって車の趣味から離れていくと、昔知り合った方々から助言もらっていたことを思い出した。
で、続きの説明すると。
回路図に関してはココではざっくりした一般的な図を記入。
実際のセンサーの抵抗値をテストしてみて正確なものを書きますが、このようにセンサーつなぐだけでも面倒。
あとこのプログラムで何言っているのか判りにくいのは 「threshold」 でなぜ電圧が読めるかだと思います。
この 「threshold」 はアナログ入力の際に使える機能なのです。
「Anduino」では本当のアナログではなく、デジタルを擬似的にアナログで読めるようにしているわけ。
たしか・・・(実はこのサイト作成のとき本等の書籍はなく思い出しながら書いている)1024分割しているの。
5V/1024=0.0048828 = 4.88×10-3乗 4.88mV
水温センサー2V以下で70度以上となるので(何度も書きますがあくまでも一般的なセンサーの話)
2/0.0048828 = 409.6010
なのでプログラムの途中に 409 という数字が出てきたのです。
O2センサーはすごいことに、酸素濃度をそのまま電圧で表示できるので、そのままでも読み込めます。
こちらも増幅するかは実験で決めたいと思います。
基本こんな感じに単純なプログラムをだらだら書いて、説明の補足が必要なところは補足しプログラムのたたき台を作っていきます。
このあと、アクセルON、OFF時のプログラムと、燃料の噴射プログラムを説明して、入力(O2センサー・水温センサー、点火)、出力(燃料噴射)の各センサーのテストと回路を説明しいきたいと思います。
続く
|
|
|
|
|
|