[Autre] Conséquence d'un moteur sur un circuit électronique
Répondre à la discussion
Affichage des résultats 1 à 24 sur 24

Conséquence d'un moteur sur un circuit électronique



  1. #1
    mjfcolas

    Lightbulb Conséquence d'un moteur sur un circuit électronique


    ------

    Bonjour à tous,

    Je réalise actuellement un circuit électronique ayant pour but de réguler un taux d'humidité dans une pièce.

    En gros, c'est un arduino qui:
    • Mesure le taux d'humidité via un capteur
    • Commande un relais sur lequel est branché un ventilateur extracteur d'air
    • Peut recevoir des commandes, et reporte ses mesures par un module radio LoRa
    • Le tout alimenté par un chargeur USB 5V démonté.

    Voila un schéma de principe

    Nom : extracteur.drawio.png
Affichages : 220
Taille : 51,0 Ko

    De temps à autre, le module radio n'arrive pas à transférer les messages, ce qui a pour conséquence de lock le programme et plus rien ne fonctionne.

    Quelques infos supplémentaires:

    Les symptômes (module radio qui bloque et lock le programme) sont similaires à des soucis d'alimentation que j'ai déjà pu avoir sur d'autre projets. Sur les autres projets en question, l'usage du régulateur permettait de corriger ces problèmes d'alimentations

    Le problème semble être lié au démarrage et à l'extinction du moteur. En effet, si je débranche le moteur, en conservant tout le reste identique (Même alimentation notamment, relais qui switch) alors je n'ai plus de problème. Et si je laisse le moteur branché, que ce soit en position allumée ou éteinte (possible en définissant des seuils de switch inatteignable) alors tout fonctionne également

    Le module radio, et notamment son antenne, est très proche du transformateur. Le fait de retirer l'antenne ne résous pas le soucis. Je ne sais pas si ca peut avoir une incidence...

    J'ai tenté de souder des condensateurs aux bornes de l'alimentation du module radio. (J'ai testé au pif avec 10 uF céramique et 47uF chimique) et ca ne change rien

    Je présume que le côté inductif du moteur pourrait être incriminé, via les surtensions induites lors des switch... Mais je ne sais pas trop comment confirmer ce genre d'hypothèse, ou comment la corriger

    Dans l'attente de vos idées!

    Bonne soirée

    mjfcolas

    -----

  2. #2
    gienas
    Modérateur

    Re : Conséquence d'un moteur sur un circuit électronique

    Bonjour mjfcolas et tout le groupe

    Citation Envoyé par mjfcolas Voir le message
    … Je présume que le côté inductif du moteur pourrait être incriminé, via les surtensions induites lors des switch... Mais je ne sais pas trop comment confirmer ce genre d'hypothèse, ou comment la corriger …
    Le diable se cache dans les détails!

    Ta description et tes manips incriminent le moteur mais il y a des tas de raisons possibles. Ce n’est pas un synoptique qu’il faut nous montrer mais le schéma depuis la source (transfo) jusqu’au moteur. Il faut connaître aussi les courants de démarrage et voir ce que devient la tension d’alimentation "du reste" à ce moment crucial.

    Une chute de tension temporaire peut suffire à bloquer.

    Les inductances (relais/moteur…) peuvent ajouter des effets et compliquer les recherches, mais l’alimentation est primordiale.

  3. #3
    umfred

    Re : Conséquence d'un moteur sur un circuit électronique

    Peut-être aussi modifier le logiciel pour éviter le blocage en cas de problème de communication.

  4. #4
    Piefra

    Re : Conséquence d'un moteur sur un circuit électronique

    Bjr,

    Faudrait connaitre la structure du code

    Certainement une prog lineaire alors qu’une prog par interuption et events serait plus adapte

    Cdlt
    Cordialement Piefra

  5. A voir en vidéo sur Futura
  6. #5
    CapFlam

    Re : Conséquence d'un moteur sur un circuit électronique

    10µF céramique, tu dois te tromper, ça n'existe pas. (sauf si ma mémoire me joue des tours)
    un condo entre 10nF et 47nF plastique, 63V maxi, me semble plus indiqué pour filtrer des résidus HF.

    Je suppose que tu as bien mis une diode de roue libre sur ton relais?

  7. #6
    mjfcolas

    Re : Conséquence d'un moteur sur un circuit électronique

    Merci à tous pour vos réponses

    Citation Envoyé par gienas Voir le message
    Bonjour mjfcolas et tout le groupe



    Le diable se cache dans les détails!

    Ta description et tes manips incriminent le moteur mais il y a des tas de raisons possibles. Ce n’est pas un synoptique qu’il faut nous montrer mais le schéma depuis la source (transfo) jusqu’au moteur. Il faut connaître aussi les courants de démarrage et voir ce que devient la tension d’alimentation "du reste" à ce moment crucial.

    Une chute de tension temporaire peut suffire à bloquer.

    Les inductances (relais/moteur…) peuvent ajouter des effets et compliquer les recherches, mais l’alimentation est primordiale.
    Je vais prendre le temps de faire des mesures ce week end. Et un schéma plus précis!

    Citation Envoyé par umfred Voir le message
    Peut-être aussi modifier le logiciel pour éviter le blocage en cas de problème de communication.
    Citation Envoyé par Piefra Voir le message
    Bjr,

    Faudrait connaitre la structure du code

    Certainement une prog lineaire alors qu’une prog par interuption et events serait plus adapte

    Cdlt
    Ci dessous le code en question

    Code:
    #include <SPI.h>
    #include <LoRa.h>
    #include <DHT.h>
    
    #define SEND_MEASURE_INTERVAL_IN_MS 120000
    #define SEND_MEASURE_INTERVAL_RANDOMIZATION_IN_MS 2000
    
    #define MAX_MESSAGE_SIZE 5
    #define MEASURE_INTERVAL_IN_MS 2000
    #define DEFAULT_HYGROMETRY_THRESHOLD 70
    
    #define DHTTYPE DHT22
    
    #define RELAY_PIN 3
    #define DHTPIN 4
    
    enum FAN_MODE {
      FAN_MODE_OFF,
      FAN_MODE_ON,
      FAN_MODE_AUTO
    };
    
    #define LORA_FREQUENCY 868E6
    #define LOCAL_ADDRESS 0xD1
    #define GATEWAY_ADDRESS 0xBB
    #define SPI_FREQUENCY 8E6
    #define TX_POWER 2
    
    DHT dht(DHTPIN, DHTTYPE);
    
    char messageToTreat[MAX_MESSAGE_SIZE];
    byte fanMode = FAN_MODE_AUTO;
    
    void setup() {
      Serial.begin(9600);
      dht.begin();
      pinMode(RELAY_PIN, OUTPUT);
    
      LoRa.setSPIFrequency(SPI_FREQUENCY);
      if (!LoRa.begin(LORA_FREQUENCY)) {
        Serial.println("LoRa init failed. Check your connections.");
        while (true);
      }
      LoRa.setTxPower(TX_POWER);
      LoRa.onReceive(onReceive);
      LoRa.receive();
      Serial.println("LoRa init succeeded.");
      reinitBuf(messageToTreat, MAX_MESSAGE_SIZE);
    }
    
    char buffer[MAX_MESSAGE_SIZE];
    
    byte getHygro(float *hygroOut){
       float hygro = dht.readHumidity();
        if (isnan(hygro)) {
          return -1;
        }
        *hygroOut = hygro;  
        return 0;
    }
    
    byte getTemperature(float *tempOut){
       float temp = dht.readTemperature();
        if (isnan(temp)) {
          return -1;
        }
        *tempOut = temp;  
        return 0;
    }
    
    void reinitBuf(char* buf, int bufsize)
    {
      for(int i = 0 ; i < bufsize; i++){
        buf[i] = 0;
      }
    }
    
    bool shouldExtractAir(float humidity, int threshold){
      if(fanMode == FAN_MODE_OFF){
        return false;
      }
      if(fanMode == FAN_MODE_ON){
        return true;
      }
      return humidity > threshold;
    }
    
    long lastMeasureTime = 0;
    long lastSendTime = 0;
    long interval = SEND_MEASURE_INTERVAL_IN_MS + random(SEND_MEASURE_INTERVAL_RANDOMIZATION_IN_MS);
    float hum = 0;
    float temperature = 0;
    int threshold = DEFAULT_HYGROMETRY_THRESHOLD;
    char message[100] = "";
    char buf[10];
    void loop() {
    
      if (messageToTreat[0] != 0) {
        manageFanMode(&fanMode);
        manageHygrometryThreshold(&threshold);
        reinitBuf(messageToTreat, MAX_MESSAGE_SIZE);
      }
    
      if (lastMeasureTime == 0 || millis() - lastMeasureTime > MEASURE_INTERVAL_IN_MS) {
        lastMeasureTime = millis();
    
        if (getHygro(&hum)) {
          Serial.println(F("Erreur de lecture du capteur hygro"));
          return;
        }
        Serial.print("Hygro: ");
        Serial.println(hum);
    
        if (getTemperature(&temperature)) {
          Serial.println(F("Erreur de lecture du capteur hygro"));
          return;
        }
        Serial.print("Temp: ");
        Serial.println(temperature);
      }
    
      if (temperature != 0 && hum != 0 && (lastSendTime == 0 || millis() - lastSendTime > interval)) {
        reinitBuf(message, 100);
        strcat(message, "T3 ");
        reinitBuf(buf, 10);;
        dtostrf(temperature, 5, 2, buf);
        strcat(message, buf);
        strcat(message, "\n");
    
        strcat(message, "H2 ");
        reinitBuf(buf, 10);;
        dtostrf(hum, 4, 2, buf);
        strcat(message, buf);
        strcat(message, "\n");
    
        Serial.print("Sending ");
        Serial.print(message);
        sendMessage(message);
        lastSendTime = millis();
        interval = SEND_MEASURE_INTERVAL_IN_MS + random(SEND_MEASURE_INTERVAL_RANDOMIZATION_IN_MS);
      }
    
      if(shouldExtractAir(hum, threshold)){
        digitalWrite(RELAY_PIN, HIGH);
      }else{
        digitalWrite(RELAY_PIN, LOW);
      }
    }
    
    byte msgCount = 0;
    void sendMessage(String outgoing) {
      LoRa.beginPacket();                   // start packet
      LoRa.write(GATEWAY_ADDRESS);          // add destination address
      LoRa.write(LOCAL_ADDRESS);             // add sender address
      LoRa.write(msgCount);                 // add message ID
      LoRa.write(outgoing.length());        // add payload length
      LoRa.print(outgoing);                 // add payload
      LoRa.endPacket();                     // finish packet and send it
      msgCount++;                           // increment message ID
      Serial.println("Sent");
      LoRa.receive();
    }
    
    void manageFanMode(byte *modeOut){
      if(strncmp((char*)messageToTreat, "ON", 2) == 0){
        Serial.println("ON");
        *modeOut = FAN_MODE_ON;
      }else if(strncmp((char*)messageToTreat, "OFF", 3) == 0){
        Serial.println("OFF");
        *modeOut = FAN_MODE_OFF;
      }else if(strncmp((char*)messageToTreat, "AUTO", 4) == 0){
        Serial.println("AUTO");
        *modeOut = FAN_MODE_AUTO;
      }
    }
    
    void manageHygrometryThreshold(int *threshold){
      int newThreshold = atoi(messageToTreat);
      if(newThreshold){
        Serial.print("Set new threshold: ");
        Serial.println(newThreshold);
        *threshold = newThreshold;
      }
    }
    
    void onReceive(int packetSize) {
      if (packetSize == 0) return;          // if there's no packet, return
    
      // read packet header bytes:
      int recipient = LoRa.read();          // recipient address
      byte sender = LoRa.read();            // sender address
      byte incomingMsgId = LoRa.read();     // incoming msg ID
      byte incomingLength = LoRa.read();    // incoming msg length
    
      String incoming = "";                 // payload of packet
    
      while (LoRa.available()) {            // can't use readString() in callback, so
        incoming += (char)LoRa.read();      // add bytes one by one
      }
    
      if (incomingLength != incoming.length()) {   // check length for error
        Serial.println("error: message length does not match length");
        return;                             // skip rest of function
      }
    
      // if the recipient isn't this device or broadcast,
      if (recipient != LOCAL_ADDRESS && recipient != 0xFF) {
        Serial.println("This message is not for me.");
        return;                             // skip rest of function
      }
    
      // if message is for this device, or broadcast, print details:
      Serial.println("FROM 0x" + String(sender, HEX));
      Serial.println("TO   0x" + String(recipient, HEX));
      Serial.println("ID   " + String(incomingMsgId));
      Serial.println("RSSI " + String(LoRa.packetRssi()));
      Serial.println("SNR  " + String(LoRa.packetSnr()));
      incoming.toCharArray(messageToTreat, MAX_MESSAGE_SIZE);
    }
    Citation Envoyé par CapFlam Voir le message
    10µF céramique, tu dois te tromper, ça n'existe pas. (sauf si ma mémoire me joue des tours)
    un condo entre 10nF et 47nF plastique, 63V maxi, me semble plus indiqué pour filtrer des résidus HF.

    Je suppose que tu as bien mis une diode de roue libre sur ton relais?
    Je confirme qu'il y a bien marqué 10uF, sur la boite, et 106 sur le condensateur. Je viens de re-vérifier
    Pour la diode de roue libre, j'utilise un module "tout fait" avec 3 pin (5V/GND/Signal) et l'electronique qui va avec. Dont une diode.

  8. #7
    umfred

    Re : Conséquence d'un moteur sur un circuit électronique

    Comme il y a des données qui sont envoyé sur le port "série" de l'arduino, il pourrait être intéressant de visualiser les messages qui précède le plantage (peut-être ajouter un Serial.print des octets lus après chaque LoRa.read).

    La fonction onReceive n'est appelé que lorsqu'un message a été reçu, donc packetsize sera forcément différent de 0, et il indique le nombre d'octets reçus et donc lisible.

  9. #8
    mjfcolas

    Re : Conséquence d'un moteur sur un circuit électronique

    On plante dans la fonction sendMessage

    Le message à envoyer s'affiche. Mais le message "Sent" ne s'affiche pas

  10. #9
    umfred

    Re : Conséquence d'un moteur sur un circuit électronique

    côté soft, a priori, je ne vois pas trop comment éviter le plantage (sauf peut-être à y implémenter un watchdog, qui redémarrerait proprement le programme).

    On va attendre les consos des divers éléments et les caractéristiques de sortie de l'alimentation.

  11. #10
    DAT44

    Re : Conséquence d'un moteur sur un circuit électronique

    Bonjour,
    afin de limité le parasitage du au contactes du relais, tu peux utilisé un relais statique ...

  12. #11
    mjfcolas

    Lightbulb Re : Conséquence d'un moteur sur un circuit électronique

    Bonjour à tous,

    J'ai fait quelques mesures au moment des allumages et des extinctions du moteur, dont vous verrez des captures ci dessous.
    Je m'excuse d'avance: J'aurais normalement du pouvoir enregistrer les données de l'oscillo via mon PC mais je n'ai pas réussi. Je vous propose donc des screenshots de vidéo.

    3.3V switch ON.png
    3.3V au moment ou le moteur démarre
    3.3V switch OFF.png
    3.3V au moment ou le moteur s'arrête
    5V switch ON.png
    5V au moment ou le moteur démarre
    5V switch OFF.png
    5V au moment ou le moteur s'arrête

    5V moteur OFF.png
    5V moteur éteint

    Je n'ai plus la possibilité d'ajouter d'image dans ce post. Mais on peut noter que lorsque le moteur est allumé, la fréquence des "pics" augmente (on passe de 11 pics sur l'image ci dessus à 19)

    J'aurais tendance à incriminer les variations, brèves mais grande, de tensions au moment des démarrage et extinctions. Est ce qu'un condensateur, mieux choisit que ce que j'ai pu essayer au pif, pourrait résoudre le problème côté basse tension en lissant tout ça?

    Je n'ai pas mesuré les variations côté secteur (J'ai pas le matériel), mais on peut supposer qu'elle sont également assez élevée pour avoir un impact tel en aval de l'alimentation. Peut être dois-je prévoir de lisser la tension à ce niveau?

  13. #12
    Pascal071

    Re : Conséquence d'un moteur sur un circuit électronique

    Bonjour

    Ce que tu appelles "transfo" est une alim. à découpage 230-5v ?

    au moins 100µF sur ce 5v devrait arranger un peu.

    Il nous faudrait le vrai schéma, et particulièrement le cheminement des 0v.
    Le module relais doit être au plus près de la source 5v, c'est lui qui consomme le plus.
    Il ne devrait pas avoir d'inter-action avec la commutation 230v.

    Cdlt

  14. #13
    gienas
    Modérateur

    Re : Conséquence d'un moteur sur un circuit électronique

    Bonjour à tous

    Citation Envoyé par mjfcolas Voir le message
    ... J'aurais tendance à incriminer les variations, brèves mais grande, de tensions au moment des démarrage et extinctions. Est ce qu'un condensateur, mieux choisit que ce que j'ai pu essayer au pif, pourrait résoudre le problème côté basse tension en lissant tout ça? ...
    Je ne crois pas du tout à la véracité de ces parasites qui, s'ils étaient vrais, planteraient le micro. On ne sait rien du montage, des câbles de mesure, de la prise de masse de la sonde ... c'est sûrement capté par une boucle d'induction.

    L'ondulation reste malgré tout suspecte et il n'est pas impossible que le découplage soit insuffisant.

    S'il y a effectivement démarrage du moteur, on ne voit pas où (quand) ni combien de temps ça dure. Peut-être n'y a-t-il aucune incidence sur la tension d'alimentation.

  15. #14
    mjfcolas

    Re : Conséquence d'un moteur sur un circuit électronique

    Citation Envoyé par Pascal071 Voir le message
    Bonjour

    Ce que tu appelles "transfo" est une alim. à découpage 230-5v ?

    au moins 100µF sur ce 5v devrait arranger un peu.

    Il nous faudrait le vrai schéma, et particulièrement le cheminement des 0v.
    Le module relais doit être au plus près de la source 5v, c'est lui qui consomme le plus.
    Il ne devrait pas avoir d'inter-action avec la commutation 230v.

    Cdlt
    Ce que j'appelle "transfo" c'est un chargeur USB démonté. Une alimentation à découpage 230V-5V donc oui il me semble.

    Je vais travailler sur un schéma. Je ne sais pas ce que vous cherchez à vérifier dans le cheminement des 0V: Si leur position physique importe, les photos que je vous joins vous donneront plus de contexte et auront le mérite de montrer que ce n'est peut être pas suffisamment maîtrisé.

    PXL_20240224_183106882.jpg
    PXL_20240224_183117276.jpg
    PXL_20240224_183153305.jpg

    Citation Envoyé par gienas Voir le message
    Bonjour à tous



    Je ne crois pas du tout à la véracité de ces parasites qui, s'ils étaient vrais, planteraient le micro. On ne sait rien du montage, des câbles de mesure, de la prise de masse de la sonde ... c'est sûrement capté par une boucle d'induction.

    L'ondulation reste malgré tout suspecte et il n'est pas impossible que le découplage soit insuffisant.
    Pour ce qui est de la mesure, j'ai juste branché les sondes par défaut d'un oscillo plutot bas de gamme. La masse est prise sur l'arduino, le 3.3V à l'entrée du module radio, le 5V sur l'arduino.

    Citation Envoyé par gienas Voir le message
    S'il y a effectivement démarrage du moteur, on ne voit pas où (quand) ni combien de temps ça dure. Peut-être n'y a-t-il aucune incidence sur la tension d'alimentation.
    Je ne comprends pas cette phrase. Sans vouloir présumer d'un quelconque impact, ce que je veux juste dire c'est que les pics que je vous ai postés sur les 4 photos 5v/3.3v switch ON/OFF sont entièrement corrélés au duo moteur + switch du relais. Sans moteur, mais en laissant le relais switcher, je ne les observe plus. Et ils apparaissent "en même temps" (au sens de la simultanéité mesurable par un humain) que les switch (et donc démarrage et extinction du moteur). Et ils n'apparaissent à aucun autre moment.

  16. #15
    jiherve

    Re : Conséquence d'un moteur sur un circuit électronique

    bonsoir
    comme d'habitude surtensions aux bornes du moteur place un snubber: 100 ohm en série avec une 100nf type X2 le tout en // sur le moteur.
    cela existe tout fait.
    JR
    l'électronique c'est pas du vaudou!

  17. #16
    gienas
    Modérateur

    Re : Conséquence d'un moteur sur un circuit électronique

    Citation Envoyé par mjfcolas Voir le message
    ... Je ne comprends pas cette phrase. Sans vouloir présumer d'un quelconque impact, ce que je veux juste dire c'est que les pics que je vous ai postés sur les 4 photos 5v/3.3v switch ON/OFF sont entièrement corrélés au duo moteur + switch du relais. Sans moteur, mais en laissant le relais switcher, je ne les observe plus. Et ils apparaissent "en même temps" (au sens de la simultanéité mesurable par un humain) que les switch (et donc démarrage et extinction du moteur). Et ils n'apparaissent à aucun autre moment.
    En reprenant le synoptique du #1, je vois que le contact du relais commande le ventilateur 230V, probablement sans la moindre protection. Or, ce type de contact est générateur d’étincelles dévastatrices. Cela nécessite obligatoirement des snubbers, surtout si le ”loup est dans la bergerie”, sans que je puisse deviner que c’est bien le cas.

    Attention! Le RC à mettre sur le contact va avoir tendance à alimenter (un peu) le moteur. Il ne faut pas un condensateur trop fort, pourtant il ne doit pas être trop faible sous peine d’être peu efficace.

    Le condensateur doit être un X2 par sécurité.

    Si possible, il serait bon d’éloigner le relais de l’Arduino.


    Édit: grillé par jiherve. Le RC est à mettre d’abord sur le contact du relais où se forment les étincelles.
    Dernière modification par gienas ; 24/02/2024 à 19h51.

  18. #17
    mjfcolas

    Re : Conséquence d'un moteur sur un circuit électronique

    Donc si je résume: Il n'est pas possible de dire avec certitude que mon problème initial est bien du à des surtensions au bornes du moteur. Ceci dit, qu'importe, il est dans tous les cas nécessaire de protéger le relais des surtensions avec un circuit RC. Une fois ce circuit installé il conviendra de constater que tout fonctionne correctement, ou pas.

    Je vous joins par ailleurs un schéma

    Nom : schema.png
Affichages : 81
Taille : 196,1 Ko

  19. #18
    jiherve

    Re : Conséquence d'un moteur sur un circuit électronique

    re
    oui d'abord avoir du hard propre avant d'aller titiller le soft c'est la base.
    JR
    l'électronique c'est pas du vaudou!

  20. #19
    gienas
    Modérateur

    Re : Conséquence d'un moteur sur un circuit électronique

    Citation Envoyé par mjfcolas Voir le message
    Donc si je résume: Il n'est pas possible de dire avec certitude que mon problème initial est bien du à des surtensions au bornes du moteur. Ceci dit, qu'importe, il est dans tous les cas nécessaire de protéger le relais des surtensions avec un circuit RC. Une fois ce circuit installé il conviendra de constater que tout fonctionne correctement, ou pas ...
    Il est sûr en tout cas, que sans protection du contact c’est casse cou voire interdit!

    Citation Envoyé par mjfcolas Voir le message
    ... Je vous joins par ailleurs un schéma ...
    Difficile à lire.

    Comment est commandé le relais? Je vois du 5V et une masse.

    Que fait, sans la moindre protection la borne S du relais, voisine géographiquement du 230V et des parasites sur une borne Arduino en direct? Quand je parlais du loup dans la bergerie, je ne l’imaginais pas pas à ce point.

  21. #20
    mjfcolas

    Re : Conséquence d'un moteur sur un circuit électronique

    Citation Envoyé par gienas Voir le message
    Il est sûr en tout cas, que sans protection du contact c’est casse cou voire interdit!



    Difficile à lire.

    Comment est commandé le relais? Je vois du 5V et une masse.

    Que fait, sans la moindre protection la borne S du relais, voisine géographiquement du 230V et des parasites sur une borne Arduino en direct? Quand je parlais du loup dans la bergerie, je ne l’imaginais pas pas à ce point.
    Le module relais que j'utilise intègre un transistor, une résistance et une diode de roue libre. C'est le type de protection que vous imaginez?

  22. #21
    gienas
    Modérateur

    Re : Conséquence d'un moteur sur un circuit électronique

    Bonjour à tous

    Citation Envoyé par mjfcolas Voir le message
    Le module relais que j'utilise intègre un transistor, une résistance et une diode de roue libre …
    Cet ensemble de composants n’est pas une protection mais la commande du relais, à partir d’un niveau logique probablement fourni par l’Arduino. Seule la diode (de roue libre) protège le transistor des surtensions lors du décollage.

    Citation Envoyé par mjfcolas Voir le message
    … C'est le type de protection que vous imaginez?
    Absolument pas. Le collage (probablement multiple) et le décollage du contact du relais provoque des surtensions avec étincelles du fait de l’inductance du moteur avec de hautes tensions (350V crête du secteur). C’est énorme pour les entrées Arduino en 3,3V et cela doit être tué dans l’œuf. Le snubber aux bornes du contact y participe, mais il est délicat à déterminer.

    Une autre entrée possible du parasite: la liaison directe sans la moindre protection du point S, voisin géographique de l’autre contact du relais. Le simple fil de liaison joue le rôle d’antenne réceptrice sur une entrée haute impédance donc très sensible.

    J’ignore ce que tu fais des entrées/sorties inutilisées de l’Arduino, mais elle ne doivent pas rester en l’air.

    Tout cela, ce sont des règles élémentaires du hardware auxquelles fait allusion jiherve qui sait aussi de quoi il parle.

  23. #22
    Vincent PETIT
    Animateur Électronique

    Re : Conséquence d'un moteur sur un circuit électronique

    Bonjour,
    Un moteur, un relai coupant une charge inductive, une antenne, ... ça sent les problèmes de CEM. Quelques règles a avoir en tête et elles sont valables même au sein d'un PCB.

    Dès qu'on a des variations de courants rapides, comme au moment d'une coupure, on peut avoir des problèmes de couplage inductif par inductance mutuelle. Le phénomène, si on le prend dans son régime établie, est celui-ci :

    Capture8.PNG

    A gauche c'est typiquement le problème des câbles en nappes ou les pistes d'une circuit imprimé, on a un fil aller et un fil retour pour le signal, séparés d'une certaine distance formant une surface de réception pour les lignes de champs magnétique engendrées par le passage d'un courant dans un câble perturbateur. A cause de cette configuration il va y avoir un courant induit indésirable dans les fils du câble en nappe. A droite c'est le cas d'un fil isolé a proximité d'une masse métallique. Il existe là aussi une surface de réception, à cause de la distance entre le fil et une masse, pour les lignes de champs magnétique du câble perturbateur. Un courant perturbateur indésirable va apparaître dans le fil et qui voudra repartir dans l'environnement (souvent via la terre ou une capacité parasite). Tous ces courants, qu'ils soient de mode commun ou de mode diff, lorsqu'ils rencontreront des résistances créeront des tensions qui n'avaient initialement rien à faire là.

    Dans ton projet, si je dessine grossièrement les lignes de champs dans la phase de ton moteur on peut se retrouver avec un problème :

    Capture9.PNG

    L'espace qui sépare les modules de la plaque d'essai, qui fait la taille de ton index, et qui contient des fils aller et retour (barrettes de connexion, fils) offre une surface de réception pour les lignes de champ dans les câbles électriques qui vont au moteur. Le problème du couplage inductif est fonction de la surface de réception et c'est pour cette raison que dans l'industrie on plaque les fils contre les masses métalliques ou que dans les câbles en nappe on est parfois obligé d'alterner signal/0V/signal/0V etc afin de réduire les surfaces de réception.

    L'autre problème soulevé par les intervenants avant moi est l'étincelle créée par le relais en coupant une charge inductive. Cette étincelle peut causer un champ électrique assez fort, c'est d'ailleurs un des tests dans les labos CEM. On prend un pistolet à décharge électrostatique qu'on décharge sur une plaque métallique ce qui créé un fort champ électrique sur l'électronique. Le champ électrique lorsqu'il rencontre un fil ou un câble, fait naitre un courant parasite dans ce dernier et ton antenne est un fil parfait capter une étincelle.

    Capture10.PNG


    Il te faut donc :
    - Atténuer l'étincelle voir la supprimer (voir les réponses données)
    - Réduire les surfaces signal aller/retour (chaque fil doit avoir son 0V à côté de lui)
    - Réduire les surfaces câbles masses alentours (pas de fillasse en l'air, on la plaque contre la masse commune)
    Là où il n'y a pas de solution, il n'y a pas de problème.

  24. #23
    mjfcolas

    Re : Conséquence d'un moteur sur un circuit électronique

    Merci pour ces derniers retours. Les pistes pour avancer sont claires, et très instructive. On commence à sortir de l'électronique "assemblage de lego" à laquelle on est souvent habitué avec les arduinos et les nombreux modules prêt à l'emploi.

    Je reviendrais vers vous suite à la mise en place des recommandations

  25. #24
    Pascal071

    Re : Conséquence d'un moteur sur un circuit électronique

    Bonsoir

    Sur le schéma #17, je ne vois pas la continuité +5v arduino et le reste ?

    Cdlt
    Dernière modification par Pascal071 ; 25/02/2024 à 17h37.

Discussions similaires

  1. Réponses: 25
    Dernier message: 02/03/2014, 15h52
  2. Simulateur circuit électronique(électrique) Moteur DC et courroie
    Par invitea9c6c97f dans le forum Électronique
    Réponses: 3
    Dernier message: 02/10/2013, 17h10
  3. circuit électronique qui commande un moteur
    Par invite4dd4fc2b dans le forum Électronique
    Réponses: 12
    Dernier message: 17/10/2011, 08h58
  4. Projet electronique ordi/circuit/moteur, HELP
    Par invite6f6d204b dans le forum Électronique
    Réponses: 26
    Dernier message: 30/09/2009, 20h03
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...