単一ピンからの25個のLEDのシリアル制御


8

使用可能なデジタルピンが1つあるマイクロコントローラーがあります。

25個のLEDを制御するにはどうすればよいですか?


2
LEDは個別にアドレス指定可能ですか、それとも同時にすべてオン/オフにしますか?
Vincent Van Den Berghe

LEDは別々にアクセスできるようになっています。マイクロコントローラはそれらに電力を供給することを意図しておらず、単にそれらの状態を決定しています。また、「デジタルポート」とはピンを意味します。
Archgoon

回答:


11

I2C IOエキスパンダー:-プロトコルのオーバーヘッドが多少ありますが、非常に多数(数千)のLEDに拡張できる必要があります。

シンプルなシフトレジスタ -Dead Simpleインターフェイス。シフトレジスタのクロックがかなり高速でない場合、更新時にLEDがちらつくことがあります。ダブルバッファシフトレジスタを使用すると、これが修正されます。


おかげで、これはまさに私が探していたものですが、それらが何と呼ばれていたかわかりませんでした。
Archgoon

2
それには、少なくとも1つのピンが必要です。シフトレジスタは、クロックとデータ用に少なくとも2つのピンを必要としませんか?
blalor

@blalor-はい。ただし、これらの2つのピンは複数のI2Cデバイス間で共有されるように設計されています。
ケビンフェルメール

I2Cも2行です。
XTL、

2
ダラス1線は1つのピンしか必要とせず、Nデバイスに拡張されます。
Tim Williscroft、2010年

16

シフトレジスタとI2Cは適切ですが、少なくとも2つのピンが空いている場合のみです。ダラスの1ワイヤーポートエクステンダーDS2408が最適なソリューションになると思います。ダラスの1線式デバイスアクセスのコードはそれほど複雑ではなく、Webには多くの問題があります。

1つのピンに接続された複数のDS2408を使用するか、単一のDS2408の後にロジックを実装することができます。


2
I2Cは、ピンが空いていない場合に使用できます。ただし、I2Cバスがそのように使用されており、アドレスの競合がないと仮定します。
ケビンフェルメール

5

すでに指摘したように、IOピンが1つだけの場合は、1線式エキスパンダー/シフトレジスタを使用するか、I2Cバスに別のデバイスを追加できます。まだ言及されていない唯一のことは、SPIポートに別のスレーブを追加する可能性です。

SPIは4線式プロトコルと呼ばれます-クロック線と選択線の2本のデータ線があります(共通グラウンドも同様ですが、通常はカウントされません)。ただし、最初の3つはバス上のすべてのデバイス間で共有されるため、最初の3つ以降の各デバイスは、トレース/ワイヤを1つだけ使用します。また、SPIはバスを全二重に増やしますが、このアプリケーションでは問題になりません。


1

いくつかのシフトレジスタをつなぎ合わせるだけです。(これにより、LEDを切り替える頻度が減ります。)


1

本当に1つのピンしか利用できない場合、ダラス1線式バスは最も明白なもののように見えます。ただし、これは出力専用であるため、より安価なソリューションがあります。データとクロックの両方を伝送するシリアルPWMバスはセットアップが簡単です。たとえば、davidcaryでも言及されているRoman Blackのページを参照してください74VHC164のようなシリアルインパラレルアウトシフトレジスタのみが必要です。必要な数の出力にカスケードできます(1つの164には8つの出力があります)。
このソリューションでは、LEDは静的に駆動されます。

I2CのSPIなど、共有できる他のI / Oがある場合は、マキシムのMAX6950などのより豪華なソリューションが必要になる場合があります。MAX6950は、いくつかの機能を挙げて、点滅と輝度制御、およびスルーレート制限を備えています。LEDは多重化されているため、必要なのは1つの16ピンドライバーだけです。


0

答えはおそらく「一連のシフトレジスタ」ですが、質問をより具体的にすることができますか?どのマイクロコントローラー?「デジタルポート」とはどういう意味ですか?単一のピン?


おかげで、私は明確にしました、そしてシフトレジスターは私が探しているものです。ありがとうございました。
Archgoon、

0

サイズに依存する25個のLEDは、マイクロコントローラーの単一のデジタルIOピンに大量の電力を消費する可能性があります。それらを直接駆動するのではなく、単純なFETスイッチを使用して(IOがゲートに接続されているため)、LEDチェーンへの電力を制御する必要があります。

アプリケーションによっては、これを実現する他のより堅牢な方法があります。しかし、fetを投入すると、おそらく最速で作業できます。

たとえば、可変信号をゲートする場合、デジタルリレーと呼ばれることもある、より複雑なデバイスがあり、それをデジタルで切り替えることができます。

単一のIOポートで25個のLED を個別に制御する場合。他の人が示唆したように、いくつかのシフトレジスタを使用できます。シリアルプロトコル(I2Cなど)を使用して別のICと通信することを含む、より複雑なソリューションがあります。


0

Roman Blackは、単一のマイクロコントローラーピンから任意の数のLEDを独立して制御できるshift1システムについて説明しています。

@Fake Name、@ Tim、@ pingsweptはすべて、いくつかのシフトレジスタを一緒にチェーニングすることを提案しています。74HC595は正常に動作します。(おそらく、他のチップが少しうまく機能するでしょう)。

(@reemrevnivek、この種のデイジーチェーン接続されたSPIを使用すると、最初のデバイス以降の各デバイスは、多くの人が主張することに反して、マイクロコントローラーにピンをこれ以上必要としません-なぜあなたはそれらを聞くのですか?:-)。

通常、これには、マイクロコントローラーにMISO、MOSI、SCLK、およびラッチの4つのピンが必要です。出力を行うだけなので、MISO入力ピンは必要ありません。

Roman Blackは、単一のマイクロコントローラー出力の非常に注意深いタイミングと、アナログ回路の注意深い微調整により、単一のマイクロコントローラーピンが、一般的なSCLK、DIを分離するシンプルに見えるアナログ回路を駆動できることを発見しましたチェーンの最初のチップのピン(MOSI)、および共通ラッチ信号。

次に、そのマイクロコントローラーは単一のピンから25個のLEDを制御できます。


0

その単一のピンを介して別のマイクロコントローラーを接続し、1wire(または高速が必要な場合は独自のプロトコル)を介して通信することができます。次に、他のマイクロコントローラーがLEDを扱います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.