relais_securise.ino

Arduino Opta (micro automate, STM32H747) · Fichier : relais_securise.ino · Langage : Arduino · Usage : Piloter les sorties à relais intégrées avec témoin

Les deux sorties à relais de l'Opta se pilotent en une ligne via PLCContainer : ce programme les fait se succéder toutes les 3 s, comme un avertisseur sonore/visuel ou un inverseur marche/arrêt. Le relais est un contact sec, il accepte 24 V comme le 230 V du commerce.

Matériel requis

Une Opta PLC STMicroelectronics (STM32H747 temps réel + coprocesseur sécurisé i.MX RT1052) programmée avec l'environnement Arduino PLC, alimentée en 24 V DIN. Opta seule (relais intégrés) ; charge 24 V DC ou 230 V AC sur les bornes RO1/RO2 selon besoin.

Câblage

Charge entre la borne ROx et le commun ; respecter le pouvoir de coupure du relais (courant nominal de la fiche). 24 V DC recommandé pour débuter.

Fonctionnement

PLC.begin() configure les périphériques ; Relay[n].on/off ferme ou ouvre le contact sec. La LED RGB témoin reflète l'état pour le dépannage à distance.

Exécution

Installez le gestionnaire de cartes Arduino PLC, sélectionnez « Opta PLC », câblez en USB/DFU puis téléversez. Le programme tourne sur le STM32H747 côté temps réel.

Variantes

Ajouter une condition sur une entrée numérique (capteur) pour n'enclencher le relais que si la machine est prête, ou un verrouillage anti-recul.

relais_securise.ino

// Opta PLC : pilotage des 2 relais intégrés (RO1, RO2) avec LED de statut.
// API officielle : bibliothèque PLCContainer fournie par le paquet Arduino PLC.
#include "PLCContainer.h"

PLCContainer PLC;

const unsigned long PERIODE_MS = 3000;   // cycle de 3 s
unsigned long t0 = millis();
bool etat = false;

void setup() {
  Serial.begin(115200);
  PLC.begin();                 // initialise relais, entrées, analogique, Ethernet
  Serial.println("Opta relais : demarrage");
}

void loop() {
  if (millis() - t0 >= PERIODE_MS) {
    t0 = millis();
    etat = !etat;
    if (etat) {
      PLC.Relay[0].on();       // RO1 fermé
      PLC.Relay[1].off();      // RO2 ouvert
      Serial.println("RO1 ON / RO2 OFF");
    } else {
      PLC.Relay[0].off();
      PLC.Relay[1].on();
      Serial.println("RO1 OFF / RO2 ON");
    }
  }
  // LED RGB intégrée en témoin d'état (rouge = relais 1 actif)
  PLC.LedRgb.set(etat ? 255 : 0, 0, etat ? 0 : 255);
}

← Retour à la fiche