概要
1-Wire®は、元々、近くに位置するデバイスと短時間接続し、簡単な通信を実現するために設計されたものです。また、1-Wire は、マイクロプロセッサの1 つのポート(ピン)を使うだけで、補助用のメモリを追加できるようにする方法でもありました。その後、プリント回路基板の大きさをはるかに超えるネットワーク・アプリケーションにまで1-Wire の利用範囲を拡張する方法が開発されました。
本稿では、まず1-Wire を採用したネットワークの様々な側面について説明します。その上で、信頼性の高い動作を実現するための設計上のガイドラインを提供します。なお、稿末の付録A~Dでは、1-Wire のバス・インターフェースを微調整する方法や、様々な条件下における1-Wire の信号波形などを紹介します。
はじめに
1-Wire をベースとする長距離ネットワーク(以下、1-Wire ネットワーク)は、1-Wire に対応するデバイスや、通信ライン、接続が複雑に配置されることによって構成されます。それらのネットワークには、トポロジ(レイアウト)とハードウェアの面で違いがあるはずです。
1-Wire ネットワークの構成要素としては、マスタ、ネットワーク・ケーブル、スレーブ(1-Wire に対応するスレーブ・デバイス)が挙げられます。1-Wire ネットワークを高い信頼性で動作させるには、それらを適切にマッチングさせる必要があります。バス・マスタの設計や実装が不適切であったり、短いラインでの使用を前提とするマスタを非常に長いラインで無理矢理使ったりすると、本来の性能を得ることはできません。
このアプリケーション・ノートでは、様々な形態、規模、デバイス数の1-Wire ネットワークの動作特性をテストした結果を紹介します。また、高い信頼性で動作するネットワークを実現するためのパラメータについて詳しく説明します。本稿で取り上げる内容の中には、1m に満たない短いラインを使用するネットワークでは特に重要ではないものもあります。なお、稿末の付録A~D では、1-Wire のバス・インターフェースを微調整する方法や、様々な条件下における1-Wire の信号波形などを紹介します。
1-Wire ネットワークの概要
本稿では、1-Wire ネットワークに対象を限定しています。その種のネットワークでは、カテゴリ5e のツイスト・ペア・ケーブル(銅製)を使用し、マスタから5V のバス電源を供給します(1-Wire のスレーブのほとんどは、より低いバス電圧でも動作することが可能です。ただ、大規模なネットワークでは損失が大きくなるため、低電圧の条件では十分な性能が得られないことがよくあります)。
本稿では、スレーブ・デバイスがEPROM に類するもので、それらをプログラミングするために求められる要件には触れないことにします。一般に、マスタ側のインターフェースから遠く離れた位置で、その種のスレーブのプログラミングを実施することはお勧めできません。また、本稿では、オーバードライブ速度で動作する1-Wire デバイスについても触れないことにします。オーバードライブ速度は、非常に短い距離で使用するケースを前提としたものです。つまり、長距離を前提とする1-Wire ネットワークでは使用するべきではありません。
1-Wire 対応のデバイスで使用できるワイヤの種類とトポロジの組み合わせは無数に存在します。このアプリケーション・ノートでは、1-Wire ネットワークが利用される最も一般的/標準的なアプリケーションだけを取り上げることにします。制限事項に反する状態で1-Wire ネットワークを動作させた場合や本稿で説明した内容を無視した場合には、ネットワークの信頼性が低下する可能性があります。
1-Wire ネットワークに関連する重要な用語
1-Wire ネットワークの性能について語る際には、「ラジアス(radius)」と「ウェイト(weight)」という2 つの用語が重要になります。それぞれの意味は以下のようになります。
- ラジアス:1-Wire ネットワークのラジアスとは、マスタ側から最も遠い位置にあるスレーブまでのワイヤの距離のことです。その値はm 単位で表します。
- ウェイト:1-Wire ネットワークのウェイトとは、ネットワーク内に接続されたワイヤの総量のことを指します。その値もm 単位で表現されます。
例えば、10m、20m、30m の3 本のブランチを備えるスター・トポロジの1-Wire ネットワークがあったとします。その場合、ラジアス(1-Wire マスタから最も遠い位置にあるスレーブまでの距離)は30m となります)。一方、ウェイトの値は60m です。つまり、ネットワーク内のワイヤの全長が10m+ 20m + 30m = 60m になるということです。
一般に、ケーブルの電圧の立上がり時間はネットワークのウェイトによって制限されます。一方、最も遅い信号の反射のタイミングはラジアスによって決まります。
スレーブ・デバイスのウェイト
ネットワークで対応できるウェイトには限界があります。その値はドライバ(1-Wire マスタ・インターフェース)に応じて決まります。また、ウェイトの値は、非常に少ないケーブルと多くのスレーブによって決まることもあれば、多くのケーブルと非常に少ないスレーブで決まることもあります。
ネットワークに複数のスレーブ・デバイス(iButton®デバイスをはじめとする1-Wire 対応のデバイス)を接続すると、それぞれによってウェイトが増加します。各デバイスのウェイトは同等であり、そのウェイトは短いワイヤのウェイトと同等だと見なすことができます。したがって、各デバイスについてはそれに等価なワイヤのウェイトを使って評価することが可能です。ネットワークを設計する際には、デバイスのウェイトを考慮する必要があります。通常、iButton デバイスのようなスレーブは、はんだ実装を前提としてパッケージ化されたスレーブと比べてウェイトが大きくなります。iButton デバイスは約1m のウェイトに相当し、iButton 以外のスレーブ・デバイスは約0.5m のウェイトに相当します。例えば、100 個のiButton デバイスを接続すると、そのネットワークのトータルのウェイトは100m 増加します。そのため、ネットワークの機能を維持するためには、ワイヤの総量を100m 分減らさなければなりません。
なお、ネットワークのウェイトは、プリント回路基板のパターンや、コネクタ、ESD 保護用のデバイスによっても増加することになります。
ウェイトには多くの要因からの影響が及びます。なかでも、静電容量が最大の要因であることは明らかです。例えば、カテゴリ5e のUTP(Unshielded Twisted Pair)はどのくらいウェイトに寄与するのでしょうか。その寄与分は、1-Wire の速度を前提にすると、約52pF/m の比率で静電容量に関係づけることができます。同様に、ESD 保護用の回路とプリント回路基板のパターンによるウェイトへの寄与分は、24pF/m の比率で静電容量に関係づけられます。1-Wire のバス全体で見ると、24pF に相当する基板のパターンやデバイスにより、約0.5m のウェイトが付加されることになります。
1-Wire ネットワークのトポロジ
1-Wire ネットワークは、かなり自由な形態で構成することができます。とはいえ、その構造は、1-Wire スレーブの分布や相互接続用のワイヤの構成に基づいて、いくつかの一般的なトポロジに分類することが可能です。具体的には、以下のうちいずれかのトポロジだと見なすことができます。
- リニア・トポロジ:1-Wire バスには1 組のペア線を使用します。マスタを始点とし、そのバスが最も遠いスレーブ・デバイスまで延びています。他のスレーブは、短い(3m 未満)ブランチまたはスタブによって1-Wire バスに接続されます。
- スタブ・トポロジ:1-Wire バスは1 本のメインのラインであり、マスタを始点として最も遠いスレーブまで延びています。他のスレーブは、長さが3m 以上のブランチまたはスタブによってメインのラインに接続されます。
- スター・トポロジ:1-Wire バスは、マスタにおいて、またはその近くで分割され、様々な長さの複数のブランチが設けられます。スレーブは、ブランチに沿って配置されるか、またはブランチの末端に配置されます。
様々なトポロジが混在している場合、ネットワークの実質的な限界を決めるのが非常に困難になります。そのような場合には、原則として、最も保守的な基準を適用すべきです。
スター・トポロジに関する注意点
これまでに行われたテストの結果から、非スイッチ型のスター・トポロジ(つまり、マスタ側で分岐する複数のブランチを持つもの)では、信頼性を確保するのが最も困難であることがわかっています。各種ブランチの接合部には、大きなインピーダンス・ミスマッチが存在します。1 つのブランチの末端からの反射は、ネットワークの(ラジアスではなく)ウェイトにほぼ等しい距離を伝搬します。その際、データのエラーが生じる可能性があります。そのため、非スイッチ型のスター・トポロジの採用は見送るべきです。実際、その性能を保証することはできません。
スイッチ型のネットワーク
ウェイトやラジアスを増やすことなく、ネットワークを拡張するにはどうすればよいのでしょうか。そのためには、ネットワークを複数のセクションに分割し、それらのうち1 つだけが電子的にオンになるように制御すればよいでしょう。単一電源で動作する低インピーダンスのアナログ・スイッチを利用すれば、物理的に見ればある種のトポロジを構成しているネットワークを、電気的には別のトポロジに見えるようにすることができます。つまり、スイッチを備える複数のブランチによって構成されたスター・トポロジが、実質的にはリニア・トポロジに見えるようにすることができるのです。その場合、常に1 つのブランチだけが有効になることには注意する必要があります。
上の図のネットワークは、ラジアスが150m でウェイトが450m のスター・トポロジとして構成されているように見えます。しかし、スイッチで制御した後の各パスについて考えると、このネットワークは実質的にはリニア・トポロジとして機能することがわかります。そのウェイトはわずか150m です。
スイッチ型のネットワークの各セグメントは、基本的には非スイッチ型のネットワークで構成できます。
1-Wireネットワークの制限
ネットワークのラジアスとウェイトの最大値はいくつかの要因によって決まります。それらの要因の中には、制御が可能なものと不可能なものがあります。
マスタ側のインターフェースは、許容可能なサイズという面で1-Wire ネットワークに大きな影響を及ぼします。同インターフェースは、ケーブルやスレーブのウェイトに対応するために十分な駆動電流を供給できなければなりません。また、同インターフェースは1-Wire の信号も生成する必要があります。その信号のタイミングは、ネットワークの仕様の範囲内に収まっており、ネットワークの充放電時間に対して最適化されていなければなりません。加えて、同インターフェースについては、ネットワークに対する最適なインピーダンス・マッチングが実現されている必要があります。反射してラインに戻った信号が、他のスレーブに干渉することがないようにしなければならないからです。
ネットワークが小規模である場合、マスタ側のインターフェースは非常にシンプルなもので構いません。その場合、静電容量は小さく、反射エネルギーは非常に早く戻ってくるため問題は生じないからです。加えて、ケーブルにおける損失も最小限に抑えられます。プルダウン用にはシンプルなアクティブ素子(FET)、プルアップ用にはパッシブ素子(抵抗)を使えば十分です。しかし、1-Wire ネットワークのラインが長くなり、接続されるデバイスの数が多くなると、複雑な力が作用するようになります。マスタ側のインターフェースは、それらすべてに対処可能なものでなければなりません。
ネットワークのラジアスは、いくつかの要因による制限を受けます。例えば、信号の反射のタイミング、ケーブルによる遅延時間、ケーブルの抵抗、信号レベルの低下などが制限の要因になります。電話のケーブルの場合、一般的な信号の伝搬速度は光速の約2/3 です。例えば、750m のケーブルを往復する信号の遅延は7.5 マイクロ秒になります。ここで、マスタが7.5 マイクロ秒にわたりラインをローに引き下げて、読み出しのタイム・スロットを開始するケースを考えます。その場合、マスタのローのパルスが終了するタイミング(つまり信号の往復後)は、近くにある高速スレーブがラインをローに引き下げるのを停止する瞬間と同時になります。結果として、そのような長いケーブルを往復する信号の遅延により、マスタが近くのスレーブと通信できなくなります。
ネットワークのウェイトは、ケーブルが十分な速さで充放電され、1-Wire のプロトコルを満たすことができるかどうかによって制限されます。単純な抵抗によってプルアップを実現する場合、ウェイトの上限は約200m です。高性能の1-Wire マスタを設計する場合、アクティブ素子を使ってプルアップを実現する(アクティブ・プルアップ)ことによってこの制限を克服します。それにより、ロジックによる制御の下、より多くの電流を供給し、対応可能なウェイトを500m 以上にまで拡張することができます。これについては、アプリケーション・ノート244「Advanced 1-Wire Network Driver(先進的な1-Wire ネットワーク・ドライバ)」をご覧ください。
寄生電力の問題
1-Wire の信号は、当然のことながら、通信用として十分なものでなければなりません。それだけでなく、1-Wire では、その信号によってスレーブの動作電力を供給する必要があります。各スレーブは、バス上の電圧が内部のエネルギー貯蔵用のコンデンサの電圧よりも高い場合、バスから電力を受け取ります。ネットワークのウェイトが過大になると、マスタから供給される電流が、スレーブの動作電圧を維持するために十分なレベルではなくなる可能性があります。
寄生電力の条件が最悪になるのは、マスタから非常に長いゼロ・ビット(各ビットのデータがゼロ)のシーケンスが送信されるケースです。この場合、ラインはほとんどの時間、ローの状態になります。つまり、スレーブを再充電する機会がほとんどなくなります。ビット間の回復時間の間にバスが十分な電圧に達し、回復時間が十分に長くとれれば問題はありません。各スレーブの内部動作電圧が低下すると、スレーブがバスを駆動してゼロ・ビットに引き下げる能力が低下してタイミングが変化します。最終的に、寄生電圧が限界のレベルを下回ると、スレーブはリセットの状態に移行して応答を停止します。その後、再び十分な動作電圧を受け取ったらスレーブはプレゼンス・パルスを送信しますが、その際に他のバスのアクティビティを妨げてしまう可能性があります。ネットワークのエネルギーがスレーブの動作電力を維持できるだけの十分なレベルにはない場合、データに応じて種類の異なる障害が断続的に生じることになります。
分散型のインピーダンス・マッチング
1-Wire バスのメリットの1 つは、必要最小限の設計によりネットワークをシンプルに構築できることにあります(最終的にはコスト削減にもつながります)。ただ、ネットワークにスレーブ以外のコンポーネントを分散配備して使用するのは常に避けられてきました。
1-Wire ネットワークにスタブを接続すると、その分岐点でインピーダンス・ミスマッチが生じます。スタブの端での反射は、信号がスタブの長さを伝搬するのにかかる時間だけ遅れてメイン・トランクに戻ります。そうした反射によって、ネットワーク上の他のスレーブに問題が生じる可能性があります。これについては、スタブに直列に抵抗を配置するとよいでしょう。それにより、ミスマッチの影響を軽減し、反射エネルギーの振幅を抑えることができます。その抵抗により、スタブで発生した反射がメイン・トランクに及ぼす悪影響が軽減されるということです。
上の実装例では、メイン・トランクにスタブを接続する各ポイントに150Ω の抵抗を付加しています。この抵抗値により、各ポイントでのミスマッチが約20%軽減されます。結果として、スタブの反射を約40%減衰させることが可能になります。但し、抵抗を追加するとノイズ耐性が約80%低下することには注意が必要です。これまでに行ったテストの結果からは、100Ω の抵抗を使用した場合でも良好な性能が得られています。この値であれば、ノイズ耐性はそれほど低下しません。
注:シリアル to 1-Wire のライン・ドライバ「DS2480B」と、「DS2484」のデバイス・ファミリは、いずれも1-Wire マスタとして機能する製品あり、アクティブ・プルアップを採用しています。このことから、上述した抵抗を追加する方法を適用すると悪影響を受けます。上記の方法は、これらの製品に適用してはなりません。抵抗を用いた分散型の手法は、データ入力のスレッショルドを高く設定したカスタムのマスタ側ドライバを使用した場合に効果的に機能します。
マスタ側のインターフェース・デバイス
1-Wire ネットワークをマイクロコントローラやPC に接続するにはどうすればよいのでしょうか。その方法はいくつか考えられます。各1-Wire マスタは、それぞれ異なる用途に向けて設計されています。そのため、別の用途で使用した場合に、必ずしも高い信頼性が得られるとは限りません。加えて、マスタ側のハードウェアは、1-Wire ネットワークを設計する際に限界を決める上で重要な要因になります。短いワイヤや近くのiButton プローブを対象としたシンプルなハードウェア・インターフェースは、大規模なネットワークや複雑なワイヤ構成に接続すると、うまく機能しません。逆に、非常に長いライン向けに設計された高性能のドライバを中短距離のネットワークで使用すると、性能が低下する可能性があります。
現在最も一般的に使用されているマスタ側のハードウェア・インターフェースとしては以下のようなものがあります。
- マイクロプロセッサのポート(ピン)
- 1-Wire マスタを内蔵するマイクロコントローラ
- 合成が可能な 1-Wire バス・マスタ(例えば「DS1WM」)
- シリアル・インターフェース・プロトコル変換デバイス(例えば、DS2480B、「DS2482-100」、DS2484)
なお、長距離のラインを使用するアプリケーションでは、回路の変更が必要になるでしょう。稿末の付録A は、マイクロプロセッサのポート(ピン)に接続する場合に使われる回路の例です。具体的には、スルー・レートの制御機能と1kΩ のプルアップ抵抗を備えたFET ベースのドライバを紹介しています。このインターフェースを使用すると、最大200m のラジアスと最大200m のウェイトに確実に対応することができます。
DS2480B は、中短距離のラインに効率的に対応できるように設計されています。同IC とネットワークの間にシンプルなRC 回路を適用すれば、中距離ネットワークの性能と信頼性を大幅に高めることができます(付録B)。その種のフィルタを使用すると、このマスタはラジアスまたはウェイトが最大200mのネットワークに確実に対応することが可能になります。ただ、インターフェース・デバイスであるDS2480B は、可変タイミング機能を備えています。これを使用することでも、1-Wire ネットワークの信頼性と性能を高められます。この点には注意してください。そのタイミングは、一部のソフトウェア(Windows®用の1-Wire ドライバなど)によって最適な値に設定されますが、あらゆるソフトウェアによって調整できるというわけではありません(付録Cとアプリケーション・ノート4104「DS2480Bの1-Wire®タイミングの理解と設定」を参照)。
長距離のラインを使用するアプリケーション向けに推奨される回路は、先ほど挙げたアプリケーション・ノート244 でも説明されています。すなわち、高度なバス・インターフェースを内蔵したマイクロコントローラが適しています。マスタ側のインターフェース回路は、(ハイ、ロー両方のドライバに対する)インピーダンス・マッチングを実現すると共に、インテリジェント(ソフトウェア制御)なアクティブ・プルアップ回路を使用します。そのプルアップ回路は、1-Wire のプロトコルがバスをハイ・レベルにすべきだと判断した場合にオンになります。また、バスの電圧がサンプリングされてハイ・レベルにあることが判明した後の読み出し処理の期間にもオンになります。このインターフェースは、1-Wire をベースとする大規模/小規模のネットワークのどちらでも十分に機能します。特に、最大500m という大きなウェイト/ラジアスのネットワークであっても確実に動作させることができます。
1-Wire ネットワークの信頼性を高めるための要件
1-Wire ネットワークに障害が発生した場合に検索アルゴリズムを実行すると、デバイスが消失したという結果が現れることがよくあります。詳しくはアプリケーション・ノート187「1-Wire 検索アルゴリズム」を参考にしていただきたいのですが、実際には物理的に存在するデバイスが検索結果に表示されたり消えたりすることがあるのです。場合によっては、ネットワークやデバイスの一見軽微な変化が原因でデバイスの検索結果に大きな影響が及ぶことがあります。なぜそのようなことが起きるのでしょうか。
1-Wire バスで発生するすべてのアクティビティのうち、デバイスの検索は最も複雑なものです。バスに問題があると検索の実行は非常に困難になります。検索の処理は、すべてのスレーブが同時にバスをローに駆動している唯一の時間(プレゼンス・パルスを除く)に行われます。つまり、検索中のバスの状態は、選択されているスレーブが1 つしかない通常の通信時の状態とは大きく異なります。多くのスレーブのうちどれかがエッジを捕捉できなかったり、パルスの識別に失敗したりすると、検索アルゴリズムとの同期が取れなくなります。その結果、検索の後に続くビットにエラーが発生します。検索の処理において障害が生じるのは次のようなケースです。すなわち、バスに問題が発生したことにより波形の立上がりエッジにグリッチが生じた場合、信号がロー・レベルとして有効な値にまで達しなかった場合、検索中にいずれかのデバイスが電力不足になった場合などです。検索に関する障害を処理するためには、検索アルゴリズムを終了して再実行することになるでしょう。このとき、それまでに見つけることができなかったスレーブは、検索の対象から除外されているように見えるはずです。1 つのスレーブ・デバイスの1 つのビットに障害が発生しただけでも、任意の数のスレーブに影響が及ぶ可能性があります。
通常、検索アルゴリズムはノイズが原因でデバイスを見つけられない可能性があることを想定して設計されています。例えば、iButton デバイスではタッチ・コンタクトが用いられます。iButton デバイスが含まれるネットワークに新規のiButton デバイスが追加された場合、新規のデバイスからのプレゼンス・パルスによって瞬間的に短絡が生じることがあります。そうしたイベントが発生するタイミングによっては、プレゼンス・パルスが検索処理の妨げになることがあります。検索アルゴリズムは、デバウンスの発生期間にそのスレーブが見つからなくなったことが確認された場合に限り、発見済みのスレーブのリストからそのスレーブを削除することによって問題を処理します。
検索に伴う障害の発生原因は多岐にわたります。一般的なものとしては次のような例が挙げられます。まず、ラジアスが大きく、ウェイトが重いネットワークの場合、寄生電力の不足が問題になります。また、ラジアスが中小規模で、ウェイトが軽いネットワークでは、波形のエッジの反射が原因で障害が発生します。更に、DS2480B をベースとするインターフェースでは、波形の立下がりエッジで生じるリンギングによってアクティブ・プルアップが誤って起動するケースが考えられます。
検索に伴う障害は、ネットワークで生じたわずかな変動によって発生することがあります。例えば、単にネットワークにスレーブを接続しただけでも発生するほど敏感であるように感じられるかもしれません。そのような敏感さは、ネットワークの状態が何らかの条件に関する境界線上にあり、ごくわずかな変動によって検索が成功したり失敗したりすることで表面化します。つまり、すべてのデバイスが検索アルゴリズムによって確実に検出されているように見えるネットワークでも、実際には失敗に近い状態である可能性があるということです。また、デバイスのわずかな劣化によって、一見すると致命的に感じられる障害が突然発生することもあり得ます。わずか1 つの不良ビットが原因で、検索の処理が停止して、デバイスが消失したように見えることもあるのです。そのような事態を回避するにはどうすればよいのでしょうか。そのためには、公開されている仕様やガイドラインを遵守することが重要です。言い換えれば、ケーブル、デバイス、接続の変動に対して十分なマージンや耐性を備える信頼性の高いネットワークを実現しなければなりません。
一般に、一貫性のある検索を確実に実行できるネットワークであれば、1-Wire のその他の機能も確実に実行することが可能です。
不適切なタイミング
ソフトウェア(ファームウェア)を使用して1-Wire の信号を生成する(ビットバンギング)場合、すぐには顕在化しないミスを犯しがちです。
1-Wire マスタのプログラミングを行う際に最も犯しやすいミスは、タイム・スロットの立上がり(立下がり)エッジの後にスレーブからのデータをサンプリングするタイミングとして遅すぎる値を設定してしまうというものです。スレーブでは、温度や電圧が変化するのと同様に、タイミングが大きく変化してしまうことがあります。また、製造プロセスに起因して、バッチごとにスレーブの性能がばらつくということも起こり得ます。仮に、30マイクロ秒の間隔で信号をサンプリングするように設計を行ったとします。その場合、実験室でのテストに合格したのでそのまま生産に移行するというケースもあるでしょう。しかし、その結果として、出荷する製品に不適切なタイミングが適用されてしまうことがあります。その後、どこかの時点でバッチやネットワークの状態が変化し、スレーブにおける実際のタイミングが32 マイクロ秒から29 マイクロ秒の範囲で変化したとすると、マスタ側インターフェースにおいて障害が発生する可能性があります。実験室の条件下で、システムの動作が一見完璧に見えたとしても、信号のパラメータの仕様を必ず確認しなければなりません。
まとめ
電子システムを構築する際には、信頼性の高い動作を確保するために、あらゆる使用条件に対して、あらゆる電子部品の仕様を満足するようにしなければなりません。それと同様に、1-Wire ネットワークを構築する際には、構成要素となるデバイスの仕様を十分に確認する必要があります。つまり、信頼性の高い動作を得るためには、マスタ、ネットワーク・ケーブル、1-Wire スレーブの間で適切なマッチングが得られるようにすることが不可欠です。
付録A. CPU バス・インターフェースの改良
以下に示すのは、CPU バス・インターフェースに改良を施した例です。
付録B. RC フィルタの追加
以下に示すのは、中短距離のネットワークに適応させるために、DS2480B のインターフェースにRCフィルタを追加した例です。
ウェイトが最大200m の中距離のラインでは、このシンプルなRC フィルタを追加することによってDS2480B の動作が改善されます。DS2480B ベースのマスタ側インターフェースを使用する場合、このフィルタは10m~100m のネットワークに適用すれば有効に機能します。ネットワーク内の他のコンポーネントのウェイトにもよりますが、一般的には470pF のコンデンサを使用することが推奨されます。これより値の大きいコンデンサを使用すると、DS2480B に大きな負荷がかかることになります。
付録C. DS2480B のタイミングの最適化
シリアル to 1-Wire コンバータであるDS2480B は、小規模のネットワーク向けに最適化された1-Wire のタイミングの設定をデフォルトで備えています。この設定は、中大規模のネットワークでは必ずしも適切に機能するとは限りません。
DS2480B のタイミングとスルー・レートの設定は、ソフトウェアによって制御できます。Windows用の1-Wire ドライバを使用すれば、このインターフェースに対応してそれらの値を調整することが可能です。高い信頼性で性能を発揮するためには、DS2480B を常にフレックス・モードに設定してタイミングの値を調整する必要があることに注意してください(同モードの設定に関する詳細についてはDS2480B のデータシートをご覧ください)。
DS2480B で調整することが可能な設定としては、以下のようなものがあります。
- プルダウン時のスルー・レートの制御:
バスがハイ・レベルからロー・レベルに引き下げられる際の速度について制御することができます。立下がりが速すぎる(スルー・レートが高い)とリングングが発生し、データに対応する信号波形に干渉が及びます。一方、立上がり時間と立下がり時間が遅すぎるとタイミングの要件を満たさなくなると共に、遷移の期間にノイズや反射の影響を受ける可能性があります。 - Write 1 におけるローの時間:
各タイム・スロットを開始する立下がりパルスの幅を制御できます。このパルスが狭すぎると、長いラインのマスタ側がローになる際、パルスが終了するまでに有効なレベルに達しない可能性があります。 - データのサンプリングにおけるオフセット/回復時間:
このパラメータは、スレーブからのデータがサンプリングされるタイミングについて規定するものです。その値が小さすぎると、ラインが立ち上がる際、サンプリングが実施されるまでに有効なハイ・レベルに達しない可能性があります。一方、このパラメータの値が大きすぎると、その範囲の高速端の近くで動作しているスレーブのデータを誤って読み取ってしまうかもしれません。このパラメータはビット間の時間を規定するものでもあります。その期間中にスレーブの寄生容量が再充電されるようにしなければなりません。
これまでに、長いバス・ラインと短いバス・ラインを対象として行われたテストにより、あらゆるネットワークにとって最適なタイミングは次のようになることがわかりました。
- プルダウン時のスルー・レート:1.37V/マイクロ秒
- Write 1 におけるローの時間:11 マイクロ秒
- データのサンプリングにおけるオフセット/回復時間:10 マイクロ秒
これらの値から、最も遅いサンプル時間(21 マイクロ秒*)と最も長い回復時間(10 マイクロ秒)、適切に制御されたスルー・レートが明確になります。アプリケーション・ノート4104 によると、Write1 におけるローの時間である8 マイクロ秒と、データのサンプリングにおけるオフセット/回復時間である9 マイクロ秒という少し速いタイミングについては検討の余地があります。これらの値は、15 マイクロ秒から54 マイクロ秒の速度範囲の1-Wire スレーブに対応できます。
* これらのタイミングは、プルアップ電圧が4.5V~5.5V のネットワークにだけ適用することができます。
付録D. 信号波形の例
ここからは、様々な状況でオシロスコープによって取得した1-Wire ネットワークの信号波形を示していきます。各信号の波形やそれに現れている影響については、本文や参考資料を参照してください。
上の画像は、バス・リセットとプレゼンス・パルスの例です。スルー・レートが制御されたエッジ(マスタ)と制御されていないエッジ(スレーブ)の違いに注目してください。マスタ側の立下がりエッジはクリーンで、アンダーシュートもリンギングも生じていません。一方、スレーブ側の立下がりエッジでは、バスにリンギングとアンダーシュートが発生しています。
上の画像も、バス・リセットとプレゼンス・パルスの例です。マスタはバスを480 マイクロ秒間ローに引き下げます。バス上のすべてのデバイスは、これがリセット信号であると認識します。このバス・リセットに対し、スレーブはプレゼンス・パルスを出力することによって応答します。このとき、複数のスレーブが同じ期間にプレゼンス・パルスを生成することになります。その結果、複数のパルスが重なって1 つのパルスが形成されます(時間軸は200 マイクロ秒/div であることに注意してください)。
上に示したのは、Read 1 またはWrite 1 のタイム・スロットの信号波形です。マスタはバスを約10マイクロ秒間ローに引き下げ、その後を解放します。立下がり信号のスルー・レートが制御されている点に注目してください。このタイム・スロットは約70 マイクロ秒継続し、その後、次のタイム・スロットが始まります(時間軸は10 マイクロ秒/div に変更してあります)。
続いて、Write 0 のタイム・スロットを示しました。マスタはバスを60 マイクロ秒間ローに引き下げた後、約10 マイクロ秒解放します。その後、次のタイム・スロットが始まります。
こちらは、Read 0 のタイム・スロットです。マスタはバスを約10 マイクロ秒間ローに引き下げ、その後に解放します。それに対し、スレーブは更に長い時間バスをローに保持することでゼロ・ビットを返しています。スレーブのタイム・ベースは15 マイクロ秒から60 マイクロ秒の間で変化する可能性があります。
上の画像には、プルアップ抵抗だけを備えるマスタを使用した場合に生じる過剰なウェイトの影響が現れています。このネットワークのラジアスは300m で、遠端に30 個のデバイスが存在します。ご覧のように、ネットワークの端からの反射と、非常に遅い立上がり時間がはっきりと確認できます。これはRead 1 のタイム・スロットですが、サンプリングの時点でデータのレベルが境界線上に存在しています。そのため、マスタがデータを読み誤る可能性があることに注意してください。
立上がり時間が遅いと、回復時間(タイム・スロット間の期間)の長さが不十分になります。その結果、バスがスレーブを再充電するために十分な電圧レベルまで達しない可能性があります。上の画像では、スレーブの内部動作電圧が危険なレベルで低くなっています。スレーブは、特にWrite 0 のタイム・スロットが長く続いた場合、電力不足が原因でリセット動作に移行することがあります。
より高度なネットワーク・バス・ドライバを採用すれば、長距離のネットワークやスレーブ・デバイスによるウェイトの追加に対応できます。その種のドライバでは、インピーダンス・マッチングを実現すると共にアクティブ・プルアップが活用されています。上の信号波形は、Read 1 またはWrite 1 のタイム・スロットです。ご覧のように、アクティブ・プルアップの効果が見てとれます。
上に示したのは、Read 0 のタイム・スロットです。同じくアクティブ・プルアップの効果が見てとれます。
上に示したのは、ウェイトの大きいネットワークにおけるバス・リセットのシーケンスです。アクティブ・プルアップを適用することにより、リセット・パルスの後と、その後のプレゼンス・パルスの後の波形がどのようになるのかがわかります。上の画像では、近端と遠端のプレゼンス・パルスが重なっています。マスタと遠端のスレーブの間のケーブルに抵抗を追加することによって、遠端のデバイスでは、近端のデバイスよりもローのレベルが高くなります。
上の画像は、スタブやブランチのケーブルの反射が原因でアクティブ・プルアップが誤って起動し、その結果として混乱した状態が発生した様子を表しています。これはRead 0 のタイム・スロットです。反射によってアクティブ・プルアップが起動し、スレーブ・デバイスのプルダウンとの衝突が生じていることがわかります。
注:ここまでに示した信号波形は、すべてネットワークのマスタ側で取得したものです。ネットワークの他のポイントで波形を観察するためには、オシロスコープのグラウンドが1-Wire バスに影響を与えないようにするために、差動プローブを使用する必要があります。
この記事に関して
製品
シングルチャネル1-Wireマスター、可変タイミングおよびスリープモード内蔵
1-Wire、デュアルチャネル、アドレス指定可能なスイッチ
シリアルから1-Wireへのラインドライバ
シーケンス検出およびPIO付き、1-Wireデジタル温度計
1-Wire寄生電力デジタルサーモメータ
1-Wire寄生電源、周囲温度センサー
Thermochron iButtonデバイス
iButton Hygrochron温度/湿度ロガー 、8KBデータログメモリ内蔵
8KBデータログメモリ付き、iButton温度ロガー
iButton高密度温度ロガー、122KBデータログメモリ内蔵
1-Wire 4Kb EEPROM
iButton 32KB EEPROM
20Kb 1-Wire EEPROM
1024ビット、1-Wire EEPROM
PIO付き、4096ビットアドレス指定可能1-Wire EEPROM
シリコン・シリアル・ナンバー、VCC入力内蔵またはなし
iButton 4Kb EEPROM
iButtonシリアルナンバー
iButton 1024ビットEEPROM
1024ビット、1-Wire EEPROM
シリコンシリアルナンバー
資料
{{modalTitle}}
{{modalDescription}}
{{dropdownTitle}}
- {{defaultSelectedText}} {{#each projectNames}}
- {{name}} {{/each}} {{#if newProjectText}}
-
{{newProjectText}}
{{/if}}
{{newProjectTitle}}
{{projectNameErrorText}}