Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Arduino dengan NeoPixel Optocoupler Mengontrol Banyak Relay

Komponen dan persediaan

SparkFun LilyPad Rainbow LED (strip 7 warna)
atau serupa (dipotong dari strip Led 5m/roll DC5V ws2812b 300led Individual Addressable 60leds/m 5050 RGB ), berbagai pemasok
× 1
Resistor 10k ohm
27k Ohm
× 4
Resistor foto
juga disebut LDR (Light Dependent Resistor) https://en.wikipedia.org/wiki/Photoresistor
× 4
Relay RobotGeek
atau https://www.conrad.nl/p/relaiskaart-5vdc-4-voudig- voor-arduino-raspberry-pi-etc-095841
× 4
Lampu LED
× 1
Arduino UNO
semua jenis Arduino dapat digunakan, dalam aplikasi ini saya menggunakan Node MCU ESP32
× 1

Alat dan mesin yang diperlukan

Besi solder (generik)
Alat Umum
seperti yang akan tersedia di bengkel/rumah tangga biasa

Aplikasi dan layanan online

Film

Tentang proyek ini

Proyek ini tentang mengontrol beberapa relai atau aktuator lain dari satu pin keluaran Arduino.

Solusi ini dapat digunakan untuk situasi umum di mana jumlah pin output Arduino yang tersedia tidak mencukupi dan lebih banyak aktuator seperti relai perlu dikontrol secara paralel dari pin output tunggal.

Prinsip operasi didasarkan pada penggunaan strip LED dari sejumlah NeoPixels (LED SMD5050 dengan chip pengontrol WS2812B). Setiap piksel disatukan dengan LDR (Light Dependent Resistor), sehingga menciptakan optocoupler DIY (sebanyak yang Anda inginkan, hanya dibatasi oleh panjang strip LED, misalnya 300 piksel, dan tersedia catu daya 5V). Dengan cara ini konversi serial ke paralel dibuat (dari 1 ke banyak)

Setiap LED individu dialamatkan dari satu dan pin output Arduino yang sama. Setiap LDR (secara seri dengan resistor 27kOhm), terhubung ke relai 5V. Dengan cara ini banyak kombinasi NeoPixel/LDR dapat dikontrol dari 1 PIN keluaran Arduino menggunakan library NeoPixel Adafruit. Selain relai, perangkat aktuator lain juga dapat dihubungkan, menggunakan LDR sebagai input ke sirkuit apa pun.

Untuk proyek ini, yang merupakan bagian dari rencana yang lebih besar, ESP32 (NodeMCU) digunakan; namun Arduino Uno normal (atau hampir semua model lainnya) akan melakukan pekerjaan itu.

Langkah 1:Membuat Optocoupler NeoPixel

Optocoupler DIY dibuat dengan bahan-bahan berikut:

  • sepotong strip LED yang terdiri dari 10 LED WS2812 (dipotong dari strip yang lebih panjang) hanya 4 yang benar-benar digunakan dalam proyek
  • sepotong busa abu-abu tua
  • selembar papan tempat memotong roti
  • pita bebek hitam

Catatan:pemisahan titik sama dengan pemisahan LED.

Penting untuk memisahkan cahaya masing-masing LED dari LDR lainnya untuk menghindari "pembicaraan silang ringan ." Ternyata dalam praktiknya ini hampir tidak mungkin dan oleh karena itu jumlah cahaya yang dipancarkan oleh setiap LED dalam keadaan "hidup" telah disetel ke tingkat rendah dalam perangkat lunak.

Strip LED yang digunakan panjangnya 10 LED tetapi hanya 4 piksel yang digunakan dalam kombinasi dengan 4 LDR dalam proyek ini (untuk membuatnya tetap sederhana)

Langkah 2:Penyiapan Elektronik

Dalam pengaturan papan tempat memotong roti, saya menggunakan ESP32s (NodeMCU), namun setiap Arduino dapat melakukan pekerjaan itu.

Diagram rangkaian (dibuat dengan Fritzing) adalah sebagai berikut:

Dalam prakteknya ini terlihat sebagai berikut:

Seperti yang Anda lihat, hanya 1 pin keluaran yang digunakan untuk mengontrol 4 relai secara paralel. Jumlah ini bisa naik hingga 300! (LED sebanyak yang tersedia dalam strip sepanjang 5 m).

Perangkat ESP32 bekerja pada level 3,3 Volt (pengatur tegangan 3,3V terpasang), sedangkan strip LED dengan 5050 led berjalan pada 5 V. ESP32 diumpankan dengan daya 5 V (melalui port USB dari adaptor 5V atau 5V Bank Daya). LED NeoPixel mendapatkan suplai 5V langsung dari pin 5 volt ESP32 dan relai yang digunakan juga jenis 5V.

Dalam contoh ini 4 rangkaian optocoupler digunakan untuk mengontrol 4 relai yang masing-masing terhubung ke satu lampu 230V.

Pin keluaran yang digunakan adalah PIN GPIO 21 dan relai dikendalikan melalui nomor piksel 1, 2, 3, 4.

Langkah 3:Membuat Perangkat Lunak

Fungsi loop dalam Sketsa Arduino sederhana dan terdiri dari sejumlah loop "untuk" untuk menunjukkan pola yang berbeda dari pensaklaran lampu dengan mengontrol masing-masing relai.

Untuk mengontrol relai tertentu, fungsi berikut dipanggil dari dalam kode loop:

void ControlRelais (int RelaisNo, bool RelaisState) { strip.setPixelColor(RelaisNo, RelaisState*15, RelaisState*15, RelaisState*15); // nyalakan/matikan LED milik RelaisNo strip.show(); Serial.print("No Relai"); Serial.print(NoRelais); Serial.print("="); Serial.println(RelaisState); } 

Sebenarnya semua fungsi ini adalah menyalakan atau mematikan LED tertentu.

Alamat LED sesuai dengan nomor relai masing-masing. LED menyala pada tingkat cahaya rendah, cukup untuk memicu relai melalui LDR, dan dengan demikian menghindari polusi cahaya (juga disebut di atas sebagai "pembicaraan silang ringan".

Hasil dari semua usaha dan sketsa tertentu, ditampilkan dalam film berikut:

Kode

  • Sketsa untuk mengontrol beberapa relai melalui NeoPixel Optocoupler buatan sendiri
Sketsa untuk mengontrol beberapa relai melalui NeoPixel Optocoupler buatan sendiriArduino
Sketsa ini menunjukkan cara mengontrol sejumlah relai melalui beberapa optocoupler yang dibuat dengan NeoPixels yang dikendalikan dari 1 pin keluaran ARDUINO
/* Kode ini untuk mengendalikan beberapa Relai atau aktuator lain dari satu pin keluaran Arduino, telah dikembangkan dan diproduksi oleh Pierre Pennings (Desember 2018) Solusi ini dapat digunakan untuk situasi umum di mana jumlah pin output Arduino yang tersedia tidak mencukupi dan lebih banyak aktuator seperti Relai perlu dikontrol secara paralel Prinsip operasi didasarkan pada penggunaan strip sejumlah Neopiksel (LED SMD5050 dengan chip pengontrol WS2812B) Setiap piksel disatukan dengan LDR (Light Dependent Resistor), sehingga menciptakan Optocoupler DIY Setiap LED individu dialamatkan dari satu dan pin output ARDUINO yang sama dan LDR (dirangkai secara seri dengan resistor 27kOhm ), terhubung ke Relai 5V Dengan cara ini banyak kombinasi Neopiksel/LDR dapat dikontrol dari 1 PIN keluaran Arduino menggunakan pustaka Adafruit Neopiksel. Untuk Proyek ini, yang merupakan bagian dari rencana yang lebih besar, ESP 32 (NodeMCU) digunakan, namun ARDUINO UNO normal (atau hampir semua model lainnya) akan melakukan pekerjaan itu (tentu saja pengaturan dalam kode perlu disesuaikan , misalnya karena alokasi Pin yang berbeda) Perangkat ESP 32 bekerja pada level 3,3 Volt (pengatur tegangan 3,3V terpasang), sedangkan strip LED dengan 5050 led berjalan pada 5 V ESP 32 diumpankan dengan daya 5 V (melalui port USB dari adaptor 5V atau powerbank 5v) LED Neopixel mendapatkan suplai 5V langsung dari pin 5 volt ESP 32 dan Relai yang digunakan juga jenis 5V. Dalam contoh ini strip LED 10 LED digunakan, untuk alasan kesederhanaan hanya 4 rangkaian optocoupler yang dibuat untuk mengendalikan 4 Relai yang terhubung ke masing-masing satu Lampu LED 230V. Pin keluaran yang digunakan adalah PIN GPIO 21 dan RELAIS dikendalikan melalui nomor Pixel 1,2,3,4 Kode ini dilisensikan di bawah lisensi GPL3+.*/#include #define NUM_LEDS 10////// ///////////////////////////////////////// inisialisasi pinconst GPIO int RelaisPin =21; // pin 21 mengirimkan data kontrol (0 -3.3 V) ke Relaisint RelaisNo =0; // Variabel untuk Relai yang berlaku untuk dikontrolbool RelaisState =false;int r =0;Adafruit_NeoPixel strip =Adafruit_NeoPixel(NUM_LEDS, RelaisPin, NEO_RGB + NEO_KHZ800);//////////////// ///////////////////////////////// kode pengaturan yang mengikuti, akan berjalan sekali setelah "Power On" atau setelah a RESETvoid setup() { Serial.begin(115200); pinMode(RelaisPin, OUTPUT); // Inisialisasi RelaisPin sebagai strip keluaran.begin(); // Inisialisasi semua LED ke "mati" for (int t =0; t <10; t++) { strip.setPixelColor(t, 15, 15, 15); // Setelah Power On semua LED strip diuji sekali strip.show(); // perhatikan bahwa urutan warna strip LED WS2812 adalah penundaan R,G,B (500); strip.setPixelColor(t, 0, 0, 0); // Dan kembali ke off }}///////////////////////////////////////////////////// ///////// kode loop yang mengikuti, akan berjalan berulang kali sampai "Matikan" atau RESETvoid loop(){ for (int r =1; r <5; r++) // nyalakan 4 Relai satu demi satu bentuk penghitungan 1 sampai 4 { delay (500); ControlRelais (r , benar); penundaan (500); ControlRelais (r , salah); }for (int k =4; k> 0; k--) // nyalakan 4 Relai satu demi satu bentuk penghitungan 4 sampai 1 { delay (500); ControlRelais (k , benar); penundaan (500); ControlRelais (k , salah); } for (int r =1; r <5; r++) // nyalakan 4 Relai dalam sebuah pola { for (int k =4; k> 0; k--) { delay (500); ControlRelais (r , benar); ControlRelais (k , benar); penundaan (500); ControlRelais (r , salah); ControlRelais (k , salah); } }}//////////////////END dari LOOP/////////////////////////////////////////// ////////////////////////////////////////////////////////////////// ////////////////////////////////// Selanjutnya mengikuti Fungsi untuk mengendalikan Relai (dipanggil dari dalam loop) void ControlRelais (int RelaisNo, bool RelaisState) { strip.setPixelColor(RelaisNo, RelaisState*15, RelaisState*15, RelaisState*15); // nyalakan/matikan LED milik RelaisNo strip.show(); Serial.print("No Relai"); Serial.print(NoRelais); Serial.print("="); Serial.println(RelaisState); }

Skema

Siapkan untuk mengontrol beberapa relai atau aktuator lain dari satu pin Arduino neopixel_optocoupler_relais__hNIrhGIMTD.fzz

Proses manufaktur

  1. Mengontrol Efek dengan Sensor Nyata
  2. Panel LCD dengan Arduino untuk Simulator Penerbangan
  3. Beralih/Panel LED dengan Arduino untuk FS2020
  4. Giroskop Menyenangkan dengan NeoPixel Ring
  5. Smart Blinds
  6. Arduino dengan Bluetooth untuk Mengontrol LED!
  7. Sensor Kendala Sederhana dengan Arduino
  8. Mengontrol Robot Roomba Dengan Arduino Dan Perangkat Android
  9. Arduino Quadruped
  10. Mengontrol Motor Servo dengan Arduino dan MPU6050