PICプログラミングを勉強中。

最近C言語でPICのプログラミングとか練習中ですw

前々からやってみたいと思ってて道具は買い揃えてあったんだけどなかなか手を付けずに放置してたものを引っ張りだしてます。

 

いったいなにがしたいか!というと・・・

アドレスのサブコンを作って見たいんですw

 

PICは未経験だったもんだからずっととっつきにくくて放置だった・・・

高校時代にはロボコン機制作には関わったけど自分はハードウェア担当だったもんだから実際にプログラムは数値をソフト担当と相談する程度だったし・・・

 

アセンブラは高校でCASL勉強したけどもう苦手で苦手で…

というわけでC言語でスタートです!

 

まずは基本。

LEDの点滅プログラム

LED点滅からボタンでの点灯への切り替え

可変抵抗でのLED点滅速度の変更

LCDディスプレイへの文字の表示

LCDへの可変抵抗数値の表示

 

ってな感じで一から勉強しましたよw

 

久々に寝る間も惜しんで連続で勉強したきがするw

 

そして3日目くらいにはこんな感じ。

オシロスコープからの擬似ピックアップ信号でタコメーター制作。

wpid-IMG_20130131_210645.jpg

 

60000回転/分までは無事認識しましたw

よくある0.6秒間のパルス回数を測定してその100倍の数値をタコメータとして表示しているものとは違います。

最終的な目標はFIコントローラなわけだからエンジン1回転の時間を測定してその時間から計算して現在の回転数を取得してるリアルタイム表示です。

(正確にはエンジン1回転の時間を測定してその次の1回転の間に演算してるからリアルタイム/2)

回転数の横に書いてあるADってのはA/Dコンバータで適当な可変抵抗の数値をリアルタイムで拾って60000万回転時でもデータの遅延がおきてないかをチェックしてただけです。

英語のPICデータシート読むのも慣れて来たw

こういうのは気合で理解できるのになんで英語全くダメなんんだろうかorz

 

更に黙々と夜も寝ずに作業して昼寝してここまできました!

 

wpid-IMG_20130208_001643

 

LCDの表示数が足りないのでわかりにくいけど・・・

0600→6000rpm

T22→擬似TPS信号(64段階)

A63→擬似吸入空気温度センサー(64段階)

E00→擬似エンジン温度センサー(64段階)

 

26→回転数に対する補正データ(動作確認用擬似データ)

23→TPSに対する(ry

64→吸入空気温度(ry

01→エンジン温度(ry

122→各データの合計値(噴射時間)

 

オシロスコープで燃料噴射の擬似データ波形がちゃんと変化するのも確認済み。

 

内部処理を軽くするためにタコメーターの数値は250回転刻みに変更。

現在の動作環境はPIC16F690で20MHzのタンデム(?)。

一個目のPICで回転数、アナログデータ取得、EEPROMデータ操作、計算、LCD表示をやってもう一個のPICに計算結果を引き継ぎ

引き継いだデータ通りの噴射をするために最低限の処理で済ますためだけに二個目のPICは使用中。

(PIC一つでも動いたけど計算とEEPROMの処理だけで5msの遅延が発生)

256段階で噴射量の制御が可能(のはず)

 

とりあえずここまで出来たからあとは実機で作業しないと進まないよな~

(ここから先が一番手間かかるし)

ガレージも無いのにこんな事やってても先に進めない罠。

 

とりあえずPCに繋がずに中のデータ修正できるようにボタンでも追加していくかな…

あとは点火時期もいじれるようにしたいけどPIC16F690じゃポートが足りないし…

やっぱ計算用はPICはもうちょいポート多いの使ったほうがいいな…

また秋月に買い出し行くかなぁ~

 

リンク貼ろうと思ったけどPIC16F690が出て来なかった(´・ω・`)

84Aも持ってるけどこれって確かA/Dついてないよね…