PWM et moteur 12v

TrackRacing64

New Member
Bonjour,

J'ai réalisé un petit montage qui me permet de piloter un moteur de voiture de circuit en 12v avec un PICAXE 08M en PWM.
Tout fonctionne correctement à différentes vitesses.

Par contre quand je programme une boucle pour générer une accélération de 0 à la vitesse maxi du moteur. La vitesse ne varie pas de façon linéaire.

Est-ce que quelqu'un peut m'expliquer ce phénomène?

Pour info voici le lien vers le blog concernant mon projet: TRS

J'y ai mis une petite vidéo qui montre bien le phénomène...
 

TrackRacing64

New Member
Bonjour Jean-Yves,

Rien de bien compliqué. Voici le code:

symbol i=w0
init:
pwmout 2 , 150, 150
main:
i=i+15
pwmout 2 , 99, i
pause 60

pwmout 2, off
goto main
 

AndreBernot

Senior Member
Je suppose que vous avez lu et relu les pages 140 et 141 de http://www.picaxeforum.co.uk/docs/datasheets/picaxe_manual2.pdf:

“ Duty cycle is a 10 bit value (0 to 1023). The maximum duty cycle value must
not be set greater than 4x the period, as the mark ‘on time’ would then be
longer than the total PWM period (see equations above)! Setting above this
value will cause erratic behaviour.”

Si je comprends votre code, il me semble que la variable i qui contrôle le rapport cyclique est décomposée en 2 mots de 8bits b1 et b0. Je ne vois pas dans votre code de condition qui réinitialise ou arrête l’incrémentation de i lorsque la valeur 1023 est atteinte.
Le rapport cyclique prend une faible valeur lorsque le compteur i est saturé au-delà de 10 bits. D’autre part le choix d’un incrément de 15 en 15 et non pas d’une puissance de 2 (comme 16 par exemple) fait qu’il y a un décalage à chaque fois que votre compteur sature.


“The pwmout command initialises the pin for pwm operation and starts the
internal timers. As each pwmout command resets the internal timer, the
pwmduty command is recommended on X1/X2 parts (after the initial pwmout)
to rapidly change the duty.”

A entendre votre moteur qui s’arrête (pwmout 2, off) et qui a du mal à repartir j’essaierai d’utiliser la commande pwmduty comme indiqué ci-dessus après chaque incrément de i.
 

Jean-Yves

New Member
PWM et moteur 12 V

Bonjour à tous,
Manip' intéressante. J'ai câblé sur une plaque d'essai le montage avec un Picaxe 08M suivi d'un étage darlington BC358/2N1711, au lieu de l'IRF.qui commande un moteur sous 12V,
Le programme posté par TrackRacing64 tourne bien. Les accélérations en boucle sont franches. Observé au scope la largeur du créneau varie bien dans le temps.
J'ai relu les pages du manuel 2 indiquées par AndreBernot et testé des modifications dans le code.
Voici celui sur lequel j'expérimente:

Symbol i = b0
init:
pwmout 2,150,25
main:
for i=25 to 255 step 5
pwmout 2,150,i
pause 200
next i
pwmout,off
goto main

En modifiant les valeurs "period"et "duty cycle" les accélérations peuvent être modulées à la demande, rendant un effet arrêt-démarrage plus souple.
La valeur 25 dans mon code plait bien au moteur utilisé à vide .

Remarques:
- Selon le manuel, si j'ai bien lu, l'instruction pwmduty n'est pas prise en compte par le Picaxe 08M.
- Tout moteur CC demande un couple minimum de démarrrage à vide et fonction de ce qu'on lui demande d'entraîner.
- Un lien sur le sujet, comportant un renvoi à un post du Forum:
http://www.robowars.org/wikka/PicaxePWM

A suivre...
 
Top