ENC28J60 ethernetShield

Kimio Kosaka

 

make No.4


Microchip Technology社のイーサネットコントローラENC28J60を利用したイーサネットシールド Ethernet Shield V1.0 for Arduino(リンク切れ)をまねて作ってみました。

本家Arduino Ethernet ShieldにはイーサネットコントローラにWIZnet社のWT5100が搭載されていますが,このEthernet ShieldではMicrochip Technology社のENC28J6を使用しています。ENC28J60チップには28ピンDIPの製品があり秋葉原や通販のパーツショップから600円くらいで入手可能でチップ周辺のパーツも少なく容易に自作できます。

ただし,ENC28J60はWT5100と全く互換性はありませんのでArduino IDEに付属のEthernetライブラリを用いることはできません。ENC28J60向けには,こちらのライブラリを使います。

  1. 回路

    回路図は下のとおりです。

  2. 実装

    いつものように片面基板に実装しました。

    enc28j60enc28j60_pcb
  3. 動作テスト

    ethershieldライブラリに同梱されているサンプルスケッチを動かして見ました。WT5100はイーサネットとTCP/IPプロトコルをチップに内包していますが,ENC28J60はイーサネット・プロトコルのみですのでTCP/IPはethershieldライブラリ側で実装されています。

    イーサネットPHY(物理層)にかかわる回路が通信品質に大きく影響します。何も考えずに組んだ回路ではpingテストを行うと半分近くのパケットがロスしました。

  4. 急所

    この回路を見るとフェライト・ビーズが使ってあったりしてノイズに苦しめられそうな嫌な予感がしました。案の定ノイズについて何も考えず回路を組んだら45%ものパケットロスが発生しました。色々やってみたら。急所はRBIAS周りのようです。データシートにはRBIAS抵抗にはノイズの誘導を避けるためにチップ抵抗を使ってRBIASピン至近でグランドに落とせと言うようなことが書いてあります。しかし,ここではチップ抵抗を使わずリード部品の1/4W抵抗を使いながらノイズ誘導を抑えることにします。

    • RBIASの抵抗で信号電流を決めているようなので,RBIASの抵抗値を小さくして電流を増やしS/N比を稼いで見ます。推奨回路では2.34KΩ±1%となっていますが半分以下の1KΩにして見ます。一気にパケットロスが3〜5%まで激減しました。
    • RBIASピンにノイズが乗って悪戯をするのならコンデンサでノイズをグランドに落とせば良いだろうと考えて0.1μFのセラコンをかますと予想通りパケットロス0%になりました。
    • ところがチップが発熱します。定格を超えているのかも知れません。ためしに48時間連続稼動させて見ましたが壊れないので,この対策でも良いのかも知れません。
      (余談:定格を無視しても動けばイイというのはアマチュア無線の発想です。業務用送信機では耐久性を考えて5Wぐらいしか送信出力を出さない送信終段をアマチュア用無線機では定格を無視して50Wぐらいの出力を平気で取り出します)
    • しかし,できるだけ不要な発熱は抑えたいので,カット・アンド・トライでRBIAS抵抗の調整しました。私の回路では1.6KΩでノイズと発熱に対してイイ感じになりました。ただし,この値で動作点が定格値に収まっているかどうかは不明です。
    • 次は,PHY周りのノイズ耐性を考慮して基板のレイアウト設計をやり直して見ます。

[もどる]

update 2009.10.04

upload 2009.09.28

Creative Commons License