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 :

Problème sifflement carte Arduino - transistor


Sujet :

Arduino

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2016
    Messages : 13
    Points : 5
    Points
    5
    Par défaut Problème sifflement carte Arduino - transistor
    J'ai essayé de pousser plus loin mon dispositif d'éclairage interactif ( plusieurs spots à LED alimentés en 12V et déclenchés par plusieurs capteurs ultrasons correspondants)
    Cela fonctionne lorsque j'ordonne à mes spots de passer de LOW à HIGH.
    Pour avoir un effet plus chouette j'aimerais que mes spots s'allume en "fade" en incrémentant leur valeur d'intensité jusqu'à 255.

    Pour ce faire j'ai rajouté 1 transistor Mofset irf540n par spot. Je pense les avoir bien branché avec résistance de 10kOhm et tout...

    Quand je lance mon programme (que je vous mets en dessous), j'ai un sifflement qui semble provenir de la carte Arduino Mega, les effets sur les spots semblaient marcher et puis après ça commence à clignoter et faire n'importe quoi...

    J'ai bien peur de faire une connerie!

    Est-ce que les transistors ne correspondent pas?

    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
     
    #include <NewPing.h>
     
    #define SONAR_NUM  3 // nombre de sensors
    #define MAX_DISTANCE 150 // maximum distance in cm 
    #define PING_INTERVAL 33 // millisecondes entre les pings des sensors
     
    /* Creation des variables pour les capteurs */
    unsigned long pingTimer[SONAR_NUM];
    unsigned int cm[SONAR_NUM]; // range les distances de chaque ping
    uint8_t currentSensor = 0; // permet de determiner quel sensor est actif
     
    NewPing sonar[SONAR_NUM] = { NewPing( 48, 49, MAX_DISTANCE), NewPing( 46, 47, MAX_DISTANCE), NewPing( 44, 45, MAX_DISTANCE)  }; // trigger pin, echo pin, distance maximale pour déclencher un ping
     
    /* Creation des variables pour les leds */
    #define LED_NUM 3 // nombre de leds
    const int LED[LED_NUM] = { 3, 5, 6 } ; // on déclare un tableau contenant les constantes des broches
    int etat_led[LED_NUM];
    // variable qui peut changer
     
    /* variables pour le temps de pause des LEDs*/
    unsigned long previousMillis[LED_NUM];
    unsigned long delaiAleatoire;
     
    void setup() {
      Serial.begin(9600); // bauds
      // delai et random
      delaiAleatoire = random(1000, 8000);
     
      // leds
      for (uint8_t i = 0 ; i <= LED_NUM ; i++) {
        pinMode(LED[i], OUTPUT);
     
      }
     
      pingTimer[0] = millis() + 75; // premier ping a 75millisecondes (millis est le temps depuis lequel le programme est lancé.)
      for (uint8_t i = 1; i < SONAR_NUM; i++) {
        /* mise en place pour lancer chaque sensor. index i du sensor : sa valeur par défaut est de 1,
          on contrôle qu'elle soit inferieure au nombre de sensors et puis on veut l'incrementer */
        pingTimer[i] = pingTimer[i - 1] + PING_INTERVAL; // on détermine le moment auquel chaque capteur enverra un ping
      }
    }
    void loop() {
      for (uint8_t i = 0; i < SONAR_NUM; i++) { // créer la boucle pour tous les sensors
        if (millis () >= pingTimer[i]) { // le moment ou pas de lancer un ping pour le sensor en question
          pingTimer[i] += PING_INTERVAL * SONAR_NUM; //mise en place du prochain moment ou le sensor enverra un ping
          if (i == 0 && currentSensor == SONAR_NUM - 1) oneSensorCycle();
          sonar[currentSensor].timer_stop();
          currentSensor = i;
          cm[currentSensor] = 0;
          sonar[currentSensor].ping_timer(echoCheck);
        }
      }
    }
    void echoCheck() {
      if (sonar[currentSensor].check_timer()) {
        cm[currentSensor] = sonar[currentSensor].ping_result / US_ROUNDTRIP_CM; /* US_ROUNDTRIP_CM = 340 */
      }
    }
    void oneSensorCycle() { // j'extrais les résultats après un cycle de ping complet et en fait quelque chose
     
      unsigned long currentMillis = millis();
     
      for (uint8_t i = 0 ; i < SONAR_NUM ; i++) {
        if (etat_led[i] < 256 && cm[i] < 30 && cm[i] > 5) {
          etat_led[i] = etat_led[i] + 1;
        }
        else if (etat_led[i] > 0 && (currentMillis - previousMillis[i] >= delaiAleatoire)) {    
          previousMillis[i] = currentMillis;
          etat_led[i] = etat_led[i] - 1;
        }
        analogWrite (LED[i], etat_led[i]);
      }
    }

  2. #2
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    bonjour,

    Déjà ces sifflements c'est mauvais signe, si le comportement de tes leds est anarchique c'est pas bon non plus. Donc, ne relance pas ton dispositif tant que tu n'auras pas localisé la source du problème.

    - Peut-on avoir un schéma de ton montage ?
    - Tu alimentes ton arduino sous quelle tension ?
    - Généralement les éléments qui sifflent se sont les condensateurs. Regarde les petits composants gris près de l'alimentation s'ils ne sont pas en train de mourir.

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2016
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    J'alimente l'arduino en 12V , grâce à un transformateur branché sur le secteur.
    J'ai tiré un câble "+" de ce même transfo pour alimenter mes spots aussi en 12V.

    Les - de mes spots vont à la patte centrale du transistor.
    La patte gauche du transistor va à l'arduino.
    la patte droite va à la masse.

    J'ai placé la résistance entre la masse et la patte gauche.

    J'ai vu plusieurs schémas qui conseillaient ça. (je joins le schéma que j'ai fait, je me suis un peu débattue avec fritzing je ne sais pas s'il est bien...)

    Ensuite mes capteurs sont branchés sur le 5V de l'arduino et le Gnd et le trig et l'echo sur la carte aussi.

    Je précise que cela ne fait ce bruit que lorsque je fais varier l'intensité.

    Nom : Untitled Sketch_schéma.png
Affichages : 943
Taille : 140,8 Ko

  4. #4
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 189
    Points : 11 571
    Points
    11 571
    Par défaut
    Salut,
    Y a un truc qui va pas avec les MOSFET. Tel que c'est dessiné là, pour moi y a rien qui s'allume ! Tu es sur de ce schéma ? Y aurait pas une inversion entre les Drains et les Gates ?

    Autres questions / Remarques :
    Pourquoi des IRF540N ?
    Je vois que tu ne limites pas le courant dans les LED, elles vont finir par cramer.
    C'est quoi comme LED ? Un lien ? Une datasheet ?
    Je vois que tu souhaites faire varier l'intensité lumineuse des LED, tu souhaites utiliser ton MOSFET en résistance variable (dans son régime passant) ?

    A+
    Vincent
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2016
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    merci pour ta réponse et Heu... sorry j'ai mal fait mon schéma j'ai inversé . Mais sur le montage normalement ça va.
    - Mes LEDs sont en fait des spots à leds, consommant 2,8w ( http://www.osram.fr/osram_fr/produit...mr16/index.jsp ). normalement pas besoin de rajouter de résistances donc.

    - Pour les Mosfet c'est cet article qui m'a donné l'idée : http://bildr.org/2012/03/rfp30n06le-arduino/

    - ça vient peut-être du fait que je fais mes tests sur bread-board et c'est pas terrible?

    tout ça dépasse mes connaissances en électronique!

  6. #6
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 189
    Points : 11 571
    Points
    11 571
    Par défaut
    Ok, au vu du lien que tu donnes, oui il faut bien lire ton schéma en inversant les Drains et les Gates des MOSFET.

    Si j'en crois la doc constructeur des spots OSRAM, je dirai que tu ne peux pas faire ce que tu souhaites avec. Dans la doc il est précisé GRADABLE = NON donc pour moi c'est impossible de jouer avec la luminosité (pas de d'effet tamisée ni de brillance progressive, par exemple).

    A mon idée, il y a de l'électronique dans ces spots qui ne va pas aimer du tout :
    des variations de tension de l'alimentation 12V (si tu t'amuses a faire un résistance variable avec le MOSFET)
    des variations de courant de l'alimentation 12V (si tu t'amuses a envoyer un signal PWM dans la grille du MOSFET)


    Je ne suis pas surpris que le spot clignote (en fait il se met à déconner) et comme le dit Auteur les sifflements/grésillements viennent très souvent des condensateurs mais aussi des inductances. Ne serait pas ton spot qui siffle ? Moi je dirais que oui.

    Je pense qu'il te suffit de trouver le bon spot chez OSRAM, je suis quasiment sur que tu dois en trouver des GRADABLE = OUI.

    Néanmoins fait attention car j'ai l'impression, si j'en crois cette ligne, mais Auteur le sera mieux que moi car je ne suis pas un pro de Arduino.
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    analogWrite (LED[i], etat_led[i]);
    Que tu t’apprêtais a envoyer une tension analogique sur la grille du MOSFET et cette tension, si elle est bien choisie, peut faire entrer le transistor dans son mode "résistance variable" (volontairement ou non). Ce n'était pas la bonne solution pour jouer avec une luminosité et le PWM est beaucoup mieux adapté.

    A+
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2016
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Zut zut... oui en effet. j'avais pourtant cru commander des gradables... je suis déçue.
    Je pense qu'on utilise analogWrite dans le code lorsqu'on utilise les sorties PWM..? non?
    Il y a sûrement quelqu'un de plus spécialiste que moi cependant pour confirmer.

    Merci en tout cas.

  8. #8
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    Citation Envoyé par Vincent PETIT Voir le message
    Pourquoi des IRF540N ?
    ces MOSFET sont fournis avec des kits Arduino. Je pense que cliaUlka a pris ce qu'il/elle avait sous le coude.

    Citation Envoyé par cliaUlka Voir le message
    Mais sur le montage normalement ça va.
    sauf que ton schéma ça ne va pas du tout.

    Citation Envoyé par cliaUlka Voir le message
    - Mes LEDs sont en fait des spots à leds, consommant 2,8w ( http://www.osram.fr/osram_fr/produit...mr16/index.jsp ). normalement pas besoin de rajouter de résistances donc.
    J'ai un sérieux doute là :
    Tension nominale 12,0 V
    Fréquence de fonctionnement 50…60 Hz
    Ton transfo fournit une tension continue ou alternative ?

  9. #9
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2016
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Oui en effet j'avais déjà mes mosfet à dispo que j'avais utilisé pour un autre projet avec une petite ampoule halogène qui faisait des fade. J'ai regardé le datasheet mais j'ai du mal à juger, c'était peut-être pas malin mais je me suis dis autant essayer.
    Le transfo fournit du courant continu donc de ce côté ça devrait aller ...?

    (et oui je sais mon schéma va pas, j'ai compris comment les brancher, mais mon niveau équivaut à peu près à 8 mois d'arduino et électronique c'est pas mon job alors je galère un peu..)

  10. #10
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    Citation Envoyé par Vincent PETIT Voir le message
    Néanmoins fait attention car j'ai l'impression, si j'en crois cette ligne, mais Auteur le sera mieux que moi car je ne suis pas un pro de Arduino.
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    analogWrite (LED[i], etat_led[i]);
    la fonction analogWrite() est un faux ami car l'arduino ne peut pas générer de tension continue (il peut par contre acquérir des tensions continues car il possède des convertisseurs analogiques numériques). En réalité, la fonction analogWrite() génère un signal PWM sur la sortie choisie. Le premier argument est le nom de la sortie et le second une valeur qui correspond au rapport cyclique du signal (la fréquence étant aux environs de 500Hz). En modifiant ce rapport cyclique tu peux donc jouer sur l'intensité lumineuse de la LED.


    A mon avis, avant d'attaquer un montage comme ça directement avec des spots à LED tu devrais commencer par des LED classiques


    Citation Envoyé par cliaUlka
    (et oui je sais mon schéma va pas, j'ai compris comment les brancher, mais mon niveau équivaut à peu près à 8 mois d'arduino et électronique c'est pas mon job alors je galère un peu..)
    j'allais dire que dans ton malheur tu as de la chance car les MOSFET IRF540N et RFP30N06 (celui du tutoriel) ont la même connectique. Ensuite, j'ose espérer que le câblage de tes MOSFET n'est pas celui de ton schéma.

  11. #11
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 189
    Points : 11 571
    Points
    11 571
    Par défaut
    D'accord,
    Je n'ai pas lu la datasheet du micro et je pensais qu'il avait un périphérique DAC.

    Merci.
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  12. #12
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    Aucun DAC. La fonction devrait plutôt s'appeler pwmWrite() au lieu de analogWrite(). Ceci dit, il est très facile d'obtenir un signal analogique à partir du PWM

  13. #13
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 189
    Points : 11 571
    Points
    11 571
    Par défaut
    Citation Envoyé par Auteur Voir le message
    Ceci dit, il est très facile d'obtenir un signal analogique à partir du PWM
    Exacte

    Pour le problème de cliaUlka, ça ne va pas être simple de faire un gradateur pour ce genre de spots qui s'alimente en "AC".
    Ce n'est ni le PWM et ni un résistance variable via un MOSFET qu'il faut faire, je pense qu'il faut réaliser un vrai gradateur avec un thyristor comme lors de notre longue discussion sur l'alimentation 230/60VA
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  14. #14
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 725
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 725
    Points : 15 125
    Points
    15 125
    Par défaut
    Yop !
    Citation Envoyé par Vincent PETIT Voir le message
    [...] il faut réaliser un vrai gradateur avec un thyristor comme lors de notre longue discussion sur l'alimentation 230/60VA
    Un triac !
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  15. #15
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 189
    Points : 11 571
    Points
    11 571
    Par défaut
    Bien vu !
    Merci
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

Discussions similaires

  1. Problème lecteur cartes mémoire
    Par Chauvel dans le forum Matériel
    Réponses: 2
    Dernier message: 14/08/2006, 18h05
  2. Problème de carte graphique ?
    Par drinkmilk dans le forum Composants
    Réponses: 3
    Dernier message: 18/05/2006, 18h26
  3. problème de carte réseau
    Par StyleXP dans le forum Administration
    Réponses: 2
    Dernier message: 25/01/2006, 11h12
  4. Problème de carte graphique
    Par dadamovic dans le forum Composants
    Réponses: 2
    Dernier message: 31/10/2005, 12h34
  5. Problème de carte réseau
    Par rbh dans le forum Hardware
    Réponses: 11
    Dernier message: 28/10/2005, 09h54

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