2008-07-27
Microchip社のLINドライバーICは3種しかありません。そのうちMCP201はLINの旧規格のV1.3用のようなので、実質2つだけです。実験用には高機能な方がいいのでMCP2022を購入して実験してみることにします。
2008-07-31
LINの仕様を調べてみると思った以上に大きな仕様になっていました、仕様を大きくしている原因は...
・車載用のネットワークなので、ネットワークに複数のメーカーの製品が繋がる可能性があり
お互いが協調動作することが出来なければならないので装置のアドレス割り振りなどの
方法が取り決められている
・装置を作るメーカー(自動車部品メーカー)と、開発ツールを作るメーカー(半導体メーカーや言語メーカー)は
異なるので、その境界線の定義をC言語のLINライブラリーで定義している。
つまりLINの仕様にはC言語のLINライブラリーリファレンスが含まれている。
・自動車部品メーカーの仕事はLINを使うことではなく、LINを使用した部品を作ることなので、
LINのプロトコルについての内部仕様は興味対象ではない。そのためLINの仕様では低レベルのプロトコルに加えて
更に上位のプロトコルの取り決めまでが含まれている。
LANで言えば「IP」の上に「TCP」や「UDP」などの上位プロトコルが乗っかっている、LINも
TCP/IP程大きくはないがOSIのネットワーク層構造を意識したプロトコルになっている。
こんなところだ。同じ車載ネットワークのCANに比べてかなりマイナー(?)なようで、書籍も殆どない。
また日本語の文献も殆どみつからない。規格自体は2003年に完成していて、もう5年以上経過している。
2008-08-05
LINの信号線の電圧は0V<->バッテリー電圧です。乗用車なら12Vということになります。マイクロコンピュータは5Vもしくは3.3V動作が一般的です。このMCP2022には電源ICが内蔵されていて最大100mAの電力を共有できます。電圧は可変ではなく、5V用と3.3V用の2種類があります。今回購入したのは5V用です。
Microchip社 MCP2022 LINドライバー。MAX232と同様でインテリジェントな機能は殆どなく電圧変換を主に担当します。
実験回路をEAGLEで書く。最終的には3つの装置で実験するのでプリント基板を作ります。
2008-08-08
LINについての書籍はこれだけしかないみたいです。内容はインターネットから得られる情報と殆ど変わりません。LIN以外にもCANとFlexRayについて書かれてあるので、とてもこの内容だけではプログラムを作れません。Microchip社がC言語で書かれたLINインターフェースのサンプルプログラムを公開しているので、それをmicroBASICに移植するのが近道のようです。
薄っぺらい割に高い本だ。デザインウェーブマガジンの連載をまとめた物らしい。
2008-08-09
シリーズレギュレターの機能のみを確認してみた、でも電圧が出てない。テスターで計測すると0.1V付近を指す。どうやら出力側にコンデンサが無いとダメなようだ。コンデンサを入れると5Vが出力されるようになった。
先ずはレギュレターとしての機能を確認。12Vの電源を繋いで5V出力が得られる。
左がPICで右がMCP2022。Cgとあるコンデンサが重要。これがないとレギュレターとして動かない。
電源回りがOKになったので、次は送信をテストします。LINのプロトコルを解釈するプログラムを作るのは大変ですが、単にLINのハードを動作させるのは非常に簡単です。EUSARTを初期化してRS-232Cのつもりでデータを送信すればいいだけです。
次は送信のテスト
0001 '-------------------------------------------------------------------------------
0002 program LinTEST
0003 '-------------------------------------------------------------------------------
0004
0005 main:
0006 dim data as byte
0007
0008 PORTB = 0
0009 TRISB = 0
0010
0011 Usart_Init(9600) ' initialize Usart module
0012 Delay_ms(10)
0013
0014 PORTB.1 = 0 ' Rising edge on CS activates Transmitter
0015 PORTB.1 = 1
0016
0017 data = 0
0018 while TRUE
0019 PORTB = data ' Display data on PORTB
0020 Usart_Write(data) ' Send data to Receiver
0021 Inc(data) ' change data
0022 wend
0023
送信データの波形です。LINに準拠せずプロトコルを自前で考えるなら、もうこれで終わったような物です。
こちらがPICの出力信号。0<->5V 2V/Dは2V/Divの意味
MCP2022の出力。0V<->12V 厳密には0Vではなく0.5V程度。
2008-08-15
LINはマスター、スレーブの関係があるのでマスターとスレーブは同じ回路ではない。マスター回路からいくつかの部品を取り去ればスレーブになるので、マスター基板を3枚レイアウトしてある。電源もマスターにだけ給電する。LINは1線式なのでGNDを含め2本あれば足りるが、電源用のため3ピンのターミナルブロックを使用している。一枚の基板に2個ターミナルブロックがあるのは、数珠つなぎにするためだ。1つのターミナルブロックに2本線を繋げばターミナルは1個でいいのだが、秋月電子で1個¥30しかしないので2個使用している。
片面基板 サイズ150×100
2008-09-07
サンハヤトの感光基板は新感光剤になってからエッチング不良が発生するようになった気がします。現像がうまくいったと思っていてもエッチングしてみると感光剤が落ちていない部分が発生してしまいます。基板の中央部分は良好なのですが、特に周囲に問題が発生します。マスクパターンの問題であれば中央部とか周囲とかいう問題にはならないはずなので、感光基板自体の不良の可能性が高いと思います。150×100の基板から3枚取れる予定でしたが、1枚はボツ基板になりました。LINのテスト回路は2枚あればいいので、とりあえず2枚で実験を進めます。
現像後の感光基板
感光不良によるエッチング失敗
2008-09-23
電源コネクターはマスター側だけに付けてあります。半固定抵抗はスレーブ側だけにつけました。これは抵抗値をA/Dコンバータで読み取ってその値をマスター側に送信するための物です。半固定抵抗はセンサーの代用品です。Lbusのプルアップ抵抗はマスター側だけにあります。それ以外は同じ構成です。
半田付け完了