K-line(ISO 9141-2およびISO 14230-4)での格安OBD2通信:6ステップ(写真付き)

K-line(ISO 9141-2およびISO 14230-4)での格安OBD2通信:6ステップ(写真付き)

目次:

Anonim

これは、車内のセンサーを監視するためのもう1つのOBD2ソリューションです。それはverhicleとマイクロコントローラ間のK-line OBD2シリアル通信をサポートします。このK-line通信は、ISO 9141-2またはISO 14230-4(Keyword Protocol 2000またはKWPとも呼ばれます)としても知られています。どちらのISOもほぼ同じです。この解決策は、低コストである他の解決策とは異なります。 (10ユーロ以下)。それはあなたがarduino、ラズベリーパイまたはスマートフォンを必要としないという点で低コストです。あなたは他の目的のためにあなたのスマートフォンを使用することができますので、ちょうどマイクロコントローラとLCDディスプレイ。

主な特徴:

  • 液晶ディスプレイにエンジンの負荷、温度、回転数、回転数を表示
  • マイクロコントローラPWMモジュールを使用して強度を変更することにより、LEDを介してエンジン負荷を光学的に表示
  • 温度が93度を超えるとブザーが鳴ります
  • ウォッチドッグはマイクロコントローラと車両ECU間の通信問題を回避します

すること:

  • 保存された診断トラブルコードをモード0x03で表示します(ルーチンは含まれていますが、車がトラブルになるまで待たなければなりません)
  • トラブルコードのクリア/故障インジケータランプ(MIL)/エンジンライトの点検(ルーチンは含まれていますがテストされていません)
  • "fast init"をサポート

それはシトロエンC1ガソリン(2013年)とVW Touranガソリン(2003年)でテストされています。おそらくそれは技術的に同一であるのでそれは同様に2013年のプジョー107とトヨタアイゴのために働くでしょう。私がインターネットで読んだものから周りにはKライン上の多くの味があるので、それはあなたの車に合わないかもしれないという可能性があります。それを機能させるには多少の変更が必要かもしれません。必要に応じて調査および変更できるように、ソースコードが提供されています。たぶん、あなたは他の人を助けるために車のこのリストを広げるのを手伝うことができます!

楽しむ!

あなたの車がK-lineをサポートしているかどうかを確認できるこのサイトを見つけました:

www.outilsobdfacile.com/vehicle-list-compatible-obd2/citroen

用品:

ステップ1:部品

1×OBD2コネクタ16ピンオス

1×マイクロチップ16f886マイクロコントローラ

1 x 16 x 2 LCD HD 44780またはその互換機

1×BC547または2N3940トランジスタ

1×LM7805 1Aレギュレータ

1×330nFセラミックコンデンサ

1×100nFセラミックコンデンサ

1×510オーム抵抗

1×2.2Kオーム抵抗

1×47Kオーム抵抗

1×33Kオーム抵抗

1 x 100オームの抵抗、任意(青い導かれたのために、他の色のための適切な抵抗を使用してください)

1×LED、オプション

2 x 10Kオームトリム抵抗

1×ブザー5ボルト(<20mA)、オプション

ステップ2:Kラインの初期化と応答

ISO 9141と14230はどちらも5ボーの初期化シーケンスを知っています。マイクロコントローラは、バイト0x33を毎秒5ビットでverhicleに送信することによってこのinitを開始する必要があります。バイト0x33を送信するための合計送信時間は約2秒かかります。この初期化の後、10k4ボーで通信を続けることが期待されています。

ISO 9141-2初期化応答

ISO 9141-2の場合、車両ECUは同期バイト0x55で応答します。この後、verhicleはキーバイト0x08と0x08、または0x96と0x96で応答します。車両のキーバイトを有する同期バイトは、第2のキーバイトを反転することによってマイクロコントローラによって確認されなければならない。これでISO 9141-2の初期化部分は終了です。

ISO 14230初期化応答:

ISO 14230の反応は少し異なります。 Verhicle ECUも同期バイト0x55で応答します。キーバイトだけが異なります。 2003年のVW Touranの場合、キーバイトは0xefと0x8fです。また、ここで2番目のキーバイトは、それを反転することによってマイクロコントローラによって確認される必要があります。

ステップ3:刺激反応

初期化プロセスの後、verhicle ECUに要求を送信することが可能です。要求は、アドレス、モード、PID、チェックサムが存在する一連のバイトです。以下はリクエストの例です。

ISO 9141-2の場合、この一連のバイトは0x68、0x6a、0xf1、0x01、0x0d、および0xd1です。

ISO 14230の場合、この一連のバイトは0xc2、0x33、0xf1、0x01、0x0d、および0xf4です。

最初の3バイトはアドレッシング用です。 4番目はモードフィールドです。 5番目のバイトはPIDを持つデータフィールドで、最後のバイトはチェックサムです。

この例ではモード1が使用されています。このモードは、現時点での状態として「現在のデータ」を表示します。このモードは実際の情報を表示するのに最適です。データフィールドにはPIDが含まれています。この場合、車速である0x0d。チェックサムは、mod 256のバイト数の合計です。PIDのリストについては、このリンクを参照してください。

en.wikipedia.org/wiki/OBD-II_PIDs

反応はほとんど同じです。データフィールドはおそらくリクエストごとに変わる実際のデータを反映しています。以下は、データとして0x00を使用した応答の例です(これは、車両速度0です)。

ISO 9141-2の場合:0x48、0x6b、0x10、0x41、0x0d、0x00、0x11。

ISO 14230の場合:0x83、0xf1、0x10、0x41、0x0d、0x00、0xd2。

このOBD2ソリューションは、計算されたエンジン負荷(PID 0x04)、エンジンを表示します。

LCDディスプレイ上の冷却水温(PID 0x05)、車速(PID 0x0d)、エンジン回転数(PID 0x0c)。

ステップ4:回路図

車はODB2コネクターのピン5と16を通して12ボルトで回路に供給します。電圧調整器はマイクロコントローラとLCD用にこれから5ボルトを生成します。

ピン7のKライン信号は、抵抗とトランジスタのインターフェースを介して適切なレベルに変換されます。

2つのトリム抵抗は、LCDのコントラストとバックライトを制御するために使用されます。

ポートRC1にはLEDを接続できます(オプション)。マイクロコントローラのPWMモジュールの助けを借りて、LEDの輝度は計算されたエンジン負荷(PID 0x04)によって制御されます。

ポートRC7にはブザーを接続できます(オプション)。エンジン冷却水温(PID 0x05)が93度を超えると、このポートが有効になります。

ステップ5:コード

Microchip社のXLCDペリフェラルルーチンは多少の変更がありますが、外部LCDモジュールに使用されています(他のLCDルーチンと比べてデータが速く変化するため、ぼやけが少なくなります)。

記憶された診断トラブルコードを表示しクリアするためのルーチンが含まれる。これはスイッチを2秒間押すことで開始できます。このルーチンはテストされていないため、おそらく動作しません。あなたがトラブルコードで車を持っているならば試して自由に感じなさい。

5ボーのinitは "slow init"とも呼ばれます。 "fast init"もあります。 fast initは上で説明されたように5ボーのinitを使用しませんが10.4 kbpsで直接始まります。 StartCommunication要求0xc1、0x33、0xf1、0x81、0x66は、要求を送信する前に送信する必要があります。私はこのfast initをサポートする車を持っていないので、誰かが他の人を助けるためにこのコードに含めるのを手伝うことができるかもしれません。

kmではなくマイルを使用する場合は、コードを簡単に変更できます。

簡単にするために、チェックサムはチェックされません。

コードは、コンパイラXC8 v1.36を使用してMicrochip MPLAB X IDE v3.20にインポートできます。 16f886マイクロコントローラをプログラミングするには、pickit2またはpickit3のようなプログラマが必要です。

16f886をあなた自身のプログラミングソフトウェア/デバイスでプログラムしたい場合には、16進ファイルが含まれています。

ステップ6:楽しんでください

私はあなたがこのプロジェクトが好きであることを望みます。それを構築し、あなたのverhicleを監視することがたくさんあります!

あなたが興味を持っているが自分自身を買うことができないならば、ちょうど私に連絡してください。たぶん私はプログラムされたマイクロコントローラか完全なキットで手伝うことができます。

「太陽、惑星、彗星のこの最も美しいシステム、

カウンセルとドミニオンからのみ進めることができた

知的で強力な存在の」

〜アイザックニュートン、プリンシピア

2人がこのプロジェクトを作りました!

  • milani1387がやった!

  • BadisSはそれを作りました!

あなたはこのプロジェクトを作りましたか?私たちと共有しましょう!

おすすめ

  • SKY CAM空撮カメラソリューション

  • Arduinoの空気盆栽浮上

  • モノのインターネットクラス

  • 教室科学コンテスト

  • Fandomコンテスト

  • ガーデニングコンテスト

63件のディスカッション

0

Vwtee

6か月前はじめに

こんにちはリチャード、

私は最近OBDポートを持つdigifant 1のゴルフmk3 gtiエンジンを手に入れました、私はそのK-line kw1281プロトコルを知っています。私はこれがそれでうまくいくかどうか、そしてもしそうなら私はあなたから1つを購入することができますか?NLでもイム私たちはそうピックアップし、支払いは問題にならないでしょう:)

1件の返信 0

RichardvdK Vwtee

返信6か月前

こんにちは、それのまわりにおよそ何百もの異なるプロトコルフレーバーがあるので、おそらくおそらくうまくいかないでしょう。調査が必要です。おそらくそれはタイミングと反応に若干の変更を加えた後にうまくいくでしょう。

0

sumitgrover97

質問11か月前

こんにちは

ご返信ありがとう

データを反転したくない場合は、BC 557ではなくBC 557を使用できます。

それは同じように動作しますか、それともBC557で10400のボーレートを達成するために何らかの複雑さがありますか

よろしく

住む

0

sumitgrover97

質問11か月前

こんにちは

BC547を使用して切り替えていて論理1を送信するとK行が論理0になるので、初期化のために0x33をその逆論理に変換してK行が0x33になるのはなぜですか。ロジックを逆にしていないコマンドを送信していて、10400ボーで直接送信しています。これでうまくいくか、またはK行で逆論理が必要になります。混乱しています。あなたは聖職者になりますか?

ありがとう

1つの答え 0

RichardvdK sumitgrover97

回答11か月前

こんにちは、

私はあなたの質問を正しく理解したかどうかわからない。答えてみましょう。

マイクロコントローラのEUSARTはデータを反転するように設定されています。これはコード内で行われます。

BAUDCTLビットSCKP = 1。

敬具、

リチャード

0

サンサン

質問11か月前はじめに

ハサー

ISO 9141-2の場合、最初のバイトが0x68である理由(この行の ISO 9141-2の場合、この一連のバイトは0x68、0x6a、0xf1、0x01、0x0d、および0xd1です。)あなたが私にこれについての明快さをお願いします、どんな文書が利用可能であるならば私にリンクを送ってください。

0

トマシュC30

1年前

そして、速いinitシーケンスで絵を描きます:

0

トマシュC30

1年前

こんにちは。

1396amirとmilani1387:

私はテーブルの上にSagem S2000-1を持っています、そしてそれは「IS OBDに準拠しています」が、それはいくつかの方法で実装にエラーがあります。

(ECUは9643786680-01、それが6FZ / EW7J4エンジンから来ることを願っていますが、私はそれについてはよくわかりません。)

最初の問題

テスターのコマンドとECUの回答との間には長い時間があります(標準の許容範囲を超えています)。

ECUは130ms後に(fast initパターンの直後に)応答しますが、ISO14230はmaxと言います。 50ミリ秒このため、例えばBoschテスターモデル560は接続できません(約80ミリ秒の間応答を待ちます)。絵を見てください。

第二の問題:

未接続のL-line(ecuのピンB3)が必要です。

L線(テスター510Ωの抵抗器から+ 12V)に接続したら、ECUは作動しません。

fast initパターンに対する応答はまったくありません。

本当に理由がわからない。たぶんセンサーなしでテーブルの上の私の配線のために???

何かニュースがあれば、pls。ここに情報を残してください。

0

1396amir

1年前

こんにちはこれはmilani1387用です

接続しようとしているecuは OBDIIではない あなたがオートマチックトランスミッション(ギアボックス)でプジョー206 bosch ecuを使うならば、あなたはecuに接続して、若干のデータを見ることができます

0

ファーンホースト

1年前

こんにちは。 0x33の最後のビットが低いのはなぜですか。他の文書では、0x33は5ボーレートの速度で送信されます。1回のロースタート8ビットの0x33と1回のストップビットハイです。それはまたusartフレームです。

0

フェルコジ

1年前

こんにちは、i2cでRaspberry piにチップからデータを送信することは可能でしょうか?

ありがとう

0

ファーンホースト

1年前

こんにちは、あなたが送受信するバイトを見るためにどのソフトウェアを使用しますか?

1件の返信 0

RichardvdK ファーンホースト

返信1年前

こんにちはPhanhust、

私はmplabxソフトウェアでデバッガを使います。ここでは、mcuの受信データが配列で表示されています。

敬具、

リチャード

0

ファーンホースト

1年前

こんにちは

どのように私は車のアドレスの3バイトを定義することができますか?

私の場合。私はバイクに使用するので、車とモーターバイクの違いは何ですか?

アジアのバイクの大半は、ISO 9141およびISO 14230の通信も使用しています

ありがとう

1件の返信 0

RichardvdK ファーンホースト

返信1年前

こんにちはPhanhust、

最善の方法はあなたのバイクについての仕様を読むことです。どこかにecuと通信する方法を記述しなければなりません。

敬具、

リチャード

0

ウラジミールN21

1年前

こんにちは、

16f628チップを使用できますか?

2件の返信 0

milani1387 ウラジミールN21

返信1年前

いいえ

それはフラッシュメモリの低い能力を持っています

0

ウラジミールN21 milani1387

返信1年前

ありがとうmilani、今日私は16f886を買ってそれを試してみます。

0

milani1387

1年前

ありがとうmr richard

私は、sagem s2000がcanとiso9141の2つのプロトコルをサポートしていると確信しています。

しかし、このEcuで私はKLINEポートに接続しています….

………….

それはあなたがそれらを接続したEcuの名前は何ですか?

……………….

親愛なるmr richard

あなたの国と都市は何ですか?

1件の返信 0

RichardvdK milani1387

返信1年前

こんにちはミラニ、

私は2013年の私のシトロエンC1でそれを使っています。私は2003年のVW Touranも試しました。

リチャード