Vous êtes sur la page 1sur 17

Tous les Cours 

| Les microcontrôleurs PIC | Les microcontrôleurs ATMEL AVR | Programmation en langage


Pascal (Mikropascal) |
Application en mikropascal : Porte automatique de garage | Programmation en langage C (Pic C Compiler PCWH) | Le
Bus I2C | Mémoires série 24C32 |
Tutorial Mikropascal | Tutorial Pic C Compiler | Tutorial Logipic | Tutorial Edit Algo | Tutorial IcProg |
Chapitre 2b
APPLICATION SUR LA PROGRAMMATION EN
MIKROPASCAL   
PORTE DE GARAGE AUTOMATIQUE   
 

Application réalisée par Mr ABIDI Hatem (ISET Nabeul) et introduite dans le


manuel de cours pour les élèves du BAC technologie pour plus d'informations
contactez moi sur le forum (Administrateur). Les schémas et les programmes sont
téléchargeables sur le site sous la page téléchargement. -->activités 4,5,6

Mise en situation :

  Présentation du système :Porte automatique

      

    L'ouverture et la fermeture automatique de la porte d'un garage d'automobile


sont assurées par un système technique comportant les éléments suivants :

1.    Télécommande à distance.

2.    Moteur à courant continu + réducteur.

3.    Carte de commande + pupitre.

4.    Lampe de signalisation.

5.    Antenne de réception.                                            

6.    Capteurs de fin de course.

1
Dans une première partie on va s'intéresser à la télécommande qui nous permet
de commander la porte à distance, le principe est basé sur l'émission d'un code
binaire sur dix bits [C0..C9] reconnaissable par la carte de commande de la porte.

 Ce code est composé de deux parties :

Ordre d'ouverture / Code d'identification de la télécommande


fermeture
C9 C8 C7 C6 C5 C4 C3 C2 C1 C0

Pour donner la possibilité à l'utilisateur d'adapter une nouvelle télécommande à la


porte du garage ou de la remplacer en cas de panne, le constructeur a prévu un
microswitch sur la télécommande qui nous permet de définir le code
d'identification. Celui-ci est généralement inscrit sur la carte de commande ou
donné dans le  manuel d'utilisation de la porte.

 Le code correspondant à l'ordre d'ouverture ou de fermeture de la porte (C9,C8)


est le suivant : (10 : ordre d'ouverture ; 11 : ordre de fermeture)

Le schéma de la télécommande est le suivant :

2
on suppose que le code inscrit sur la carte de commande de la porte est le
suivant :

 Colorer les positions du microswitch SW1 sur la figure suivante :

 Compléter les chronogrammes suivants :

Déterminer le rôle de l'algorithme suivant :

3
Algorithme test ;

Début

TRISAç $03;

TRISBç $FF;

POUR  i variant de 7 jusqu'a  0   FAIRE

              Début

                 SI  PortB.i =1 ALORS Porta.2 ç 1

                  SINON Porta.2 ç 0;

              Attente (10ms);

              Fin;

Fin.

Ecrire un algorithme pour la télécommande de la porte automatique de garage. 

1-    Création d'un projet sur Mikropascal : 

 Première étape : Edition du projet

Lancer l'application Mikropascal puis cliquer sur l'icône « nouveau projet »  ou
sélectionner le menu «  Project ànew Project »

 Deuxième étape :

Remplissez la boite de dialogue suivante avec des valeurs désirées.

4
     

 Troisième étape : Saisie du programme

 Lors de la fermeture de la fenêtre précédente on peut  écrire notre programme


sur  l'éditeur de code comme suit :

Saisir  le programme suivant :

program telecommande;

procedure trans_code;

var i : integer;

begin

for i:=7 downto 0 do

              begin

                   if  PortB.i =1 then setbit(porta,2)  else clearbit(porta,2); delay_ms(10);

              end;

end;

begin

5
trisA:=$03; trisB:=$FF;

while (1=1)

do

    begin

        PortA.2 :=0;

        if portA.0=1 then

                    begin

                    PortA.2 :=1;  delay_ms(20) ; trans_code;

                    end;

        if portA.1=1 then

                    begin

                     PortA.2 :=0;  delay_ms(10) ;  PortA.2 :=1; delay_ms(10) ;

                    trans_code;

                    end;

    end;

end.

·         Quatrième étape : Compilation

Après l'edition du programme on clique sur l'icône   ou sur le menu


« Projectàbuild »

             La barre de progrès vous informera au sujet du statut de compilation. S'il y
a des erreurs, on vous l'annoncera dans la fenêtre d'erreur

             Si aucune erreur n'est produite,le message suivant sera affiché et le fichier
télécommande.hex sera crée dans le répertoire de travail.

6
·         cinquième étape : Simulation

La simulation du programme peut se faire facilement avec le logiciel ISIS.

Charger le programme dans le microcontrôleur

7
NB: Si vous fermez l'oscilloscope pendant la simulation il n'apparaîtra pas lorsque
vous relancer la simulation une deuxième fois, il faut le supprimer et placer un
autre oscilloscope  

·         sixième étape : Chargement du programme dans le PIC16F84A

Lancer l'application IC-Prog   puis sélectionner le type du microcontrôleur et


enfin  charger le fichier télécommande.hex

8
Brancher le programmateur sur le port du PC puis placer le microcontrôleur et
lancer le chargement du programme.

·         septième étape : Test du fonctionnement.

Sur plaque d'essai câbler le schéma de la télécommande et vérifier le


fonctionnement par un oscilloscope.

I-         Application :

9
La carte de commande de la porte automatique est aussi construite à base du
microcontrôleur PIC16F84A. Elle contient les éléments suivants :

·         Un clavier matriciel 12 touches. Permettant à l'utilisateur d'ouvrir la porte en


introduisant un code de 4 chiffres manuellement.

·         Un module récepteur hybride HF. permettant la réception d'ordre d'ouverture


ou de fermeture de la télécommande à distance.

·         Des relais pour la commande du moteur et de la lampe.

Voici le schéma interne de la carte de commande :

Dans un premier lieu on s'intéressera à la commande par le clavier.

Schéma structurel d'un clavier 12 touches

Le principe de ce type de clavier est simple en effet l'appui sur une touche réalise
un contact direct entre la ligne et la colonne de cette touche.

10
Pour pouvoir lire une touche appuyée par le microcontrôleur on procède comme
suit :

On fait un balayage sur les colonnes c'est-à-dire on envoie les séquences


suivantes (100, 010, 001).

On lit l'état des lignes sur 4 bits (A, B, C, D)

On aura le tableau de correspondance suivant :

Séquence A B C D Touche appuyée


100 0 0 0 0 Aucune touche
1 0 0 0 T1
0 1 0 0 T4
0 0 1 0 T7
0 0 0 1 T10
010 0 0 0 0 Aucune touche
1 0 0 0 T2
0 1 0 0 T5
0 0 1 0 T8
0 0 0 1 T11
001 0 0 0 0 Aucune touche
1 0 0 0 T3
0 1 0 0 T6
0 0 1 0 T9
0 0 0 1 T12

On vous donne l'algorithme de lecture du clavier :

Algorithme clavier ;

Var T : octet ;

Début

Tç0 ;                                                 {Initialisation de la variable T}

TRISB ç $F1 ;             {RB1, RB2, RB3 : sorties ; RB4, RB5, RB6, RB7 : entrées}

TANQUE  (1=1)  FAIRE                                  {Boucle infinie}

Début

PortB ç (00000010)2 ;  Attente (10ms) ;              {Première séquence}

T ç PortB ; Tç T décalé à droite de 4 positions ;  {Lecture de RB4, RB5, RB6 et


RB7}

11
SI T=8 ALORS Tç10; SI T=4 ALORS Tç7; SI T=2 ALORS Tç4;

SI T=1 ALORS Tç1;               {codage}

SI T<> 0 ALORS Sortie ;          {sortie de la boucle si il y a appui sur une touche}

PortB ç (00000100)2 ; Attente (10ms) ;                          {Deuxième séquence}

T ç PortB ; Tç T décalé à droite de 4 positions ;  {Lecture de RB4, RB5, RB6 et


RB7}

SI T=8 ALORS T:=11 ; SI T=4 ALORS T:=8 ; SI T=2 ALORS T:=5 ;

SI T=1 ALORS T:=2 ;                                                                {codage}

SI T<> 0 ALORS Sortie ;                {sortie de la boucle si il y a appui sur une


touche}

 PortB ç  (00001000)2 ; Attente (10ms) ;                     {Troisième séquence}

T ç PortB ; Tç T décalé à droite de 4 positions ;  {Lecture de RB4, RB5, RB6 et


RB7}

SIT=8 ALORS T:=12 ; SI T=4 ALORS T:=9 ; SI T=2 ALORS T:=6 ;

SI T=1 ALORS T:=3 ;                                                      {codage}

SI T<> 0 ALORS Sortie ;       {sortie de la boucle si il y a appui sur une touche}

Fin ;

Fin.

1)  En vue de simuler le fonctionnement du clavier sur le logiciel ISIS, on réalise le


schéma suivant :

12
On vous donne le programme relatif à l'algorithme sous forme de procédure.

Compléter le programme suivant de sorte que le code de la touche appuyée soit


sorti sur le port A du microcontrôleur.

N'oublier pas de configurer les registres TRISA et TRISB du microcontrôleur.

Compiler le programme avec le logiciel Mikropascal puis simuler le fonctionnement


avec le logiciel ISIS. Vous pouvez aussi tester le fonctionnement sur plaque
d'essai.

program Telecommande;

var T: byte;

procedure clavier;

begin

while (true) do

13
         begin

         PortB:=%00000010 ; delay_ms(10) ; T :=PortB ; T:=(T shr 4);

         if T=8 then T:=10; if T=4 then T:=7; if T=2 then T:=4;

         if T<> 0 then exit ;

         PortB:=%00000100; delay_ms(10) ; T:=PortB ; T:=(T shr 4);

         if T=8 then T:=0 ; if T=4 then T:=8 ; if T=2 then T:=5 ;

         if T=1 then T:=2 ; if T<> 0 then exit ;

         PortB:=%00001000;  delay_ms(10) ; T:=PortB ; T:=(T shr 4);

         if T=8 then T:=12; if T=4 then T:=9 ;if T=2 then T:=6 ;

         if T=1 then T:=3 ; if T<> 0 then exit ;

         end;

end;

begin

T:=0 ;

TRISA:=…………;

TRISB:=………... ;

Porta:=0;

while (true) do

                     begin

                    clavier;

                   if t=11 then t:=0;

                    porta:=T;

                    end;

End.

14
2)   En vue de simuler le fonctionnement de la carte de commande, on simplifie la
commande par le clavier, au lieu que ce soit un code de 4 chiffres pour ouvrir la
porte on choisira la touche  " * ". La touche " # " aura pour rôle de fermer la porte.

On modifie le schéma de simulation comme suit :

Compléter les modifications apportées au programme principal et simuler le


fonctionnement

Begin

T:=0 ;

trisa:=%00011000;

TRISB:=$F1 ;

porta:=0;

while (true) do

begin

porta:=0;

clavier;

if (T=10) then while porta.3=0 do begin porta.0:=1;porta.2:=1; end;

if (T=12) then while porta.4=0 do begin porta.1:=1;porta.2:=1 end;

end;

end.

On remarque que le microcontrôleur se trouve toujours dans une boucle qui est :

·         La boucle de lecture du clavier.

15
  ou

·         La boucle de commande de la porte (ouverture ou fermeture)

Alors comment peut-on introduire dans ce programme une procédure qui répond
au code de la télécommande ? 

II-            Les interruptions

1-        D'après le schéma interne de la carte de commande de la porte du garage


on remarque que la réception du code transmit par la télécommande se fait sur la
broche RB0 alors :

·         Déduire le type de l'interruption utilisée dans le programme.

·         Trouver la valeur qu'on doit écrire dans le registre INTCON.

2-        Ajouter la procédure d'interruption suivante au programme de la carte de


commande. N'oublier pas de déclarer la variable "code" comme variable du
programme principal et affecter la valeur trouvée précédemment de INTCON juste
après la configuration des registres TRIS.

Procedure interrupt;

Begin

INTCON: = $00;

For i := 0 to 7 do

              Begin

                   If PortB.0 =1 then setbit(code,i)

                  else clearbit(code,i);

                  delay_ms(10);

              end;

INTCON := $90;

end;

3-        Compiler le programme et simuler le fonctionnement par le logiciel ISIS.

16
NB: relier la broche RA2 du microcontrôleur de la télécommande à la broche RB0
du microcontrôleur de la carte de commande de la porte pour simuler la
transmission du code.

Application réalisée par Mr ABIDI Hatem (ISET Nabeu)l et introduite dans le


manuel de cours pour les élèves du BAC technologie pour plus d'informations
contactez moi sur le forum (Administrateur). Les schémas et les programmes sont
téléchargeables sur le site sous la page téléchargement. -->activités 4,5,6

Révisé le :12-06-2008| © www.technologuepro.com

17

Vous aimerez peut-être aussi