• 車種別
  • パーツ
  • 整備手帳
  • ブログ
  • みんカラ+

ひらひら。のブログ一覧

2010年02月08日 イイね!

【PIC】車速の計算方法は?

PRELUDE SiR-T さんから、デジタルメーター作成の話題がでたので、WEBで調べてみました。

エンジン回転数は、先のソースの公開どおり、2パルスの時間間隔を測定することで、簡単に分かりますが、車速(スピード)ってどうなってるか?

昔、調べたんですが、HONDA車は、4パルス式だそうで・・・。
じゃ、1パルスの意味は・・・?
って、ことで、再調査結果です。

世の中、カーナビが、車速センサーを接続し、計算に用いているように、同じ規格が存在するのじゃないか?と、思っていたら、ビンゴのようです。

JISでの規格があるようで、60km/hで637rpm。
4パルス式だと、x4となり、60km/hで、637x4となり、2,548パルス/minだそうです。
1km/hで換算します。(60で割ります)
1km/h=42.4666・・・パルス/min=0.70777・・・パルス/secです。
1km/h=0.70777・・・パルス/secですので、200km/h=141.555・・・パルス/secとパルス数測定できれば、OKです。

それにしても中途半端な、数値だな。素直に、600rpmの方が計算しやすいのに、なんで?

ん?これも、エンジン回転数検出のソースに、ちょいと、改良を加えればできちゃうな~。
パルスの2点間の時間を測定し、0.70777・・・の逆数で割ってあげれば、速度(km/h)になります。

後は、面白く、表示させるだけの問題ですね。


※計算間違いがあったので、修正を加えました。
Posted at 2010/02/08 22:28:37 | コメント(1) | トラックバック(0) | PIC工作 | クルマ
2010年02月07日 イイね!

【PIC】祝!LCD表示

【PIC】祝!LCD表示随分前から、ちょこちょこ、LCD表示器を使って、工作を試みていました。

ハードウェアは、とっくの昔に完成していたのですが、表示させるためのプログラム作成が、なかなか、理解できませんでした。

今回は、いんちきして、WEBから、ソースをD/Lし、PICに書き込んでみたものの、使用するI/O PORT、Configの設定、外部CLKの仕様等が、違っていたため、すんなり、動作してくれません。

お風呂に入る前、設定を変更し、Build⇒書き込み を行い、

      『動いた!!!』

いや、感激です。

まだ、ソースを理解していないところがありますが、とりあえず、動いてしまえば、こっちのもの。
この後、A/D変換機能を使って、色々な電圧を表示させたり、この間の応用で、エンジンの回転数を表示したり、と、応用の幅がはるかに増えます。

単色とか、Full ColorのLED、7SegLEDなど、表示デバイスはたくさん有ります。
今回の文字液晶(LCD)は、まだ、入り口で、最終的には、フルカラーLCDの表示にもチャレンジしてみたいですね~。

そのためには、8bit PICを卒業し、16bit,32bitと、ステップアップしなくては。
8bit PIC卒業の課題としては、
 ・文字液晶の使いこなし
 ・USB PIC利用による、PCとの連携
  ⇒Visual Basicを使った、PC側ソフトウェアの開発まで。
    開発って、大袈裟だけど、PCに、A/D値を連続で送って、オシロスコープにしたり。なイメージ。

それができるようになったら、16bitで、グラフィックLCD、フルカラーLCDとステップアップじゃ。



※昨日の『おもちゃ』とは、別物ですよ。
Posted at 2010/02/07 21:32:54 | コメント(3) | トラックバック(0) | PIC工作 | クルマ
2010年02月06日 イイね!

【PIC】近日公開予定のおもちゃ

【PIC】近日公開予定のおもちゃ面白おもちゃを作成中。

PICを軸にした・・・・・。です。

回路図、PICのソースも当然、アップしますので、お楽しみに。

じらすために、、材料だけ載っけておきますね。
ほとんど、組みあがりましたが。。。

ラグちゃんが、飛びついてきそうな、ネタ。
(基板を丸くするのが一番大変でした。)
Posted at 2010/02/06 22:45:48 | コメント(2) | トラックバック(0) | PIC工作 | クルマ
2010年02月01日 イイね!

【PIC】エンジン回転数検出 ソース公開

【PIC】エンジン回転数検出 ソース公開以前、PICを使った、エンジン回転数検出の回路を公開しましたが、エンジンの回転数検出が簡単にできるようになると、色々、おもちゃを作成することができるようになります。

【例】
 ・VTEC切り替えを任意の回転数に。
 ・設定した回転数(レブリミッター)で、赤のLEDを点灯させ、ブザーを鳴らす。
 ・その他

レシプロカル方式(パルスの2点間の時間をカウンターを回して、何パルスかかったかで、時間を得る)に関しての具体的プログラム ソースが、なかなか、見当たらなかったので、今回、公開してみることにします。

私は、基本的に、出し惜しみしないタイプです。
皆さんに、電子(電気)工作に興味をもって頂ければ、幸いです。

以下、 /* からが、ソースになりますが、ソースをコピーし、貼り付けしましたが、スペースが、ぐちゃぐちゃで、見辛くなってしまったことは、ご容赦願いたいと思います。

/*
Hard ware Pin assignment list
1 VDD
2 GP5 O(not use)
3 GP4 O(not use)
4 GP3 O(not use)
5 GP2 I(IG PULSE IN)
6 GP1 O(L=0-3,600rpm : H=3,600rpm-9,000rpm)
7 GP0 O(not use)
8 VSS
VDD 4.5 to 5V P12F629
*/


/*MEMO
測定は、レシプロカル方式
1rpmは、 0.0166Hzで、IG_PULSEは、0.0333Hz=30sec
500rpmは、 8.33Hzで、IG_PULSEは、 16.66Hz=60.000mS=60,000uS
1,000rpmは、 16.67Hzで、IG_PULSEは、 33.33Hz=30.000mS=30,000uS
2,000rpmは、 33.33Hzで、IG_PULSEは、 66.66Hz=15.000mS=15,000uS
3,000rpmは、 50.00Hzで、IG_PULSEは、100.00Hz=10.000mS=10,000uS
3,500rpmは、 58.33Hzで、IG_PULSEは、116.66Hz= 8.571mS= 8,571uS(217B)
3,600rpmは、 60.00Hzで、IG_PULSEは、120.00Hz= 8.333mS= 8,333uS(208D)
3,900rpmは、 65.00Hzで、IG_PULSEは、130.00Hz= 7.692mS= 7,692uS(1E0C)
4,000rpmは、 66.66Hzで、IG_PULSEは、133.33Hz= 7.500mS= 7,500uS(1D4C)
4,500rpmは、 75.00Hzで、IG_PULSEは、150.00Hz= 6.666mS= 6,666uS
5,000rpmは、 83.33Hzで、IG_PULSEは、166.66Hz= 6.000mS= 6,000uS
6,000rpmは、 60.00Hzで、IG_PULSEは、120.00Hz= 5.000mS= 5,000uS
7,000rpmは、116.66Hzで、IG_PULSEは、233.33Hz= 4.285mS= 4,285uS
8,000rpmは、133.33Hzで、IG_PULSEは、266.66Hz= 3.750mS= 3,750uS
8,400rpmは、140.00Hzで、IG_PULSEは、280.00Hz= 3.571mS= 3,571uS
9,000rpmは、150.00Hzで、IG_PULSEは、300.00Hz= 3.333mS= 3,333uS
*/

#include //定型文なので、変えない
__CONFIG(0x31C4); //内蔵OSC使用等
#define MHz 000000
#define _XTAL_FREQ 4MHz //Delay用 4MHz設定

unsigned char temp_h,temp_l;
unsigned int temp_all;
unsigned int mokuhyo;

//----------------------------------------------
// initPort
//----------------------------------------------
static void initPort(){

OSCCAL = _READ_OSCCAL_DATA(); //OSC出荷補正値で校正
GPIO = 0x00; //PORT設定をリセット
TRISIO = 0x0C; //GPIO2だけ、入力設定
WPU2 = 0;
GPPU = 1;
INTEDG = 1; //INT PIN EDGE立上り検出

T1CON = 0x00;
GPIO1 = 0; //GPIO1=L(IAB ON)
}


//----------------------------------------------
//main処理 --------------------------------------
//----------------------------------------------
void main(void){

initPort();
temp_all= 0xFFFF;
mokuhyo = 0x208D; //3,600rpm設定

while(1){

INTE = 1; //INTエッジ割り込み使用
GIE = 1; //割り込み許可

}
}

//----------------------------------------------
//エッジ割り込み処理 -------------------------------
//----------------------------------------------
static void interrupt intr(void){

INTF = 0;
TMR1L = 0;
TMR1H = 0;
TMR1IF = 0;
TMR1ON = 1; //TMR1 ON
while(INTF==0){
} //2つ目のエッジを待つ
TMR1ON = 0; //TMR1を止める
temp_h = TMR1H;
temp_l = TMR1L;
temp_all= (temp_h*0x0100)+temp_l;

if(TMR1IF){
temp_all= 0xFFFF; //TMR1オーバーフロー時固定
}


if(temp_all < mokuhyo){
GPIO1 = 1; //GPIO1=H(IAB OFF)
mokuhyo = 0x217B; //3,500rpmに目標修正
}
else{
GPIO1 = 0; //GPIO1=L(IAB ON)
mokuhyo = 0x208D; //3,600rpmに目標修正
}

GIE = 0; //割り込み禁止
INTF = 0; //エッジ検出しない

}


この上の } まで。

やっていることは、
・PIC P12F629(\80位)を使用。
・内部の4MHzを使用し、安く。(エンジンの回転数は遅いので、精度も充分です)
・内部4MHzを使うので、1/4の周波数で、PICのカウンターは動きます。つまり、1カウント=1MHz=1uSですので、3,600rpmを検出したい場合、上記計算で、8,333回(8,333uS)カウントしたことを検出すればいいので、16進数に直し、8,333(DEC)⇒208D(HEX)が目標値になります。
・タイマーは、TMR1(16bitカウンター)を使用。上位8bitと、下位8bitを扱いやすくするため、16bit値に直してます。これは、比較を容易にするためです。
・最後の方に、3,600rpmをまたいで、バルブがON-OFFを敏感に反応するので、3,600rpmを超えたら、3,500rpmを下回るまで、バルブを動作させない(ヒステリシス)動作をさせています。

MPLABの『MPLAB IDE v8.40』と、フリーで使える、『HI-TECH C Compilers』で上記ソースをそのまま、Buildすれば、即、使用可能です。(あとは、PICへの書き込み機が必要)

目的の用途に合わせて、回転数、PORT設定など修正すれば、色々な用途で使えますね。
回路図では、ECU内部に、仕込みましたが、当然、ICM信号(0-12V)を、インバータ(Tr)で受けて入力すれば、同じことができます。

尚、これを使用して、トラブルが発生しても、当方は一切、責任を負いません。
質問が有れば、答えられる範囲で答えます。


追記(2012.2.10)
上記ソースで、コンパイルエラーが、発生した場合の対処法。
HITEC CのVer.9.81までは、そのまま、コンパイル可能ですが、Ver.9.83では、エラーがでます。
その場合、2箇所を下記に差し替えてください。

OSCCAL = _READ_OSCCAL_DATA(); //OSC出荷補正値で校正

OSCCAL;


GPPU = 1;

nGPPU = 1;

OSCCALは、コマンド対応された。GPPU bitは、極性表記が必要になり、nGPPUに変わった。
Posted at 2010/02/01 20:33:26 | コメント(4) | トラックバック(0) | PIC工作 | 日記
2009年08月23日 イイね!

【PIC】DI制御基板(改)が完成

【PIC】DI制御基板(改)が完成ちょっと、しばらく、この話題、ご無沙汰でした。

完成したつもりでしたが、同時点火ONLYの考え方は、怖かったので、思い切って、入出力ピン数に、余裕の有る、P16F690に変更することにしたんです。
これだと、20MHzのセラロックが接続でき、各気筒点火信号も割付できます。
まだ、ピンは余っています。

同じ8bit CPUながら、P12F629とは、プログラムの50%程度(メインのソースは大半互換有り)しか互換がありません。

PIC変われば、PORTの設定を始め、CONFIG設定や、あれやこれやが違います。

プログラムの移植作業と、配線変更のために、随分、時間がかかってしまいました。
PICの半導体仕様書は、英語なので、理解に時間がかかるのと、PDFの書類自体が見づらくて。

遅くなったついでに、SWを追加し、通常通り、順次(1⇒3⇒4⇒2気筒)点火させるシーケンスと、同時点火させるシーケンスを入れました。

うまくいけば、来週から、つなぎ込みです。

まだ、ハードが動く確証が無いので、確かめながら・・・。

夏休みが終わるまでには、ちょっと、間に合わないですかね。
Posted at 2009/08/23 20:33:36 | コメント(1) | トラックバック(0) | PIC工作 | クルマ

プロフィール

「常滑ドライブ http://cvw.jp/b/284255/46173623/
何シテル?   06/12 13:52
現在。アルトがメインです。気軽に話しかけてください。よろしくお願いします。 新しいことにチャレンジ。人がやらないことをやりたいですね。 バトンお断り...
みんカラ新規会員登録

ユーザー内検索

<< 2025/9 >>

 123456
78910111213
14151617181920
21222324252627
282930    

リンク・クリップ

秋月電子通商 
カテゴリ:電気工作
2009/04/05 13:29:03
 
IMPACT! 
カテゴリ:CAR
2009/04/04 15:46:39
 
Honda Prelude Special Page 
カテゴリ:Prelude情報
2009/04/04 15:43:11
 

愛車一覧

スズキ アルト ターボRS スズキ アルト ターボRS
軽スポーツを楽しもう!!
ホンダ トゥデイ ホンダ トゥデイ
購入しました。 可愛いな~。 2018.7.5 お別れしました。
ホンダ フィットハイブリッド ホンダ フィットハイブリッド
嫁の車です。 外装の色と、内装のピンクがお気に入りだそうです。 2022年6月11日 9 ...
ホンダ That’s ホンダ That’s
乗り換えです。

過去のブログ

2022年
01月02月03月04月05月06月
07月08月09月10月11月12月
2019年
01月02月03月04月05月06月
07月08月09月10月11月12月
2016年
01月02月03月04月05月06月
07月08月09月10月11月12月
2014年
01月02月03月04月05月06月
07月08月09月10月11月12月
2013年
01月02月03月04月05月06月
07月08月09月10月11月12月
2012年
01月02月03月04月05月06月
07月08月09月10月11月12月
2011年
01月02月03月04月05月06月
07月08月09月10月11月12月
2010年
01月02月03月04月05月06月
07月08月09月10月11月12月
2009年
01月02月03月04月05月06月
07月08月09月10月11月12月
2008年
01月02月03月04月05月06月
07月08月09月10月11月12月
2007年
01月02月03月04月05月06月
07月08月09月10月11月12月
ヘルプ利用規約サイトマップ
© LY Corporation