le signal pwm n'est pas en continue ???

#1
Bonjour,

je viens de recevoir mon câble et mon 08M2 ce matin. YOUPIIIIiiiiii :)

je commence mes premiers pas allumer des led, créer du son ou communiquer en i2c... c'est cool!

puis je me met à générer un signal pwm pour en fonction de la valeur d'un potentiomètre pour en ventillo de PC à 4pins (+12v; gnd; tacho; pwm)
pour faire simple le pwm doit être à 25khz de 0v à 5v.

voici mon prog:
Code:
symbol varA = w0

start0:
	pwmout C.2, 39, 0
	do
	  	readadc C.4, varA
		debug
	  	if varA <= 55 then
	    	pwmduty C.2, 0
	  	elseif varA > 55 AND varA <= 75 then
	    	pwmduty C.2, 15
	  	elseif varA > 75 AND varA <= 95 then
	    	pwmduty C.2, 31
	  	elseif varA > 95 AND varA <= 115 then
	    	pwmduty C.2, 47
	  	elseif varA > 115 AND varA <= 135 then
	    	pwmduty C.2, 63
	  	elseif varA > 135 AND varA <= 155 then
	    	pwmduty C.2, 79
	  	elseif varA > 155 AND varA <= 175 then
	    	pwmduty C.2, 95
	  	elseif varA > 175 AND varA <= 195 then
	    	pwmduty C.2, 111
	  	elseif varA > 195 AND varA <= 215 then
	    	pwmduty C.2, 127
	  	elseif varA > 215 AND varA <= 235 then
	    	pwmduty C.2, 143
	  	elseif varA > 235 AND varA <= 255 then
	    	pwmduty C.2, 159
	  	endif
	loop
	stop
Ce code fonctionne mais en regardant le pwm sur oscilloscope je constate que le pwm donne les bonnes pulsations à 25khz pendant t1 = 5ms à 50ms puis le signal se met à 0v pendant t2 = 5ms à ?ms

Ce que je ne comprends pas c'est :
  1. pourquoi le pwm n'est pas permanent?
  2. y a t'il une façon d'éviter cela?
  3. est ce que dans l'interface "blocky" il y a un bloc de commande "pwmduty"

je précise tout de suite, je sais qu'un pwm (mli en fr) est une succession de 0 et 1 à une fréquence donné et avec un cycle de 0% à 100%. ma question porte sur la génération du pwm qui s’arrête alors que je ne le souhaite pas...

je vous remercie
 

MGU

Senior Member
#2
Bonjour,

J'ai eu un problème identique avec un 14M2, il venait des entrées restées "en l'air", résolu en activant les pullup sur les pattes entrées inutilisées.
Le problème peut venir du schéma et d'un reset intempestif, à vérifier en allumant une led à la mise sous tension, avant la boucle
A quoi sert le debug ? le supprimer pour lever le doute
Le paramètre CR ne peut varier que de 0 à 39x4= 156 (l'assistant donne159)

J'ai pas vu de PWM en blockly , mais on peut écrire du code dans un bloc basic (ft avancées)

MM
 

PieM

Senior Member
#3
Bonjour,
Je partage l'avis de Michel: certainement un reset intempestif.

Remarque: symbol VarA = w0 ne sert à rien car VarA est déjà défini comme étant b0
A utiliser des symboles, autant qu'ils soient plus explicites:
symbol Commande = b0
symbol Vitesse = b1
Et si la relation est linéaire entre 15 et 255, le programme se réduit à :

Code:
pwmout C.2,39, 0

do
   If commande < 55 then
        vitesse = 0
   else 
        vitesse = commande * 36/50 -27 
pwmduty C.2, vitesse
loop
Visiblement, pas de pwmduty en blocky ...
 
Last edited:
Top