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

Contrôle des stores (ou n'importe quel moteur à courant alternatif)

Composants et fournitures

Arduino Nano R3
× 1
ControlEverything.com CONTRLEUR DE RELAIS 4 CANAUX POUR I2C
× 1
Carte solide à 4 canaux
× 1
Moteur aveugle
Jusqu'à 4 moteurs peuvent être contrôlés avec un seul Arduino.
× 1
Condensateur 100 nF 630 V
Quantité par moteur.
× 1
Résistance 100 ohm (0,5 W min !)
N'utilisez pas de résistances de précision (les bleues) ! Quantité par moteur.
× 1
Varistance 275 VAC
Quantité par moteur.
× 1
Diode générique
Tout signal ou diode d'alimentation est OK. Quantité par store.
× 3
Raspberry Pi 3 Modèle B
Facultatif pour la télécommande
× 1
Module nRF24 (Générique)
Facultatif pour la télécommande
× 2

Outils et machines nécessaires

Fer à souder (générique)

Applications et services en ligne

Arduino IDE
Domoticz
Facultatif, uniquement pour la télécommande. N'importe quel autre contrôleur d'automatisation peut être utilisé ou même aucun, c'est juste pour déclencher la commande de la console.

À propos de ce projet

Présentation

Je viens d'acheter une nouvelle maison et je voulais tout automatiser, à commencer par les stores. Ce qui semblait être un projet facile s'est avéré être un peu un cauchemar :les moteurs relativement puissants (150 W) détruisaient mes relais et triacs, quelle communication sans fil et quel contrôleur utiliser et comment le faire fonctionner n'était pas évident, le bruit dans les lignes provoquaient une activation aléatoire des stores (assez effrayant au milieu de la nuit)... Enfin, j'ai réussi à résoudre tous ces problèmes avec des composants très bon marché et j'espère pouvoir aider quelqu'un d'autre à épargner ces maux de tête et beaucoup de temps.

Vous n'aimez pas programmer, mais vous aimez souder ? Lisez quand même le tutoriel et à la fin vous trouvez un circuit discret, qui fait la même chose, mais sans intelligence.

Explication

Lors du contrôle des moteurs, un problème important est leur inductance, ce qui fait qu'en essayant d'ouvrir le circuit, le courant insiste pour continuer à circuler à travers votre dispositif de coupure, provoquant une très haute tension. Si vous essayez de couper le circuit sans précaution avec un petit relais, leurs contacts vont coller ensemble, et si vous utilisez un triac (relais statique) la surtension (dans mon cas j'ai mesuré des pics de plus de 1600V) va détruire le semi-conducteur.

J'ai réalisé en cherchant sur Google que d'autres personnes avaient des problèmes avec cela, mais ils ont choisi la voie facile, coûteuse et volumineuse, ils obtiennent juste des relais plus gros, ayant toujours besoin de relais bon marché juste pour activer les plus gros, tandis que les contacts souffriront toujours et peuvent échouer finalement. En tant qu'ingénieur, je ne pouvais pas me permettre de ne pas obtenir la solution la plus efficace. :) Dans le schéma ci-joint, vous avez la solution pour épargner ce gros relais en ajoutant simplement une résistance, un condensateur et une varistance.

La varistance protège le triac d'une surtension. La résistance et le condensateur forment un circuit RC Snubber qui absorbe l'énergie pendant la commutation de coupure.

[PS : depuis que j'ai écrit le tutoriel directement de ma tête longtemps après avoir fait le projet, l'autre jour en regardant de plus près ma carte, j'ai réalisé que dans le vrai circuit j'ai placé la résistance et le condensateur entre les lignes marron et grise (selon les couleurs schématiques) de chaque moteur au lieu des contacts du triac. Les deux solutions fonctionnent dans ce cas, mais l'avantage de cette deuxième option est que le Snubber n'est pas connecté en permanence au secteur. ]

[PS2 : SebDominguez a également fait un joli schéma avec la configuration actuelle :

]

Au lieu d'utiliser une broche pour la commande de montée et une autre pour la descente pour chaque store, les commutateurs partagent une ligne commune qui indique si le store doit monter ou descendre. Nous utilisons donc 5 entrées au lieu de 8. Aucun filtre n'est nécessaire, les entrées sont anti-rebonds par logiciel.

Tout d'abord, l'Arduino active le module de relais pour sélectionner la direction du moteur, après un petit délai, de sorte que le contact de relais est déjà en place, il active le triac, alimentant le moteur avec le 230 VAC via les modules relais et triacs bon marché sans problème. Pour rompre le circuit, le processus est inverse, d'abord les triacs, puis les relais, de sorte que les relais ne subissent jamais de commutation sous tension.

Vous pouvez utiliser de un à quatre moteurs, sans avoir besoin de modifier le code, cela ne fera pas de mal d'avoir la logique pour les autres moteurs si vous ne les utilisez pas, à moins que vous n'ayez besoin des broches pour autre chose, évidemment. /P>

À la maison, nous avons deux histoires et donc deux circuits. Étant donné que les commandes à distance doivent être uniques, j'ai fait en sorte que le code soit valide pour l'une d'entre elles en commentant une ligne au moment du téléchargement. Si vous ne montez qu'un seul circuit, vous n'avez rien à changer, mais si vous en construisez deux, vous avez déjà la solution gratuitement. En fait, je viens de vous mentir, nous avons trois circuits, mais au total 8 stores, dans un circuit nous occupons les quatre moteurs, mais les quatre autres stores sont divisés en deux en utilisant les trois premières entrées dans un seul Arduino et le seul numéro d'entrée quatre dans le second. Les circuits dupliqués réagissent aux commandes à distance exactement de la même manière, mais là où il n'y a rien de connecté, il n'y a rien à activer. :) Si vous utilisez la version MySensors du code, vous pouvez connecter jusqu'à 256 nœuds avec 4 stores chacun ne changeant pas une seule ligne dans le code, assez juste si vous vivez dans un palais.

Le système ressemble globalement à ceci :

Désolé, ce n'est pas très sophistiqué et clair, mais c'est la vraie installation, faite il y a le temps, pas seulement un circuit préparé pour ce tutoriel et je ne peux pas vous le montrer assorti sur une table. Comme vous pouvez le voir, il tient dans un boîtier mural de 22 x 15 x 5,2 cm, mais assez serré cependant. Pour ma part, j'ai tout mis dans une boîte en bois ouverte à l'aide d'un pistolet à colle chaude :pratique, rapide et facile.

Si vous utilisez l'IDE Web pour l'esquisse Arduino, il devrait trouver automatiquement toutes les bibliothèques nécessaires.

Télécommande (facultatif)

Le but de ce tutoriel était de résoudre le problème d'inductance, mais en plus, il y a aussi la capacité de télécommande.

Le code fourni comprend deux manières de télécommande via le module radio nrf24l01+ :en utilisant MySensors (recommandé), ou en envoyant un entier avec le numéro de store et la commande 0 ou 1 pour monter ou descendre.

Dans les deux cas, j'utilise un RPi comme maître avec un module nRF24L01+ directement attaché à celui-ci et un contrôleur (Domoticz) installé.

Pour la première option, en utilisant MySensors, il est nécessaire d'installer la passerelle MySensors MQTT. (https://www.mysensors.org/build/raspberry). Dans mon implémentation, le configurer en tant qu'Ethernet dans le fichier localhost. Suivez les étapes du lien et voici mes paramètres de configuration qui peuvent vous aider (vérifiez si vous en avez besoin) :

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

Une fois fait son intégration dans Domoticz est très simple :ajoutez la passerelle HW MySensors MQTT, alimentez le nœud et dans la configuration de votre nouveau matériel vous le retrouverez directement.

Pour la deuxième option, en utilisant directement une application personnalisée, pas MySensors, un commutateur virtuel exécute la commande de console :

 ./remote -m XY  

(X :# aveugle, Y :action).

Dans l'en-tête du script Arduino, vous pouvez trouver plus de détails.

Le code de cette commande à distance est décrit dans http://hack.lenotta.com/arduino-raspberry-pi-switching-light-with-nrf24l01/ Oubliez la section Node.js et le croquis Arduino, nous n'avons pas besoin eux et ce croquis a en fait un bug. Ce dont nous avons besoin à partir d'ici, c'est la section "L'application d'interrupteur de lampe" uniquement. La section matériel peut également être utile pour les connexions radio. Au fait, placez toujours le condensateur de 10 uF sur les broches d'alimentation du module radio. Pensez également à vous procurer le module radio avec antenne externe si vous avez la place. A l'intérieur, la portée de l'antenne PCB peut être très limitée (moins de 10 m), surtout si les modules sont enfermés dans les murs comme pour ce projet.

Gardez à l'esprit que ce code doit être légèrement modifié, en faisant correspondre les paramètres radio à ceux de l'Arduino et aussi, en faisant en sorte que le code n'envoie la commande qu'une seule fois au lieu de réessayer jusqu'à 5 fois si aucune réponse n'est reçue, sinon en cas de manque le retour Arduino, vous verrez vos stores agir-arrêter-agir-arrêter-agir.

Le code final du Raspberry ressemblerait à ceci :

#include #include #include #include #include #include #include en utilisant espace de noms std;//RF24 radio("/dev/spidev0.0",8000000 , 25); // radio RF24 (RPI_V2_GPIO_P1_15, RPI_V2_GPIO_P1_24, BCM2835_SPI_SPEED_8MHZ); radio RF24 (RPI_V2_GPIO_P1_22, RPI_V2_GPIO_P1_24, BCM2835_SPI_SPEED_8MHZ); // const int role_pin =7; tuyaux const uint64_t [2] ={0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL}; // tuyaux const uint8_t [] [6] ={"1Node","2Node"} ;// hack pour éviter SEG FAULT, problème #46 sur RF24 github https://github.com/TMRh20/RF24.gitunsigned long got_message;void setup(void){ //Préparer le module radio printf("\nPréparation de l'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, tuyaux[1]); // radio.startListening ();}bool sendMessage(int action){ //Cette fonction envoie un message, l'"action", à l'arduino et attend la réponse //Retour vrai si le package ACK est reçu //Arrêter d'écouter la radio .stopListening(); message long non signé =action ; printf("Envoi de %lu...", message); //Envoyer le message bool ok =radio.write( &message, sizeof(unsigned long) ); if (!ok){ printf("échec...\n\r"); }else{ printf("ok!\n\r"); } //Écouter ACK radio.startListening(); //Prenons le temps d'écouter non signé longstarted_waiting_at =millis(); bool timeout =false; while ( ! radio.available() &&! timeout ) { //printf("%d", !radio.available()); if (millis() -started_waiting_at> 1000 ){ timeout =true; } } if( timeout ){ //Si nous avons attendu trop longtemps, la transmission a échoué printf("Puta mierda, no me responde nadie...\n\r"); renvoie faux ; }else{ //Si nous avons reçu le message à temps, lisons-le et affichons-le radio.read( &got_message, sizeof(unsigned long) ); printf("Ouais, moi je réponds> %lu.\n\r",got_message); renvoie vrai ; }} int main( int argc, char ** argv){ char choix; mettre en place(); bool commuté =faux ; compteur entier =0 ; //Définir les options while(( choice =getopt( argc, argv, "m:")) !=-1){ if (choice =='m'){ printf("\n Parler avec mes amis NRF24l01+ là-bas ....\n"); while(switched ==false &&counter <1){ //Nombre de tentatives d'envoi du message switché =sendMessage(atoi(optarg)); compteur ++; dormir (1) ; } }else{ // Un peu d'aide :printf("\n\rIl est temps de faire quelques choix...\n"); printf("\n\rASTUCE :utilisez -m idAction pour le message à envoyer. "); printf("\n\rExemple (numéro d'identification 12, numéro d'action 1) : " ); printf("\nsudo ./remote -m 121\n"); } //retourne 0 si tout s'est bien passé, 2 sinon si (compteur <5) retourne 0; sinon retourne 2; }}  

Puisqu'il est nécessaire de compiler et ainsi de suite, je vous ai facilité la tâche et mis tout ce dont vous avez besoin (uniquement pour le côté Raspberry, le croquis Arduino est ci-dessous) dans un fichier zip avec le code source modifié, les bibliothèques et le code compilé pour le Raspberry Pi 3 :

https://goo.gl/ocCwk3

Si vous extrayez cela dans votre RPi, vous devriez pouvoir simplement exécuter la commande à distance.

Le résultat

Ici vous pouvez voir comment j'ai tout implémenté.

Les trois paires d'interrupteurs dans le mur commandent trois stores. La tablette au mur montre l'interface Domoticz avec des commutateurs virtuels. Derrière la tablette, il y a le Raspberry, où le contrôleur est installé, entre autres. L'Arduino n'est pas là, il est proche des stores sur la photo ci-dessus ; RPi et Arduino sont liés sans fil via le module radio.

Ici, vous pouvez également voir Google Home, qui, en utilisant IFTTT avec le service Webhooks et Domoticz, m'aide à rendre possible n'importe quelle commande vocale, comme "Hey Google, aveugle". Si vous avez atteint ce point, vous n'aurez aucun problème pour faire fonctionner les commandes vocales.

Ici vous avez une vidéo très rapide montrant le résultat.

Faites-moi savoir si ce tutoriel vous a aidé !

Cordialement,

gomécine

P.S. Par curiosité, ou parce que vous détestez vraiment les ordinateurs, la programmation ou autre, j'ai d'abord essayé de faire la solution discrètement sans aucune intelligence. Voici le résultat :

Je l'ai même construit, et le circuit fait le boulot, mais je l'ai fait avant de me familiariser avec la plateforme Arduino, qui est plus flexible et totalement fiable, donc je ne vais pas l'expliquer. Si cela vous est d'une quelconque utilité, alors tant mieux, mais ce n'est pas le cadre de ce tutoriel, et je déconseillerais de l'utiliser.

Code

Croquis Arduino

Schémas

Arduino contrôlant 4 moteurs de stores

Processus de fabrication

  1. Circuits permissifs et de verrouillage
  2. Circuits de commande de moteur
  3. Calculs de puissance
  4. Bulldozer
  5. Infineon lance la série de puissance embarquée TLE985x pour les applications automobiles
  6. Le contrôle qualité est la première étape vers la fiabilité du moteur
  7. Les bases des panneaux de commande électriques
  8. Électricité et CVC/Contrôle de la climatisation
  9. Comment contrôler la vitesse d'un moteur hydraulique ?