Picaxe 28x1 PWM question

kooj

New Member
Bonjour,

Voilà, je dois réaliser un robot extincteur de bougie pour un projet dans mon école.

Ma question est la suivante :

J'ai un picaxe 28x1 avec le chip 239D alimenté en 5 V et deux moteurs en PWM alimenté en 3 V. Comment puis-je modifier la tension de sortie sur le PWM ? Et ensuite comment modifier la vitesse ?

A dire vrai, pleins de choses m'échappent dans ce domaine, et je vous serais vraiment reconnaissant de m'aider.

Merci beaucoup,

kooj
 

PieM

Senior Member
Bonjour,

Le principe du PWM (ou MLI: modulation en largeur d'impulsions) est de hacher une tension U1 afin d'obtenir une tension moyenne U2 plus basse.
Un PWM de 50% va donc transformer (théoriquement) une tension de 5V par ex. en une tension de 2.5V sans pertes par effet Joule.

La partie commande du chip 293D, reliée au picaxe, doit être alimentée en 5V (borne 16 Vcc). Par contre la partie puissance peut être alimentée sous une autre tension (borne 8 Vc), à savoir 12V si les moteurs sont en 12V (*).
Ensuite, la variation de vitesse sera obtenue en modulant (PWM) les entrées EN1 et EN2 du 293D, via des sortie pwm du picaxe, et les commandes PWMOUT et PWMDUTY (voir sur manuel 2) . Ainsi les moteur seront alimentés par une tension moyenne plus faible, et leur vitesse (et le couple) diminuera.
Si il n'y a qu'une source d'alimentation (5V), alors il faudra régler la valeur pwmduty maximum afin que la tension aux bornes du moteur ne dépasse pas la tension acceptée par les moteurs .
Si EN1 est relié à C.1 du 28X1, une instruction du type pwmout C.1, 249, 600 devrait fournir du 3V. (*)
toute valeur inférieure à 249 va conduire à une réduction de vitesse.

(*) Concernant la tension d'alimentation du L293 pour alimenter des moteurs, il faut savoir que ce circuit provoque une chute de tension de l'ordre de 2.5 V ! Donc si le circuit est alimenté en 5V, les moteurs ne verront au maximum que 2.5V !

Concernant le câblage, je joins un petit schéma d'une réalisation à partir d'un 18M2. Mais le principe est le même.
 

Attachments

Last edited:

kooj

New Member
Merci beaucoup pour vos réponses,

J'ai maintenant des nouvelles questions :

- Par rapport à la chute de tension, elle sera toujours de 2.5 V ? Donc si mes moteurs ont la même source de tension que mon uC, ils auront au maximum TensionUc - TensionChute (5 - 2.5) donc 2.5 V ? Pour régler ce problème et bien avoir 3 V de tension sur mes moteurs je devrais donc brancher une deuxième source de tension de 3 + 2.5 donc 5.5 V ?

- A quoi correspond la commande pwmduty et dans quel cas est-elle utilisée ?

Merci encore pour vos réponses !

Cordialement

kooj
 

PieM

Senior Member
Bonjour,

- Par rapport à la chute de tension, elle sera toujours de 2.5 V ? Donc si mes moteurs ont la même source de tension que mon uC, ils auront au maximum TensionUc - TensionChute (5 - 2.5) donc 2.5 V ? Pour régler ce problème et bien avoir 3 V de tension sur mes moteurs je devrais donc brancher une deuxième source de tension de 3 + 2.5 donc 5.5 V ?
La chute de tension est un peu plus faible si le courant absorbé par les moteur est inférieur à 600 mA. (Tension Vce sat d'un transistor)
Si les moteurs doivent impérativement être alimentés sous 3V, alors oui, la tension d'alimentation doit être supérieure à 5.5V.

Mais selon l'utilisation des moteurs et leur charge, essayer avec une tension de 5V, et voir l'incidence réelle sur le fonctionnement des moteurs...

PWMDUTY ne modifie que le rapport cyclique du PWM sans remise à zéro du timer interne.
En général, après avoir défini un pwm, donc sa fréquence (ou période) et un rapport cyclique initial (duty), on ne fait varier dans le programme que la valeur duty.
 

kooj

New Member
Super,

puis-je vous demander d'être un peu plus précis sur la notion de rapport cyclique et de timer interne ?

Merci !
 

PieM

Senior Member
un signal PWM génère des créneaux de tension d'une durée de X millisecondes toutes les Y millisecondes.

Y est la période, et X/Y est le rapport cyclique.

Jetez un coup d'oeil sur le manuel 2. Il y a beaucoup de choses d'expliquées. :)

Quant au timer, ceci est sans importance pour l'application prévue, et un peu long à développer...
 

kooj

New Member
Impeccable merci,

maintenant j'essaie de générer une tension de 3V sur mes sorties PWM avec la commande :
pwmout 1, 15, 5
cependant il n'y a aucune tension à la sortie 1 du PWM.
Les sorties du pwm sont 4, 5, 6 et 7 et j'aimerais générer du 3 V à partir d'une tension max de 5 V : rapport cyclique de 3/5, mais je n'y arrive pas.

Je m'en remet à vous, une fois encore =3

merci beaucoup
 

PieM

Senior Member
Bonjour,

Les paramètres utilisés conduisent à une fréquence de 62.5 kHz et un rapport cyclique de 8% ... soit théoriquement 0.4V en sortie !
Le rapport cyclique nécessaire théorique est de 60 % (3/5)

Si le pwm est destiné à piloter un MOSFET, il faut utiliser des fréquences beaucoup plus basses. Personnellement, je monte rarement au dessus de 400 Hz.

Ce qui dans votre cas donnerait
pwmout pwmdiv16, 1, 155, 375

Ajuster la valeur 375 pour tenir compte des chutes de tension diverses et des effets inductifs des moteurs.

Il existe dans le Programming editor, une petite calculette permettant de calculer ça très facilement. :)

Dans l'onglet PICAXE > Wizards > pwmout ...
 

kooj

New Member
Raaaaaaaaaaaaaaaah que ferais-je sans vous ?
Un grand merci pour vos réponses !
Je risque de revenir en poser d'ici quelques heures/jours,
alors ne m'oubliez pas ;)
 

kooj

New Member
Il y a toujours des choses que je ne comprend pas ^^

Q:

- Lorsque vous utilisez la cmd : pwmout pwmdiv16, 1, 155, 375
Comment définir les sorties 4, 5, 6, 7 par rapport à cela ?

- Sur ma carte picaxe28x1 j'ai les moteurs branché sur les ports A et B
http://letsmakerobots.com/node/75 (G sur le schéma) et ils correspondent
aux sorties 4,5 pour le A et 6, 7 pour le B
Maintenant comment appliquer votre commande à ces sorties là ?


Merci beaucoup :p
 

PieM

Senior Member
Bonjour,
Il vaut mieux indiquer dès le départ le type de produit dont on dispose. :rolleyes:

S'il s'agit d'une carte du commerce telle celle indiquée dans le lien (Axe020) il n'est pas possible d'utiliser la commande pwm, les entrées EN du L293 étant connectées au +5V par un circuit figé !
 

PieM

Senior Member
Bonjour,

Le problème n'est pas le 28X1. Bien sûr qu'il est capable de fournir des signaux pwm.
Le problème est d'utiliser une carte avec un circuit imprimé qui n'a certainement pas les bonnes connexions entre le 28X1 et le L293D pour autoriser la variation de vitesse de moteurs.

Soit les 2 entrées EN du L293D doivent être reliées aux sorties pwm du 28X1.
soit les entrées 1A,2A,3A,4A du L293D doivent être reliées aux sorties hpwm A,B,C,D du 28X1 , en utilisant la commande HPWM qui est un peu plus complexe, et que je n'ai pas testée.
Sinon il faut utiliser un autre circuit intermédiaire, mais à priori, cela n'est pas possible avec votre carte.
Les robots que vous avez vus utilisaient sans doute une autre carte, éventuellement faite par le concepteur du robot.
 
Top