Kontrol serial 25 LED dari satu pin

8

Saya memiliki mikrokontroler dengan satu pin digital yang tersedia.

Bagaimana saya bisa mengontrol 25 LED?

Archgoon
sumber
2
Apakah led secara terpisah dapat dipilih atau Anda ingin menyalakan / mematikan semuanya secara bersamaan?
Vincent Van Den Berghe
Led dimaksudkan agar dapat diakses secara terpisah. Mikrokontroler tidak dimaksudkan untuk memberi daya pada mereka, cukup menentukan statusnya. Juga, dengan "port digital" maksudku pin.
Archgoon

Jawaban:

11

I2C IO Expander : - Beberapa overhead protokol, tetapi harus diperluas ke jumlah LED yang sangat besar (ribuan).

Simple shift register - Dead Simple interface, LED mungkin berkedip ketika memperbarui jika jam register geser tidak cukup cepat. Menggunakan register geser buffer ganda akan memperbaiki ini.

Connor Wolf
sumber
Terima kasih, inilah tepatnya yang saya cari, tetapi tidak tahu mereka dipanggil apa.
Archgoon
2
Itu akan membutuhkan setidaknya satu pin, tho. Jangan menggeser register membutuhkan setidaknya dua pin, untuk jam dan data?
blalor
@blalor - Ya, tetapi kedua pin ini dirancang untuk dibagikan di antara beberapa perangkat I2C.
Kevin Vermeer
I2C juga dua baris.
XTL
2
Dallas 1-wire hanya membutuhkan satu pin, diperluas ke perangkat N.
Tim Williscroft
16

Shift Register dan I2C bagus, tetapi hanya jika setidaknya ada 2 pin gratis. Saya sarankan Dallas 1-kawat port extender DS2408 akan menjadi solusi optimal. Kode untuk akses perangkat 1-kawat Dallas tidak begitu rumit dan ada banyak ujian di web.

Anda dapat menggunakan beberapa DS2408 yang terhubung ke satu pin atau menerapkan lebih banyak logika setelah DS2408 tunggal mana yang Anda inginkan.

x4mer
sumber
2
I2C dapat digunakan jika tidak ada pin gratis, dengan asumsi bahwa bus I2C Anda digunakan seperti itu dan tidak ada konflik alamat.
Kevin Vermeer
5

Dengan hanya 1 pin IO, Anda dapat menggunakan expander / shift register 1-kawat atau menambahkan perangkat lain ke bus I2C Anda, sebagaimana telah ditunjukkan. Satu-satunya hal yang belum disebutkan adalah kemungkinan menambahkan budak lain ke port SPI Anda.

SPI disebut protokol 4-kawat - Anda memiliki dua garis data, garis jam, dan garis pilih (serta landasan bersama, tetapi itu biasanya tidak masuk hitungan). Namun, tiga yang pertama dibagikan di antara semua perangkat di bus, sehingga setiap perangkat setelah yang pertama hanya membutuhkan satu jejak / kawat lagi. SPI juga meningkatkan bus Anda menjadi dupleks penuh, tetapi itu tidak masalah untuk aplikasi ini.

Kevin Vermeer
sumber
1

Saya baru saja rantai beberapa register geser bersama. (Ini mengurangi frekuensi Anda dapat beralih LED, tentu saja ..)

Tim
sumber
1

Jika Anda benar-benar hanya memiliki 1 pin tersedia, Dallas 1-wire bus sepertinya adalah hal yang paling jelas. Namun, karena ini hanya keluaran, ada solusi yang lebih murah. Bus serial PWM yang membawa data dan jam mudah diatur; lihat misalnya halaman Roman Black seperti juga disebutkan oleh davidcary. Anda hanya perlu register shift paralel-keluar paralel seperti 74VHC164 , yang dapat Anda cascade untuk sebanyak mungkin output yang Anda inginkan (satu '164 memiliki 8 output).
Dalam solusi ini LED didorong secara statis.

Jika Anda memiliki I / O lain yang dapat Anda bagikan, seperti SPI dari I2C, Anda dapat mencari solusi yang lebih mewah, seperti Maxim's MAX6950 . MAX6950 memiliki kontrol kedipan dan kecerahan, dan pembatasan laju perubahan tegangan, untuk menyebutkan beberapa fitur. LED multipleks, yang berarti Anda hanya perlu satu driver 16-pin.

stevenvh
sumber
0

Jawabannya mungkin "serangkaian register geser," tetapi bisakah Anda lebih spesifik dalam pertanyaan Anda? Apa mikrokontroler? Apa yang Anda maksud dengan "port digital"? Satu pin?

pingswept
sumber
Terima kasih, saya telah membuat klarifikasi, dan register shift adalah yang saya cari. Terima kasih.
Archgoon
0

25 LED tergantung pada ukuran dapat menarik banyak daya untuk pin IO digital tunggal pada mikro-controller. Daripada mengendarainya secara langsung, Anda mungkin harus menggunakan sakelar FET sederhana (sehingga IO terikat ke gerbang) untuk mengontrol daya ke rantai LED.

Bergantung pada aplikasi Anda, ada cara lain yang lebih kuat untuk melakukannya. Tetapi melempar janin mungkin akan membuat Anda bekerja paling cepat.

Misalnya, jika Anda ingin mem-gerbang sinyal variabel, ada perangkat yang lebih rumit, kadang-kadang disebut relay digital, yang memberi Anda cara untuk mengubahnya secara digital.

Adapun secara individual mengendalikan 25 LED dengan satu port IO. Seperti yang disarankan orang lain, Anda dapat menggunakan beberapa register geser. Ada solusi yang lebih rumit yang melibatkan berkomunikasi dengan IC lain menggunakan protokol serial (I2C misalnya).

crasic
sumber
0

Roman Black menjelaskan sistem shift1 yang memungkinkan Anda mengontrol jumlah LED dari pin mikrokontroler tunggal.

@Fake Name, @Tim, @pingswept semuanya menyarankan untuk merantai beberapa register geser secara bersamaan, pin output data DO pada satu input pin input data DI pada input berikutnya. 74HC595 akan bekerja dengan baik. (Mungkin beberapa chip lain akan bekerja lebih baik sedikit ).

(@reemrevnivek, dengan jenis SPI daisy-chain, setiap perangkat setelah yang pertama tidak memerlukan pin lagi pada mikrokontroler, bertentangan dengan apa yang diklaim banyak orang - mengapa Anda mendengarkannya? :-).

Biasanya ini membutuhkan 4 pin pada mikrokontroler - MISO, MOSI, SCLK, dan kait. Karena Anda hanya melakukan output, Anda tidak memerlukan pin input MISO.

Roman Black telah menemukan bahwa dengan pengaturan waktu yang sangat hati-hati pada output mikrokontroler tunggal, dan dengan beberapa penyesuaian sirkuit analog, pin mikrokontroler tunggal dapat menggerakkan rangkaian analog yang tampak sederhana yang memisahkan SCLK umum, DI pin chip pertama dalam rantai (MOSI), dan sinyal kait umum.

Kemudian mikrokontroler itu dapat mengontrol 25 LED dari satu pin.

davidcary
sumber
0

Anda dapat menghubungkan mikrokontroler lain melalui pin tunggal itu, dan berbicara dengannya melalui 1wire (atau protokol Anda sendiri jika Anda memerlukan kecepatan tinggi). Kemudian penawaran mikrokontroler lainnya dengan LED.

avra
sumber