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.
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 :
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 :
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 :
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 »
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.
· cinquième étape : Simulation
La simulation du programme peut se faire facilement avec le logiciel ISIS.
Charger le programme dans le microcontrôleur
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
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 :
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.
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 :
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 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 :
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.
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