Isi kandungan:

Arduino dan IC Pemacu LED TLC5940 PWM: 7 Langkah
Arduino dan IC Pemacu LED TLC5940 PWM: 7 Langkah

Video: Arduino dan IC Pemacu LED TLC5940 PWM: 7 Langkah

Video: Arduino dan IC Pemacu LED TLC5940 PWM: 7 Langkah
Video: Arduino and TLC5940 demonstration 2024, November
Anonim
Arduino dan IC Pemacu LED TLC5940 PWM
Arduino dan IC Pemacu LED TLC5940 PWM

Dalam artikel ini kita akan memeriksa IC pemacu LED 16 saluran Texas Instruments TLC5940. Sebab kami melakukan ini adalah untuk menunjukkan cara lain yang lebih mudah untuk memandu banyak LED - dan juga servo. Pertama, berikut adalah beberapa contoh TLC5940. Anda boleh memesan TLC5940 dari PMD Way dengan penghantaran percuma ke seluruh dunia.

TLC5940 tersedia dalam versi DIP, dan juga permukaan-mount. Ini benar-benar bahagian yang mudah digunakan, yang membolehkan anda menyesuaikan kecerahan enam belas LED individu melalui PWM (modulasi lebar nadi) - dan anda juga dapat rantai daisy lebih dari satu TLC5940 untuk mengawal lebih banyak lagi.

Semasa tutorial ini, kami akan menerangkan cara mengawal satu atau lebih TLC5940 IC dengan LED dan juga melihat kawalan servo. Pada ketika ini, sila muat turun salinan TLC5940 (.pdf) kerana anda akan merujuknya melalui proses ini. Selanjutnya, sila muat turun dan pasang perpustakaan TLC5940 Arduino oleh Alex Leone yang boleh didapati di sini. Sekiranya anda tidak pasti cara memasang perpustakaan, klik di sini.

Langkah 1: Bina Litar Demonstrasi TLC5940

Bina Litar Demonstrasi TLC5940
Bina Litar Demonstrasi TLC5940

Litar berikut adalah minimum yang diperlukan untuk mengawal enam belas LED dari Arduino anda atau serasi. Anda boleh menggunakannya untuk bereksperimen dengan pelbagai fungsi dan mendapatkan idea tentang apa yang mungkin. Anda perlu:

  • Arduino Uno atau papan serasi
  • 16 LED biasa, sehari-hari yang boleh mempunyai arus hadapan hingga 20 mA
  • perintang 2 kΩ (berikan atau ambil 10%)
  • seramik 0.1uF dan kapasitor elektrolitik 4.7uF

Perhatikan orientasi LED - dan ingat TLC5940 adalah pemacu LED anode biasa - jadi semua anod LED disambungkan bersama dan kemudian ke 5V.

Langkah 2:

Untuk litar tertentu ini, anda tidak memerlukan bekalan kuasa 5V luaran - namun anda mungkin memerlukannya pada masa akan datang. Tujuan perintang adalah untuk mengawal jumlah arus yang dapat mengalir melalui LED. Nilai perintang yang diperlukan dikira dengan formula berikut:

R = 39.06 / Imax di mana R (dalam Ohms) adalah nilai perintang dan Imax (dalam Amps) adalah jumlah maksimum arus yang anda mahu mengalir melalui LED.

Sebagai contoh, jika anda mempunyai LED dengan arus hadapan 20 mA - pengiraan perintang adalah: R = 39.06 / 0.02 = 1803 Ohms. Setelah rangkaian dipasang - buka Arduino IDE dan muat naik lakaran BasicUse.pde yang ada di folder contoh untuk perpustakaan TLC5940.

Anda harus diberi output yang serupa dengan yang ditunjukkan dalam video.

Langkah 3: Mengawal TLC5940

Sekarang bahawa litar berfungsi, bagaimana kita mengawal TLC5940? Pertama, fungsi wajib - termasuk perpustakaan pada permulaan lakaran dengan:

#masuk "Tlc5940.h"

dan kemudian menginisialisasi perpustakaan dengan meletakkan perkara berikut ke dalam persediaan tidak sah ():

Tlc.init (x);

x adalah parameter pilihan - jika anda ingin menetapkan semua saluran ke kecerahan tertentu sebaik sahaja sketsa dimulakan, anda boleh memasukkan nilai antara 0 dan 4095 untuk x dalam fungsi Tlc.init ().

Sekarang untuk menghidupkan atau mematikan saluran / LED. Setiap saluran diberi nombor 0 hingga 15, dan kecerahan setiap saluran dapat disesuaikan antara 0 dan 4095. Ini adalah proses dua bahagian… Pertama - gunakan satu atau lebih fungsi berikut untuk mengatur saluran yang diperlukan dan kecerahan masing-masing (PWM tahap):

Tlc.set (saluran, kecerahan);

Contohnya, jika anda ingin menghidupkan tiga saluran pertama pada kecerahan penuh, gunakan:

Tlc.set (0, 4095); Tlc.set (1, 4095); Tlc.set (2, 4095);

Bahagian kedua adalah menggunakan yang berikut untuk mengemas kini TLC5940 dengan arahan yang diperlukan dari bahagian pertama:

Tlc.update ();

Sekiranya anda ingin mematikan semua saluran sekaligus, gunakan:

Tlc.clear ();

Langkah 4:

Anda tidak perlu memanggil TLC.update () selepas fungsi yang jelas. Berikut adalah lakaran contoh cepat yang menetapkan nilai kecerahan / PWM semua saluran ke tahap yang berbeza:

#include "Tlc5940.h" penyediaan tidak sah () {Tlc.init (0); // mulakan TLC5940 dan matikan semua saluran}

gelung kosong ()

{untuk (int i = 0; i <16; i ++) {Tlc.set (i, 1023); } Tlc.update (); kelewatan (1000); untuk (int i = 0; i <16; i ++) {Tlc.set (i, 2046); } Tlc.update (); kelewatan (1000); untuk (int i = 0; i <16; i ++) {Tlc.set (i, 3069); } Tlc.update (); kelewatan (1000); untuk (int i = 0; i <16; i ++) {Tlc.set (i, 4095); } Tlc.update (); kelewatan (1000); }

Keupayaan untuk mengawal kecerahan individu untuk setiap saluran / LED juga berguna ketika mengendalikan LED RGB - anda kemudian dapat memilih warna yang diperlukan dengan mudah melalui tahap kecerahan yang berbeza untuk setiap elemen. Demonstrasi ditunjukkan dalam video.

Langkah 5: Menggunakan Dua atau Lebih TLC5940s

Anda boleh menggunakan daisy-chain beberapa TLC5940s untuk mengawal lebih banyak LED. Pertama - sambungkan TLC5940 seterusnya ke Arduino seperti yang ditunjukkan dalam litar demonstrasi - kecuali sambungkan pin SOUT (17) dari TLC5940 pertama ke pin SIN (26) dari TLC5940 kedua - ketika data bergerak dari Arduino, melalui TLC5940 pertama hingga yang kedua dan seterusnya. Kemudian ulangi proses jika anda mempunyai yang ketiga, dll. Jangan lupa resisotr yang menetapkan arus!

Seterusnya, buka fail tlc_config.h yang terletak di folder perpustakaan TLC5940. Tukar nilai NUM_TLCS kepada bilangan TLC5940s yang telah anda sambungkan bersama, kemudian simpan fail tersebut dan hapus juga fail Tlc5940.o yang terletak di folder yang sama. Akhirnya mulakan semula IDE. Anda kemudian boleh merujuk saluran kedua dan TLC5940 seterusnya secara berurutan dari yang pertama. Maksudnya, yang pertama ialah 0 ~ 15, yang kedua ialah 16 ~ 29, dan seterusnya.

Langkah 6: Mengawal Servos Dengan TLC5940

Oleh kerana TLC5940 menghasilkan output PWM (modulasi lebar nadi), sangat bagus untuk memandu servo juga. Sama seperti LED - anda boleh mengawal sehingga enam belas sekaligus. Sesuai untuk membuat robot seperti labah-labah, jam pelik atau membuat bunyi bising.

Semasa memilih servo anda, pastikan bahawa ia tidak menarik lebih dari 120 mA ketika beroperasi (arus maksimum per saluran) dan juga perhatikan bahagian "Menguruskan arus dan panas" di akhir tutorial ini. Dan gunakan kuasa luaran dengan servo, jangan bergantung pada talian 5V Arduino.

Untuk menyambungkan servo adalah mudah - talian GND menyambung ke GND, 5V (atau plag voltan bekalan) menyambung ke 5v anda (atau bekalan lain yang sesuai) dan pin kawalan servo menyambung ke salah satu output TLC5940. Akhirnya - dan ini penting - sambungkan perintang 2.2kΩ antara pin output TLC5940 yang sedang digunakan dan 5V. Mengendalikan servo tidak berbeza dengan LED. Anda memerlukan dua baris pertama pada permulaan lakaran:

#sertakan "Tlc5940.h" #masuk "tlc_servos.h"

maka yang berikut dalam persediaan tidak sah ():

tlc_initServos ();

Seterusnya, gunakan fungsi berikut untuk memilih servo (saluran) mana yang akan beroperasi dan sudut (sudut) yang diperlukan:

tlc_setServo (saluran, sudut);

Sama seperti LED, anda boleh mengumpulkan beberapa ini bersama-sama, dan kemudian melaksanakan perintah dengan:

Tlc.update ();

Oleh itu, mari kita lihat semua itu dalam tindakan. Contoh lakaran berikut menyapu empat servo pada 90 darjah:

#sertakan "Tlc5940.h" #masuk "tlc_servos.h"

persediaan tidak sah ()

{tlc_initServos (); // Catatan: ini akan menurunkan frekuensi PWM hingga 50Hz. }

gelung kosong ()

{untuk (sudut sudut = 0; sudut = 0; sudut--) {tlc_setServo (0, sudut); tlc_setServo (1, sudut); tlc_setServo (2, sudut); tlc_setServo (3, sudut); Tlc.update (); kelewatan (5); }}

Video menunjukkan lakaran ini beraksi dengan empat servo.

Sekiranya servo anda tidak berputar ke sudut yang betul - contohnya anda meminta 180 darjah dan mereka hanya berpusing hingga 90 atau sekitarnya, diperlukan sedikit kerja tambahan.

Anda perlu membuka fail tlc_servos.h yang terletak di folder perpustakaan TLC5940 Arduino dan bereksperimen dengan nilai untuk SERVO_MIN_WIDTH dan SERVO_MAX_WIDTH. Contohnya menukar SERVO_MIN_WIDTH dari 200 hingga 203 dan SERVO_MAX_WIDTH dari 400 hingga 560.

Langkah 7: Menguruskan Arus dan Panas

Seperti disebutkan sebelumnya, TLC5940 dapat menangani maksimum 120 mA per saluran. Setelah bereksperimen, anda mungkin menyedari bahawa TLC5940 menjadi panas - dan tidak mengapa.

Perhatikan bahawa ada had maksimum untuk jumlah daya yang dapat dilenyapkan sebelum menghancurkan bahagian tersebut. Sekiranya anda hanya menggunakan LED pelbagai kebun biasa atau servo yang lebih kecil, kuasa tidak akan menjadi masalah. Walau bagaimanapun, jika anda merancang untuk menggunakan TLC5940 hingga maksimum - sila semak nota yang diberikan oleh penulis perpustakaan.

Kesimpulannya

Sekali lagi anda akan mengendalikan bahagian yang sangat berguna dengan Arduino anda. Sekarang dengan sedikit khayalan anda boleh membuat pelbagai jenis paparan visual atau bersenang-senang dengan banyak servo.

Catatan ini disampaikan kepada anda oleh pmdway.com - yang menawarkan produk TLC5940 beserta segalanya untuk pembuat dan peminat elektronik, dengan penghantaran percuma ke seluruh dunia.

Disyorkan: