Laboratoire génie électrique 4Stech Série d exercices N 5 PIC Page /4 Exercice N On désire programmer les équations suivantes par un PIC 6F84A A B C D S S2 S3 S4 S5 On donne le tableau d affectation des entrées et de sorties : Affectation des entrées Affectation des sorties Entrées Entrées PIC Sorties Sorties PIC A RA0 S RB0 B RA S2 RB C S3 RB2 D S4 RB3 S5 RB4 Opérateurs logiques réalisés par le pic Opérateur Opération NOT NON OR OU AND ET XOR OU exclusif ) compléter le tableau suivant par : Entrée «E», sortie «S», Non connecté «NC» : PORT A RA0 RA RA4 RB0 RB RB2 RB3 RB4 RB5 RB6 RB7 PORT B
Laboratoire génie électrique 4Stech Série d exercices N 5 PIC Page 2 /4 2 ) Trouver les valeurs qu on devra placer dans les registres TRISA et TRISB du PIC6F84A : TRIS A TRIS B = (... )Hex = (... )Hex 3 ) Etablir les équations des sorties : S = S3 = S2 = 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 S If((PortA.0=0) and (...)...(...)...(... )) then portb.0:= 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 : RA0 RA RB0 ) Déduire l équation logique de RB0 RB0=..
Laboratoire génie électrique 4Stech Série d exercices N 5 PIC Page 3 /4 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 : S3 S S2 KM S4 KM2 KM2 KM Affectation des entrées Affectation des sorties Entrées Entrées PIC Sorties Sorties PIC On attribue à KM une variable X et à KM2 une variable Y ) 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:=$ ; S RA0 KM RB0 S2 RA KM2 RB S3 S4 Portb :=.. ; // initialisation
Laboratoire génie électrique 4Stech Série d exercices N 5 PIC Page 4 /4 while true do Begin if ((porta.0=0) and ((porta.=..)... (X= ))) then X:= else X:=.; if..; if X=0 then portb.0:=0 else portb.0:= ; if Y=0 then.; end. Exercice 4: Le fonctionnement d un système est décrit par le GRAFCET suivant: 0 m KM S 2 KM2 S2 3 KM3 S3.S4 KM4 Le circuit de commande du système est le suivant :? KM KA C 33p C2 33p X CRYSTAL 6 5 4 U OSC/CLKIN RA0 OSC2/CLKOUT RA MCLR RA4/T0CKI RB0/INT RB RB2 RB3 RB4 RB5 RB6 RB7 PIC6F84A 7 8 2 3 6 7 8 9 0 2 3?? 0 0 0 0 0 KM2 KA2 KA3 KM3 KM4? KA4 m S S2 S3 S4 ) compléter le GRAFCET codé microcontrôleur 2 ) Compléter les affectations des deux registres TRIS A et TRIS B. X0 X X2 X3........ TRIS A RA4 RA RA0 RB7 RB6 RB5 RB4 RB3 RB2 RB RB0 TRIS B
...... Laboratoire génie électrique 4Stech Série d exercices N 5 PIC Page 5 /4 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:= ; X:=0 ; ; // Initialisation des variables BEGIN... // boucle infinie IF (( ) AND ( )) THEN // Condition d activation de l étape BEGIN END ;... ; IF (( ) AND (..)) THEN // Condition d activation de l étape2 BEGIN X := 0 ; X2 := ; END ;. // Condition d activation de l étape3 BEGIN... END ; // Condition d activation de l étape0...... IF (X=) THEN porta.0:= ELSE // Programmation de la sortie KM...// 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 /4 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. MT Pièce Longue Pièce Courte Zone de détection Pièce longue Pièce courte S S2 S3 Solénoïde d éjection Convoyeur à bande Bac d évacuation des pièces courtes Zone d éjectio On veut commander la chaîne fonctionnelle par un microcontrôleur PIC 6F84A. En se référant au grafcet P.O et du tableau d affectation des entrées et sorties ) Compléter le GRAFCET codé microcontrôleur GRAFCET d un point de vue P.O GRAFCET codé PIC 0 X0 dcy MT X S. S 2 S. S 2 2 MT 5 MT X2 X5 S 3 3 MT Se S 3 X3 S 3 4 MT Se T 6 MT T2 t /4/5s t 2 /6/6s X4 T X6 t /X4/5s t 2 /X6/6s T2 Affectation des entrées Affectation des sorties Entrées système Entrées PIC Sorties système Sorties PIC dcy RA0 MT RB0 S RA S e RB S 2 S 3 2 ) Compléter les affectations des deux registres TRISA et TRISB. TRISA RA4 RA RA0 TRISB RB7 RB6 RB5 RB4 RB3 RB2 RB RB0
Laboratoire génie électrique 4Stech Série d exercices N 5 PIC Page 7 /4 3 )Compléter le programme en langage pascal relatif à la commande du système : program chaine fonctionnelle; var X0, X, X2, X3, X4,X5,X6,dcy, S, S2, S3, t, t2: byte; trisa := $...; trisb := $...; portb :=.; X0 :=; X..;X2 ;X3.. 0; X4..;X5.;X6..; // programmation des temporisations while... do if (X4=0) then t := 0 else dcy := porta.0; S :=...; S2 :=...; S3:= porta.3; delay_ms(5000); t := ; if ((X0=) and (dcy=)) then X0 := 0; X := ; if (X6=0) then t2 := 0 else if ((X=) and (...) and( S =0)) then.. X := 0; X2 :=; if... X2 := 0; X3 :=; end. if ((X3=) and ( S3 =0)) then... if ((X=) and (...) and(...)) then X := 0; X5 :=; if... then X5 := 0; X6 :=; if (X6=)... X6 := 0; X5:=0;X0 :=; // programmation des sorties If then portb.0 := else portb.0:=0; if ((X3=) or (X4=))
Laboratoire génie électrique 4Stech Série d exercices N 5 PIC Page 8 /4 Exercice N 6 Système : déplacement d un chariot: Le chariot étant en position initiale (S 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 0s. - 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 «S». Un compteur est incrémenté à la fin de chargement, sa sortie n= si le chariot est chargé 2 fois. Chargement Dcy Déchargement S S2 S3 On veut commander le système par un microcontrôleur PIC 6F84A. En se référant au grafcet P.C et au tableau d affectation des entrées et sorties ) Compléter le GRAFCET codé PIC GRAFCET codé PIC GRAFCET P.C X 2 Dcy.S KM X2 S2 3 KA t / 3 / 0s 4 KM T X3 X4 t / X3 /0 s T S2. n S3 5 4M X5 6 l KM 2 X6 S2. n 7 K M 2 X7 S Affectation des entrées Affectation des sorties Entrées système Entrées PIC Sorties système Sorties PIC Dcy RB0 KM RA0 S RB KM2 RA S2 RB2 4M S3 RB3 KA RB5 l n RB6
Laboratoire génie électrique 4Stech Série d exercices N 5 PIC Page 9 /4 2 ) Compléter les affectations des deux registres TRISA et TRISB. TRISA RA4 RA RA0 TRISB RB7 RB6 RB5 RB4 RB3 RB2 RB RB0 3 ) compléter le programme en langage pascal relatif à la commande du système : program chariot; var X, X2, X3, X4,X5,X6,X7,Dcy, S, S2, S3,l,n, t : byte; trisa := $...; trisb := $...; porta :=.; X :=; X2..;X3 ;X4.. 0; X5..;X6.;X7..; while... do Dcy := portb.0; S :=... ; S2 :=... ;S3:= portb.3; l :=... ; n:=...; if ((X=) and (Dcy=) and( S =)) then X := 0; X2 := ; if ((X2=) and (...) or (X6=) and (...) and(...)) then X2 := 0; X6 := 0; X3 :=; if (...and (t=))... X3 := 0; X4 :=; if ((X4=) and ( S3 =)) then... if ((X5=) and (...)) then... if ((X6=) and (....) and(... )) then X6 := 0; X7 :=;... X7 := 0; X :=; // programmation des sorties if(x=) then porta :=0 ; if (X2=) then ; if (X3=) then porta :=8; if(x4=) then ; if(x5=) then ; if(x6=) then..; if(x7=) then..; // programmation du temporisation if (X3=0) then t := 0 else delay_ms(.); t := ; ; end.
Laboratoire génie électrique 4Stech Série d exercices N 5 PIC Page 0 /4 ExerciceN 7 Soit le montage suivant permettant de commander 8 diodes LED : X +5V R2 0k CRYSTAL FREQ=4MHz C 5pF C2 5pF 6 5 4 U OSC/CLKIN RA0 OSC2/CLKOUT RA MCLR RA4/T0CKI RB0/INT RB RB2 RB3 RB4 RB5 RB6 RB7 7 8 2 3 6 7 8 9 0 2 3 R0 0k 220 D D2 D3 D4 D5 D6 D7 PIC6F84A D8 Fonctionnement : Si RA0 = les 8 LED clignotent pendant 2 secondes. Si RA0 = 0 on obtient le cycle répétitif suivant : Diodes LED allumés DD2 D3D4 D5D6 D7D8 Aucune diode durée S S S S S Compléter le programme en mikropascal ci-contre permettant de commander les diodes LED. program LED8; trisa:=$ff;trisb:=$... ;portb:=$00; While ( =) do if porta.0 =.. then PORTB:=3; delay_ms(.); PORTB:=....... delay_ms(..); delay_ms( ); if. then PORTB:=255; delay_ms(000); delay_ms(000); end.
Laboratoire génie électrique 4Stech Série d exercices N 5 PIC Page /4 X ExerciceN 8 : Feux tricolores de carrefour Tableau de fonctionnement jour :( RA0=) Durée en secondes 60 05 55 Rouge (portb.0) 0 0 Orangé (portb.) 0 0 Vert (portb.2) 0 0 +5V R2 0k RAZ CRYSTAL FREQ=4MHz C 5pF C2 5pF 6 5 4 U OSC/CLKIN RA0 OSC2/CLKOUT RA MCLR RA4/T0CKI RB0/INT RB RB2 RB3 RB4 RB5 RB6 RB7 PIC6F84A 7 8 2 3 6 7 8 9 0 2 3 R 0k N/J +5V 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. Algorithme Algorithme : feu_tri Début TrisA.. TrisB PortB Tant que (=) Faire Début SI porta.0= 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 Programme program feu_tri; trisa:=$..;trisb:=$...;portb:=$00; while true do...... Vdelay_ms(60000);...... portb:=4; Vdelay_ms(55000) end... portb:=2; delay_ms(500); portb:=0;...; end.
Laboratoire génie électrique 4Stech Série d exercices N 5 PIC Page 2 /4 Exercice N 9 Compteur modulo 0 ) Compléter l algorithme d un compteur modulo 0. 2 ) Compléter le programme pascal correspondant. 6 5 4 U OSC/CLKIN RA0 OSC2/CLKOUT RA MCLR RA4/T0CKI RB0/INT RB RB2 RB3 RB4 RB5 RB6 RB7 7 8 2 3 6 7 8 9 0 2 3 U2 7 A B 2 C 6 D 4 BI/RBO 5 RBI 3 LT 7448 QA QB QC QD QE QF QG 3 2 0 9 5 4 PIC6F84A Algorithme Algorithme : compteur m0 Program compteur m0 ; Programme 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 Pour i variant de... jusqu à.. faire For i:=.. to.. do // boucle répétitive début PORTA. PortA :=... ; Attente (0,5s) delay_ms( ); Fin faire Fin faire Fin End.
Laboratoire génie électrique 4Stech Série d exercices N 5 PIC Page 3 /4 Exercice N 0 compteur modulo 60 ) Compléter l algorithme d un compteur modulo 60 2 ) Compléter le programme pascal correspondant. Algorithme 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 (s) finfaire fin faire finfaire fin Programme program compteur60; VAR i,j:integer; trisa:=...;trisb:=...;porta:=...; portb:=... ;...... for j:=0 to 9 do... delay_ms(000).... end. 6 5 4 U OSC/CLKIN RA0 OSC2/CLKOUT RA MCLR RA4/T0CKI RB0/INT RB RB2 RB3 RB4 RB5 RB6 RB7 PIC6F84A 7 8 2 3 6 7 8 9 0 2 3
Laboratoire génie électrique 4Stech Série d exercices N 5 PIC Page 4 /4 Exercice N : Réaliser un compteur et décompteur modulo2 Compteur incrémenté par le bouton. Décompteur décrémenté par le bouton RA. Utilisation de la fonction Button (port,bit,temps d appui en ms,état logique actif) Exemple : if Button (porta,3,50,) then «action» On teste l appui sur un bouton poussoir relié à la broche pendant 50ms pour faire l action Programme program Compt et DECOMP; var x:byte; trisa:=$...;trisb:=.;portb:=.;x:=..; while true do if button(porta,2,00,) then if x=2 if button(porta,,00,) then. if x=255.. portb:= ; end.