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 :

Contrôle de la vitesse de rotation d'un moteur avec Arduino


Sujet :

Arduino

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2017
    Messages : 26
    Points : 4
    Points
    4
    Par défaut Contrôle de la vitesse de rotation d'un moteur avec Arduino
    Bonjour,

    J'ai mis un place un circuit composé d'un moteur alimenté par une alimentation externe, d'une diode N4007 d'un MOSFET IRF520N et d'une résistance de 10 kiloohms Nom : IMG_20170607_155056_resized_20170607_090636809.jpg
Affichages : 3955
Taille : 267,2 Ko Nom : IMG_20170607_210145_resized_20170607_090636158.jpg
Affichages : 3346
Taille : 206,8 Ko
    Sur la photo les fils blancs sont reliés à l'alimentation et les bleus au moteur.
    J'ai testé un programme simple pour faire varier la vitesse de rotation mais il ne fonctionne pas. Même en mettant analogWrite(pinMosfet,0) il ne s'arrête pas. Si vous voyez ce qui cloche ça m'aiderai beaucoup!
    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
    void setup() {
      Serial.begin(9600); //connexion au port série
      pinMode(6,INPUT); // connexion du moteur au pin6 de l'arduino
    }
     
    void loop() {
      //valeur= map(pourcentage,0,100,0,255);
      //analogwrite(6,valeur); le moteur tourne à pourcentage % de son régime maximum
      analogWrite(6,255); //tourne a 25% de son régime
      delay(10000); //attente de 5 secondes
      analogWrite(6,127); //50%
      delay(5000);
      analogWrite(6,191); //75%
      delay(5000);
      analogWrite(6,255); //100%
      delay(10000);

  2. #2
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    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 190
    Points : 11 573
    Points
    11 573
    Par défaut
    Salut,
    Dans la fonction setup, tu as déclaré la pin 6 en entrée analogique alors que c'est une sortie numérique.

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

  3. #3
    Modérateur

    Homme Profil pro
    Ingénieur électricien
    Inscrit en
    Septembre 2008
    Messages
    1 267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur électricien

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 267
    Points : 4 829
    Points
    4 829
    Par défaut
    Bonjour

    En plus de l'erreur de code relevée par Vincent, j'ai 4 ou 5 erreurs au niveau du hard:
    - La diode de roue libre est à l'envers -> de ce fait l'alimentation devrait être en court-circuit lorsque que le MOS conduit. Le moteur ne devrait jamais tourner, sauf si:
    - L'alimentation du moteur est inversée, c'est le plus de l'alim qui est branché à la masse du schéma et le moins de l'alim au moteur. Dans ce cas le moteur tourne en pleine tension par conduction de la diode antiparallèle du MOSFET.
    - La liaison entre la source du MOSFET et l'alimentation du moteur passe par la carte Arduino, ce qui est plus que mauvais, ne serait ce que simplement car les connecteurs de l'Arduino ne sont pas dimensionné pour un courant élevé.
    - Il manque une résistance en série entre la sortie de l'Arduino et la grille du MOS, pour éviter de dépasser le courant max de l'Arduino à chaque commutation.
    - La résistance semble être une brun-noir-rouge ce qui est une 1kohm et non 10kohm qui est brun-noir-orange. (Ou c'est la colorimétrie de la photo qui est foireuse)

    Pour rappel: l'électronique ce n'est pas comme l'informatique (et la célèbre phrase lue par Bill Gates à ses débuts), la plupart des erreurs se paient cash avec la destruction des composants.

    Delias

  4. #4
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2017
    Messages : 26
    Points : 4
    Points
    4
    Par défaut
    Si j'ai bien compris il faudrait deux résistances entre en série entre la patte G du MOS et le pin 6 de l'arduino ? Parce que pour moi il y en a déjà une. Si ce n'est pas cela je ne pense pas bien visualiser comment il faut câbler et je voudrais bien voir un schéma si c'est possible.

    Pour la valeur de la résistance j'ai fait confiance à mon professeur en lui demandant une 10 kiloohms sans vérifier. Je vais donc voir et la changer si vous avez raison

    Pour mon alimentation est une alimentation continue réglable qui fournit jusqu'à 30V, elle a deux branchements un rouge et un noir mais je ne suis pas sûre que cela corresponde à + et -.

    Pour la diode il suffit de la mettre dans l'autre sens? J'ai testé le programme sans avoir déclaré le pin6 en entrée et ça avait l'air de marcher mais j'avoue que je n'ai pas fait attention au sens dans lequel j'avais mis la diode

  5. #5
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    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 190
    Points : 11 573
    Points
    11 573
    Par défaut
    Salut,
    Citation Envoyé par capteurtipe Voir le message
    Si j'ai bien compris il faudrait deux résistances entre en série entre la patte G du MOS et le pin 6 de l'arduino ?
    Delias te recommande de mettre une résistance entre la grille de ton MOSFET et la pin 6 du Arduino. Sur le schéma ci dessous c'est R2.

    Nom : Capture42.PNG
Affichages : 3199
Taille : 7,4 Ko

    Comme l'a expliqué Delias c'est une résistance de limitation pour éviter de casser ton Arduino. La grille de ton transistor a une capacité d'entrée et si tu envoies un signal carré dessus, à chaque front montant et descendant le courant d'appel sera environ égale à :

    Formule mathématique

    Formule mathématique = voir datasheet
    Formule mathématique = 5V
    Formule mathématique = temps de monté 5V (autrement dit sacrément rapide)

    ps : je passe les détails de l'effet Miller et la manière dont la grille se charge

    Citation Envoyé par capteurtipe Voir le message
    Parce que pour moi il y en a déjà une.
    R1 est une résistance de pull-down justement fixer l'état de la grille à l'initialisation.


    Pour le reste, ton schéma est correcte, si tu ajoutes la résistance R2. Il te faut câbler le hard en conformité du schéma et en faisant attention au sens des composants.
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur électricien
    Inscrit en
    Septembre 2008
    Messages
    1 267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur électricien

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 267
    Points : 4 829
    Points
    4 829
    Par défaut
    pour Vincent PETIT et son explication détaillée. R1 est une résistance en parallèle, R2 est une résistance en série.

    pour l'attitude de capteurtipe, comme je l'ai dis, en électronique on ne peut pas juste essayer sans faire attention au sens et inversé si cela ne va pas. Essayer avec les composants à l'envers, c'est le meilleur moyen pour les cramer (et heureusement que tu n'utilisais pas de condensateurs électrolytiques polarisés car à l'envers ....... ).

    Oui + sur Rouge et - sur Noir, c'est le standard des alims.
    Maintenant si le moteur tournait dans le cas du premier message avec l'alimentation dans le bon sens cela signifie que la diode et le MOS sont cramés:
    - La diode dans le mauvais sens by-pass le moteur, et limite la tension à ces bornes à 0.7V. Si elle ne limite plus, c'est qu'elle est cramée et que une fois dans le bon sens elle ne protégera plus le MOS.
    - Avec la Pin de l'Arduino en Input, la tension de grille du MOS reste fixée à 0 par la résistance et le MOS doit être bloquant. Si le moteur tournait, c'est qu'il était donc conducteur avec une tension de grille nulle, donc il est grillé.

    Delias

  7. #7
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2017
    Messages : 26
    Points : 4
    Points
    4
    Par défaut
    Merci à vous deux.

    Cela semble fonctionner maintenant

Discussions similaires

  1. Réponses: 8
    Dernier message: 15/08/2012, 16h20
  2. Réponses: 1
    Dernier message: 28/06/2011, 15h51
  3. Réponses: 0
    Dernier message: 02/04/2008, 10h16
  4. Réponses: 9
    Dernier message: 13/09/2006, 21h44

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