[Résolu] Piloter moteur DC

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

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.

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 :wink:

Je vais essayer ça, merci beaucoup :slight_smile:

@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 :wink:

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

// 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);  
}

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 :fearful:
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 :frowning: 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é : ImageShack - Best place for all of your image hosting and image sharing needs

RandomAnonymous:
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 :fearful:
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 :frowning: 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é : ImageShack - Best place for all of your image hosting and image sharing needs

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

@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 :wink:

Techone:
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.

RandomAnonymous:

Techone:
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 :grin: , 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.

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

Merci infiniment pour votre aide :grin:

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... :wink:

RandomAnonymous:
Tout marche parfaitement, ça devait être un problème de câblage sur la breadboard :cold_sweat:

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

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 :grin:

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.

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 :grin:

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à.

Ma solution ressemblera à celle "cheap" que tu présente :slight_smile:

Sinon, pour entraîner une roue, est-ce que tu fixe directement la roue à la sortie du moteur ou bien il est préférable de l'entraîner avec une courroie? Je pensais la mettre directement à la sortie du moteur, mais en regardant un peu autour de moi j'ai l'impression que c'est toujours entraîner avec une courroie, du coup je me demande bien pourquoi un te système?

Tres interessant. J'aimerais savoir a quel place ( au Canada ) que je peux acheter cette encodeur ( le model qu'il est moin cher que j'appelle le model "non-fril" ) ou le disque encodeur ?

@Jean-Francois

Ca pas de ma faute que mon clavier d'ordinateur qui a pas d'accent. ( va si, courige moi )

Pour ma pars j'ai fais la roue codeuse dans une plaque qui me sert à faire les print avec une graveuse (à l'époque où je pouvais utilisé celle de mon école). Juste à faire un rond avec des coches dedans :slight_smile:

Tu veux dire que je devrais construire un disque "Fait-a-la maison" faite d'une feuille d''aluminium ? humm .. il est possible.

J'ai fais comme ça, mais avec une plaque en epoxy couverte de deux feuilles de cuivre (Ce qu'on utilise pour faire des doubles face classique !) Une plaque en quelque matière qu'il soit suffit largement (alu, plastique, cuivre,...)

édit : J'ai rajouté une photo prise sur le moment de ma roue codeuse :smiley: