Réguler la vitesse d'un moteur

kioub

New Member
Bonjour,

Je possède un Picaxe 28X1 avec la carte pour le tester et un circuit intégré L293D pour contrôler 2 moteurs.

Je souhaiterais pouvoir contrôler la vitesse des moteurs et je bloque la dessus.

J'ai lu qu'il existait des fonctions PWM, PWMOUT et PWMDUTY mais je n'arrive pas à les utiliser (j'ai branché un moteur sur l'entrée 1 car apparemment ces fonctions ne fonctionnent que sur les entrées 1 et 2).

Quelqu'un peut il m'expliquer comment tout cela fonctionne ou au moins me mettre sur la voie SVP ?

Sinon est ce qu'il existe une solution en utilisant le L293D ?

Merci pour votre aide

Kioub
 

AndreBernot

Senior Member
PWM (MLI) sur 28X1

Je suppose que vous utilisez la carte AXE020 (PowerProg) ?
Si c’est le cas les entrées du L293D sont effectivement connectées aux sorties Out 7 et 6 pour le moteur A et Out 5 et 4 pour le moteur B.
La commande PWM, PWMOUT et PWMDUTY agissent effectivement sur les « entrées » In1 et In2 (qui se transforment en Sorties si vous utilisez ces commandes). Dans la mesure où elles ne sont pas en relation avec les entrées du L293D, ces commandes ne sont pas utilisables sur la carte AXE020.
Voir le brochage du 28X1 Section 1 p30
http://www.picaxeforum.co.uk/docs/datasheets/picaxe_manual1.pdf

Sous toutes réserves, il y a peut être une alternative avec la commande "hpwm" qui agit sur la sortie Out4 qui est reliée à une des entrées du L293D pour le moteur B.
Voir Section 2 p70 http://www.picaxeforum.co.uk/docs/datasheets/picaxe_manual2.pdf
Il s’agit d’une piste que je n’ai pas eu l’occasion de tester mais qui mérite peut être d’être essayée.
 

kioub

New Member
Merci pour ta réponse, j'ai effectivement la carte AXE20.

Je branche un patte du moteur sur in2 et l'autre sur la masse avec un programme comme celui ci :
pwmout 2,99,200
pwmduty 2,99
pause 3000
pwmduty 2,200
pause 3000
et rien ne se passe.

Pourrais-tu (ou quelqu'un d'autre) me dire ce qui cloche ?

De plus, est il possible de brancher les pattes in1 et in2 sur le L293D pour contrôler le sens du moteur en plus de la vitesse (en mettant le L293D sur un plaquette d'essais à la place de la carte AXE20 bien sur).
merci encore

Edit : je viens de regarder la doc et la piste HPMW semble intéressante mais je vais devoir retravailler mon anglais pour tout comprendre car je ne trouve aucun exemple.
 
Last edited:

AndreBernot

Senior Member
Branchement moteur sur AXE020

Les sorties du microcontrôleur ne peuvent pas délivrer suffisamment de courant pour piloter directement un élément qui requiert de la puissance comme un moteur. Le courant que peut fournir une sortie du microcontrôleur est de l’ordre de 80mA (à vérifier). Le but du L293D est d’assurer l’interface du microcontrôleur pour fournir suffisamment de courant (jusqu’à env 800mA par sortie, à vérifier).

En dehors de la programmation que je n’ai pas vérifiée en détail, on ne peut pas connecter en direct un élément qui consomme plus que ce que la sortie peut fournir ; c’est ça qui cloche !
Les sorties du microcontrôleur sont normalement protégées contre les surintensités. Si ça sent le brulé, il faut prévoir de remplacer le microcontrôleur !

A moins de bricoler la carte AXE020 en coupant des pistes et en tirant des fils je ne vois pas de solution. Je déconseille bien évidemment de faire ce type de manip qui risque d’endommager définitivement la carte.

Pour HPWM, il s’agit juste d’une idée et je dois dire qu’en cette fin d’année scolaire je manque un peu de temps pour creuser plus loin, vérifier que ce n’est pas farfelu et proposer une solution clefs en mains.
Peut être que d’autres utilisateurs se sont penchés sur la question ?
 

kioub

New Member
Encore merci pour vos réponses.

Je ne suis pas tout à fait d'accord avec votre réponse car en commandant un moteur (sans utiliser le L293D et sans essayer de contrôler la vitesse) cela fonctionne parfaitement avec la fonction HIGH.
Je ne pense pas qu'utiliser les fonctions PWMOUT et PWMDUTY réduisent le courant de sortie.
Mon erreur doit être ailleurs.

Pour HPMW d'après ce que j'ai lu, cela semble être la solution mais je ne trouve aucune aide sur internet ; comme si personne n'avait essayé de contrôler la vitesse de 2 moteurs d'un robot avec un picaxe. Je vais donc essayer tout seul comme un grand (et c'est pas gagné).

Merci et bonne soirée
 

kioub

New Member
Bonjour,

Grosse erreur de ma part :
A utiliser une carte toute faite, on en oublie comment elle fonctionne. En effet lorsque je branche un moteur sur les sorties de la carte, je ne suis pas sur celles du Picaxe mais sur celles du ULN2803A qui fournissent plus de puissance.

J'ai donc fait un test rapide avec un ULN2803A branché sur in2 et j'ai réussi à faire fonctionner PWMOUT et PWMDUTY.

Maintenant j'essaie la fonction HPWM et HPWMDUTY en branchant un L293D sur in2, out1, out2 et out4. Ces fonctions ont beaucoup de paramètres et pour le moment je n'arrive qu'à faire tourner un seul moteur et uniquement dans un sens.
Si quelqu'un maîtrise c'est fonctions, je suis preneur.

Dans tous les cas, j'ai l'impression qu'il est impossible avec un seul Picaxe de faire tourner 2 moteurs à des vitesses différentes (ce qui est le but de mon projet).
Si quelqu'un peut me prouver que le contraire...
 
Top