• home

Contrôler un moteur à courant continue avec un PIC 16F876 ( choix du sens et vitesse )

Ce projet est un variateur de vitesse d'un moteur à courant continue basé sur un microcontrôleur PIC 16F876 .
Les PIC ont la possibilité souvent inutilisée de générer des signaux PWM . Le programme que je vous proposons ici décrit la façon de configurer un PIC 16F876 pour générer un signal PWM  utilisé pour fonctionner un moteur à courant continue.
Principe de fonctionnement :
La modulation de largeur d'impulsions (MLI ; en anglais : Pulse Width Modulation, soit PWM), est caractérisé par sa période et son rapport cyclique.
Le principe général est qu'en appliquant une succession d'états discrets pendant des durées bien choisies, on peut obtenir en moyenne sur une certaine durée n'importe quelle valeur intermédiaire.

Le 16F876  permet de définir la période du signal PWM. Celle-ci est détérminé par la valeur du registre PR2 et peut être calculée de la façon suivante:
Periode = (PR2+1) x 4 x Tosc x (TMR2 prescaler)
  • Tosc est la période de l'oscillateur, à 20 Mhz => 1/20000000 = 50 nS,

DESCRIPTION DU TIMER 2

Le timer 2 est identique sur le PIC® 16F87X . Il s'agit d'un timer 8 bits dont la description schématique est présentée maintenant.

Documentation interne du timer2
Sa seule entrée est l'entrée horloge du PIC® divisée par 4 suivie d'un pré-diviseur géré par deux bits. Un comparateur donne un signal qui sert de reset au timer2 et d'entrée à un post-diviseur capable de diviser par un nombre entre 1 et 16.







Pour obtenir une valeur différente de la période il suffit de modifier la valeur de PR2. La réduire permet d'obtenir une fréquence d'échantillonage plus rapide.
Le rapport cyclique peut être définit dans le 16F876 en fixant la valeur du registre CCPR1L. La documentation de MICROCHIP indique que le temps pendant lequel la sortie PWM est à 1 est codée sur 10 bits. Le poids faible de cette valeur est fixée par les 8 bits du registre CCPR1L et les 2 bits de poids fort sont les bits 4 et 5 du registre CCP1CON. Pour nos essais, nous avons mis les bits CCP1CON.4 et CCP1CON.5 à 0 et fait varier la valeur de CCPR1L de 0 à 77 et nous avons obtenu une rapport cyclique variant de 0 à 100%. Nous n'avons donc pu mettre en évidence le codage du rapport cyclique sur 10 bits.
La sortie du signal PWM du 16F876 se fait sur le port C.2, celui-ci doit être configuré en sortie pour permettre la génération du signal.



LCD :

Affichage du signal PWM (par Isis Proteuse):

 Moteur + circuit de commande :


 Choix du sens et controle de vitesse :

1 commentaires:

-->