Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Arduino & NeoPixel-Optokoppler: Effiziente Steuerung mehrerer Relais

Komponenten und Zubehör

KomponenteMengeHinweis
WS2812B LED-Strip (5 m, 300 LED, 60 LED/m, 5050 RGB)1Davon 10 LEDs abschneiden, 4 nutzen
Widerstand 27 kΩ4In Reihe mit LDR
Fotowiderstand (LDR)4Lichtabhängiger Widerstand
Relais-Modul 5 V (4-Kanal)1z. B. RobotGeek oder Conrad 095841
LED-Lampe 230 V1Last für Demo
Arduino UNO (oder NodeMCU ESP32)1Jeder Arduino-Typ möglich

Benötigte Werkzeuge

Apps und Online-Dienste

Projektbeschreibung

Dieses Projekt zeigt, wie man mehrere Relais (oder andere Aktoren) von einem einzigen Arduino-Ausgangspin steuert. Ideal, wenn nicht genügend Pins vorhanden sind.

Funktionsprinzip: Ein NeoPixel-LED-Strip (WS2812B) wird so verwendet, dass jede LED zusammen mit einem LDR ein DIY-Optokoppler bildet. Damit wird eine Serial-zu-Parallel-Wandlung realisiert (1 Pin → viele Kanäle). Jede LED wird einzeln über die Adafruit-NeoPixel-Bibliothek adressiert. Der LDR (in Reihe mit 27 kΩ) steuert ein 5 V-Relais. Statt Relais können auch andere Aktoren angesteuert werden.

Im Beispiel wird ein ESP32 (NodeMCU) verwendet, ein Arduino Uno funktioniert ebenso. Der ESP32 arbeitet mit 3,3 V-Logik, der LED-Strip benötigt 5 V. Der ESP32 wird über USB (5 V) versorgt; der Strip und die Relais erhalten 5 V direkt vom 5 V-Pin des ESP32.

Schritt 1: NeoPixel-Optokoppler bauen

Material:

Arduino & NeoPixel-Optokoppler: Effiziente Steuerung mehrerer Relais
Arduino & NeoPixel-Optokoppler: Effiziente Steuerung mehrerer Relais

Wichtig: Licht jedes LED muss vom eigenen LDR getrennt werden („Light Cross-Talk“). In der Praxis kaum perfekt machbar, daher wird die LED-Helligkeit per Software sehr niedrig gesetzt.

Arduino & NeoPixel-Optokoppler: Effiziente Steuerung mehrerer Relais

Schritt 2: Elektronischer Aufbau

Steckbrett-Aufbau mit ESP32 (NodeMCU). Fritzing-Schaltplan:

Arduino & NeoPixel-Optokoppler: Effiziente Steuerung mehrerer Relais
Arduino & NeoPixel-Optokoppler: Effiziente Steuerung mehrerer Relais

Nur ein Ausgangspin (GPIO 21) steuert 4 Relais parallel. Theoretisch bis zu 300 Kanäle (5 m Strip).

Schritt 3: Software

Die loop() besteht aus for-Schleifen, die verschiedene Schaltmuster demonstrieren. Kernfunktion:

void ControlRelais(int RelaisNo, bool RelaisState) {
  strip.setPixelColor(RelaisNo, RelaisState*15, RelaisState*15, RelaisState*15);
  strip.show();
  Serial.print(" RelaisNo "); Serial.print(RelaisNo);
  Serial.print(" = "); Serial.println(RelaisState);
}

Die LED wird nur schwach (Wert 15) angesteuert – gerade genug, um das Relais über den LDR zu schalten, und vermeidet Cross-Talk.

Ein Video zeigt das Ergebnis.

Quellcode

/* Steuerung mehrerer Relais über einen Arduino-Pin mittels NeoPixel-Optokopplern
   Pierre Pennings, Dez. 2018 – GPL3+ */
#include <Adafruit_NeoPixel.h>
#define NUM_LEDS 10
const int RelaisPin = 21; // GPIO 21 am ESP32
int RelaisNo = 0;
bool RelaisState = false;
int r = 0;
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, RelaisPin, NEO_RGB + NEO_KHZ800);

void setup() {
  Serial.begin(115200);
  pinMode(RelaisPin, OUTPUT);
  strip.begin();
  for (int t = 0; t < 10; t++) {
    strip.setPixelColor(t, 15, 15, 15); // Test aller LEDs beim Start
    strip.show();
    delay(500);
    strip.setPixelColor(t, 0, 0, 0);
  }
}

void loop() {
  for (int r = 1; r < 5; r++) { // 1→4 ein/aus
    delay(500); ControlRelais(r, true);
    delay(500); ControlRelais(r, false);
  }
  for (int k = 4; k > 0; k--) { // 4→1 ein/aus
    delay(500); ControlRelais(k, true);
    delay(500); ControlRelais(k, false);
  }
  for (int r = 1; r < 5; r++) { // Muster
    for (int k = 4; k > 0; k--) {
      delay(500);
      ControlRelais(r, true); ControlRelais(k, true);
      delay(500);
      ControlRelais(r, false); ControlRelais(k, false);
    }
  }
}

void ControlRelais(int RelaisNo, bool RelaisState) {
  strip.setPixelColor(RelaisNo, RelaisState*15, RelaisState*15, RelaisState*15);
  strip.show();
  Serial.print(" RelaisNo "); Serial.print(RelaisNo);
  Serial.print(" = "); Serial.println(RelaisState);
}

Schaltpläne

Fritzing-Datei: neopixel_optocoupler_relais__hNIrhGIMtD.fzz

Herstellungsprozess

  1. Sensor-gesteuerte Audio-Effekte mit dem Satellite CCRMA Kit bauen
  2. Arduino Nano Flight Simulator 2020 Kontrollpanel – LCD & CDI Display
  3. Arduino-basiertes Schalter- & LED-Panel für Microsoft Flight Simulator 2020
  4. Interaktives Gyroskop-LED-Display mit NeoPixel-Ring & Arduino
  5. Intelligente Jalousien: Automatische Lichtsteuerung mit Arduino & Solarenergie
  6. LED per Bluetooth mit Arduino steuern – Einfache DIY-Anleitung
  7. Einfachen Hindernissensor mit Arduino bauen – IR-LED & Photodiode Tutorial
  8. Roomba Create 2 per Arduino & Android steuern – Schritt-für-Schritt
  9. Intelligenten Arduino-Vierbeiner-Roboter bauen: Schritt-für-Schritt-Anleitung
  10. Arduino & MPU6050: Präzise Servomotor-Steuerung mit SG90 & MG996R