Saya memiliki mikrokontroler dengan satu pin digital yang tersedia.
Bagaimana saya bisa mengontrol 25 LED?
microcontroller
led
multiplexer
Archgoon
sumber
sumber
Jawaban:
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.
sumber
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.
sumber
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.
sumber
Saya baru saja rantai beberapa register geser bersama. (Ini mengurangi frekuensi Anda dapat beralih LED, tentu saja ..)
sumber
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.
sumber
Jawabannya mungkin "serangkaian register geser," tetapi bisakah Anda lebih spesifik dalam pertanyaan Anda? Apa mikrokontroler? Apa yang Anda maksud dengan "port digital"? Satu pin?
sumber
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).
sumber
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.
sumber
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.
sumber