Go Down

Topic: [Résolu] Piloter moteur DC (Read 8616 times) previous topic - next topic

RandomAnonymous

Sep 10, 2011, 10:41 pm Last Edit: Sep 18, 2011, 04:17 pm by Jean-François Reason: 1
Bonjour !

J'essaye de faire fonctionner un moteur 12[v] avec mon Arduino, grâce à la fonction PWM.

J'utilise pour ce faire un LMD18200 : http://www.national.com/ds/LM/LMD18200.pdf

Voilà le schéma que j'ai réalisé (ou plutôt honteusement pomper) http://www.fromorbit.com/sites/default/files/field/image/lmd18200_driver_schema.png

J'ai essayé le programme le plus simple pour faire un PWM

Code: [Select]
int ledPin = 9;      

void setup()
{
 pinMode(ledPin, OUTPUT);  
}

void loop()
{

 analogWrite(ledPin, 127);  
}


Seulement rien ne se passe

Si quelqu'un a une idée, un exemple, une alternative je suis preneur.  

Bien sûr, le câblage était bon.

Techone

#1
Sep 11, 2011, 05:43 am Last Edit: Sep 11, 2011, 07:37 am by Jean-François Reason: 1
Salut RandomAnonymous;

J'ai vérifier la feuille d'information du LMD18200, et aussi vérifier le schéma.
SVP lire la feuille d'information et voir Figure 7.  
Le contrôle logic est :

  • pin 3 est la DIrection du motor ( tourner à gauche - left - CCW ou tourner à droite - right - CW )  

  • pin 4 est le frein - Brake ( 0 - pas de frein - 1 - arrêter - le frein )

  • pin 5 est le PWM.



Pour essayer, déconnecter la pin 8 et 9 du LMD18200, connecter pin 4 au GND, connecter pin 3 au GND ou + 5 V ( ton choix ) et le pin 5 , connecter au pin PWM de l' Arduino. ( pin 9 est OK ) Et essaye ça, c'est possible que marche.

Mon opinion.  

PS: Mon français est très rouillé. Rester plus de 20 ans a Toronto ( en anglais ici )  

Edit de Jean-François : Ton français est très bien, j'ai juste fait quelques corrections pour l'orthographe  ;)

RandomAnonymous

Je vais essayer ça, merci beaucoup  :)

Techone

#3
Sep 12, 2011, 01:31 am Last Edit: Sep 18, 2011, 07:55 am by Jean-François Reason: 1
@Jean-Francois

Ma première langue est le français. Je suis d'origine de Saint-Quentin, NB Canada. Canadien Francophone ( Je ne suis pas Québecois ).
Pour rester au Canada, il faut connaitre l'anglais. Mes termes techniques sont plus anglais.  

Merci de me corriger, Je n'ai pas d'accent sur mon clavier (un système anglais ).



Edit de Jean-François : pas de soucis, mon premier Mac portable avait un clavier américain.... une vrai gymnastique pour les accents  ;)

Artouste

bonsoir
au cas où le probleme ne serait pas réglé
rapide test en utilisant les pin mini sur le LMD18200
un potentiometre (Courbe lin)
potard à 0 vitesse moteur rotation gauche, au centre moteur stop, au maxi vitesse maxi à droite
utilisable sans potard  en connectant A0 à +3.3, + 5, GND
http://cjoint.com/11sp/AIqsorYGgqr_uno18200.jpg


Code: [Select]
// demonstration for use with LMD18200 and potentiometer
// Vmax CCW <--->stop<---->Vmax CW

int pwm = 9;           //  connect arduino uno pin 9 to  pin 5 LMD18200
int sensorPin = A0;    // select the input pin for the potentiometer
int ledPin = 13;      // select arduino uno pin 13 for the LED and direction connect on pin 3 lmd18200
                      // connect LMD18200 BRAKE pin 4 to GND (no brake)
                      // Connect DC motor between pin 2 , 10 LMD18200
                      // + external POWER motor on pin 6 LMD18200
                      // GND on TAB and/or pin 7 LMD18200, remember to connect GND LMD18200 and GND arduino
                      // For this test other LMD18200 pin "leave on air"
word vpm=0;

word sensorValue = 0;  // variable to store the value coming from the sensor

void setup()
{
  pinMode(pwm, OUTPUT);
pinMode(ledPin, OUTPUT);   
}

void loop()
{
sensorValue = analogRead(sensorPin);
vpm=sensorValue/2; //reduce resolution to 9 bits
if (vpm > 255)
{
  digitalWrite(ledPin, HIGH); // CW
vpm=vpm-256;

}
else
{
  digitalWrite(ledPin, LOW); //CCW
vpm=255-vpm;
}

  analogWrite(pwm, vpm); 
}

RandomAnonymous

#5
Sep 16, 2011, 10:21 pm Last Edit: Sep 16, 2011, 10:40 pm by RandomAnonymous Reason: 1
Bonsoir,


ça a marché. mais bizarrement, je m'explique.

J'ai réalisé le montage sur une plaque de labo mais ça ne marchais pas. Et d'un coup, je ne sais pas trop pourquoi le moteur tournait  :smiley-eek-blue:
J'ai un peu jouer avec mon moteur en modifiant le PWM pour voir ce que ça faisait, puis d'un coup plus rien

Je ne sais pas si c'est le LMD18200 qui a grillé ou un problème hardware. Du coups je suis en train de réaliser un véro (bientôt fini je n'avais plus de fils pour les ponts  :*) Et je verrai bien.

Sinon ton montage marche bien? Car chez moi lorsque le montage a fonctionner le moteur ne tournait pas à fond :( Et (si ce n'est pas trop demandé :)) Est-il possible d'avoir le schéma que tu as réalisé?

édit : Voilà le schéma que j'ai réalisé : http://imageshack.us/photo/my-images/52/schemag.png/

Artouste


Bonsoir,


ça a marché. mais bizarrement, je m'explique.

J'ai réalisé le montage sur une plaque de labo mais ça ne marchais pas. Et d'un coup, je ne sais pas trop pourquoi le moteur tournait  :smiley-eek-blue:
J'ai un peu jouer avec mon moteur en modifiant le PWM pour voir ce que ça faisait, puis d'un coup plus rien

Je ne sais pas si c'est le LMD18200 qui a grillé ou un problème hardware. Du coups je suis en train de réaliser un véro (bientôt fini je n'avais plus de fils pour les ponts  :*) Et je verrai bien.

Sinon ton montage marche bien? Car chez moi lorsque le montage a fonctionner le moteur ne tournait pas à fond :( Et (si ce n'est pas trop demandé :)) Est-il possible d'avoir le schéma que tu as réalisé?

édit : Voilà le schéma que j'ai réalisé : http://imageshack.us/photo/my-images/52/schemag.png/


bonsoir
aucun schéma, que de la connexion directe
et un peu de contorsion pour connecter la tripaille sur du 2.54  :smiley-mr-green:

Techone

#7
Sep 18, 2011, 05:26 am Last Edit: Sep 18, 2011, 07:50 am by Jean-François Reason: 1
@RandomAnonymous

J'ai vérifié ton schéma, et il est correct.  Le problème dépend du code et la méthode de construction (un court circuit, un circuit ouvert ).
As tu essayé de construire le circuit sur un breadboard  pour voir si le code marche  ?
Autrement teste le code sans le contrôleur du moteur IC ?    



Edit de Jean-François : J'ai refait un peu l'orthographe
  ;)

RandomAnonymous



As tu essayé de construire le circuit sur un breadboard  pour voir si le code marche  ?  


Oui oui, ça a marché un moment puis après plus rien. Je suis en train de faire le montage sur une plaque veroboard histoire que ça soit beaucoup plus propre, je vous tiendrai au courant.

Artouste




As tu essayé de construire le circuit sur un breadboard  pour voir si le code marche  ?  


Oui oui, ça a marché un moment puis après plus rien. Je suis en train de faire le montage sur une plaque veroboard histoire que ça soit beaucoup plus propre, je vous tiendrai au courant.

bonjour
C'est difficile de "cuire" un lmd18200 sauf a injecter un VS > 60V et/ou > a 12V sur les commandes logiques.
De plus il y a une protection thermale embarquée.

retour aux test fondamentaux :
- Le moteur est toujours verifié OK ?  (ce n'est pas lui qui est cuit ?)
- c'est quoi comme moteur ?
- L'alim de puissance est OK ?
- c'est quoi comme alim de puissance ?  quelle tension de service
- les GND (alim puissance, arduino ) sont bien connectés ensemble ? (oubli courant)

Même si mon montage présenté plus haut n'est pas beau   :smiley-mr-green:   , il est néanmoins bien  fonctionnel  avec le code.
Compte tenu de la fréquence max PWM généré par le code arduino , les condensateurs de bootstrap (C2,C3 sur ton schéma) ne sont pas absolument nécessaires.



 

RandomAnonymous

Tout marche parfaitement, ça devait être un problème de câblage sur la breadboard  :smiley-roll-sweat:


Merci infiniment pour votre aide  :smiley-mr-green:

Techone

#11
Sep 18, 2011, 07:10 pm Last Edit: Sep 18, 2011, 07:50 pm by Jean-François Reason: 1
Le câblage est souvent le problème majeur quand on fait la construction d'un projet.


Edit de Jean-François : comme d'hab...  ;)

Artouste


Tout marche parfaitement, ça devait être un problème de câblage sur la breadboard  :smiley-roll-sweat:

L'important c'est que ça tourne (dans les 2 sens )  :smiley-mr-green:
les LMD c'est quand même assez tolérant !

RandomAnonymous

J'ai toujours eu de la peine avec les breadboards passer un certains nombre de connexions, j'ai toujours préféré faire un petit prototype sur un vero  :smiley-mr-green:

Je vais amélioré le tout en rajoutant un système de roues codeuse pour pouvoir déplacer précisément le robot  8). Merci encore pour votre aide c'est vraiment sympa.

Artouste


J'ai toujours eu de la peine avec les breadboards passer un certains nombre de connexions, j'ai toujours préféré faire un petit prototype sur un vero  :smiley-mr-green:

Je vais amélioré le tout en rajoutant un système de roues codeuse pour pouvoir déplacer précisément le robot  8). Merci encore pour votre aide c'est vraiment sympa.

Pour faire de l'asservissement de position en quasi boucle fermée c'est une bonne solution.
Attention à ne pas être trop gourmand dans la résolution.
Entre l'encodeur en quadrature cheap déjà intéressant et le luxueux, il y a des choix à faire.
dans mes manip de positionnement et pour tester j'utilise souvent ces 3 là.


Go Up