Pages: [1]   Go Down
Author Topic: Simple question sur les sorties en PWM  (Read 1475 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 10
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour à tous,

Je me lance dans l'aventure Arduino et en lisant les tutoriels, je suis tombé sur un qui m'a mis un doute.
Le tutoriel est : arduino.cc/en/Tutorial/StepperBipolar
Le principe est simple : la personne branche sa carte sur un driver ULN2003... mais les sorties choisies de l'arduino sont les 8, 9, 10 et 11... Et seuls les trois dernières sont des sorties en PWM  :-? :-?

Ma question est : pourquoi utilise-t-il alors la 8 qui n'est pas une sortie spécialisée PWM ?
-> est ce une ancienne carte ? (donc avec des sorties différentes)
-> suffit-il d'avoir une sortie digitale (le driver ULN2003 s'occupe du reste) ? Si oui, à quoi sert d'avoir des sorties spécialisées PWM ?

Merci pour vos réponses...  smiley-wink

Cordialement,
Christophe.
Logged

Sophia-Antipolis (06)
Offline Offline
God Member
*****
Karma: 4
Posts: 618
Rejoignez le club !
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Dans l'exemple il n'utilise pas de PWM donc n'importe quelle patte convient. En fait il reproduit un PWM en faisant varier lui-même le niveau des pattes (digitalWrite) et en faisant les pauses correspondant à la vitesse choisie.

Le ULN2003 sert juste à adapter les niveaux de courant (transistors) et reproduit sur les fils du moteur les entrées exactes qu'il reçoit de l'Arduino.
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 10
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

D'accord... Je vois : l'ULN2003 permet juste d'envoyer le bon courant ! Sans ce composant, le signal (le courant) envoyé par chaque patte serait inadapté et le moteur ne fonctionnerait pas (ou mal) ?!?!

Mais une chose m'intrigue alors : à chaque fois que je vois un moteur pas-à-pas branché sur la carte, il y a toujours un composant intermédiaire. :o
Pourquoi ne pas brancher directement le moteur dessus et utiliser la PWM incluse ?  :-? A moins que je n'ai pas compris la philosophie de la PWM de la carte... smiley-sad

Merci  smiley
Logged

Geneva
Offline Offline
Faraday Member
**
Karma: 30
Posts: 3227
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

La demande en intensité des bobines de ton moteur ferait griller les sorties de ta plaque Arduino, c'est pourquoi il faut mettre un transistor pour "amplifier" le courant.
« Last Edit: November 29, 2009, 03:56:16 pm by jfs » Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

0
Offline Offline
Newbie
*
Karma: 0
Posts: 10
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci.
C'est bien ce dont je me doutais (concernant la dernière question)  smiley
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 10
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Je viens de me relire...

En fait, je crois que j'ai confondu deux choses :

- La PWM, c'est pour les moteurs en continue : si on met uen PWM, plus noter signal est large et plus on va avoir une "moyenne" du signal élevé et donc une vitesse de rotation plus élevée.

- Dans le moteur pas-à-pas, on alterne les courants poru faire avancer le rotor par "étapes" : les pas.

Désolé pour cette confusion  :-/

Une dernière question pour la route : la méthode qui était présentée est-elle vraiment "propre" ?
Je me dis ça parceque : imaginons que je fasse avancer mon robot et que je décide de regarder un capteur (exemple : capteur de distance par ultrason). Pendant le temps où je regarde mon capteur, je ne fais pas varier le signal dans mes moteurs, donc il se bloque...
- Ai-je tord ?
- Comment gérer alors un moteur pas-à-pas correctement ?
- Avec un moteur à courant continue, je pourrais générer mon mouvement en balançant ma PWM puis regarder tranquillement mes autres capteurs ? Je n'aurai pas le problème cité avant, n'est ce pas ?

Merci pour vos réponses... et votre patience  smiley  :-*
Logged

Sophia-Antipolis (06)
Offline Offline
God Member
*****
Karma: 4
Posts: 618
Rejoignez le club !
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Oui et non smiley

En fait, tu ne serais pas bloqué, car il est possible d'utiliser un timer pour aller faire un petit travail en plein milieu de son travail principal, lorsqu'il est temps de monter ou descendre les niveaux du moteur pas-à-pas. Regarde du côté de la bibliothèque "MsTimer2" pour Arduino, qui te permet d'appeler une fonction en dehors du main toutes les 'n' millisecondes. Comme 'n' est réglable, tu peux varier ta vitesse.

Mais ce n'est pas la solution la plus répandue : on peut utiliser des contrôleurs de moteurs pas-à-pas qui gèrent les changements de tension aux bornes du moteur en recevant une simple PWM.
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 10
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Intéressante comme bibliothèque.

Du coup... ta réponse me fait réagir. :o
Cet après-midi, j'ai regardé comment effectuer un montage avec un L297 et un L298 pour générer le mouvement d'un moteur pas-à-pas. Il s'agit du branchement classique qu'on retrouve sur les datasheet de ces deux composants.
Ce que j'en comprends, c'est que lorsqu'on met un signal en carré sur le "clock" du L297, on fait avancer le moteur d'un pas (ou un demi selon le réglage) pour chaque carré (ou front montant)...

Questions / Remarques :
1/ Du coup, pour faire varier la vitesse, on change la fréquence des fronts montants, n'est-ce pas ?
2/ Comment générer ce signal carré de la manière la plus propre ?
==>Avec la bibliothèque dont tu me parles, on pourrait en effet rappeler la fonction toutes les n millisecondes et faire donc un front montant : descendant... ce qui ne me semble pas très confortable
==> En générant un PWM "classique" (avec analogWrite(ledPin, val) (quelle valeur de "val" ???) et en changeant la fréquence pour aller plus ou moins vite ?
==> ou alors il y a une manière plus propre/classique ???[/i]

Merci beaucoup  smiley
« Last Edit: November 30, 2009, 10:19:41 am by Glius » Logged

Sophia-Antipolis (06)
Offline Offline
God Member
*****
Karma: 4
Posts: 618
Rejoignez le club !
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

1) oui
2) non, un PWM n'a pas de fréquence variable en cours de route, seule la largeur proportionnelle peut varier



Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 10
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok merci  smiley-grin

Du coup, la bibliothèque que tu as proposée est très intéressante car il suffira d'appeler une fonction qui fera un "front descendant / mini-pause/ front montant" toutes les N millisecondes. Ce N faisant varier la vitesse.

Merci beaucoup pour vos réponses qui m'ont bien éclairées... smiley-wink
Logged

Sophia-Antipolis (06)
Offline Offline
God Member
*****
Karma: 4
Posts: 618
Rejoignez le club !
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Oui, à vérifier comment tu fais ta minipause (est-ce que la fonction delay est autorisée dans la fonction du timer...)
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 10
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pour ça, je pense faire des essais directement et adapter mon code aux possibilités / limites existantes.

Merci  smiley-wink
Logged

Pages: [1]   Go Up
Jump to: