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

Steuerung von Jalousien (oder einem Wechselstrommotor)

Komponenten und Verbrauchsmaterialien

Arduino Nano R3
× 1
ControlEverything.com 4-KANAL-RELAIS-CONTROLLER FÜR I2C
× 1
Festkörperplatine mit 4 Kanälen
× 1
Jalousiemotor
Bis zu 4 Motoren können mit einem Arduino gesteuert werden.
× 1
Kondensator 100 nF 630 V
Anzahl pro Motor.
× 1
Widerstand 100 Ohm (0,5 W min!)
Verwenden Sie keine Präzisionswiderstände (die blauen)! Menge pro Motor.
× 1
Varistor 275 VAC
Anzahl pro Motor.
× 1
Diode generisch
Jede Signal- oder Leistungsdiode ist in Ordnung. Menge pro Jalousie.
× 3
Raspberry Pi 3 Model B
Optional für Fernbedienung
× 1
nRF24-Modul (generisch)
Optional für Fernbedienung
× 2

Notwendige Werkzeuge und Maschinen

Lötkolben (generisch)

Apps und Onlinedienste

Arduino-IDE
Domoticz
Optional, nur für Fernbedienung. Jeder andere Automatisierungscontroller kann verwendet werden oder auch keiner, er dient nur zum Auslösen des Konsolenbefehls.

Über dieses Projekt

Einführung

Habe gerade ein neues Haus gekauft und wollte alles automatisieren, angefangen bei den Jalousien. Was wie ein einfaches Projekt schien, entpuppte sich als Albtraum:Die relativ leistungsstarken Motoren (150 W) zerstörten meine Relais und Triacs, welche drahtlose Kommunikation und Steuerung ich verwenden sollte und wie sie funktionieren sollte, war nicht offensichtlich, Lärm in den Warteschlangen verursachten zufällige Aktivierung der Jalousien (ziemlich gruselig mitten in der Nacht)... Endlich habe ich es geschafft, all diese Probleme mit sehr billigen Komponenten zu lösen und ich hoffe, dass ich jemand anderem helfen kann, diese Kopfschmerzen und vieles mehr zu ersparen Zeit.

Du programmierst nicht gerne, lötest aber gerne? Lesen Sie trotzdem das Tutorial und am Ende finden Sie eine diskrete Schaltung, die dasselbe tut, jedoch ohne Intelligenz.

Erklärung

Bei der Steuerung von Motoren ist ihre Induktivität ein wichtiges Thema, die dazu führt, dass der Strom beim Versuch, den Stromkreis zu öffnen, darauf besteht, weiter durch Ihre Unterbrechervorrichtung zu fließen, was eine sehr hohe Spannung verursacht. Wenn Sie versuchen, den Stromkreis ohne Vorkehrungen mit einem kleinen Relais zu unterbrechen, kleben ihre Kontakte zusammen, und wenn Sie einen Triac (Solid-State-Relais) verwenden, wird die Überspannung (in meinem Fall habe ich Spitzen von mehr als 1600 V gemessen) zerstört der Halbleiter.

Ich habe beim googeln festgestellt, dass andere Leute damit Probleme haben, aber sie haben den einfachen, teuren und voluminösen Weg gewählt, sie bekommen nur größere Relais und brauchen immer noch die billigen Relais, um die größeren zu aktivieren, während die Kontakte immer noch leiden und möglicherweise scheitern schließlich. Als Ingenieur konnte ich mir nicht erlauben, nicht die effizienteste Lösung zu finden. :) Im unten angehängten Schaltplan haben Sie die Lösung, um diese großen Relais zu schonen, indem Sie nur einen Widerstand, einen Kondensator und einen Varistor hinzufügen.

Der Varistor schützt den Triac vor Überspannung. Der Widerstand plus Kondensator bildet eine RC-Snubber-Schaltung, die die Energie während der Bremskommutierung absorbiert.

[PS: da ich das Tutorial lange Zeit nach dem Projekt direkt aus dem Kopf geschrieben habe, habe ich neulich beim genaueren Betrachten meiner Platine festgestellt, dass ich in der realen Schaltung den Widerstand und den Kondensator zwischen den braunen und grauen Linien platziert habe (lt die Schaltplanfarben) jedes Motors statt in den Triac-Kontakten. In diesem Fall funktionieren beide Lösungen, der Vorteil dieser zweiten Option besteht jedoch darin, dass der Snubber nicht fest mit dem Stromnetz verbunden ist. ]

[PS2: SebDominguez hat auch ein schönes Schema mit der aktuellen Konfiguration erstellt:

]

Anstatt einen Pin für den Aufwärts-Befehl und einen anderen für den Abwärts-Befehl für jede Jalousie zu verwenden, teilen sich die Schalter eine gemeinsame Leitung, die angibt, ob die Jalousie nach oben oder unten gehen muss. Wir verwenden also 5 statt 8 Eingänge. Es wird kein Filter benötigt, die Eingänge sind softwareentprellt.

Zuerst aktiviert das Arduino das Relaismodul, um die Motorrichtung auszuwählen, nach einer kleinen Verzögerung, sodass der Relaiskontakt bereits vorhanden ist, aktiviert es den Triac und speist den Motor mit 230 VAC durch die billigen Relais und Triacs-Module ohne Probleme. Um den Stromkreis zu unterbrechen, ist der Vorgang umgekehrt, zuerst Triacs und dann Relais, damit Relais nie eine Live-Kommutierung erleiden.

Sie können einen bis vier Motoren verwenden, ohne dass der Code geändert werden muss. Es schadet nicht, die Logik für die anderen Motoren zu haben, wenn Sie sie nicht verwenden, es sei denn, Sie benötigen die Pins natürlich für etwas anderes.

Zu Hause haben wir zwei Stockwerke und damit zwei Kreisläufe. Da Remote-Befehle eindeutig sein müssen, habe ich den Code für jeden dieser Befehle gültig gemacht, indem ich beim Hochladen eine Zeile kommentiert habe. Wenn Sie nur eine Schaltung montieren, müssen Sie nichts ändern, aber wenn Sie zwei bauen, haben Sie dort bereits die Lösung kostenlos. Tatsächlich habe ich dich gerade angelogen, wir haben drei Schaltkreise, aber insgesamt 8 Jalousien, in einem Schaltkreis belegen wir alle vier Motoren, aber die anderen vier Jalousien werden in zwei geteilt, indem die ersten drei Eingänge in einem Arduino und nur die Eingangsnummer verwendet werden vier im zweiten. Die duplizierten Schaltkreise reagieren auf die Fernbedienungsbefehle genau gleich, aber wo nichts angeschlossen ist, gibt es nichts zu aktivieren. :) Wenn Sie die MySensors-Version des Codes verwenden, können Sie bis zu 256 Knoten mit jeweils 4 Blinds verbinden, ohne eine einzige Zeile im Code zu ändern, fair genug, wenn Sie in einem Palast leben.

Das System sieht insgesamt ungefähr so ​​aus:

Sorry, dass es nicht sehr ausgefallen und übersichtlich ist, aber es ist die eigentliche Installation, die vor einiger Zeit erstellt wurde, nicht nur eine vorbereitete Schaltung für dieses Tutorial und ich kann sie Ihnen nicht sortiert auf einem Tisch zeigen. Wie man sieht, passt es in eine 22 x 15 x 5,2 cm große Wallbox, ist aber recht eng. Ich habe es so gemacht, dass ich alles mit einer Heißklebepistole in eine offene Holzkiste gesteckt habe:praktisch, schnell und einfach.

Wenn Sie die Web-IDE für die Arduino-Skizze verwenden, sollte sie automatisch alle benötigten Bibliotheken finden.

Fernbedienung (optional)

Das Ziel dieses Tutorials war es, das Induktivitätsproblem zu lösen, aber als Extra gibt es auch die Möglichkeit der Fernbedienung.

Der mitgelieferte Code beinhaltet zwei Möglichkeiten der Fernbedienung über das Funkmodul nrf24l01+:über MySensors (empfohlen) oder durch Senden einer Ganzzahl mit der Jalousienummer und dem Befehl 0 oder 1 für Auf- oder Abwärts.

In beiden Fällen verwende ich ein RPi als Master mit einem direkt daran angeschlossenen nRF24L01+ Modul und einem installierten Controller (Domoticz).

Für die erste Option, die MySensors verwendet, ist es erforderlich, das MySensors MQTT-Gateway zu installieren. (https://www.mysensors.org/build/raspberry). In meiner Implementierung, die es als Ethernet im localhost konfiguriert. Folgen Sie den Schritten im Link und hier haben Sie meine Konfigurationsparameter, die Ihnen helfen können (überprüfen Sie, ob Sie dieselben benötigen):

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

Sobald die Integration in Domoticz abgeschlossen ist, ist es sehr einfach:Fügen Sie das HW MySensors MQTT-Gateway hinzu, schalten Sie den Knoten ein und im Setup Ihrer neuen Hardware finden Sie ihn direkt.

Bei der zweiten Option, die direkt eine benutzerdefinierte Anwendung verwendet, nicht MySensors, führt ein virtueller Switch den Konsolenbefehl aus:

 ./remote -m XY  

(X:Blind #, Y:Aktion).

In der Kopfzeile des Arduino-Skripts finden Sie weitere Details.

Der Code für diesen Remote-Befehl ist in http://hack.lenotta.com/arduino-raspberry-pi-switching-light-with-nrf24l01/ beschrieben. Vergessen Sie den Abschnitt Node.js und die Arduino-Skizze, die wir nicht brauchen sie und diese Skizze hat tatsächlich einen Fehler. Was wir von hier aus brauchen, ist nur der Abschnitt "The Lamp Switch Application". Der Hardware-Bereich kann auch für die Funkverbindungen nützlich sein. Setzen Sie den 10 uF Kondensator übrigens immer auf die Power Pins des Funkmoduls. Denken Sie auch daran, das Funkmodul mit externer Antenne zu erwerben, wenn Sie den Platz haben. In Innenräumen kann die Reichweite der PCB-Antenne sehr eingeschränkt sein (weniger als 10 m), insbesondere wenn Module wie bei diesem Projekt in die Wände eingeschlossen sind.

Denken Sie daran, dass dieser Code ein wenig modifiziert werden muss, um die Funkparameter an die Arduino-Parameter anzupassen und den Code den Befehl nur einmal zu senden, anstatt es bis zu 5 Mal zu wiederholen, wenn keine Antwort empfangen wird, andernfalls bei fehlender Antwort das Arduino-Feedback sehen Sie, wie Ihre Jalousien agieren-stoppen-agieren-stoppen-agieren.

Der endgültige Code für den Raspberry würde so aussehen:

#include #include #include #include #include #include #include mit namespace std;//RF24 radio("/dev/spidev0.0",8000000 , 25); // RF24 Radio (RPI_V2_GPIO_P1_15, RPI_V2_GPIO_P1_24, BCM2835_SPI_SPEED_8MHZ); RF24 Radio (RPI_V2_GPIO_P1_22, RPI_V2_GPIO_P1_24, BCM2835_SPI_SPEED_8MHZ); // const int role_pin =7; const uint64_t Rohre [2] ={0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL} // const uint8_t Rohre [] [6] ={"1Node","2Node"}; // Hack um SEG FAULT zu vermeiden, Issue #46 auf RF24 github https://github.com/TMRh20/RF24.gitunsigned long got_message;void setup(void){ //Funkmodul vorbereiten printf("\nSchnittstelle vorbereiten\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,Rohre[1]); // radio.startListening();}bool sendMessage(int action){ //Diese Funktion sendet eine Nachricht, die 'Action', an das Arduino und wartet auf Antwort // Gibt true zurück, wenn ein ACK-Paket empfangen wird // Höre auf Radio zu hören .Hör auf zuzuhören(); unsignierte lange Nachricht =Aktion; printf("Jetzt %lu senden...", Nachricht); // Nachricht senden bool ok =radio.write( &message, sizeof(unsigned long)); if (!ok){ printf("fehlgeschlagen...\n\r"); }sonst{ printf("ok!\n\r"); } //Auf ACK hören radio.startListening(); //Lass uns die Zeit nehmen unsigned long started_waiting_at =millis(); bool timeout =false; while ( ! radio.available() &&! timeout ) { //printf("%d", !radio.available()); if (millis () - gestartet_waiting_at> 1000 ) { timeout =true; } } if( timeout ){ //Wenn wir zu lange gewartet haben, ist die Übertragung fehlgeschlagen printf("Puta mierda, no me responsee nadie...\n\r"); falsch zurückgeben; }else{ //Wenn wir die Nachricht rechtzeitig erhalten haben, lesen wir sie und drucken sie aus radio.read( &got_message, sizeof(unsigned long) ); printf("Ja, ich antworte> %lu.\n\r",got_message); true zurückgeben; }} int main(int argc, char ** argv){ char choice; installieren(); bool switch =false; int-Zähler =0; // Definiere die Optionen while(( choice =getopt( argc, argv, "m:")) !=-1){ if (choice =='m'){ printf("\n Im Gespräch mit meinen NRF24l01+ Freunden da draußen ....\n"); while(switched ==false &&counter <1){//Anzahl der Versuche, die Nachricht zu senden Switched =sendMessage(atoi(optarg)); Zähler ++; schlafen(1); } }else{ // Eine kleine Hilfestellung:printf("\n\rEs ist Zeit, einige Entscheidungen zu treffen...\n"); printf("\n\rTIPP:Verwenden Sie -m idAction für die zu sendende Nachricht. "); printf("\n\rBeispiel (ID Nummer 12, Aktionsnummer 1):"); printf("\nsudo ./remote -m 121\n"); } // 0 zurückgeben, wenn alles gut gelaufen ist, 2 sonst, wenn (Zähler <5) 0 zurückgeben; sonst 2 zurückgeben; }}  

Da es zum Kompilieren usw. erforderlich ist, habe ich es dir leicht gemacht und alles was du brauchst (nur für die Raspberry-Seite, die Arduino-Skizze ist unten) in einer Zip-Datei mit dem modifizierten Quellcode, Bibliotheken und dem kompilierten Code für der Raspberry Pi 3:

https://goo.gl/ocCwk3

Wenn Sie dies in Ihr RPi extrahieren, sollten Sie einfach den Remote-Befehl ausführen können.

Das Ergebnis

Hier seht ihr wie ich alles umgesetzt habe.

Die drei Schalterpaare in der Wand steuern drei Jalousien. Das Tablet an der Wand zeigt die Domoticz-Oberfläche mit virtuellen Schaltern. Hinter dem Tablet befindet sich der Raspberry, in dem unter anderem der Controller verbaut ist. Der Arduino ist nicht hier, er befindet sich in der Nähe der Jalousien im zuvor gezeigten Bild; RPi und Arduino sind drahtlos über das Funkmodul verbunden.

Hier sehen Sie auch das Google Home, das mir durch die Verwendung von IFTTT mit Webhooks-Dienst und Domoticz hilft, jeden Sprachbefehl wie "Hey Google, Jalousien runter" zu ermöglichen. Wenn Sie diesen Punkt erreicht haben, werden Sie mit Sicherheit keine Probleme haben, die Sprachbefehle zum Laufen zu bringen.

Hier haben Sie ein sehr schnell erstelltes Video, das das Ergebnis zeigt.

Lassen Sie mich wissen, ob Ihnen dieses Tutorial geholfen hat!

Mit freundlichen Grüßen

gomecin

PS Als Extra aus Neugier oder weil man Computer, Programmierung oder was auch immer hasst, habe ich zuerst versucht, die Lösung diskret und ohne jegliche Intelligenz zu machen. Das ist das Ergebnis:

Ich habe es sogar gebaut, und die Schaltung erledigt die Arbeit, aber ich habe es getan, bevor ich mit der Arduino-Plattform vertraut war, die flexibler und absolut zuverlässig ist, daher werde ich sie nicht erklären. Wenn es für Sie von Nutzen ist, dann großartig, aber es ist nicht der Umfang dieses Tutorials, und ich würde davon abraten, es zu verwenden.

Code

Arduino-Skizze

Schaltpläne

Arduino steuert 4 Jalousiemotoren

Herstellungsprozess

  1. Freigabe- und Interlock-Schaltungen
  2. Motorsteuerkreise
  3. Leistungsberechnungen
  4. Planierraupe
  5. Algorithmus und Hardware-Leistungssteigerung der Sprachsteuerung
  6. Infineon bringt eingebettete TLE985x-Leistungsserie für Automobilanwendungen auf den Markt
  7. Qualitätskontrolle ist der erste Schritt zur Zuverlässigkeit des Motors
  8. Die Grundlagen elektrischer Schalttafeln
  9. Strom und HLK/Klimasteuerung
  10. Wie steuert man die Drehzahl eines Hydraulikmotors?