commande pwm en mikropascal

< Sujet précédent  Sujet suivant >
Index du Forum -> Forum des Logiciels -> MikroPascal
AuteurMessage
Tunisia.png ahmed
Modérateur



Messages : 123
Inscrit(e) le: 17/11/2007
Posté le 01/07/2009 10:18  
commande pwm en mikropascal
salem
je veux savoir quel est le principe de la commande pwm
et est ce que vous pouvez me donner quelques exemples
merci

Edité par Administrateur le 01/07/2009 13:02
L'homme connaît le monde non point par ce qu'il y dérobe mais par ce qu'il y ajoute.
Claudel (Paul)
Revenir en haut | Permalien
Tunisia.png ahmed
Modérateur



Messages : 123
Inscrit(e) le: 17/11/2007
Posté le 01/07/2009 10:22  
RE : pwm
salem
je veux savoir qu'elle est le principe de la fonction pwm dans un pic, je sais que que avec cette fonction on peut commander un servo moteur ,et est ce que avec cette fonction on peut réaliser un fonctionnement d'un hacheur

L'homme connaît le monde non point par ce qu'il y dérobe mais par ce qu'il y ajoute.
Claudel (Paul)
Revenir en haut | Permalien
Tunisia.png Technologuepro
Administrator



Messages : 447
Inscrit(e) le: 15/11/2007
Posté le 01/07/2009 13:09  
RE : commande pwm en mikropascal
un signal PWM (pulse width modulation) est un signal modulé en largeur d'impulsion MLI c'est à dire tout simplement un signal carré avec un rapport cyclique variable.
prenons l'exemple d'un signal carré normal que tu connais ce signal à un rapport cyclique = 0.5 (demi période état haut et demi période état bas) si l'état haut correspond à 5v, la valeur de la tension moyenne du signal est le rapport cyclique multiplié par 5v donc c'est 2.5v. en conclusion ce signal est équivalent à un signal continue de valeur 2.5v pour un moteur.
maintenant pour varier la valeur moyenne de la tension qui attaque le moteur on varie le rapport cyclique entre 0 et 1 et on obtient une tension variable de 0 à la tension maximale.
pour un moteur 24V on fait varier le rapport entre 0 et 1 donc la tension entre 0 et 24 donc la vitesse entre V nominale à 24V et 0.
Pour la programmation l'MLI est préprogrammé il suffit tout simplement de l'appeler (pwm_init et pwm_start)
je donnerai prochainement un exemple en mikropascal dans la page téléchargement.

Cordialement


Le savoir est une chose qu'on peut pas cacher, la connaissance existe pour être transmise aux autres...
Revenir en haut | Permalien
Tunisia.png ahmed
Modérateur



Messages : 123
Inscrit(e) le: 17/11/2007
Posté le 01/07/2009 14:23  
RE : commande pwm en mikropascal
merci bien si hatem

L'homme connaît le monde non point par ce qu'il y dérobe mais par ce qu'il y ajoute.
Claudel (Paul)
Revenir en haut | Permalien
Tunisia.png ahmed
Modérateur



Messages : 123
Inscrit(e) le: 17/11/2007
Posté le 01/09/2009 13:00  
1251802849.ppas (1 Ko)
RE : commande pwm en mikropascal
salem
bellahi Mr hatem exolique moi ce programme en faisant les commentaires devant les instructions et merci

L'homme connaît le monde non point par ce qu'il y dérobe mais par ce qu'il y ajoute.
Claudel (Paul)
Revenir en haut | Permalien
Tunisia.png Technologuepro
Administrator



Messages : 447
Inscrit(e) le: 15/11/2007
Posté le 01/09/2009 23:29  
RE : commande pwm en mikropascal
Bonjour,
Ce programme permet de générer un signal PWM commander par un potentiomètre sur l'entrée analogique AN0 .
En effet voici les données du problème :
La bibliothèque PWM en mikropascal possède 3 procédures qui sont
  • Pwm_Init( fréquence ) c'est la fréquence du signal PWM et qui doit être comprise dans la bande passante du moteur à commander. si cette fréquence est faible ( 1 Hz par exemple) la rotation du moteur va être discontinue rotation pendant les 1 et arrêt pendant les 0 comme moteur pas à pas si cette fréquence est très élevée par exemple 1MHz le moteur ne bougera pas ou peut être il sera grillé

  • Pwm_Start; démarrage du signal

  • Pwm_Change_Duty(rapport cyclique); le rapport cyclique ici doit être un octet c'est à dire de 0 à 255 donc 0 correspond à un rapport cyclique de 0 et 255 correspond à un rapport cyclique 1 ou 100% exemple je veux un rapport de 0.5 ou 50% j'applique la règle de 3 et je fait Pwm_Change_Duty(128); qui est (255 * 0.5)/1 avec arrondissement

  • Pwm_Stop; ordre d'arrêt du signal


Maintenant je veux que le rapport cyclique vient du convertisseur sachant que le convertisseur donne une valeur comprise entre 0 et 1023 sur 10 bits et en plus je veux afficher le rapport cyclique sur un LCD alors quoi faire ?

Voila je dois faire des transformations à la valeur lue par le convertisseur afin de l'exploiter :

t := ADC_read(0); // lecture du convertisseur
tlong := t*1000; // multiplier la valeur lue par 1000 pour ne pas perdre cette valeur après la virgule lorsqu'on divise par 1024
t := longint(tlong shr 10) // division entière par 1024 qui est 2 exp 10 ça revient à décaler les bits de 10 positions à droite exemple si je veux diviser un nombre par 2 exp 5 je décale tout simplement ses bit à droite de 5 position c'est plus rapide !
on obtient t variant de 0 à 999 car le max c'est la division entière de 1023/1024000
le rapport cyclique à afficher est de la forme (ch0).(ch1)(ch2) exemple 0.34
ch0 := t div 1000; // diviser t par 1000 ici ch0 est toujours égale à 0 car t ne dépasse pas 999
lcd_chr(2,1,48+ch0); // on affiche (ch0)
lcd_chr(2,2,'.'); // on affiche (.) juste après (ch0)
ch1 := integer(t div 100)mod 10; // ch1 est le reste de la division par 10 de t divisé par 100 exemple on suppose que t = 645 donc ici ch1 = 6
lcd_chr(2,3,48+ch1); // affichage de ch1 juste après le (.) on obtient (ch0).(ch1)
ch2 := integer(t div 10)mod 10; //ch2 est le reste de la division par 10 de t divisé par 10 exemple on suppose que t = 645 donc ici ch2 = 4
lcd_chr(2,4,48+ch2);// affichage de ch2 juste après le (ch1) on obtient (ch0).(ch1)(ch2)
j:=2*(ch2+13*ch1); // on recalcule le rapport cyclique ici je ne suis pas d'accord avec ce calcul car il y a beaucoup d'erreurs en effet le rapport cyclique de Pwm_Change_Duty doit être compris entre 0 et 255 moi je fait tout simplement t divisé par 4 -->j:= (t shr 2); c'est plus précis
Pwm_Change_Duty(j); // changement du rapport cyclique

voila j'espère que j'étais clair






Le savoir est une chose qu'on peut pas cacher, la connaissance existe pour être transmise aux autres...
Revenir en haut | Permalien

Haut de page

© 2019 Technologue pro, cours électricité électronique informatique · © 2007 - 2019 Technologue pro - Ressources pédagogiques pour l'enseignement technologique en Tunisie
Usage dans un cadre strictement académique

Technologue: cours en ligne gratuit en électricité, électronique, informatique industrielle et mécanique pour l'enseignement technologique en Tunisie et offre des cours en ligne en génie électrique, informatique, mécanique, une base de données de TP, projets fin d'études et un annuaire de ressources pédagogiques
Licence - Sitemap - Qui somme nous ? - confidentialité- Tunisie Index
J'accepte
Ce site web utilise des cookies. Nous utilisons des cookies pour vous offrir la meilleure expérience sur notre site Web. Plus d'infos