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

Arduino Nano + 4-Kanal-Relais: Rollläden & AC-Motoren steuern

Komponenten und Zubehör

Arduino Nano R3 × 1
ControlEverything.com 4-Kanal I²C-Relais-Controller × 1
Solid-State 4-Kanal-Platine (Triacs) × 1
Rollladenmotor (bis 4 Stück) × 1–4
Kondensator 100 nF / 630 V (pro Motor) × 1–4
Widerstand 100 Ω / 0,5 W (pro Motor, keine Präzisionswiderstände!) × 1–4
Varistor 275 VAC (pro Motor) × 1–4
Signal-/Leistungsdiode (pro Rollladen, z. B. 1N4007) × 3
Raspberry Pi 3 Model B (optional, Fernsteuerung) × 1
nRF24L01+ Modul (optional, 2 Stück für Funk) × 2

Werkzeuge

Software und Dienste

Projektbeschreibung

Einführung

Neues Haus, erste Automatisierung: Rollläden. Was einfach klang, wurde zur Herausforderung: 150-W-Motoren zerstörten Relais und Triacs, Funkauswahl unklar, Störungen auf Leitungen ließen Rollläden nachts spontan bewegen. Lösung mit günstigen Bauteilen gefunden – hier die Dokumentation, um anderen Zeit und Nerven zu sparen.

Wer nicht programmieren, aber löten mag: Am Ende gibt es eine diskrete Schaltung ohne Mikrocontroller.

Das Induktivitäts-Problem

Motoren sind induktive Lasten. Beim Abschalten will der Strom weiterfließen → hohe Spannungsspitzen. Kleine Relais: Kontakte kleben. Triacs: Überlastung (gemessene Spitzen > 1600 V) zerstört Halbleiter. Viele nutzen große Relais (teuer, voluminös, Kontakte leiden trotzdem). Bessere Lösung: RC-Snubber (R + C) + Varistor direkt am Triac.

Arduino Nano + 4-Kanal-Relais: Rollläden & AC-Motoren steuern

Hinweis: In der realen Schaltung liegen R und C zwischen den Motorleitungen (braun/grau), nicht am Triac. Beides funktioniert, aber so ist der Snubber nicht dauerhaft am Netz.

Steuerlogik

Statt je 2 Pins (Auf/Ab) pro Rolllade wird eine gemeinsame Richtungsleitung genutzt: 5 Eingänge statt 8. Software-Entprellung. Ablauf: 1. Relais für Richtung schalten, kurze Wartezeit, 2. Triac zünden (Motor bekommt 230 VAC). Abschalten: erst Triac aus, dann Relais – Relais schalten nie unter Last.

1–4 Motoren pro Arduino, Code muss nicht angepasst werden. Zwei Stockwerke = zwei getrennte Stromkreise. Code unterstützt mehrere Instanzen durch Auskommentieren einer Zeile beim Hochladen. Tatsächlich drei Stromkreise, 8 Rollläden: einer voll (4 Motoren), zwei teilen sich die restlichen 4 (3 + 1 Eingänge). Identische Funkbefehle, nicht belegte Eingänge bleiben wirkungslos. Mit MySensors: bis 256 Nodes à 4 Rollläden ohne Code-Änderung.

Arduino Nano + 4-Kanal-Relais: Rollläden & AC-Motoren steuern

Passt in 22 × 15 × 5,2 cm Unterputzdose (eng). Aufbau in offener Holzbox mit Heißkleber – praktisch, schnell, einfach.

Fernsteuerung (optional)

Zwei Varianten per nRF24L01+: MySensors (empfohlen) oder Custom Integer Protocol (Blindennummer + Befehl 0/1). Master: Raspberry Pi mit nRF24L01+ direkt, Domoticz als Controller.

Variante 1: MySensors

MySensors MQTT Gateway auf Pi installieren (Anleitung). Beispiel-Konfiguration:

sudo ./configure --my-gateway=mqtt --my-controller-ip-address=127.0.0.1 \
  --my-mqtt-publish-topic-prefix=domoticz/in/MyMQTT \
  --my-mqtt-subscribe-topic-prefix=domoticz/out/MyMQTT \
  --my-mqtt-client-id=mygateway1 --my-transport=rf24 \
  --my-port=1883 --my-rf24-irq-pin=15

In Domoticz: Hardware → MySensors MQTT Gateway hinzufügen, Node mit Strom versorgen → wird automatisch erkannt.

Variante 2: Custom Protocol

Virtueller Schalter in Domoticz führt Konsolenbefehl aus:

./remote -m XY

(X: Rollladen-Nummer, Y: Aktion 0/1). Basis-Code von hack.lenotta.com (Sektion „The Lamp Switch Application“, Node.js & Arduino-Sketch dort ignorieren). Wichtig: 10 µF Kondensator an nRF24L01+ Stromversorgung, Außenantenne empfohlen (PCB-Antenne < 10 m in Wänden). Code anpassen: Radio-Parameter an Arduino anpassen, nur einmal senden (keine Retries), sonst „Acting-Stopping-Acting“.

Fertiger Raspberry-Code (kompiliert für Pi 3):

#include <unistd.h>
#include <string>
#include <getopt.h>
#include <cstdlib>
#include <sstream>
#include <iostream>
#include <RF24/RF24.h>
using namespace std;

RF24 radio(RPI_V2_GPIO_P1_22, RPI_V2_GPIO_P1_24, BCM2835_SPI_SPEED_8MHZ);
const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL };
unsigned long got_message;

void setup(void){
  printf("\nPreparing interface\n");
  radio.begin();
  radio.setRetries(15, 15);
  radio.setChannel(0x70);
  radio.setDataRate(RF24_250KBPS);
  radio.setPALevel(RF24_PA_MAX);
  radio.printDetails();
  radio.openWritingPipe(pipes[0]);
  radio.openReadingPipe(1,pipes[1]);
}

bool sendMessage(int action){
  radio.stopListening();
  unsigned long message = action;
  printf("Now sending %lu...", message);
  bool ok = radio.write(&message, sizeof(unsigned long));
  if (!ok){ printf("failed...\n\r"); }
  else{ printf("ok!\n\r"); }
  radio.startListening();
  unsigned long started_waiting_at = millis();
  bool timeout = false;
  while ( ! radio.available() && ! timeout ) {
    if (millis() - started_waiting_at > 1000 ) timeout = true;
  }
  if( timeout ){
    printf("Puta mierda, no me responde nadie...\n\r");
    return false;
  }else{
    radio.read(&got_message, sizeof(unsigned long));
    printf("Yeah, me han respondido > %lu.\n\r",got_message);
    return true;
  }
}

int main(int argc, char **argv){
  char choice;
  setup();
  bool switched = false;
  int counter = 0;
  while((choice = getopt(argc, argv, "m:")) != -1){
    if (choice == 'm'){
      printf("\n Talking with my NRF24l01+ friends out there....\n");
      while(switched == false && counter < 1){
        switched = sendMessage(atoi(optarg));
        counter++; sleep(1);
      }
    }else{
      printf("\n\rIt's time to make some choices...\n");
      printf("\n\rTIP: Use -m idAction for the message to send.");
      printf("\n\rExample (id 12, action 1):\nsudo ./remote -m 121\n");
    }
  }
  return (counter < 5) ? 0 : 2;
}

Alles für Pi-Seite (Quelle, Libs, Kompilat) als ZIP: https://goo.gl/ocCwk3. Entpacken, ./remote -m XY ausführen.

Ergebnis

Arduino Nano + 4-Kanal-Relais: Rollläden & AC-Motoren steuern

Drei Doppeltaster steuern drei Rollläden. Tablet zeigt Domoticz-Oberfläche. Dahinter Raspberry Pi (Controller). Arduino per Funk (nRF24L01+) mit Rollladensteuerung verbunden.

Arduino Nano + 4-Kanal-Relais: Rollläden & AC-Motoren steuern

Google Home via IFTTT Webhooks + Domoticz: „Hey Google, Rollläden runter.“

Kurzes Demo-Video im Originalprojekt.

Zusatz: Diskrete Schaltung ohne Mikrocontroller (nur aus Neugier/ohne Programmierung). Funktioniert, aber Arduino-Lösung ist flexibler & zuverlässiger. Nicht Thema dieses Tutorials.

Arduino Nano + 4-Kanal-Relais: Rollläden & AC-Motoren steuern

Code

Arduino Sketch

Der vollständige Sketch ist im Originalprojekt verlinkt (Web-IDE lädt Libraries automatisch).

Schaltplan

Arduino Nano + 4-Kanal-Relais: Rollläden & AC-Motoren steuern

Herstellungsprozess

  1. Freigabe- (Permissive) und Verriegelungsschaltungen (Interlock) in industriellen Steuerungssystemen
  2. Fortgeschrittene Motorkontrollschaltungen: Selbsthaltung, Stopp und Zeitverzögerung
  3. Leistungsdissipation in Widerstandsschaltungen berechnen
  4. Bulldozer-Technologie: Design, Fertigung und zukünftige Innovationen
  5. Edge KI und Low-Power Hardware treiben Aufstieg der Sprachsteuerung an
  6. Infineon stellt TLE985x Embedded Power Series für Automotive Motor Control vor
  7. Qualitätskontrolle: Der Eckpfeiler der Motorzuverlässigkeit
  8. Elektro-Schalttafeln: Design-Grundlagen für Sicherheit & ROI
  9. Zuverlässige Strom- & Klimaanlagen-Miete für nahtlose Klimakontrolle
  10. Hydraulikmotor-Drehzahl per PWM & Fernsteuerung regeln: Praxisleitfaden