IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Le fameux fading, marche sur une lumière mais pas la deuxième..


Sujet :

Arduino

  1. #21
    Candidat au Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Décembre 2020
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Décembre 2020
    Messages : 17
    Points : 3
    Points
    3
    Par défaut
    Rebonjour!
    J'ai interchangé avec des IRF520 et c'est pire.. les deux lumières blinks maintenant en tout temps dès que j'ouvre la porte.
    Avec les irf720 c'est seulement une des deux leds qui blink et seulement quand la porte de droite est complètement allumé (pendant le fading des deux portes tout est beau) et seulement la porte de gauche qui blink, jamais l'autre --> si je ferme la porte de droite celle de gauche arrête de blinker à chaque fois.
    J'alimentais mon arduino avec mon USB de mon PC jusqu'à aujourd'hui, j'ai reçu le powersupply pour le arduino de 9V sur le "jack" et même problème.
    Mon 24V alimente seulement le + des leds, je pense que 24V est trop haut pour la carte arduino uno ?
    Je contrôle le - des bandes leds avec les mosfets comme sur le schema j'ai posté.
    Pour le fading, si je le fais on/off, donc qui allume et ensuite éteint et ainsi de suite (la loop avec delais), il n'y a pas de problème, le fading se fait et les lumières ne blinks pas.
    Je voulais poster des videos que j'ai pris mais ça ne marche pas ici..
    Une chose est sûr on dirais vraiment un problème avec mes mosfets parce que le problème se répand sur les 2 portes quand je met des IRF520 ..

  2. #22
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 685
    Points : 5 328
    Points
    5 328
    Par défaut
    Salut

    je pense que @Guesset est sur une bonne piste à explorer en disant
    l'alimentation 24 Volts semble une alimentation pour les bandes de LED. Or souvent ces alimentations à découpage fournissent un résultat peu filtré, laissant la rémanence rétinienne faire le job. Nous pourrions donc être en train de faire un découpage (PWM) sur une alimentation découpée dont le rythme va évoluer avec la charge d'où possibilité de battements visibles. Il faut donc vérifier non seulement la tension moyenne mais également l'ondulation sur le 24 V (idem, multimètre en alternatif ou mieux oscilloscope, ou bien remplacer temporairement l'alimentation 24 Volts par une alimentation de laboratoire - si c'est possible ).
    Pour éliminer tout problème lié au code, pourriez vous tester avec votre montage actuel (quel que soit le MOSFET) le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    const byte pinLedGauche = 10;
    const byte pinLedDroite = 11;
     
    void setup()
    {
      Serial.begin(115200);
      pinMode(pinLedGauche, OUTPUT);
      pinMode(pinLedGauche, OUTPUT);
     
      for (uint16_t pwmValue = 10; pwmValue <= 255; pwmValue += 5) {
        Serial.print(F("pwmValue=")); Serial.printnl(pwmValue);
        analogWrite (pinLedDroite, pwmValue);
        analogWrite (pinLedGauche, pwmValue);
        while (Serial.read() == -1); // attend qu'on tape quelque chose
      }
      Serial.println(F("Valeur Max atteinte - Fin du test"));
    }
     
    void loop() {}
    -> vous compilez et chargez le code sur votre arduino
    -> vous ouvrez la console série à 115200 bauds
    -> vous réglez la console série pour envoyer juste "Nouvelle Ligne" (NL)
    Nom : console.png
Affichages : 125
Taille : 391,5 Ko

    ça débute en mettant le PWM sur les 2 pins à 10.
    ensuite à chaque fois que vous validez dans la ligne d'entrée de texte de la console série, ça augmente le PWM de 5 en 5 jusqu'à 255.
    Nom : c2.png
Affichages : 136
Taille : 106,7 Ko


    Si vous voyez que ça clignote à un moment, c'est sans doute que le double découpage (notre PWM + celui de l'alimentation) créé le souci.

    => on devrait être fixé

    (pour partager une vidéo le plus simple c'est de créer un compte youTube pour vos bricolages, de charger votre vidéo là bas et de partager le lien ici).

  3. #23
    Candidat au Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Décembre 2020
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Décembre 2020
    Messages : 17
    Points : 3
    Points
    3
    Par défaut
    J'ai essayé le code, et tout marche #1.
    Même si je tiens ENTER pressé dans le moniteur pour faire le fading rapide tout est beau jusqu'à 255. Pas de blink dans aucunes des deux portes.
    Je vais créer un compte youtube cette semaine pour vous montrer les vidéos.
    Donc si je comprend bien, si une des lumières aurait "blinké ça aurait été un problème d'alimentation de mes leds ?

  4. #24
    Expert confirmé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 317
    Points : 4 124
    Points
    4 124
    Par défaut Code ?
    Bonjour,

    Quel code est testé actuellement ?

    Celui de Jay M est très symétrique et traite les portes indépendamment. Avec ce type de code tout marche ou rien ne marche (ce qui reste plus facile à diagnostiquer). Avec ce code, je ne vois pas comment une porte pourrait dépendre de l'autre.

    En revanche le second code proposé en #1 utilise une redéfinition de variable statique :
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    static int fadeValue = 0; // en ligne 16 et 33
    Nous avons donc une seule variable pour fadeValue_gauche et fadeValue_droite (la seconde définition doit être ignorée par le compilateur avec un cri de désespoir : au moins un Warning durant la compilation). Cela ne peut bien se passer.

    D'autre part la structuration des blocs {...} est défaillante : toutes les { ouvertes pour la porte gauche devraient être fermées avant de commencer à traiter la porte droite au titre de l'indépendance des portes (FLP : front de libération des portes).

    Moralité, reprendre le code proposé par Jay M en #2 est certainement la solution la plus fiable.

    Salutations
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

  5. #25
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 685
    Points : 5 328
    Points
    5 328
    Par défaut
    OK

    de mon côté j'ai pris le temps de faire un montage avec 2 boutons câblés en PULL-DOWN avec une résistance externe et 2 LEDs et le code suivant (quasiment le même que l'ancien j'ai rajouté des traces dans la console série et un petit délai de 20ms quand on détecte un changement d'état pour éliminer les rebonds)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    const byte pinLedGauche = 10;
    const byte pinLedDroite = 11;
    const byte pinReedGauche = 2;
    const byte pinReedDroite = 3;
    
    const unsigned long attente = 20ul; // temps d'attente entre 2 gradations
    const byte maxLuminosite = 160;     // luminosité max des LEDs
    
    enum t_etat : byte {ETEINTE, GRADATION, ALLUMEE}; // les états possibles de notre LED
    
    const byte PORTE_FERMEE = LOW;
    const byte PORTE_OUVERTE = HIGH;
    
    // Notre système décrit une porte instrumentée, on regroupe tout ce qui est nécessaire pour une porte
    struct t_porte {
      const byte pinLed;    // pin --- R 220 Ohms; ---- GND
      const byte pinReed;   // le switch dispose d'un pull down externe. LOW veut dire porte fermée, HIGH porte ouverte
      t_etat etatLed;
      byte etatPorte;
      byte gradation;
      byte unsigned long chrono;
    };
    
    t_porte portes[] = {
      {pinLedDroite, pinReedDroite, ETEINTE, PORTE_FERMEE, 0, 0},     // la porte de droite
      {pinLedGauche, pinReedGauche, ETEINTE, PORTE_FERMEE, 0, 0}      // la porte de gauche
    };
    
    const byte nombreDePortes = sizeof portes / sizeof portes[0];
    
    void testerPorte(t_porte& unePorte)
    {
      // on regarde l'état de la porte
      byte etat = digitalRead(unePorte.pinReed);
      if (unePorte.etatPorte != etat) {                         // Si l'état a changé
    
        unePorte.etatPorte = etat;                              // on mémorise le nouvel état
    
        if (unePorte.etatPorte == PORTE_FERMEE) {               // on vient de fermer la porte, on éteint direct
          digitalWrite(unePorte.pinLed, LOW);
          unePorte.etatLed = ETEINTE;
          delay(20); // anti-rebond
    
          // -----
          // DEBUG
          // -----
          Serial.print(F("LED ")); Serial.print(unePorte.pinLed); Serial.println(F(" ETEINTE"));
          // -----
    
        } else {                                                // on vient d'ouvrir la porte, on lance la gradation
          unePorte.gradation = 0;
          unePorte.chrono = millis();
          unePorte.etatLed = GRADATION;
          delay(20); // anti-rebond
    
          // -----
          // DEBUG
          // -----
          Serial.print(F("LED ")); Serial.print(unePorte.pinLed); Serial.println(F(" DEBUT GRADATION"));
          // -----
    
        }
    
      } else {                                                  // la porte est restée dans le même état
    
        if (unePorte.etatLed == GRADATION)                      // si on était en mode gradation
          if (millis() - unePorte.chrono >= attente) {          // et que le delta T s'est écoulé
            unePorte.gradation++;                               // alors on change la luminosité
            analogWrite(unePorte.pinLed, unePorte.gradation);
            unePorte.chrono = millis();
    
            // -----
            // DEBUG
            // -----
            if (unePorte.gradation % 10 == 0) {
              Serial.print(F("LED ")); Serial.print(unePorte.pinLed);
              Serial.print(F(" PWM: ")); Serial.println(unePorte.gradation);
            }
            // -----
    
            if (unePorte.gradation >= maxLuminosite) {
              unePorte.etatLed = ALLUMEE; // on teste si on a fini
    
              // -----
              // DEBUG
              // -----
              Serial.print(F("LED ")); Serial.print(unePorte.pinLed); Serial.println(F(" ALLUMEE"));
              // -----
            }
          }
      }
    }
    
    void setup()
    {
      Serial.begin(115200);
      for (byte i = 0; i < nombreDePortes; i++) {
        pinMode(portes[i].pinLed, OUTPUT);
        pinMode(portes[i].pinReed, INPUT_PULLUP);
      }
    }
    
    void loop()
    {
      for (byte i = 0; i < nombreDePortes; i++) testerPorte(portes[i]);
    }
    pour moi cela fonctionne comme il le faut.

    Les LEDs ici seraient à remplacer par la Gate du MOSFET. Pourriez vous tester ce code en connectant votre Arduino à la console série ouverte à 115200 bauds et en regardant les messages qui défilent ?

    Si aucun message ne s'affiche lors du clignotement c'est que le souci ne vient pas du code.

    Que voyez vous ?

  6. #26
    Candidat au Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Décembre 2020
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Décembre 2020
    Messages : 17
    Points : 3
    Points
    3
    Par défaut
    LED 11 DEBUT GRADATION
    LED 11 PWM: 10
    LED 11 PWM: 20
    LED 11 PWM: 30
    LED 11 PWM: 40
    LED 11 PWM: 50
    LED 11 PWM: 60
    LED 11 PWM: 70
    LED 11 PWM: 80
    LED 11 PWM: 90
    LED 11 PWM: 100
    LED 11 PWM: 110
    LED 11 PWM: 120
    LED 11 PWM: 130
    LED 11 PWM: 140
    LED 11 PWM: 150
    LED 11 PWM: 160
    LED 11 ALLUMEE
    LED 10 DEBUT GRADATION
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 PWM: 10
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 PWM: 10
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 PWM: 10
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 PWM: 10
    LED 10 PWM: 20
    LED 10 PWM: 30
    LED 10 PWM: 40
    LED 10 PWM: 50
    LED 10 PWM: 60
    LED 10 PWM: 70
    LED 10 PWM: 80
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 PWM: 10
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 PWM: 10
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 PWM: 10
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 PWM: 10
    LED 10 PWM: 20
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 PWM: 10
    LED 10 PWM: 20
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 PWM: 10
    LED 10 PWM: 20
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 PWM: 10
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 PWM: 10
    LED 10 PWM: 20
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 PWM: 10
    LED 10 PWM: 20
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 PWM: 10
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 PWM: 10
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 PWM: 10
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 PWM: 10
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 ETEINTE
    LED 11 ETEINTE
    LED 10 DEBUT GRADATION

    Et voila, si je ferme ma porte droite et bien la gradation se refait normalement.

    Voila les videos de deux codes différents
    Fading on/off sans que la lumière reste allumé à la fin



    et le fading sans delay:

    https://www.youtube.com/watch?v=C7nE...ature=youtu.be

    J'ai une question.. au début nous parlions de mettre une resistance entre le GATE et SOURCE des mosfets.. je viens de me rendre compte que nous avons changé de sujet nombreuses fois et que je ne l'avais pas fais.. est-ce que je devrais en mettre une ?

  7. #27
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 685
    Points : 5 328
    Points
    5 328
    Par défaut
    cette partie est intéressante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     LED 10 DEBUT GRADATION
    LED 10 PWM: 10
    LED 10 PWM: 20
    LED 10 PWM: 30
    LED 10 PWM: 40
    LED 10 PWM: 50
    LED 10 PWM: 60
    LED 10 PWM: 70
    LED 10 PWM: 80
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 PWM: 10
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 PWM: 10
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 PWM: 10
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 PWM: 10
    LED 10 PWM: 20
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 PWM: 10
    LED 10 PWM: 20
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 PWM: 10
    LED 10 PWM: 20
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 PWM: 10
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 PWM: 10
    LED 10 PWM: 20
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 PWM: 10
    LED 10 PWM: 20
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 PWM: 10
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 PWM: 10
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 PWM: 10
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 PWM: 10
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 ETEINTE
    LED 10 DEBUT GRADATION
    LED 10 ETEINTE
    LED 11 ETEINTE
    LED 10 DEBUT GRADATION
    Elle montre que c'est bien le code qui génère le clignotement ce qui tendrait à indiquer que votre détecteur Reed est instable lorsque l'on fait passer le courant des deux côtés.

    Plusieurs points à vérifier:

    dans votre schéma vous avez mis cela pour les Reed:
    Nom : reed2.png
Affichages : 116
Taille : 100,0 Ko
    Vous avez donc un PULLUP externe mais le code est écrit pour un PULLDOWN externe.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    const byte PORTE_FERMEE = LOW;
    const byte PORTE_OUVERTE = HIGH;
    
    // Notre système décrit une porte instrumentée, on regroupe tout ce qui est nécessaire pour une porte
    struct t_porte {
      const byte pinLed;    // pin --- R 220 Ohms; ---- GND
      const byte pinReed;   // le switch dispose d'un pull down externe. LOW veut dire porte fermée, HIGH porte ouverte
      t_etat etatLed;
      byte etatPorte;
      byte gradation;
      byte unsigned long chrono;
    };
    Avez vous modifié le code pour tester? Quelle est la valeur des Résistances?

    Vous dites
    mon arduino est alimenté en 5V
    et ensuite parlez de
    powersupply pour le arduino de 9V sur le "jack"
    pouvez vous préciser exactement comment l'Arduino est alimenté et où prenez vous les 5V pour vos pullup?

    Vous dites
    Les mises à la terre sont tous reliés ensemble sur le breadboard en passant
    est-ce bien une mise à la terre en étoile?

    Vous parlez de breadboard. Rassurez moi, vous ne faites pas passer le courant fort dans la breadboard?

    concernant les MOSFET, aviez vous regardé ce que j'avais écrit?
    pour les résistances sur les MOSFET: En gros si un fil de connexion à la Gate flotte (est en l'air) il joue l'effet d'une antenne et le condensateur interne risque de se charger tout seul et comme la résistance entre la Gate et la Source est infinie il ne se décharge jamais. Si cette charge atteint un seuil critique, le MOSFET peut devenir passant ce qui dans certains cas est dangereux (activation d'un processus par exemple)

    Avec les gros MosFet (Capacité entre G et S > 3 nF) le courant lors de l'établissement du circuit peut être élevé et incompatible avec ce que peut délivrer une pin de votre micro-processeur. On met parfois une résistance aussi pour limiter cet appel de courant. (faut pas dépasser 40mA, rester sous 20 c'est plus sûr).

    donc par sécurité, on met le plus proche du MOSFET une résistance de 10 kΩ entre la Gate et la Source pour que le condensateur entre G et S puisse se décharger et si c'est un "Gros" on place aussi une résistance de ~200 ohms en série sur le fil de commande de Gate pour limiter le courant. Si on met les deux il faut faire attention aux valeurs retenues car on peut créer un pont diviseur et avec le condensateur interne on aurait un circuit RC avec une constante de temps qui rendrait votre système peu réactif et en phase transitoire un MOSFET chauffe...

  8. #28
    Expert confirmé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 317
    Points : 4 124
    Points
    4 124
    Par défaut R or not R ?
    Bonjour,

    En usage normal, la sortie PWM est à 0 ou 5 Volts, donc la gate n'est pas en l'air et la résistance n'est alors pas indispensable. Mais si cette sortie est inactive, par exemple déclarée en entrée ou l'Arduino sans alimentation ou en veille, alors la liaison entre cette broche et la gate (haute impédance) va servir d'antenne et capter tout ce qui traîne (50 Hz souvent) ce qui peut entrainer des allumages intempestifs dans les placards.

    Il vaut donc mieux en mettre une par sécurité.

    Salutations
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

  9. #29
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 685
    Points : 5 328
    Points
    5 328
    Par défaut
    Bonjour

    Je viens de voir que j’avais laissé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pinMode(portes[i].pinReed, INPUT_PULLUP);
    dans mon code. Si vous avez un pullup externe ce n’est pas un souci mais si vous avez un pull down ce n’est pas génial...

    Pouvez vous confirmer pullup ou pas ?

  10. #30
    Expert confirmé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 317
    Points : 4 124
    Points
    4 124
    Par défaut Simple et efficace ?
    Bonjour,

    • L'alimentation fonctionne.
    • Le code fonctionne.
    • Les Leds seules fonctionnent.


    Il ne reste effectivement que le câblage des switches. Si on suppose qu'il a été vérifié, il reste quoi ?

    La conception du câblage. L'entrée sur l'Arduino n'est pas filtrée alors que le câblage se balade dans un environnement certainement pollué par l'alimentation des leds actives.
    Un oscillo ou un multimètre en AC sur les entrées devrait montrer ce qu'il en est.

    Si le diagnostic est (enfin) bon, le remède est simple :
    Nom : Filtre d'entrée.png
Affichages : 108
Taille : 20,6 Ko

    Les valeurs sont au doigt mouillé (méthode dite aussi règle de l'expert ).

    Salutations
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

  11. #31
    Candidat au Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Décembre 2020
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Décembre 2020
    Messages : 17
    Points : 3
    Points
    3
    Par défaut
    Bon j'ai mis des resistance 10k ohm sur chaque mosfet entre le G et S.
    Mon breadboard roule sous 5V (je l'ai verifié), l'arduino est branché avec un power supply 9V (désolé c'étsit pad clair)
    Le 24V des leds sont sur un bornier (une strip avec des vis qui ne fait pas partie du breadboard. Le negatif du power supply des leds est sur un bornier aussi et il y a un lien - vers le breadboard, en étoile.
    Le pullup et pulldown je ne comprend pas trop la différence (soyez indulgent je suis nouveau sur arduino mais j'apprend énormément en ce moment merci! &#128514 ce soir je vais faire la modification du code avec le pull et faire un essais.


    Guesset;
    Une question je me pose.: les resistances semble être en serie sur votre schema (ceux des reeds switchs)

  12. #32
    Expert confirmé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 317
    Points : 4 124
    Points
    4 124
    Par défaut
    Bonjour Maxime,
    Citation Envoyé par Maximejurj
    Une question je me pose.: les resistances semble être en serie sur votre schema (ceux des reeds switchs)
    Seule la résistance de 1 kOhm est en série avec le switch. Quand le switch est fermé l'arduino voit environ 0,4 Volt (5V*1k/(1k+12k)) sous une impédance de 920 Ohms environ ce qui est vu comme un 0. C'est nécessaire pour le filtre passe-bas qui utilise ces 920 Ohms et la capacité de 10 uF pour atténuer même les résiduelles à 50 Hz mais surtout la fréquence de hachage du 24 Volts (quelques dizaines de kHz en général).

    A essayer, avec un peu de chance ça devrait tomber en marche

    Pourquoi le phénomène est asymétrique ? Je pense que le câblage est asymétrique et que le fil de retour à la masse est partagé par les deux interrupteurs mais qu'un seul bénéficie du couplage avec ce fil.

    Salut
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

  13. #33
    Candidat au Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Décembre 2020
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Décembre 2020
    Messages : 17
    Points : 3
    Points
    3
    Par défaut
    Bon, désolé de ce grand délais, avec des jumeaux de 12 mois ce n'est pas toujours facile d'avoir du temps
    J'ai finalement mis des résistances de 10k ohm entre la GATE et SOURCE de mes mosfets.
    Ensuite j'ai mis les résistances de mes reed switchs en série comme prévu.
    J'ai essayé et quelle surprise.. même problème


    JAY;
    Pour le PULLUP je crois (si je le comprend bien) que je suis en PULLUP EXTERNE.
    5V arduino - resistance en serie et ensuite au reedswitch pour aller au GND.

  14. #34
    Expert confirmé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 317
    Points : 4 124
    Points
    4 124
    Par défaut Dernière chance ?
    Bonjour Maxime,

    Avec une capacité ? C'est l'élément actif du filtre donc indispensable. La valeur peut être beaucoup plus faible (100 nF par exemple) si la perturbation vient seulement du hachage de l'alimentation.

    De plus les résistance des switchs doivent être à l'arrivée sur l'Arduino (et non au plus près des switchs). Donc exactement comme dans le schéma proposé.

    Le code utilisé est bien celui de Jay M ?

    Si c'est conforme et que cela ne fonctionne pas, je crains d'avoir épuisé mes cartouches .

    Bonne chance
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

  15. #35
    Expert confirmé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 317
    Points : 4 124
    Points
    4 124
    Par défaut Plus explicite ?
    Bonjour Maxime,

    J'ai complété le schéma pour le rendre plus explicite. En rouge figure l'élément perturbateur qui induit une tension qui se superpose à l'état de la ligne.

    Nom : Filtre d'entrée 2.png
Affichages : 122
Taille : 33,2 Ko

    Si l'installation est similaire à ce dessin avec un aller à l'interrupteur proche du retour, les deux sens seront perturbés quasiment de la même manière, la différence restant faible, la perturbation sera peu destructrice. C'est le principe de la paire torsadée. Comme il y a dans le montage deux allers aux interrupteurs pour un seul retour à la masse, il y en a au moins un de défavorisé.

    Est-ce que tu as un multimètre ? Si oui, STP, mesure en AC la valeur sur la patte d'entrée de chaque interrupteur sur l'Arduino.

    Salutations
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

  16. #36
    Candidat au Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Décembre 2020
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Décembre 2020
    Messages : 17
    Points : 3
    Points
    3
    Par défaut
    Je mésure 2 vAC

  17. #37
    Expert confirmé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 317
    Points : 4 124
    Points
    4 124
    Par défaut
    Bonjour Maxime,

    Citation Envoyé par Maximejurj Voir le message
    Je mesure 2 VAC
    Si cette composante de 2 VAC se présente bien directement sur la broche d'entrée du microcontrôleur, il n'est pas étonnant qu'il y ait des difficultés. Je ne sais pas quel type de multimètre a été utilisé mais, même s'il n'est pas "True RMS", les amplitudes de crête sont sensiblement supérieures à 2 V. Dans le cas d'une sinusoïde superposée à la composante continue, 2 V en RMS supposerait une tension crête de 2.8 Volt. Un état haut de 5V - 2.8V sera vu comme un état bas et réciproquement un état bas à 0 + 2.8V sera vu comme un état haut. Par ailleurs une telle valeur n'est pas très bonne pour la vie du microcontrôleur.

    J'espère que ce n'est pas avec le montage de filtrage que j'ai proposé car, même avec un défaut de masse (avec le multimètre il faudrait vérifier qu'il y a continuité entre le switch et la masse de l'Arduino), il devrait présenter un état stable.

    Nom : Filtre d'entrée 3.png
Affichages : 69
Taille : 59,7 Ko
    Est-ce que les 2 VAC sont présents sur les deux entrées switch du microcontrôleur (les broches du microcontrôleur et non la plaque d'essai ou un connecteur quelconque) ?

    Salut
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

Discussions similaires

  1. Code qui marche sur un poste mais pas sur un autre
    Par TOSCAN dans le forum Langage
    Réponses: 5
    Dernier message: 11/06/2008, 22h09
  2. Réponses: 8
    Dernier message: 19/05/2008, 10h00
  3. Réponses: 0
    Dernier message: 03/04/2008, 16h14
  4. Fade in sur plusieurs images mais pas simultanément
    Par dynexd dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 01/02/2007, 10h10
  5. Réponses: 5
    Dernier message: 02/10/2006, 20h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo