24
Chapitre 5: Applications des microprocesseurs et microcontrôleurs 1 5.1- Introduction Dans ce cinquième chapitre nous allons aborder : i) Interface : LCD ii) Moteur- Contrôle ; iii) Génération de signaux des ports pour convertisseurs iv) Contrôle des appareils DC/AC ; v) Mesure de la fréquence et vi) Système d'acquisition de données 5.2- Interface : PIC-LCD 5.2.1- Définitions a) Etat de cristal liquide Les cristaux liquides sont caractérisés par un état intermédiaire entre la phase cristalline, où règne un ordre de position tridimensionnel et la phase liquide où aucun ordre n’existe. Grâce à leur ordre de position partiel (dimension 1 ou 2), les cristaux liquides possèdent les propriétés d'être dépendant de la direction (anisotropie) des cristaux tout en ayant un aspect fluide. b) Dipôle électrique Les cristaux liquides sont, généralement, constitués de molécules (molécules organiques). Les molécules, globalement neutres, peuvent posséder un moment dipolaire ce qui permet de les assimiler à un dipôle électrique permanent. c) Constituants d’une cellule Entre deux plaques de verres collées, une cavité de quelques dizaines microns d’épaisseur est remplie de cristaux liquides dans la phase nématique (la plus employée pour les applications en électronique. Elle est caractérisée par l’absence d’ordre de position. Seul un ordre d’orientation est présent et une direction moyenne est définie) Toutes les molécules sont orientées localement dans la même direction. Elles sont parallèles aux surfaces de la cavité, qui leur imposent de plus un axe préférentiel grâce au dépôt d’une couche de polymères qui sont striés dans une direction. Les deux surfaces imposent des directions perpendiculaires de sorte que l’orientation locale des molécules est forcée de tourner de façon continue de 90° à l’intérieur de la cellule. On dit que le liquide nématique est twisté. d) Fonctionnement Pour un ensemble de segments de cristaux liquides : - Lorsqu'ils ne sont pas dans un champ électrique, les cristaux sont organisés selon un modèle aléatoire.

Chapitre 5: Applications des microprocesseurs et

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Chapitre 5: Applications des microprocesseurs et

Chapitre 5: Applications des microprocesseurs et microcontrôleurs

1

5.1- Introduction Dans ce cinquième chapitre nous allons aborder :

i) Interface : LCD ii) Moteur- Contrôle ; iii) Génération de signaux des ports pour convertisseurs iv) Contrôle des appareils DC/AC ; v) Mesure de la fréquence et vi) Système d'acquisition de données

5.2- Interface : PIC-LCD 5.2.1- Définitions

a) Etat de cristal liquide Les cristaux liquides sont caractérisés par un état intermédiaire entre la phase cristalline, où règne un ordre de position tridimensionnel et la phase liquide où aucun ordre n’existe. Grâce à leur ordre de position partiel (dimension 1 ou 2), les cristaux liquides possèdent les propriétés d'être dépendant de la direction (anisotropie) des cristaux tout en ayant un aspect fluide.

b) Dipôle électrique Les cristaux liquides sont, généralement, constitués de molécules (molécules organiques). Les molécules, globalement neutres, peuvent posséder un moment dipolaire ce qui permet de les assimiler à un dipôle électrique permanent.

c) Constituants d’une cellule Entre deux plaques de verres collées, une cavité de quelques dizaines microns d’épaisseur

est remplie de cristaux liquides dans la phase nématique (la plus employée pour les applications en électronique. Elle est caractérisée par l’absence d’ordre de position. Seul un ordre d’orientation est présent et une direction moyenne est définie)

Toutes les molécules sont orientées localement dans la même direction. Elles sont parallèles aux surfaces de la cavité, qui leur imposent de plus un axe préférentiel grâce au dépôt d’une couche de polymères qui sont striés dans une direction. Les deux surfaces imposent des directions perpendiculaires de sorte que l’orientation locale des molécules est forcée de tourner de façon continue de 90° à l’intérieur de la cellule. On dit que le liquide nématique est

twisté.

d) Fonctionnement Pour un ensemble de segments de cristaux liquides : - Lorsqu'ils ne sont pas dans un champ électrique, les cristaux sont organisés selon un

modèle aléatoire.

Page 2: Chapitre 5: Applications des microprocesseurs et

Chapitre 5: Applications des microprocesseurs et microcontrôleurs

2

- Quand un champ électrique est appliqué, les cristaux

s'alignent sur le champ - Les cristaux eux-mêmes n'émettent pas de lumière, de

la lumière qui peut passer à travers eux. - Les cristaux alignés perpendiculaire à une source de

lumière empêchera la lumière de passer à travers eux. - Une source de lumière (rétroéclairage) est nécessaire

pour conduire la lumière à travers le champ de cristal aligné.

Les afficheurs LCD sont des modules compacts

intelligents et nécessitent peu de composants externes pour un bon fonctionnement. Ils sont relativement bons marchés et s'utilisent avec beaucoup de facilité.

Plusieurs afficheurs sont disponibles sur le marché et

ne diffèrent les uns des autres, non seulement par leurs dimensions, (de 1 à 4 lignes de 6 à 80 caractères), mais aussi par leurs caractéristiques techniques et leurs tensions de service. Certains sont dotés d'un rétro éclairage de l'affichage. Cette fonction fait appel à des LED montées derrière l'écran du module, cependant, cet éclairage est gourmand en intensité (250 mA max.). 5.2.2- Schéma fonctionnel interne et connexion

Comme le montre, le schéma fonctionnel, le système LCD-affichage comporte d'autres composants que l'afficheur à cristaux liquides (LCD) seul. Un circuit intégré de commande spécialisé, le LCD-controller, est chargé de la gestion du module. Le "contrôleur" remplit une double fonction : d'une part il commande l'affichage et de l'autre se charge de la communication avec l'extérieur.

Page 3: Chapitre 5: Applications des microprocesseurs et

Chapitre 5: Applications des microprocesseurs et microcontrôleurs

3

Les connexions à réaliser sont simples puisque l'afficheur LCD dispose de peu de broches. Il

faut, évidement, l'alimenter, le connecter à un bus de donnée (4 ou 8 bits) d'un microprocesseur, et connecter les broches Enable (validation), Read/Write (écriture/lecture) et Register Select (instruction/commande).

Description des différentes broches

1 à 8 : D7 à D0 : Bus de donnés bidirectionnel 3 états (Haute impédance lorsque E=0)

9 : E : Entrée de validation (ENABLE); elle est active sur front descendant. Il est important ici de tenir compte des 2 seuils durées de commutation importantes en pratique: lorsque RS et R/ ont atteint un niveau stable, il doit se passer un intervalle de 140 ns minimum avant que la ligne "E" ne passe au niveau haut. Cette ligne doit ensuite, être maintenue à ce niveau pendant 450 ns au moins et les données doivent rester tables sur le bus de données jusqu'au début du flanc descendant de ce signal. Lorsque E=0 les entrées du bus de l'afficheur sont à l'état haute impédance.

10 : R/ : Lecture ou écriture.(READ/WRITE)

Lorsque R/ est au niveau bas, l'afficheur est en mode "écriture", et lorsque R/ est au niveau haut, l'afficheur est en mode "lecture".

Page 4: Chapitre 5: Applications des microprocesseurs et

Chapitre 5: Applications des microprocesseurs et microcontrôleurs

4

11 : RS: Sélection du registre.(REGISTER SELECT)Grâce à cette broche, l'afficheur est capable de faire la différence entre une commande et une donnée. Un niveau bas indique une commande et un niveau haut indique une donnée.

12 : VLC : Cette tension permet le réglage du contraste de l'afficheur. C'est une tension négative et tournant autour de -1,5 V.(selon l'angle de visualisation)

13 : VDD : + 5 V

14 : VSS : Masse.

NB : Voir l’annexe pour Le contrôleur LCD HD44780 5.2.3- Brochage et programmation 5.2.3.1- Schéma fonctionnel PIC-LCD 5.2.3.2- Programmation en Mikroc du PIC-LCD La programmation en assembleur d'un écran LCD en mode parallèle ou en série est généralement une tâche complexe et nécessite d’une bonne compréhension du fonctionnement interne de l'écran LCD. La langue MikroC fournit des fonctions pour les deux modes de programmation basée sur le texte déjà préparé, ce qui simplifie l'utilisation d'écrans LCD :

Page 5: Chapitre 5: Applications des microprocesseurs et

Chapitre 5: Applications des microprocesseurs et microcontrôleurs

5

Lcd_Config Lcd_Init Lcd_Out Lcd_Out_Cp Lcd_Chr Lcd_Chr_Cp Lcd_Cmd

Lcd_Config

La fonction Lcd_Config est utilisée pour configurer l'interface LCD. La connexion par défaut entre le LCD et le microcontrôleur est la suivante :

LCD Patte du port de microcontrôleurs FR → 3 D4 → 4 D5 → 5 D6 → 6 D7 → 7

La patte R / W de l'écran n'est pas utilisé et doit être reliée à la masse. Cette fonction devrait

être utilisée pour modifier la connexion par défaut. Il devrait être appelé avec les paramètres dans l'ordre suivant :

nom de port, RS patte, EN patte, R/W patte, D7 patte, D6 patte, D5 patte, D4 patte

Le nom du port doit être spécifié en passant son adresse. Par exemple, si RS patte

est connectée à RB0, EN patte à RB1, D7 patte à RB2, D6 patte à RB3, D5 patte à RB4, et D4 patte à RB5, alors la fonction doit être appelée comme suit : Lcd_Init

La fonction Lcd_Init est appelée pour configurer l'interface entre le microcontrôleur et l'écran LCD lorsque les connexions sont faites par défaut que vient d'être illustré. Le nom du port doit être spécifié en passant son adresse. Par exemple, en supposant que LCD est reliée à PORTB et les connexions par défaut précédentes sont utilisées, la fonction doit être appelée en tant que:

Lcd_Init();

Lcd_Out La fonction Lcd_Out affiche du texte à la ligne indiquée et la position des

colonnesde l'écran LCD. La fonction doit être appelée avec des paramètres dans l'ordre suivant : ligne, colonne, texte Par exemple, pour afficher du texte "Ordinateur" à la ligne 1 et la colonne 2 de l'écran LCD nous devrions appeler la fonction comme suit :

Lcd_Out (1, 2, "Ordinateur");

Lcd_Out_Cp La fonction Lcd_Out_Cp affiche le texte à la position actuelle du curseur.Par

exemple, pour afficher le texte "Ordinateur" à la position actuelle du curseur, la fonction devrait être appelé en tant que :

Lcd_Out_Cp ("Ordinateur");

Page 6: Chapitre 5: Applications des microprocesseurs et

Chapitre 5: Applications des microprocesseurs et microcontrôleurs

6

Lcd_Chr La fonction Lcd_Chr affiche un caractère à la ligne indiquée et la colonne la position du

curseur. La fonction doit être appelée avec les paramètres dans le l'ordre suivant : ligne, colonne, caractère

Par exemple, pour afficher caractère "K" à la ligne 2 et la colonne 4 de l'écran LCD nous devrions appeler la fonction de :

Lcd_Chr(2, 4, ‘K’);

Lcd_Chr_Cp La fonction Lcd_Chr_Cp affiche un caractère à la position actuelle du courser. Par exemple,

pour afficher le caractère "M" à la position actuelle du curseur, la fonction doit être appelée en tant que :

Lcd_Chr_Cp ('M');

Lcd_Cmd La fonction Lcd_Cmd est utilisée pour envoyer une commande à l'écran LCD. Avec

ce commande, nous pouvons déplacer le curseur vers n'importe quelle ligne, désactiver l'écran LCD, faire clignote le curseur, décaler l'affichage, etc. Une liste des plus couramment utilisés commandes LCD est donnée dans Tableau 3.4. Par exemple, pour effacer l'écran LCD nous devrions appeler la fonction comme suit :

Lcd_Cmd (Lcd_Clear);

Page 7: Chapitre 5: Applications des microprocesseurs et

Chapitre 5: Applications des microprocesseurs et microcontrôleurs

7

Un exercice ci-dessous illustre l'initialisation et l'utilisation de l'écran LCD, où un contrôleur

de texte LCD est relié à un microcontrôleur PIC16F887 dans le mode par défaut comme illustre la figure précédente.

Ecrire un programme pour envoyer le texte Mon Ordinateur à la ligne 1, à la colonne 4 de l’écran LCD.

Le programme est donné dans le code-source suivant, où : Au début le PORTB est configuré en sortie par la déclaration TRISB = 0. L'écran LCD est alors initialisé, l'affichage est effacé, et le texte (AFFICHAGE et display_LCD_4bit) est affiché sur l'écran LCD.

Code source /****************************************************************************

REDACTION D'UN TEXTE A L’ECRAN LCD ==================================

Un contrôleur de texte LCD est relié à un microcontrôleur PIC dans le mode (4,5,3,2,1,0). Ce programme affiche les textes "AFFICHAGE" sur la 1 ère ligne et ”display_LCD_4bit” sur la 2ème ligne d'écran LCD. Microcontrôleur: 16F887 Oscillateur: HS, 10.0000 Mhz Compilateur: microC PRO v.1.56 Fichier: LCD.c Date: Juillet 2016 ***************************************************************************/ // Connections de LCD sbit LCD_RS at RB4_bit; sbit LCD_EN at RB5_bit; sbit LCD_D4 at RB0_bit; sbit LCD_D5 at RB1_bit; sbit LCD_D6 at RB2_bit; sbit LCD_D7 at RB3_bit; sbit LCD_RS_Direction at TRISB4_bit; sbit LCD_EN_Direction at TRISB5_bit; sbit LCD_D4_Direction at TRISB0_bit; sbit LCD_D5_Direction at TRISB1_bit; sbit LCD_D6_Direction at TRISB2_bit; sbit LCD_D7_Direction at TRISB3_bit; // Fin de connections void main() { C1ON_bit = 0; C2ON_bit = 0; TRISB = 0; PORTB = 0xFF; TRISB = 0xff;

/* Configurer E/S du portB comme numériques*/ ANSELH = 0;

Page 8: Chapitre 5: Applications des microprocesseurs et

Chapitre 5: Applications des microprocesseurs et microcontrôleurs

8

ANSEL = 0; Lcd_Init(); // Initialiser LCD Lcd_Cmd(_LCD_CLEAR); // Effacer un texte sur l’ecrant LCD Lcd_Cmd(_LCD_CURSOR_OFF); // Curseur est en off Lcd_Out(1,2,"-- AFFICHAGE -- "); // Ecrire le texte sur la 1ère ligne Lcd_Out(2,1,"display_LCD_4bit"); // Ecrire le texte sur la 2ème ligne

} 5.3- Moteur- Contrôle

NB : Pour la commande des moteurs pas à pas, voir CH2, CH3 et CH4. 5.3.1- Entraînement d’un MCC

5.3.1.1- Schémas de principe

Entraîner un moteur DC, ou CC dans les deux sens exige la

présence d’un pont en H, car la connexion directe d’un moteur au

microcontrôleur n‘est pas possible à cause de beaucoup de choses, à

savoir : le courant demandé, BEMF, etc… Le schéma de principe du

pont H est donné par :

Le principe de fonctionnement de ce pont en H c’est que les interrupteurs fonctionnent deux par deux. Le A est associé au D et le B est associé au C. Dans le schéma ce, rien ne se passe car tous les interrupteurs sont ouverts. Le moteur est arrêté. Lorsqu'on actionne en même temps les interrupteurs A et D (schéma de gauche), ou les interrupteurs B et C (schéma de droite) : le moteur tourne dans un sens ou dans le sens inverse.

Page 9: Chapitre 5: Applications des microprocesseurs et

Chapitre 5: Applications des microprocesseurs et microcontrôleurs

9

Reste à protéger les interrupteurs du BEMF (tensions de retours) avec les diodes placées au bon endroit (diodes anti retours ou diodes roues libre):

Pont en H : 4 Transistors NPN, 4 Diodes et 2 Entrées deux à deux

5.3.1.2- Circuits intégrés (CI) double ponts en H

Il existe des CI qui servent de pont en H, exemple la L293D. Le pont en H L293 et la L293D sont les plus utilisés. Le D signifie diodes. Ce sont les diodes roues libre qui protègent les transistors. La différence entre la L293 et la L293D est donc simple : la L293 ne contient pas de diodes roues libres.

NB :

Dans nous applications, nous utiliserons la L293D car cela nous évite de régler nous-mêmes le problème des diodes.

A partir du DATASHEET, nous observons, que le document s'appelle "quadruple half-H driver" qu'on peut traduire par "pilote de quadruple demi-pont en H". Donc double pont en H. Alors pourquoi ce nom de quadruple? Tout simplement parce qu’avec ce circuit, nous pouvons piloter un moteur dans un sens à l’aide d’un demi-pont, soit 4 moteurs en sens unique, ou 2 moteurs dans les deux sens. Les caractéristiques principales sont résumes dans :

Page 10: Chapitre 5: Applications des microprocesseurs et

Chapitre 5: Applications des microprocesseurs et microcontrôleurs

10

NB :

Les tabes de vérités suivantes doivent être pris en considération pour en avoir une rotation donnée : Vérifier les dans le TP5

Page 11: Chapitre 5: Applications des microprocesseurs et

Chapitre 5: Applications des microprocesseurs et microcontrôleurs

11

5.3.1.3- Commande d’un moteur DC par un microcontrôleur (16F887)

a) Schéma de principe (Proteus)

Où on observe, que : i- La broche Vss et EN1 sont toujours au niveau 1 ; ii- Vs sur 12V ; iii- IN1 et IN2 sont alterner entre 1 et 0 (ou 3).

b) Programme en Mikroc void main() { ANSEL = ANSELH 0; // To turn off analog to digital converters C1ON_bit = C2ON_bit = 0; // To turn off comparators TRISB = 0; // PORT B as output port PORTB = 1; // Set RB0 to high while(1) { //To turn motor clockwise PORTB.F0 = 1; Delay_ms(2000); // 2 seconds delay //To Stop motor PORTB = 0; // or PORTB = 3 (3 = 0b00000011) Delay_ms(2000); // 2 seconds delay //To turn motor anticlockwise direction PORTB.F1 = 1; Delay_ms(2000); // 2 seconds delay

Page 12: Chapitre 5: Applications des microprocesseurs et

Chapitre 5: Applications des microprocesseurs et microcontrôleurs

12

//To Stop motor PORTB = 0; // or PORTB = 3 (3 = 0b00000011) Delay_ms(2000); // 2 seconds delay } }

Alors, le moteur tourne ‘clockwise’ pendent 2sec puis il s’arrête 2sec ensuite il tourne sens inverse ‘anticlockwise’ 2sec et s’arrête 2sec, et le cycle se répète. Vérifier le dans le TP5

EXERCICE TP5 Reprendre l’application précédente ; de laquelle on demande de développer deux applications :

a) Insertion deux boutons poussoirs pour commander la rotation et la rotation inverse b) En plus des deux boutons poussoirs, insertion d’un afficheur LCD indiquant les deux directions

de rotation. Où les schémas des applications sont donnés par ;

5.4- Génération de signaux des ports pour convertisseurs ML

Dans les chapitres précédents, CH2CH4, on abordé la génération des différents types de

signaux (numérique, analogique), mais on n’a pas cité le signal MLI (PWM), en tant fréquence et rapport cyclique. Dans cette partie, nous allons voir comment petons nous l’obtenir à partir du module PWM/CCP1/CCP2 du MC16F887.

5.4.1- Génération d’un signal MLI (PWM)

Principe de l’MLI/applications

Une vitesse (w) d’un moteur CC

commandé ou d’un éclairage réglé d’une

lampe, etc.. sont des fonction de la

tension moyenne reçue d’une source à

découpage (Fig. 3.3a .3.3b, en bas).

Une tension hachée (par un hacheur) ou

découpée peut être produite des sorties

du PIC16f887 désignées par RC2/CCP1, RC1/CCP2, etc..

Page 13: Chapitre 5: Applications des microprocesseurs et

Chapitre 5: Applications des microprocesseurs et microcontrôleurs

13

A titre d’exemple, si on veut entraîner un moteur à courant continu (MCC) avec un demi-pont, bien sûre avec deux sources de tension, le schéma principe de ce système d’entraînement est donné sur la Fig. 3.4, où l’amorçage deux interrupteurs MOSFET est obtenu des broches RC2/P1A et RC2/P1B. A noter qu’il est très dangereux de fermer les deux MOSFET en même temps court-circuit sur des circuit d’amorçage. Pour cette raison, toujours en trouve un retard td entre les deux états : fermeture ‘ on’ et ouverture ‘off’, comme le montre la figure suivante.

Il est possible d’utiliser le même schéma de principe précédent pour réaliser un système

d’entraînement de quatre quadrants ou en pont complet, seulement des inverseurs de signes. Puisque le PIC16F887 possède 4 sorties PWM, on peut les utiliser pour alléger la demande du courant qui ne doit pas dépasser 20mA.

Schéma de principe d’un demi-pont entraînent un MCC

MCC Charge

Système d’entraînement à quatre quadrants

Page 14: Chapitre 5: Applications des microprocesseurs et

Chapitre 5: Applications des microprocesseurs et microcontrôleurs

14

PWM : Hardware et software Hardware

On ne trouve pas des broches sur le PIC16f887 nommés PWM. On a vue dans les cours précédents (architecture du PIC16f887) qu’il y a un module responsable de ça désigné par CCP/PWM (Figure 3.9). Les 4 sorties de ce module sont indiquées par RC2/P1A, RC1/P1B, etc.. (. Software

Quatre routines (fonctions), de mikroc, peuvent nous aider à générer des signaux MLI (PWM). Ces routines sont gérées par la fonction PWM qu’on trouve dans le manager des fonctions de bibliothèque:

1- PWM1_Init

RC2/P1A

RD7/P1D

Entraînement à 4 quadrants par le biais des 4 broches : P1A….P1D

Module CCP/PWM

Sorties MLI : P1A…P1D du module CCP/PWM

Page 15: Chapitre 5: Applications des microprocesseurs et

Chapitre 5: Applications des microprocesseurs et microcontrôleurs

15

2- PWM1_Set_Duty 3- PWM1_Start 4- PWM1_Stop

L’utilisation de ces routines est mieux expliquée par des exemples Exemple 1 (TP5) intégrer le HEX du programme dans le schéma Protus et déduire le but du programme

Exercice1: TP5 Après une bonne lecture de ce programme :

1- déduire la tâche de ce programme 2- pour quel schéma de principe est utile ce programme pour entraîner une charge en boucle

ouverte 3- Suggérer un montage qu’on peut réaliser en TP5 4- Tracer le son schéma Proteus et confirmer sa tâche déduite.

unsigned short current_duty, old_duty; // Définition des variables // current_duty et old_duty void initMain() {

ANSEL = 0; // Tous les A/D sont configures comme des E/S numériques ANSELH = 0; PORTA = 255; // Initialisation du PORTA à 255 TRISA = 255; // Tous les broches du port A sont des entrées PORTB = 0; // Initialisation du PORTB à 0 TRISB = 0; // Tous les broches du port A sont des sorties PORTC = 0; // Initialisation du PORTC à 0 TRISC = 0; // Tous les broches du port A sont des sorties PWM1_Init(5000); // Initialisation du module MLI (PWM) à 5KHz

} void main() {

initMain(); current_duty = 16; // Initialisation de la variable ‘ current_duty’ old_duty = 0; // mise à zéro de la variable ‘ old_duty’

Page 16: Chapitre 5: Applications des microprocesseurs et

Chapitre 5: Applications des microprocesseurs et microcontrôleurs

16

PWM1_Start(); Activation du module PWM1 while (1) {

if (Button(&PORTA, 0,1,1)) // Si le bouton connecté à RA0 est poussé current_duty++ ; // incrémentation de la variable current_duty if (Button(&PORTA, 1,1,1)) //Si le bouton connecté à RA1 est poussé current_duty-- ; // décrémentation de la variable current_duty if (old_duty != current_duty) // Si ‘ current_duty’ # de ‘ old_duty’ { PWM1_Set_Duty(current_duty); // Met la valeur de PWM égale à la //valeur nouvelle, old_duty = current_duty; // Sauvegarde la valeur nouvelle PORTB = old_duty; // puis montrer la sur le port B

} Delay_ms(200); // un retard de 200mS } }

On observe de ce programme l’utilisation de 3 routines de la fonction PWM : PWM1_Init(),

PWM1_Start( ) et PWM1_Set_Duty( ) ; et bien sûre la fonction Button( ).

Remarque : Quelques MCs possèdent plus d’un module PWM, donc les routines précédentes s’écrivent : PWMx_Init(), PWMx_Set_Duty( ), PWMx_Start( ) et PWMx_Stop( ) ; où x 1 et 2 (voir ton compilateur Mikroc). Syntaxes des routines de la function PWM La syntaxe nous donne la forme générale de la structure d’une fonction (routine) Elle nous permet de l’utiliser d’une manière correcte et efficace. 1- syntaxe de PWM1_Init() void PWM1_Init(long freq);

Elle initialise le module PWM par ‘freq’ en Hz. Elle est appelée avant l’utilisation de

n’importe quelles autres fonctions Exemple PWM1_Init(5000); // Initialisation du module MLI (PWM) à 5KHz 2- syntaxe de PWM1_ Set_Duty() void PWM1_Set_Duty(unsigned short duty_ratio);

Page 17: Chapitre 5: Applications des microprocesseurs et

Chapitre 5: Applications des microprocesseurs et microcontrôleurs

17

Introduit le rapport cyclique ‘duty_ratio’, qui prend les valeurs de 0 à 255 ; où 0 correspond à 0%, 127 correspond à 50% et 255 correspond à 100%. Les autres valeurs du rapport cyclique peuvent être calculées par :

duty_ratio = (Percent*255)/100 Exemple: 75% du ‘duty_ratio’ correspond à 75*255/100= 191.2500 ≈ 192 3- PWMx_Start( ) void PWM1_Stop(void);

Elle fait en marche le module PWM Remarque : Toutes ces routines ne renvoient pas de valeurs void et cette dernière ne demande pas de valeur comme argument. Exercice2: TP5

Après une bonne lecture de ce programme : 1- déduire la tâche de ce programme 2- pour quels schémas de principe est-il utile ce programme pour entraîner une charge en

boucle ouverte. 3- En TP5, confirmer le fonctionnement de ce programme par:

a) Schéma Proteus de la Figure en bas b) Schéma Proteur (a) avec deux moteurs DC

unsigned short current_duty, old_duty, current_duty1, old_duty1; void InitMain() {

ANSEL = 0; // Tous les A/D sont configures comme des E/S numériques ANSELH = 0; PORTA = 255; // Initialisation du PORTA à 255 TRISA = 255; // Tous les broches du port A sont des entrées PORTB = 0; // Initialisation du PORTB à 0 TRISB = 0; // Tous les broches du port A sont des sorties PORTC = 0; // Initialisation du PORTC à 0 TRISC = 0; // Tous les broches du port A sont des sorties PWM1_Init(5000); // Initialisation du module 1 MLI (PWM) à 5KHz PWM2_Init(5000); // Initialisation du module 2 MLI (PWM) à 5KHz

} void main() {

initMain(); current_duty = 16; // Initialisation de la variable ‘ current_duty’ 41% current_duty1 = 16; // Initialisation de la variable ‘ current_duty’41% PWM1_Start(); Activation du module PWM 1 PWM2_Start(); // Activation du module PWM 2 PWM1_Set_Duty(current_duty); // mise du rapport cyclique ‘current_duty’ pour PWM 1 PWM2_Set_Duty(current_duty1); // mise du rapport cyclique ‘current_duty’ pour PWM 2 while (1) {

Page 18: Chapitre 5: Applications des microprocesseurs et

Chapitre 5: Applications des microprocesseurs et microcontrôleurs

18

if (RA0_bit) // Si le bouton de RA0 est poussé {

Delay_ms(40); current_duty++; // incrémentation de ‘current_duty’ PWM1_Set_Duty(current_duty);

} if (RA1_bit) Si le bouton de RA1 est poussé {

Delay_ms(40); current_duty--; // décrémentation de ‘current_duty’ PWM1_Set_Duty(current_duty);

} if (RA2_bit) Si le bouton de R21 est poussé {

Delay_ms(40); current_duty1++; // incrémentation de ‘current_duty1’ PWM2_Set_Duty(current_duty1);

} if (RA3_bit) Si le bouton de RA3 est poussé {

Delay_ms(40); current_duty1--; // décrémentation de current_duty1 PWM2_Set_Duty(current_duty1);

}

Delay_ms(5); // ralentir un peu le change de la vitesse }

}

Exercice 3TP5 (Mêmes questions que l’EXO1)

Pour un profile infini de changement des effets PWM

unsigned short current_duty, i; // Définition des variables current_duty et i void initMain() { ANSEL = 0; // Tous les A/D sont configures comme des E/S numériques ANSELH = 0; PORTA = 255; // Initialisation du PORTA à 255 TRISA = 255; // Tous les broches du port A sont des entrées PORTB = 0; // Initialisation du PORTB à 0 TRISB = 0; // Tous les broches du port A sont des sorties PORTC = 0; // Initialisation du PORTC à 0

Page 19: Chapitre 5: Applications des microprocesseurs et

Chapitre 5: Applications des microprocesseurs et microcontrôleurs

19

TRISC = 0; // Tous les broches du port A sont des sorties PWM1_Init(5000); // Initialisation du module MLI (PWM) à 5KHz } void main() { initMain(); current_duty = 16; // Initialisation de la variable ‘ current_duty’ PWM1_Start(); Activation du module PWM1 while (1) { For(i=0 ; i<=255, i=i+25) { current_duty = current_duty + i; // incrémentation de la variable current_duty PWM1_Set_Duty(current_duty); // Met la valeur de PWM égale à la valeur nouvelle, Delay_ms(40); } PWM1_Set_Duty(current_duty); // Met la valeur de PWM égale à la valeur nouvelle, Delay_ms(100); For(i=254 ; i>0, i=i-25) { current_duty = current_duty - i; // incrémentation de la variable current_duty PWM1_Set_Duty(current_duty); // Met la valeur de PWM égale à la valeur nouvelle, Delay_ms(40); } Delay_ms(200); // un retard de 200mS } }

5.5- Contrôle des appareils DC/AC

Page 20: Chapitre 5: Applications des microprocesseurs et

Chapitre 5: Applications des microprocesseurs et microcontrôleurs

20

Page 21: Chapitre 5: Applications des microprocesseurs et

Chapitre 5: Applications des microprocesseurs et microcontrôleurs

21

5.6- Mesure de la fréquence

Page 22: Chapitre 5: Applications des microprocesseurs et

Chapitre 5: Applications des microprocesseurs et microcontrôleurs

22

5.7- Système d'acquisition de données

Page 23: Chapitre 5: Applications des microprocesseurs et

Chapitre 5: Applications des microprocesseurs et microcontrôleurs

23

Annexe

Le HD44780 est l'un des contrôleurs de cristaux liquides les plus appréciés, étant utilisé dans l'industrie et dans les applications commerciales. Le module est monochrome et vient dans différentes formes et tailles. Des modules avec 8, 16, 20, 24, 32 et 40 caractères sont disponibles. Selon le modèle, l'écran LCD est fabriqué avec 14 ou 16 pattes pour l'interface.

Le tableau en bas présente la configuration des pattes et les fonctions des pattes d’un LCD à 14 pattes. La patte VSS est à 0V ou du sol. La patte VDD doit être connectée à la borne positive d’alimentation. Bien que les fabricants spécifient une alimentation 5V DC, les modules travaillent habituellement aussi avec une alimentation un peu bas que 3V ou aussi haut que 6V.

La patte 3 VEE est désigné pour réglage du contraste de l'affichage et doit être reliée à une

alimentation en courant continu. Un potentiomètre est généralement connecté à l'alimentation avec son curseur raccordé à la patte VEE et l'autre patte du potentiomètre relié à la masse. De cette façon la tension à la patte VEE, et où le contraste de l'affichage, peut être réglée à volonté.

La patte 4 est le registre de sélection (RS) et lorsque cette patte à 0 V, les données sont transférés à l'affichage à cristaux liquides. Lorsque RS est à +5 V, les données de caractères peuvent être transférés à partir du module LCD.

La patte 5 est le registre de sélection de lecture / écriture (R / W). Cette patte est reliée avec la masse (état logique bas) afin d'écrire des données de caractères au module LCD. Lorsque cette broche est à +5 V (états logique haut) donc les informations sortants du module LCD peuvent être lues.

La patte 6 est la validation (EN), qui est utilisé pour initier le transfert de commandes ou de données entre le module et le microcontrôleur. Lors de l'écriture à l'écran, les données sont transférées uniquement sur le front descendant (haut-bas) sur cette patte. Lors de la lecture de

Page 24: Chapitre 5: Applications des microprocesseurs et

Chapitre 5: Applications des microprocesseurs et microcontrôleurs

24

l’affichage, les données deviennent accessibles après le front montant (bas-haut) de la patte de validation, et ces données demeurent tant que la patte de validation est au niveau logique haut.

Les broches 7 à 14 sont les huit lignes de bus de données (D0 à D7). Les données peuvent être transférées entre le microcontrôleur et le module LCD à l'aide soit d'un seul octet de 8 bits soit de deux 4-bits. Dans ce dernier cas, seuls les quatre lignes de données supérieures (D4 à D7) sont utilisées. Le 4-bits mode a l'avantage de nécessiter moins de lignes d'E / S pour communiquer avec l'écran LCD.