APPLICATION SUR LA PROGRAMMATION EN MIKROPASCAL
PORTE DE GARAGE AUTOMATIQUE

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

images1      images

    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.

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 / fermeture

Code d'identification de la télécommande

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 :

circuit1

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

circuit2

chrono

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

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.

     

  • 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 :

prog

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  
         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 »

projet

             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.

prog1

·         cinquième étape : Simulation

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

schema

Charger le programme dans le microcontrôleur

projet

anim

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

icprog3 icprog2


Lancer l'application IC-Prog icprog5 puis sélectionner le type du microcontrôleur et enfin  charger le fichier télécommande.hex

 

icprog1

icprog4


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.

LAB_COMP

I-         Application :

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 :

comm

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

clav

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.

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 <=0 $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}
    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}
    SI T=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 :

circuit4


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.

PH_MAT

program Telecommande;

var T: byte;

procedure clavier;

begin

while (true) do

         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.

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 :

circuit5

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.

  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.

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.

Image25.TIF

Les schémas et les programmes sont téléchargeables sur le site sous la page téléchargement. -->activités 4,5,6

application exercice porte de garage automatique Mikropascal microcontrôleur PIC programmation compilateur grafcet équation interruption registre programme algorithme

Révisé le :19-11-2017 www.technologuepro.com Facebook Twitter RSS