ElectroBest
Kembali

Bagaimana menghubungkan strip LED beralamat WS2812B ke Arduino

Diterbitkan: 02.08.2021
0
2578

Perkembangan teknologi pencahayaan berbasis LED terus berkembang pesat. Kemarin tampak seperti keajaiban bahwa pita RGB dikendalikan oleh pengontrol, kecerahan dan warna yang dapat disesuaikan dengan remote control. Saat ini, ada lebih banyak kemungkinan di pasar.

Strip LED berdasarkan WS2812B

Perbedaan strip LED yang dapat dialamatkan dari standar RGB Apakah itu Kecerahan dan rasio warna setiap elemen dapat disesuaikan secara terpisah. Ini memungkinkan Anda mendapatkan efek pencahayaan yang tidak tersedia untuk jenis perlengkapan pencahayaan lainnya. Strip LED dikendalikan dengan cara yang terkenal - dengan modulasi lebar pulsa. Keunikan sistem adalah bahwa setiap LED memiliki pengontrol PWM sendiri. Chip WS2812B adalah dioda pemancar cahaya tiga warna dan sirkuit kontrol, digabungkan dalam satu paket.

Cara Menghubungkan Strip LED Beralamat WS2812B ke Arduino
Penampilan LED dengan driver.

Elemen-elemen digabungkan menjadi pita pada catu daya secara paralel, dan dikendalikan melalui bus serial - output elemen pertama terhubung ke input kontrol yang kedua, dan seterusnya. Dalam kebanyakan kasus, bus serial dibangun di atas dua jalur, salah satunya mentransmisikan strobo (pulsa sinkron), dan yang lainnya - data.

Penampilan strip yang dapat dialamatkan.
Penampilan pita alamat.

Bus kontrol chip WS2812B terdiri dari satu jalur - ia mentransmisikan data.Data dikodekan sebagai pulsa frekuensi konstan, tetapi dengan frekuensi yang berbeda. Satu pulsa adalah satu bit. Durasi setiap bit adalah 1,25 s, bit nol terdiri dari level tinggi 0,4 s dan level rendah 0,85 s. Unit terlihat seperti tinggi 0,8 s dan rendah 0,45 s. Paket 24 bit (3 byte) dikirim ke setiap LED, diikuti dengan jeda dalam bentuk level rendah selama 50 detik. Ini berarti bahwa data untuk LED berikutnya akan ditransmisikan berikutnya, dan seterusnya untuk semua elemen rantai. Transfer data berakhir dengan jeda 100 s. Ini berarti bahwa siklus pemrograman pita selesai dan kumpulan paket data berikutnya dapat dikirim.

Mengontrol data untuk pita yang dapat dialamatkan.
Data untuk kontrol pita alamat.

Protokol ini memungkinkan satu jalur untuk transmisi data, tetapi membutuhkan waktu yang tepat. Perbedaannya tidak lebih dari 150 ns. Selain itu, kekebalan kebisingan bus ini sangat rendah. Setiap interferensi dengan amplitudo yang cukup dapat dirasakan oleh pengontrol sebagai data. Ini memberlakukan batasan pada panjang kabel dari sirkuit kontrol. Di sisi lain, ini memberikan kemampuan untuk untuk memverifikasi bahwa pita tanpa perangkat tambahan. Jika Anda menerapkan daya ke luminer dan menyentuh bantalan kontak bus kontrol dengan jari Anda, beberapa LED mungkin menyala dan mati secara kacau.

Karakteristik teknis elemen WS2812B

Untuk membuat sistem pencahayaan berdasarkan pita yang dapat dialamatkan, perlu diketahui parameter penting dari elemen pemancar cahaya.

Dimensi LED5x5 mm
Frekuensi modulasi PWM400Hz
Konsumsi saat ini pada kecerahan maksimum60 mA per elemen
Tegangan suplai5 volt
Saran ahli
Daya yang dikonsumsi oleh luminer cukup tinggi. Ini ditentukan tidak hanya oleh arus yang diperlukan untuk memulai sambungan p-n pijar, tetapi juga oleh rugi-rugi pensaklaran dalam pembentukan PWM. Untuk jaringan 15 elemen, catu daya dan konduktor dirancang untuk arus minimal 1 amp.

Arduino dan WS2812B

Platform Arduino yang populer di dunia memungkinkan Anda membuat sketsa (program) untuk mengontrol pita yang dapat dialamatkan. Kemampuan sistem cukup luas, tetapi jika pada tingkat tertentu tidak lagi cukup, keterampilan yang diperoleh akan cukup untuk beralih ke C++ atau bahkan assembler dengan mulus. Meskipun, lebih mudah untuk mendapatkan pengetahuan dasar tentang Arduino.

Menghubungkan pita berbasis WS2812B ke Arduino Uno (Nano)

Pada tahap pertama, papan Arduino Uno atau Arduino Nano sederhana sudah cukup. Kemudian, papan yang lebih kompleks dapat digunakan untuk membangun sistem yang lebih kompleks. Saat menghubungkan strip LED yang dapat dialamatkan secara fisik ke papan Arduino, Anda harus memastikan bahwa beberapa kondisi terpenuhi:

  • karena kekebalan kebisingan yang rendah, konduktor koneksi jalur data harus sesingkat mungkin (Anda harus mencoba membuatnya dalam jarak 10 cm);
  • Hubungkan kabel data ke output digital gratis dari papan Arduino - nanti akan ditunjukkan oleh perangkat lunak;
  • Karena konsumsi daya yang tinggi, tidak perlu menyalakan strip dari papan - catu daya terpisah disediakan untuk tujuan ini.

Penting untuk menghubungkan kabel catu daya umum luminer dan Arduino.

Diagram pengkabelan WS2812B.
Diagram pengkabelan pita WS2812B.

Baca juga

Bagaimana menghubungkan LED ke papan Arduino

 

Dasar-dasar kontrol perangkat lunak WS2812B

Telah disebutkan bahwa untuk mengontrol chip WS2812B Anda perlu membentuk pulsa dengan panjang tertentu, dengan akurasi tinggi. Dalam bahasa Arduino terdapat perintah untuk membentuk pulsa pendek tundaMikrodetik mikro. Masalahnya adalah resolusi perintah ini adalah 4 mikrodetik. Artinya, tidak mungkin untuk membentuk waktu tunda dengan akurasi yang diberikan. Hal ini diperlukan untuk pergi ke alat C++ atau Assembler. Dimungkinkan untuk mengontrol strip LED yang dapat dialamatkan melalui Arduino dengan bantuan perpustakaan yang dibuat khusus untuk tujuan ini. Anda dapat memulai dengan program Blink, yang membuat elemen pemancar cahaya berkedip.

dipimpin cepat

Perpustakaan ini bersifat universal. Selain pita yang dapat dialamatkan, ini mendukung banyak perangkat termasuk pita yang dikontrol SPI. Ini memiliki berbagai fitur.

Pertama, Anda harus menghubungkan perpustakaan. Ini dilakukan sebelum blok pengaturan, dan string terlihat seperti ini:

#termasuk

Langkah selanjutnya adalah membuat array untuk menyimpan warna dari setiap light emitting diode. Ini akan memiliki strip nama dan dimensi 15 elemen.

Strip CRGB[15]

Di blok penyiapan, Anda harus menentukan pita yang akan digunakan skrip:

batalkan pengaturan() {

FastLED.addLeds<WS2812B, 7, RGB>(strip, 15);

int g;

}

Parameter RGB mengatur urutan warna, 15 berarti jumlah LED, 7 adalah jumlah output yang ditetapkan untuk dikontrol (lebih baik untuk menetapkan konstanta ke parameter terakhir juga).

Blok loop dimulai dengan loop yang secara berurutan menulis ke setiap bagian dari larik Merah (cahaya merah):

untuk (g=0; g< 15;g++)

{strip[g]=CRGB::Merah;}

Kemudian array yang dihasilkan dikirim ke iluminator:

FastLED.show();

Penundaan 1000 milidetik (detik):

penundaan (1000);

Kemudian Anda dapat mematikan semua elemen dengan cara yang sama, menulis hitam di dalamnya.

untuk (int g=0; g< 15;g++)

{strip[g]=CRGB::Hitam;}

FastLED.show();

penundaan (1000);

Sketsa untuk flashing strip berdasarkan FastLed.
Sketsa untuk strip berkedip berbasis FastLed.

Setelah menyusun dan memuat sketsa pita akan berkedip dengan jangka waktu 2 detik. Jika Anda ingin mengontrol setiap komponen warna secara terpisah, maka alih-alih string {strip[g]=CRGB::Merah;} beberapa string yang digunakan:

{

strip[g].r=100;// atur tingkat pendaran elemen merah

strip[g].g=11;// sama untuk hijau

strip[g].b=250;// sama untuk biru

}

NeoPixel

Pustaka ini hanya berfungsi dengan NeoPixel Ring LED, tetapi kurang intensif sumber daya dan hanya berisi hal-hal penting. Di Arduino programnya terlihat seperti ini:

#termasuk

Seperti pada kasus sebelumnya, library dicolokkan, dan objek lenta dideklarasikan:

Adafruit_NeoPixel lenta=Adafruit_NeoPixel(15, 6);// Di mana 15 adalah jumlah elemen dan 6 adalah output yang ditetapkan

Lenta diinisialisasi di blok pengaturan:

batalkan pengaturan() {

lenta.mulai ()

}

Di blok loop semua elemen menyala merah, variabel dilewatkan ke pita dan penundaan 1 detik dibuat:

untuk (int y=0; y<15;y++)// 15 - jumlah elemen dalam luminer

{lenta.setPixelColor(y, lenta.Color(255,0,0))};

lenta.show();

penundaan (1000);

Lenta berhenti bersinar dengan menulis hitam:

untuk (int y=0; y< 15;y++)

{ lenta.setPixelColor(y, lenta.Color(0,0,0))};

lenta.show();

penundaan (1000);

Sketsa untuk program Blink berdasarkan NeoPixel.
Sebuah sketsa untuk program Blink berbasis NeoPixel.

Pelajaran video: Contoh efek visual menggunakan pita yang dapat dialamatkan.

Setelah mempelajari cara mem-flash LED, Anda dapat melanjutkan pelajaran dan mempelajari cara membuat efek warna, termasuk "Pelangi" dan "Lampu Utara" yang populer dengan transisi yang mulus. LED beralamat WS2812B dan Arduino memberi Anda kemungkinan yang hampir tak terbatas untuk ini.

Komentar:
Belum ada komentar. Jadilah yang pertama!

Tips membaca

Cara memperbaiki lampu LED sendiri