Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Arduino & Optocoupleurs NeoPixel : Contrôle Efficace de Multiples Relais sur une Seule Broche

Composants et fournitures

Bandeau LED NeoPixel WS2812B (5050 RGB, adressables individuellement) – ex. bande 5m 300 LED (60 LED/m), découper 10 LED (4 utilisées) 1
Résistances 27 kΩ (en série avec chaque LDR) 4
Photorésistances (LDR – Light Dependent Resistor) 4
Module relais 5V (4 canaux) – ex. RobotGeek ou équivalent Conrad 095841 4
Lampe LED 230V (pour test) 1
Arduino UNO / NodeMCU ESP32 (tout modèle Arduino compatible) 1

Outils nécessaires

Applications et services

À propos de ce projet

Ce projet montre comment contrôler plusieurs relais (ou autres actionneurs) depuis une seule broche de sortie Arduino.

Cette solution s'applique quand le nombre de broches de sortie disponibles est insuffisant pour piloter plusieurs actionneurs (relais, etc.) en parallèle.

Principe de fonctionnement

On utilise un bandeau de NeoPixels (LED SMD5050 avec contrôleur WS2812B intégré). Chaque pixel est associé à une photorésistance (LDR), formant un optocoupleur « fait maison ». On peut ainsi créer autant d'optocoupleurs que de LED disponibles (ex. 300 sur une bande 5m), limité par l'alimentation 5V.

Chaque LED est adressée individuellement depuis une seule broche Arduino. Chaque LDR (en série avec une résistance 27 kΩ) commande un relais 5V. C'est une conversion série → parallèle (1 vers N).

Au lieu de relais, d'autres actionneurs peuvent être pilotés via les LDR comme entrées de n'importe quel circuit.

Dans ce projet (partie d'un ensemble plus vaste), un ESP32 NodeMCU est utilisé, mais un Arduino Uno (ou presque tout autre modèle) fonctionne tout aussi bien.

Étape 1 : Fabrication des optocoupleurs NeoPixel

Matériaux :

Arduino & Optocoupleurs NeoPixel : Contrôle Efficace de Multiples Relais sur une Seule Broche
Arduino & Optocoupleurs NeoPixel : Contrôle Efficace de Multiples Relais sur une Seule Broche

Important : L'espacement des LDR correspond à celui des LED. Il est crucial d'isoler optiquement chaque couple LED/LDR pour éviter le « crosstalk » (fuite de lumière vers les LDR voisins). En pratique, c'est quasi impossible à éliminer totalement ; le niveau de lumière des LED « allumées » est donc réduit au minimum dans le logiciel, juste suffisant pour déclencher le relais via le LDR.

Arduino & Optocoupleurs NeoPixel : Contrôle Efficace de Multiples Relais sur une Seule Broche

La bande fait 10 LED mais seulement 4 couples LED/LDR sont utilisés (simplicité).

Étape 2 : Montage électronique

Le montage sur breadboard utilise un ESP32s (NodeMCU), mais tout Arduino convient.

Arduino & Optocoupleurs NeoPixel : Contrôle Efficace de Multiples Relais sur une Seule Broche
Arduino & Optocoupleurs NeoPixel : Contrôle Efficace de Multiples Relais sur une Seule Broche

Une seule broche de sortie contrôle 4 relais en parallèle. Ce nombre peut monter jusqu'à 300 (longueur bande 5m).

L'ESP32 fonctionne en logique 3,3V (régulateur intégré), la bande NeoPixel en 5V. L'ESP32 est alimenté en 5V via USB (adaptateur ou powerbank). Les NeoPixels prennent le 5V directement sur la broche 5V de l'ESP32 ; les relais sont aussi en 5V.

Dans cet exemple, 4 circuits optocoupleurs pilotent 4 relais commandant chacun une lampe 230V.

Broche de sortie : GPIO 21 ; relais pilotés via pixels n° 1, 2, 3, 4.

Étape 3 : Logiciel

La fonction loop() enchaîne des boucles for pour démontrer différents séquencements de commutation des lampes via les relais.

Pour commander un relais précis, on appelle :

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);
}

Cette fonction allume/éteint une LED spécifique. L'adresse LED correspond au numéro de relais. L'intensité est faible (valeur 15/255) – juste assez pour déclencher le LDR, évitant le crosstalk lumineux.

Le résultat est visible dans la vidéo de démonstration.

Code complet

/* Contrôle multiples relais/actionneurs depuis 1 broche Arduino
   Développé par Pierre Pennings (décembre 2018)
   Licence GPL3+ */

#include <Adafruit_NeoPixel.h>
#define NUM_LEDS 10

const int RelaisPin = 21; // GPIO 21 sur ESP32 (adapter selon carte)
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();
  // Test LEDs au démarrage
  for (int t = 0; t < 10; t++) {
    strip.setPixelColor(t, 15, 15, 15); // Blanc faible
    strip.show();
    delay(500);
    strip.setPixelColor(t, 0, 0, 0);
  }
}

void loop() {
  // Séquence 1 : allumage séquentiel 1→4
  for (int r = 1; r < 5; r++) {
    delay(500);
    ControlRelais(r, true);
    delay(500);
    ControlRelais(r, false);
  }
  // Séquence 2 : allumage séquentiel 4→1
  for (int k = 4; k > 0; k--) {
    delay(500);
    ControlRelais(k, true);
    delay(500);
    ControlRelais(k, false);
  }
  // Séquence 3 : motifs croisés
  for (int r = 1; r < 5; r++) {
    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);
}

Schémas

Fichier Fritzing : neopixel_optocoupler_relais__hNIrhGIMtD.fzz

Processus de fabrication

  1. Créer des effets audio pilotés par capteurs avec le kit Satellite CCRMA
  2. Panneau de contrôle Arduino Nano pour Flight Simulator 2020 – Affichage LCD et CDI
  3. Panneau commutateurs et LED pour Microsoft Flight Simulator 2020 basé sur Arduino
  4. Affichage LED Interactif Gyroscopique avec Anneau NeoPixel et Arduino
  5. Stores intelligents : contrôle automatisé de la lumière avec Arduino et énergie solaire
  6. Contrôler une LED par Bluetooth avec Arduino et MIT App Inventor
  7. Capteur d'obstacle IR simple avec Arduino — LED IR + Photodiode
  8. Contrôlez votre Roomba Create 2 avec Arduino et Android – Guide pas à pas
  9. Construire un robot quadrupède Arduino intelligent : guide étape par étape