長距離LEDチェイサーデザイン

私はあなたがモジュールを追加するにつれて拡張するLEDチェイサーを設計する必要があります。

マスターとN個のスレーブを使用することを考えていましたが、私の最初の目的は、一方のモジュールから他方のモジュールにコマンドを送信できるのでUARTを使用することです。しかし、システム内の接続されているモジュールの数をマスターにどのように送信するのですか。マスタは、起動パターンとタイミングを制御するMCUになります。スレーブは、小型の安価なMCU、またはいくつかのLEDドライバ、またはその他のものにすることもできます。

Here is an illustration. enter image description here

0
ru de
1本の信号線で双方向通信を可能にする方法はたくさんあります。最も単純なものは、ほとんど一方向に機能するものですが、時折逆方向に返答を要求する質問を特徴とします。 ATmegaでは、一方向に使用するかもしれない特別な機能ピンが一時的に目的を変えられたり、反対側のソフトウェアによってビット バップされたり監視されたりするかもしれません、おそらくより低速で。または、送信ピンと受信ピンを一緒に接続することもできますが、通常は送信ピンをGPIO入力として設定したままにします。
追加された 著者 Andrew Walker,
アドレス指定可能なLEDストリングの消費電力を測定することは良いテクニックですが、私は単一の活性化されたピクセルを線上で歩き、それが止まったところで通常の電圧低下を引き起こしたところコマンドは存在しないものに対処されます。
追加された 著者 Andrew Walker,
cpldcpu.wordpress.com/2014/11/16/ws2812_length を参照してください。
追加された 著者 Eloise Coramsfield,

4 答え

あなたはGetSlaveCountCommandを実装することができます。あなたはOUTチャンネルにコマンドを送ります。 OUTチャンネルのそのスレーブは、その「子」カウントで応答します。頼まれたとき、あなたはあなたの奴隷の「子」の数に1を加える。マスターにRXを実装するだけです。

チェーンを変更してリングを作成する場合は、マスターがスレーブ1に0を送信するというchirpコマンドを実装することもできます。スレーブ1はスレーブ2に1を送信します。最後のスレーブはマスターにループバックします。あなたはあなたのカウントを得るでしょう。チャープが最初にマスターから始まったかどうかを示すために別のバイトを追加できるので、この手法は興味深いです。そうでなければ、実際のカウンター値はどのスレーブが孤立しているかを示します。

たとえば、スレーブが5つあり、マスターが5を受け取ると予想されます。スレーブ3と4の間の接続が切断されると、スレーブ4は1(マスターからではないことを示すフラグ付き)を送信します。 flag)とmasterは、最後から0インデックスモードの2番目のスレーブがチェーンから切断されていることを認識します。すべてのスレーブが正しく接続されると、マスターはマスターフラグではなく5を受け取り、設定されないため、実際のカウントです。

このスレーブ1 TXからスレーブ2 RXに1つのUARTポートのみを使用する場合。スレーブ2 txからスレーブ3 rxなどに接続すると、まったく同じ量の配線が必要になり、デバイス障害の検出とともにフィードバックがマスターに返されます。

1
追加された
@Seekerチェーンの最後のTXとRXの出口をジャンパーします。
追加された 著者 Callum Rogers,
それらが接続されている順序は関係ありません。ポイントは、各スレーブが次のマスターであるということです。実際の「マスター」は、その直接のスレーブ(0)に数字を送ります。その奴隷は、その順番が他の奴隷+1にその番号を単に渡すであろうと関係なく。最後のものはそれ自身か直接マスターのどちらかにチェーンバックするだけです。スレーブ間の唯一の違いは配線であり、実際の "pcb"や "code"は違います。
追加された 著者 user27436,
わかりました、私はあなたが何を意味していたか理解していると思います、しかし私は奴隷がすべて同じでありそして私がどれくらい添付されるかわからないので私はマスターに戻りません。 3かもしれません7かもしれません。
追加された 著者 Steve Killick,
私はどれが最後のものになるかわからない、奴隷はすべて同じであるべきです。任意の順序で接続
追加された 著者 Steve Killick,

あなたの選択のマイクロが単一のマイクロを持っているなら、あなたはこのようにそれらをチェーンすることができます。

enter image description here

その方式では、メッセージは通常、アドレスバイトを含むデータのパケットとして送信される。最初のスレーブがパケットを受信し、それが自分宛てではないと判断した場合は、単純に次のパケットにデータを送信します。

パケットがそのスレーブのためのものである場合、スレーブはそれが順序付けされたことをして応答パケットを送信する、これもまた以下のスレーブによって単純に転送される。

特別な "WhoIsThere"コマンドを各スレーブで送受信して、最初にコマンドを変更してカウントを増やすか、スレーブの機能が異なる場合はコマンドの最後に1バイト追加することもできますその特定のスレーブが何をするかを識別するためのパケット。その過程で、各スレーブは受信したコマンドに既に追加されているデータからその行のアドレスを知ることができます。

最後のスレーブはTXとRXが互いに接続されているため、適切に処理するためにすべてがマスターに戻る必要があります。

ライン長がスレーブ間のホップに制御されるように、スレーブもリターンラインをバッファする必要があります。

ボードにロジックを追加して、アドレスが設定された後にMicroがPass-the-Parcelチェーンをバイパスできるようにすることもできます。これにより、特にロングチェーンではパフォーマンスが大幅に向上します。

schematic

simulate this circuit – Schematic created using CircuitLab

0
追加された

@Mishyoshiが示唆しているように、動的に文字列を拡張するときに文字列の長さを取得する方法が必要です。
これを行うには、最後のモジュールが応答するようにするコマンドを送信します。ただし、これは、各モジュールが接続されているダウンストリームパートナーがあることを認識していることを意味します。

従来のRS232では、CTS/RTSでこれを実行していたので、出力ポートにクライアントが接続されていることがわかります。これには余分な配線が含まれるため、解決策として避けたいと思います。

モジュール間の接続テストを行わない単純なプロトコルとして、各モジュールがそのID番号で応答するコマンドを送信することができます。したがって、1つの出力コマンド文字に対して、各モジュールから1文字の応答が返されます。マスターの南では、マスターに戻って順番に4つのキャラクターを得るでしょう。 定期的にコマンドを送信すると、実行可能なスキーマが手に入ります。ここでは、各モジュールを個別に識別し(固有のモジュールID番号がある場合はIMOです)、文字の順序で文字列内の位置を示します。
ここでの欠点は、outコマンドがモジュール文字列の最後に到達したときに、文字列の最後に到達したことを知るためにタイムアウト値を使用する必要があることです。

関与する文字の返信数を減らしたい場合や、モジュールのID番号を持たない場合は、Vin電力線に電流検出器を使用することをお勧めします。一定のmA(ダウンストリームのMCUで十分かもしれません)を言って、電流が引かれていればサウスサイドクライアントが接続されていると仮定します。最後のモジュールは、他のモジュールが接続されているかどうかを認識し、接続されていない場合は応答文字を送信します。そのため、outコマンドはqueryコマンドから1文字の返信を受け取ります。
文字列の数を取得するには、モジュールはマスターに戻る途中で各モジュールを通過するときに戻り文字の数を増やす必要があります。各モジュールは、カウント値を文字列内の独自の位置番号として記録します。そのため、モジュールは南端から1から始まるカウント値を持ちます。

Vinの話題ではありますが、ワイヤに流れる電流を減らすには、もっと高い電源電圧(たとえば48 V DC)を使用することをお勧めします。 VinとGndの両方で対処する電圧降下があるので、電圧を上げるとこの問題は軽減されます。

RS232 Tx/RXを使用している場合は、ボーレートはモジュール間の距離を反映する必要があります。10mで、これ以上9600ボーは推奨されません。これがアプリケーションより十分速いかどうかを判断してください。

0
追加された

Texas Instruments TLC5973単線式インタフェースを備えた3チャネル、12ビット、PWM定電流LEDドライバの使用を検討したいと思うかもしれません。

出力を使用してRGB LEDを駆動するのではなく、1つの出力を抵抗付きのPWMゲートドライバとして使用します。

TLC5973 Connector Design

enter image description here

0
追加された