Upload
duongminh
View
220
Download
6
Embed Size (px)
Citation preview
Laboratoire génie électrique 4Stech Série d’exercices N°5 PIC Page 1 /14
Prof : Borchani hichem et Hammami mourad
Exercice N°1 On désire programmer les équations suivantes par un PIC 16F84A
On donne le tableau d’affectation des entrées et de sorties :
1°) compléter le tableau suivant par : Entrée « E », sortie « S », Non connecté « NC » :
Affectation des entrées Affectation des sorties
Entrées Entrées PIC Sorties Sorties PIC
A RA0 S1 RB0 B RA1 S2 RB1 C RA2 S3 RB2
D RA3 S4 RB3 S5 RB4
PORT A PORT B RA0 RB0 RA1 RB1 RA2 RB2 RA3 RB3 RA4 RB4
RB5 RB6 RB7
Opérateur Opération
NOT NON OR OU AND ET XOR OU exclusif
Opérateurs logiques réalisés par le pic
A B C D
S1
S2
S3
S4
S5
Laboratoire génie électrique 4Stech Série d’exercices N°5 PIC Page 2 /14
Prof : Borchani hichem et Hammami mourad
2°) Trouver les valeurs qu’on devra placer dans les registres TRISA et TRISB du PIC16F84A :
TRIS A = ( ........ )Hex
TRIS B = ( ........ )Hex
3°) Etablir les équations des sorties :
S1 = ……………………………………………… S2 = ………………………………………………
S3 = ……………………………………………… S4 = ………………………………………………
S5 = ………………………………………………
4°) Compléter le programme en MikroPascal correspondant aux équations précédentes :
Program equations ; Begin
Trisa:=$ ………… ;
Trisb:=$ ………… ;
Portb := ……….. ; // initialisation
While true do // boucle infinie
Begin // equation de S1 If((PortA.0=0) and ( ........................)............( ...........................)............(.................... ))
then portb.0:=1 else portb.0:=0;
// equation de S2
If ………………………………………………………………………………………………….....................
// equation de S3
………………………………………………………………………………………………….....................
// equation de S4
..…………………………………………………………………………………………….....................
// equation de S5
………………………………………………………………………………………………….....................
………
END .
Exercice 2: Soit le schéma à contact suivant : 1°) Déduire l’équation logique de RB0 RB0= …………………..
RA0 RA1 RB0
Laboratoire génie électrique 4Stech Série d’exercices N°5 PIC Page 3 /14
Prof : Borchani hichem et Hammami mourad
2°) Traduire cette équation par un programme Mikropascal Program equation2 ; Begin
Trisa:=$ ………… ;
Trisb:=$ ………… ;
Portb := ……….. ; // initialisation
While true do
Begin If(( ) and ( ........................)) then................................................ ;
……………… …………………
Exercice 3: Soit les schémas à contacts suivants : On attribue à KM1 une variable X et à KM2 une variable Y 1°) Donner l’équation de X X= ……………………….. 2°) Donner l’équation de Y Y= ……………………….. 3°) Traduire ces deux équations par un programme Mikropascal Program equation3 ;
var X,Y:byte;
Begin
X:=0;Y:=0;
Trisa:=$ ………… ;
Trisb:=$ ………… ;
Portb := ……….. ; // initialisation
KM1S1
S2
KM1
KM2S4
S3
KM2
Affectation des entrées Affectation des sorties
Entrées Entrées PIC Sorties Sorties PIC
S1 RA0 KM1 RB0 S2 RA1 KM2 RB1 S3 RA2 S4 RA3
Laboratoire génie électrique 4Stech Série d’exercices N°5 PIC Page 4 /14
Prof : Borchani hichem et Hammami mourad
while true do
Begin
if ((porta.0=0) and ((porta.1=..)... (X=…))) then X:=1 else X:=…….; if …………………………………………………………………………..; if X=0 then portb.0:=0 else portb.0:=……;
if Y=0 then………………………………….;
end; end.
Exercice 4: Le fonctionnement d’un système est décrit par le GRAFCET suivant: Le circuit de commande du système est le suivant :
1°) compléter le GRAFCET codé microcontrôleur
2°) Compléter les affectations des deux registres TRIS A et TRIS B.
TRIS A
RA4
RA3
RA2
RA1
RA0
……
……
……
……
……
……
……
……
TRIS B
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
……
……
……
……
……
……
……
……
OSC1/CLKIN16
RB0/INT 6
RB1 7
RB2 8
RB3 9
RB4 10
RB5 11
RB6 12
RB7 13
RA0 17
RA1 18
RA2 1
RA3 2
RA4/T0CKI 3
OSC2/CLKOUT15
MCLR4
U1
PIC16F84AS1S2S3S4
KA1
KA3
KA2
?
?
m
C1
33p
C2
33p
X1
CRYSTAL
0000
?
? KA4
0
KM1
KM2
KM3
KM4
m
S1
0
1 KM1
2 KM2
3 KM3
S2
S3.S4
KM4
…..
…..
X0
X1 ……
X2 ……
X3 ………..
….. ……
Laboratoire génie électrique 4Stech Série d’exercices N°5 PIC Page 5 /14
Prof : Borchani hichem et Hammami mourad
3°) compléter le programme relatif au grafcet précédent program exercice4; Var X0 , ………………………………………………: byte ; // Déclaration des variables
BEGIN
………………................. ; // Configuration du registre TRISA en Hexadécimal
………….…...................... ; // Configuration du registre TRISB en Hexadécimal
……….. ………………….. ; // Initialisation du portA
X0:=1 ; X1:=0 ;…………………………………………… ; // Initialisation des variables
........................................ // boucle infinie
BEGIN
IF ((…………………) AND (………………………)) THEN // Condition d’activation de l’étape1
BEGIN
........................................... ;
END ;
IF ((…………………) AND (……………………..)) THEN // Condition d’activation de l’étape2
BEGIN
X1 := 0 ; X2 := 1 ;
END ;
…………………………………………………………………………. // Condition d’activation de l’étape3
BEGIN
...................................
END ;
............ ............................................................................................ // Condition d’activation de l’étape0
……………………
..........................................
............................
IF (X1=1) THEN porta.0:= 1 ELSE ………………………… // Programmation de la sortie KM1
....................................................................................................// Programmation de la sortie KM2
....................................................................................................// Programmation de la sortie KM3
.................................................................................................... //Programmation de la sortie KM4
………………………..;
END.
Laboratoire génie électrique 4Stech Série d’exercices N°5 PIC Page 6 /14
Prof : Borchani hichem et Hammami mourad
MT
Pièce Longue
Pièce Courte
S1 S2 S3
Solénoïde d’éjection
Zone de détection Pièce longue Pièce courte
Zone d’éjectio
Convoyeur à bande
Bac d’évacuation des pièces courtes
ExerciceN°5
Système : chaîne fonctionnelle : On peut assimiler la chaîne fonctionnelle à un système de tri de pièces. Les pièces longues et les pièces courtes arrivent sur le même convoyeur : Si la pièce est longue, elle doit passer jusqu’à la fin du tapis pour être évacuer. Si la pièce est courte, elle doit être éjectée dans un bac. On veut commander la chaîne fonctionnelle par un microcontrôleur PIC 16F84A. En se référant au grafcet P.O et du tableau d’affectation des entrées et sorties
1°) Compléter le GRAFCET codé microcontrôleur
Affectation des entrées Affectation des sorties Entrées système Entrées PIC Sorties système Sorties PIC
dcy RA0 MT RB0 S1 RA1 Se RB1 S2 RA2 S3 RA3
GRAFCET d’un point de vue P.O GRAFCET codé PIC
2°) Compléter les affectations des deux registres TRISA et TRISB.
TRISA
RA4
RA3
RA2
RA1
RA0
……
……
……
……
……
……
……
……
TRISB
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
…
……
……
……
……
……
……
……
5
0
2 MT
MT
3
MT Se
1
dcy
S1. S2
MT
4 MT
6
Se
T1 T2 MT
S1. S2
S3
S3
t1/4/5s
S3
t2/6/6s
X0
X2 X5
X3
X1
X4 X6
T1 T2
t1/X4/5s t2/X6/6s
Laboratoire génie électrique 4Stech Série d’exercices N°5 PIC Page 7 /14
Prof : Borchani hichem et Hammami mourad
3°)Compléter le programme en langage pascal relatif à la commande du système :
program chaine fonctionnelle; var X0, X1, X2, X3, X4,X5,X6,dcy, S1, S2, S3, t1, t2: byte; begin
trisa := $.........; trisb := $......; portB := …….;
X0 :=1; X1 …..;X2 ……;X3 ….. 0; X4 …..;X5 …….;X6 …..;
while .............. do
begin
dcy := porta.0; S1 :=............;
S2 := ..........; S3:= porta.3;
if ((X0=1) and (dcy=1)) then
begin
X0 := 0; X1 := 1;
end;
if ((X1=1) and ( .............) and( S1 =0)) then
begin
X1 := 0; X2 :=1;
end;
if.................................................................
begin
X2 := 0; X3 :=1;
end;
if ((X3=1) and ( S3 =0)) then
begin .............................................................. end;
if ((X1=1) and (........) and( ..........)) then
begin X1 := 0; X5 :=1; end; if ............................................... then
begin
X5 := 0; X6 :=1;
end;
if (X6=1) .......................
begin
X6 := 0; X5:=0;X0 :=1;
end;
// programmation des sorties
If……………………………………………………………………………………then portb.0 :=1 else portb.0:=0;
if ((X3=1) or (X4=1)) ………………………………………………………………………
// programmation des temporisations
if (X4=0) then t1 := 0 else
begin
delay_ms(5000); t1 := 1;
end;
if (X6=0) then t2 := 0 else
begin
………………………………………..
end;
end;
end.
Laboratoire génie électrique 4Stech Série d’exercices N°5 PIC Page 8 /14
Prof : Borchani hichem et Hammami mourad
S1
Dcy
Chargement
Déchargement
S2 S3
Exercice N°6
Système : déplacement d’un chariot: Le chariot étant en position initiale (S1 est actionné) un ordre de départ cycle « dcy » provoque :
- Le déplacement du chariot jusqu’à « S2 »
- Le chargement du chariot avec un produit et une temporisation de 10s.
- Le déchargement en « S3 »
- Retour du chariot en « S2 » pour le charger et le décharger de nouveau en « S3». Enfin, il revient en
« S1 ».
Un compteur est incrémenté à la fin de chargement, sa sortie n=1 si le chariot est chargé 2 fois.
On veut commander le système par un microcontrôleur PIC 16F84A. En se référant au grafcet P.C et au tableau d’affectation des entrées et sorties
1°) Compléter le GRAFCET codé PIC
GRAFCET codé PIC
Affectation des entrées Affectation des sorties Entrées système Entrées PIC Sorties système Sorties PIC
Dcy RB0 KM1 RA0 S1 RB1 KM2 RA1 S2 RB2 14M1 RA2 S3 RB3 KA RA3 l11 RB5
n RB6
GRAFCET P.C
1
2
3 S2
4
KA
5 1 4M1 S3
6
7
Dcy.S1 KM1
t / 3 / 10s KM1
T
KM 2 S2 . n
l 1 1 S2 . n
K M 2 S1
X1
X2
t / X3 / 10 s
T
X3
X4
X5
X6
X7
Laboratoire génie électrique 4Stech Série d’exercices N°5 PIC Page 9 /14
Prof : Borchani hichem et Hammami mourad
2°) Compléter les affectations des deux registres TRISA et TRISB.
3°) compléter le programme en langage pascal relatif à la commande du système :
program chariot; var X1, X2, X3, X4,X5,X6,X7,Dcy, S1, S2, S3,l11,n,
t : byte;
begin trisA := $.........; trisB := $......; portA := …….; X1 :=1; X2 …..;X3 ……;X4 ….. 0; X5 …..;X6 …….;X7 …..; while .............. do begin Dcy := portb.0; S1 :=............ ; S2 := .......... ;S3:= portb.3; l11:= ............ ; n:= ............; if ((X1=1) and (Dcy=1) and( S1 =1)) then begin X1 := 0; X2 := 1; end; if ((X2=1) and ( .............) or (X6=1) and (..........) and(..........)) then begin X2 := 0; X6 := 0; X3 :=1; end; if (............................and (t=1)) ....... begin X3 := 0; X4 :=1; end; if ((X4=1) and ( S3 =1)) then begin .............................................................. end; if ((X5=1) and (................)) then begin ........................................ end; if ((X6=1) and ( ....... .) and( .......... )) then begin X6 := 0; X7 :=1; end; ...............................................
begin
X7 := 0; X1 :=1;
end;
// programmation des sorties
if(X1=1) then porta :=0 ;
if (X2=1) then …………… ;
if (X3=1) then porta :=8;
if(X4=1) then ………………;
if(X5=1) then …………………;
if(X6=1) then ……………..;
if(X7=1) then …………..;
// programmation du temporisation
if (X3=0) then t := 0 else
begin
delay_ms(……………….); t := ……;
end;
………………;
end.
TRISA
RA4
RA3
RA2
RA1
RA0
……
……
……
……
……
……
……
……
TRISB
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
……
……
……
……
……
……
……
……
Laboratoire génie électrique 4Stech Série d’exercices N°5 PIC Page 10 /14
Prof : Borchani hichem et Hammami mourad
ExerciceN°7 Soit le montage suivant permettant de commander 8 diodes LED : Fonctionnement :
• Si RA0 = 1 les 8 LED clignotent pendant 2 secondes. • Si RA0 = 0 on obtient le cycle répétitif suivant :
Compléter le programme en miKropascal ci-contre permettant de commander les diodes LED.
Diodes LED allumés duréeD1D2 1S D3D4 1S D5D6 1S D7D8 1S
Aucune diode 1S
OSC1/CLKIN16
RB0/INT 6
RB1 7
RB2 8
RB3 9
RB4 10
RB5 11
RB6 12
RB7 13
RA0 17
RA1 18
RA2 1
RA3 2
RA4/T0CKI 3
OSC2/CLKOUT15
MCLR4
U1
PIC16F84A
+5V
X1
CRYSTALFREQ=4MHz
C115pF
C215pF
R210k
220
R1010k
D1
D2
D3
D4
D5
D6
D7
D8
program LED8;
begin
trisA:=$FF;trisB:=$.... ;portb:=$00;
While (1 =1) do begin
if porta.0 = ..… then
begin
PORTB:=3;
delay_ms(……….);
PORTB:=…………
…………………..
…………………..
………………….
………………..
delay_ms(………..);
…………………
delay_ms(…………);
end;
if ……………. then
begin
PORTB:=255;
delay_ms(1000); ………………… delay_ms(1000);
………
………
end.
Laboratoire génie électrique 4Stech Série d’exercices N°5 PIC Page 11 /14
Prof : Borchani hichem et Hammami mourad
OSC1/CLKIN16
RB0/INT 6
RB1 7
RB2 8
RB3 9
RB4 10
RB5 11
RB6 12
RB7 13
RA0 17
RA1 18
RA2 1
RA3 2
RA4/T0CKI 3
OSC2/CLKOUT15
MCLR4
U1
PIC16F84A
+5V
RAZ
X1
CRYSTALFREQ=4MHz
C115pF
C215pF
R210k
N/J
R110k
+5V
ExerciceN°8 :
Feux tricolores de carrefour
Tableau de fonctionnement jour :( RA0=1) Fonctionnement nuit :(RA0=0) : Le feu orangé clignote pendant une seconde. Compléter l’algorithme et le programme donné permettant de gérer le fonctionnement du feux tricolore d’un carrefour en se référant au tableau de fonctionnement (jour et nuit) et au schéma du montage fourni.
Durée en secondes 60 05 55 Rouge (portb .0) 1 0 0 Orangé (portb.1) 0 1 0 Vert (portb.2) 0 0 1
Algorithme Programme Algorithme : feu_tri
Début
TrisA ⇐…….. TrisB ⇐……… PortB ⇐ ……
Tant que (1=1) Faire
Début
SI porta.0=1 alors
Début
Portb ⇐ …..
Attente ( )
………….
……………
portb: ⇐ …..
Attente (55s)
Finsi
SI non
Début
portb: ⇐ ….
Attente (0,5s)
portb: ⇐ ……
Attente (0,5s)
Fin SI
Fin Faire
Fin
program feu_tri;
begin
trisA:=$..;trisb:=$...;portb:=$00;
while true do
begin
...........................
begin
.........................
Vdelay_ms(60000);
.............
.....................
portb:=4;
Vdelay_ms(55000)
end
............
begin
portb:=2;
delay_ms(500);
portb:=0;
...........................;
end;
end;
end.
Laboratoire génie électrique 4Stech Série d’exercices N°5 PIC Page 12 /14
Prof : Borchani hichem et Hammami mourad
Exercice N°9 Compteur modulo 10 1°) Compléter l’algorithme d’un compteur modulo 10.
2°) Compléter le programme pascal correspondant.
Algorithme Programme
Algorithme : compteur m10
Program compteur m10 ;
Variable i :entier Var i:integer; // declaration d’une variable de type entier
Début Begin
TrisA ⇐ % ……………………..... PortA ⇐ % …………..... TrisA := %...................... ; Port ……. := %…………………………. ;
Tant que vrai faire while ......... do // boucle infinie
début begin
Pour i variant de ……... jusqu’à …….. faire For i:= …….. to ……….. do // boucle répétitive
début begin
PORTA ⇐ ……. PortA := ........ ;
Attente (0,5s) delay_ms( ………………… );
Fin faire end;
Fin faire end;
Fin End.
OSC1/CLKIN16
RB0/INT 6
RB1 7
RB2 8
RB3 9
RB4 10
RB5 11
RB6 12
RB7 13
RA0 17
RA1 18
RA2 1
RA3 2
RA4/T0CKI 3
OSC2/CLKOUT15
MCLR4
U1
PIC16F84A
A7 QA 13
B1 QB 12
C2 QC 11
D6 QD 10
BI/RBO4 QE 9
RBI5 QF 15
LT3 QG 14
U2
7448
Laboratoire génie électrique 4Stech Série d’exercices N°5 PIC Page 13 /14
Prof : Borchani hichem et Hammami mourad
OSC1/CLKIN16
RB0/INT 6
RB1 7
RB2 8
RB3 9
RB4 10
RB5 11
RB6 12
RB7 13
RA0 17
RA1 18
RA2 1
RA3 2
RA4/T0CKI 3
OSC2/CLKOUT15
MCLR4
U1
PIC16F84A
Exercice N°10 compteur modulo 60
1°) Compléter l’algorithme d’un compteur modulo 60
2°) Compléter le programme pascal correspondant.
Algorithme Programme Algorithme compteur mod 60
variable i,j:entier
début
trisa ⇐ …. trisb ⇐ .. porta ⇐ …. portb ⇐ …..
Tant que (…….) faire
début
pour i variant de 0 jusqu’à 5 faire
début
………………………………………
début
porta ⇐ … portb ⇐ …
Attente (1s)
finfaire
fin faire
finfaire
fin
program compteur60;
VAR i,j:integer;
begin
trisa:=.....;trisb:=........;porta:=....; portb:=.... ;
................
begin
.......................
begin
for j:=0 to 9 do
begin
.................................................
delay_ms(1000)
. ..............
end;
end;
end.
Laboratoire génie électrique 4Stech Série d’exercices N°5 PIC Page 14 /14
Prof : Borchani hichem et Hammami mourad
Exercice N°11: Réaliser un compteur et décompteur modulo12
• Compteur incrémenté par le bouton RA2 .
• Décompteur décrémenté par le bouton RA1.
Utilisation de la fonction Button (port,bit,temps d’appui en ms ,état logique actif)
Exemple :
if Button (portA,3,50,1) then « action1 »
On teste l’appui sur un bouton poussoir relié à la broche RA3 pendant 50ms pour faire l’action 1 Programme
program Compt et DECOMP;
var x:byte;
begin
trisa:=$...;trisb:=….;portb:=….;x:=…..;
while true do
begin
if button(porta,2,100,1) then ………………
if x=12 …………………………
if button(porta,1,100,1) then …………………….
if x=255 ………………………..
portb:= ……;
end;
end.