Saya sedang mempertimbangkan mengambil proyek yang akan melibatkan secara individual menangani 500 LED, secara optimal dengan dukungan PWM untuk masing-masing.
Saya berencana menggunakan Arduino karena saya sudah memilikinya, tetapi saya terbuka untuk saran jika ada yang berpikir platform yang berbeda akan menjadi pertandingan yang lebih baik.
Register shift perlu dipekerjakan. Apa register geser yang baik untuk digunakan dalam situasi ini? Jika PWM membuat proyek ini jauh lebih mahal, saya bisa melakukannya tanpa itu. Saya ingin mencoba menghabiskan kurang dari $ 100. Saya akan membeli secara massal 500 LED dari ebay.
Apa pendapat Anda tentang cara terbaik untuk mengendalikan sejumlah besar LED? Juga, bagaimana saya menyediakan tenaga? Saya menghargai bantuan apa pun. Saya cukup berpengalaman dengan elektronik, saya tidak pernah melakukan apa pun dalam skala besar.
sumber
Cukup salin :-)
http://www.evilmadscientist.com/article.php/peggy2
sumber
Tata letak apa yang Anda inginkan dari LED? Anda dapat menghemat banyak pekerjaan jika Anda membeli beberapa matriks LED, Anda bisa mendapatkan matriks LED 8x8 warna tunggal (64 LED) seharga satu atau dua dolar .
Anda tidak akan mendapatkan PWM nyata dengan AVR dan menggeser register pada banyak LED ini, tetapi Anda mungkin bisa menekan 2-4 tingkat kecerahan. Anda harus menjalankan angka dan melihat apa yang mungkin.
Allegro membuat beberapa register shift arus konstan berguna yang secara khusus dirancang untuk mengendalikan array LED, sehingga Anda tidak perlu resistor ekstra, yang akan membuat semuanya menjadi lebih sederhana juga. Anda mungkin tidak dapat mengarahkan LED langsung dari output AVR jika itu tidak memberikan daya yang cukup, jadi Anda harus menggunakan transistor. Anda bisa mendapatkannya dalam array dalam satu IC , yang menghemat beberapa pekerjaan juga.
sumber
Saya tidak tahu kisaran PWM yang Anda butuhkan untuk LED, tetapi saya telah bekerja pada kontroler PWM 64 saluran untuk aplikasi kontrol servo yang dapat memberi saya pulsa antara 600us dan 2,4ms. Ini menggunakan CD74HCT238E (3-8 line demultiplexors) untuk menghasilkan 64 saluran dari 8 pin I / O pada ATMega168 dan dapat dikontrol melalui perintah serial sederhana. Saya kira Anda dapat membuat beberapa versi versi yang dimodifikasi dari pengontrol ini bersama-sama pada garis serial dan mengatasi semua 500 LED ... Anda mungkin bisa menggunakan versi ATTiny2313 dari pengontrol karena persyaratan firmware Anda akan lebih sederhana.
Blog saya berisi sumber rakitan dan skema serta detail proses desain.
sumber
Lihatlah IC "driver LED" pada mouser / digikey. TI, misalnya, membuat banyak driver dengan berbagai antarmuka (I2C, SPI) yang tentunya akan memenuhi kebutuhan Anda. Sebagian besar driver ini dirancang untuk dirantai daisy sehingga seri keluar dari satu dimasukkan ke dalam seri di yang lain.
Misalnya, sesuatu seperti TLC5940 menawarkan kontrol PWM 16 saluran. Jadi, pada dasarnya ini adalah register geser 16-bit saat ini yang konstan dengan kontrol PWM skala abu-abu 12-bit. Saya dapat merekomendasikan IC tersebut karena saya membantu mendesain layar 80x16 dengannya.
sumber
Mondomatrix membuat beberapa papan driver LED beralamat serial (rs-485), dan didasarkan pada platform Arduino: http://www.displayduino.com/ Anda mungkin dapat menyusun sistem menggunakan perangkat keras itu dengan cukup mudah
sumber
Jika Anda tidak ingin terlalu banyak bit kontrol PWM untuk setiap LED, dan Anda ingin menghindari harus memiliki prosesor yang gagal dengan 500 LED setiap siklus PWM, Anda dapat mengontrol 8 LED dengan kecerahan N bit menggunakan N 74HC595 atau chip yang setara. . Sambungkan output dari semua chip N bersamaan, dan kabel memungkinkan untuk beberapa sirkuit yang hanya akan memungkinkan satu per satu dengan waktu yang sesuai. Atur sehingga chip pertama akan diaktifkan separuh waktu, yang kedua akan diaktifkan untuk separuh sisanya, dll.
Setiap reload dari register shift harus disinkronkan dengan laju PWM, sehingga untuk meminimalkan efek aliasing (misalnya jika tingkat kecerahan beralih dengan cepat antara 0111 dan 1000, titik dalam siklus PWM ketika sakelar terjadi sesaat dapat mengubah kecerahan yang tampak sesaat. ).
Walaupun harus menggunakan beberapa output 74HC595 untuk setiap LED mungkin mengganggu, pendekatan ini mungkin yang paling sederhana yang dapat mempertahankan tingkat kecerahan yang berbeda tanpa intervensi CPU yang sedang berlangsung.
sumber
Ini tidak langsung menjawab pertanyaan, tetapi aspek lain yang perlu Anda pertimbangkan adalah kemungkinan variabilitas kecerahan di antara LED dalam 500 batch Anda. Itu sangat penting jika LED ini dipasang berdekatan, seperti dalam matriks atau tampilan 7-segmen. Lihat jawaban ini untuk detail lebih lanjut tentang cara mengatasi masalah ini, khususnya, menggunakan koreksi titik untuk mengkompensasi variasi dalam kecerahan LED.
Saya mengalami masalah ini ketika saya mendapatkan 200 LED merah 1mm untuk satu set display 7-segmen besar yang saya bangun. Solusi murah saya untuk mengatasi masalah ini mencakup hal-hal berikut:
sumber
Saya sarankan menggunakan teknik Modulasi Biner yang dijelaskan dalam artikel ini http://www.artisticlicence.com/WebSiteMaster/App%20Notes/appnote011.pdf
Atau periksa perpustakaan ShiftPWM http://www.elcojacobs.com/shiftpwm/
sumber
XMOS menggunakan Macroblock MBI5026 dengan kit ubin LED mereka. Saya pikir mereka digunakan di sebagian besar sistem profesional lainnya.
Leon
sumber
Chip driver khusus dengan antarmuka serial memang akan menjadi rute terbaik. Berurusan dengan register shift individu mungkin akan berarti sirkuit yang sangat kompleks. Setidaknya Maxim dan TI membuat beberapa. Saya tidak ingat apakah keduanya memiliki model yang sangat cocok untuk itu.
Masih membutuhkan banyak perangkat keras.
Sedangkan untuk daya, pemrograman, dan bus, lembar data untuk setiap driver mungkin akan memiliki sebagian besar informasi yang Anda perlukan.
sumber
Di dalam ranah perangkat lunak, jika jumlah pengaturan kecerahan berbeda yang dibutuhkan tidak terlalu besar, mungkin berguna untuk menyimpan data dalam format "bit-planar" (seperti yang dijelaskan dalam jawaban berbasis perangkat keras saya yang lain) dan kemudian memiliki rutinitas keluaran menggunakan operator Boolean untuk bertindak pada 8 piksel sekaligus. Untuk efisiensi maksimum, ini akan memerlukan memiliki beberapa rutinitas keluaran terpisah, yang digunakan untuk berbagai bagian siklus PWM; misalnya, jika seseorang ingin menggunakan nilai kecerahan 4-bit, orang akan menggunakan delapan rutinitas formulir:
Orang akan menggunakan kombinasi IORWF dan ANDWF yang berbeda, tergantung pada nilai perbandingan. Perhatikan bahwa menggunakan pendekatan ini seperti yang diilustrasikan, seseorang dapat memperbarui nilai kecerahan piksel pada titik mana pun dalam siklus PWM tanpa berkedip, asalkan keempat bit tersebut ditulis di antara panggilan ke rutinitas display-shift, atau dengan meminta rutinitas pembaruan piksel menentukan apakah Pergeseran berikutnya akan menampilkan "1" atau "0" untuk piksel, dan baik pengaturan atau menghapus semua bit piksel (operasi mana pun yang akan membuatnya melakukan apa pun yang akan dilakukan) dan kemudian menulis bit apa pun yang nilainya harus bertentang. Perhatikan juga bahwa seseorang dapat mencapai skala kecerahan non-linear sewenang-wenang dengan memvariasikan waktu pembaruan tampilan, atau dengan menggunakan beberapa nilai perbandingan dan nilai lebih dari sekali dalam siklus PWM.
sumber
FPGA atau CPLD bisa baik untuk tugas-tugas seperti itu karena mereka menawarkan banyak pin I / O. Gunakan yang paling sederhana dan termurah. Jika satu tidak cukup, gunakan pasangan.
sumber
Anda hampir pasti dapat melakukan ini dengan mudah menggunakan PSoC3 atau PSoC5 .
Chip PSoC adalah mikrokontroler yang berisi perangkat keras digital yang dapat dikonfigurasi ulang, sedikit seperti FPGA atau CPLD. Ini berarti Anda dapat membuat sirkuit yang rumit untuk melakukan hal-hal yang tidak biasa seperti mengendarai 500 LED dengan PWM. Terlebih lagi, Anda mungkin dapat mengimplementasikan semuanya menggunakan blok digital yang dapat dikonfigurasi ulang, yang berarti bahwa bagian CPU dari chip hanya perlu menulis kecerahan LED yang diinginkan ke dalam array.
504 LED pas dalam persegi panjang 21 x 24. Jika Anda memiliki 24 saluran PWM, dan 21 GPIO, maka Anda bisa membuatnya berfungsi. Tebak apa? PSoC memiliki lebih dari itu.
Anda dapat mengatur 24 saluran PWM dengan mudah di PSoC, dan mengonfigurasi 21 pin lainnya untuk menjadi bagian dari register geser. Selanjutnya, konfigurasikan beberapa saluran DMA untuk memompa byte dari memori ke dalam output PWM, dan Anda tertawa. Yang perlu dilakukan CPU sekarang adalah menghasilkan grafik. PSoC3 memiliki inti 8.051 8-bit, sedangkan PSoC5 memiliki ARM 32-bit. Ambil pilihanmu. Satu-satunya IC eksternal yang Anda perlukan adalah beberapa ULN2803s untuk memberikan arus drive tinggi untuk baris. Output PWM harus memiliki drive saat ini yang cukup untuk LED tunggal.
sumber
Manfaatkan skala ekonomis. Situs Cina seperti Aliexpress menjual helai LED berbasis WS2811 seharga ~ $ 15 per 50 LED. Mereka dialamatkan secara individual, cerah, biasanya tahan air, dan memiliki PWM untuk kecerahan. Tidak ada solder atau register geser untuk mengacaukan keduanya. Melakukan semua ini sendiri, saya yakin akan dikenakan biaya lebih banyak, lebih banyak waktu dan sangat membuat frustrasi. Plus Anda di Oz sehingga pengiriman dari Cina tidak akan terlalu mahal.
Ini dibuat untuk membuat tampilan LED raksasa sehingga cenderung cukup murah. Pastikan untuk menyuntikkan kembali daya setiap 50 LED atau lebih untuk kinerja terbaik.
Ada juga perpustakaan Arduino untuk membuatnya mudah digunakan.
sumber