Atelier Electronique 2 (L3MT)

TP N°1: Jeux de lumière 

1-Faire le montage suivant : 

2- Ecrire un programme permettant d'allumer la diode branchée dans RB0.
3- Ecrire un programme C permettant de réaliser quatre types d'animation

 TP N°2: Afficheur 7 segments

1- Ecrire un programme qui permet d'afficher le chiffre 4.
2- Ecrire un programme de compteur de 0 à 9 ( Modulo 10)
3- Modifier le programme de la question 2 en utilisant la structure ( for )
4- Ajouter un deuxième afficheur pour réaliser un compteur modulo 100.
5- Relier les deux afficheurs sur le même port pour compter jusqu'a 99.

Utilisation du décodeur BCD (binary coded decimal ou BCD en anglais) 7 segments




TP N°3 : Afficheur 7 segments multiplexés


Programmer le PIC afin de concevoir une montre électronique utilisant un afficheur à 7 segments multiplexé.





TP N°4:  Matrice LED

Exemple d'un montage Proteus en utilisant deux Matrice (8X8) [Matrix-8*8-ORANGE]

Fonctionnement du circuit 74LS138

Le circuit intégré 74LS138 est un décodeur/démultiplexeur à 3 entrées et 8 sorties, souvent utilisé dans les systèmes numériques pour la sélection d'adresses. 

Caractéristiques principales du 74LS138 :

  • 3 entrées (A, B, C) pour la sélection d'une des 8 sorties.
  • 8 sorties (Y0 à Y7) qui sont actives à l'état bas (logique 0).
  • 3 broches d'activation (E1, E2, E3) : deux broches d'activation à l'état bas (E2, E3) et une à l'état haut (E1). Les sorties ne seront activées que si les conditions sur les broches d'activation sont respectées.
Lorsque les broches d'activation sont dans l'état correct (E1 = 1, E2 = 0, E3= 0), le décodeur active une seule des 8 sorties en fonction des trois entrées binaires A, B et C.

Table de vérité 

E1

E2

E3

C

B

A

Y0

Y1

Y2

Y3

Y4

Y5

Y6

Y7

1

0

0

0

0

0

0

1

1

1

1

1

1

1

1

0

0

0

0

1

1

0

1

1

1

1

1

1

1

0

0

0

1

0

1

1

0

1

1

1

1

1

1

0

0

0

1

1

1

1

1

0

1

1

1

1

1

0

0

1

0

0

1

1

1

1

0

1

1

1

1

0

0

1

0

1

1

1

1

1

1

0

1

1

1

0

0

1

1

0

1

1

1

1

1

1

0

1

1

0

0

1

1

1

1

1

1

1

1

1

1

0

1- Allumer une LED sur l'un des deux afficheurs


2-Ecrire sur l'afficheur à gauche la lettre H

3- Ecrire sur l'afficheur à droite la lettre E

4- Ecrire le message "HELLO". ( Question Bonus)

NB: il faut que le temps d'activation globale des colonnes égale à 50ms


TP N°5: Afficheur LCD 

Schéma:



Le squelette du code :

sbit LCD_RS at LATC0_bit;

sbit LCD_EN at LATC1_bit;

sbit LCD_D7 at LATC5_bit;

sbit LCD_D6 at LATC4_bit;

sbit LCD_D5 at LATC3_bit;

sbit LCD_D4 at LATC2_bit;

sbit LCD_RS_Direction at TRISC0_bit;

sbit LCD_EN_Direction at TRISC1_bit;

sbit LCD_D7_Direction at TRISC5_bit;

sbit LCD_D6_Direction at TRISC4_bit;

sbit LCD_D5_Direction at TRISC3_bit;

sbit LCD_D4_Direction at TRISC2_bit;

void main()

{  LCD_INIT(); 

    while (1)

    {    }

}

Travail à faire : 

1- Ecrire un programme qui permet d'afficher le message " Bonjour"

2- Modifier le programme pour défiler le message affiché comme suit:

Bonjour.

3- Écrire un programme permettant de déplacer le message 'Bonjour' vers la droite ou la gauche en fonction de l'appui sur deux boutons poussoirs.

4- Refaire le même travail avec 4 boutons poussoirs.

5- Remplacer le message "Bonjour" par "*"

6- Afficher l'emplacement de "*" en utilisant la fonction rand().

Résumé de cours sur les afficheurs LCD

TP N°6: Utilisation du clavier 16 touches 


Ce qu'il faut savoir

Le but de cette séance de TD est d’écrire en C des fonctions permettant de scruter un clavier de 16 touches et de donner la valeur de la touche pressée (on parlera de décodage). On supposera qu’une seule touche est appuyée à la fois.

Le schéma interne du clavier est décrit sur la figure suivante. La fonction de scrutation/décodage sera appelée par le programme principal.

Travail à faire :

 Faire le montage suivant.

        Liste des composants : Pic18F4520, keypad, Button, Led, LCD LM016L

         1.    Tester cette portion de code dans la boucle infinie


void main ()

{

   Lcd_Init();

   ADCON1=0X0F;   // Permet de rendre tous les ports numériques.

   TRISB=0XF0;

   while (1)

      {

         Delay_ms(50);

         LATB=0b00001011;

         switch (PORTB)

             {

                    case 0b11101011:  LCD_OUT(2,4,"1"); break;

             }

     }

}

      2.   Continuer les codes dans la structure switch pour qu’il affiche les chiffres 2 et 3

      3.    Ajouter maintenant les autres chiffres [4,5,6] et [7,8,9]

      4.    Mettre le programme principal dans une fonction appelée chiffre()

      5.    Modifier la fonction chiffre() pour qu'elle retourne le chiffre tapé.

                    Par exemple:        case 0b11101011:  LCD_OUT(2,4,"1"); return 1; break;

       6.  Ecrire un programme qui permet de faire la somme de deux chiffres tapés (NB : ne programmer pas la touche + du clavier).

     

TP N° 7: Convertisseur Analogique Numériques   

     Soit le montage suivant :



      1- Ecrire un programme qui permet de lire la valeur numérique du signal analogique venant du broche AN0.  

      void main() {

       adc_init();

       TRISB = 0x00;

       TRISD = 0x00;

       Lcd_Init();

       Lcd_Cmd(_LCD_CLEAR);

       Lcd_Cmd(_LCD_CURSOR_OFF);

        while(1)

             {

                         Val= adc_read(0);

                         IntToStr(Val,text);

                         Lcd_Out(2,1,text);  

                        Delay_ms(1000);

           }    }

      2- Ecrire un code C qui permet d'afficher la tension en volt du signal analogique

      3- Ecrire un code permettant d'ajouter le caractère "|" sur l'afficheur LCD à chaque variation du                                      potentiomètre. L'affichage sera comme suit :


      4- Soit un capteur de température qui fonctionne sur une plage de tension définie par l'intervalle suivant                       [1v,3v] Le potentiomètre peut simuler le fonctionnement d'un capteur de température. Faire                           l' affichage de la variation de la température sur le composant "bar graph".

      


         La tension de référence sur Proteus se fait en cliquant sur les deux flèches :


TP N° 8: Le Timer 0   


        Registre ADCON1

        



        Le PIC 18F4520 contient 4 modules TIMER. Deux modes d’interruptions sont possibles : interruption logicielle et interruption matérielle

Les Timers ou compteurs de temps écoulé permettent :

·         De réaliser des temporisations précises puisqu’ils utilisent des oscillateurs de référence à quartz.

·         De générer des signaux électriques 0V / 5V.

·         De mesurer des durées.

·         De compter des évènements extérieurs sur des fronts montants ou descendants

Principe de fonctionnement (mode 8 bits)

Le registre T0CON (FD5h)



Le registre INTCON . (FF2h)

                            

Calcul du temps avec TIMER0

Le calcul du temps se fait avec cette formule :

T=[1 /(Fosc/4)]*[Vcount - Vinit]*Presc

Avec   Fosc : fréquence de l’horloge.

Vcount=2Débordement du Timer0

Vinit : valeur initiale a ajouté dans le registre pour corriger l’erreur du temps

Presc : c’est le pré-diviseur utilisé pour ralentir ou accélérer le comptage

 

Travail à faire

 Mode interruption Logicielle  

1.      Faire un montage contenant un PIC18F4520 et une diode LED. Configurer le pic avec une fréquence de 4MHz

2.      Tester le programme suivant 

void main()

{

   T0CON=0b11000101;

  TRISC = 0;

  LATC.RC0=1;

               while(1)

{

                                if(INTCON.TMR0IF==1)

                                               {

                                                LATC.RC0=!LATC.RC0;

                                               INTCON.TMR0IF=0;

 }

}}

3.    Déterminer la fréquence de clignotement de la diode de deux méthodes :

        - Pratique, en utilisant l'oscilloscope dans Isis

        - Théorique, en utilisant la formule de calcul de temps 

4.  Programmer le pic pour faire clignoter la diode avec une de fréquence de 20 Hz.

5.  Même question avec une fréquence de 3,8 Hz.

6.  Nous voulons maintenant commander un servomoteur. Le signale PWM permet la commande de servomoteur. (Voir la figure suivante)


      7.  Programmer le pic pour qu'il positionne le servomoteur à la position 0°


                   TP N° 9: Commande du moteur pas à pas  


1- Faire le montage dans Isis contenant : Des LOGIC STATE, ULN2803 (circuit de puissance) et moteur pas à pas (MOTOR-STEPPER). 

2- Remplir les tableaux suivants :

Etat des logicState

Angle du moteur

1000

-45°

 

 

 

 

 


 

 

 







Fonctionnement :………………………………….

 

Etat des logicState

Angle du moteur

1100

-90°

 

 

 

 

 

 


 

 





 Fonctionnement :………………………………….

3- En déduire le fonctionnement d’un demi-bas 

4- Ajouter un microcontrôleur au montage, puis écrire un programme permettant d'exécuter à chaque appui sur le bouton poussoir les fonctions suivantes :

a)      Fonctionnement pas entier couple faible (2 tours)

b)      Fonctionnement pas entier couple fort (3 tours)

c)      Fonctionnement en demi-bas (4,375 tours)

d)      Fonctionnement pas entier couple faible (sens inverse)

           








Aucun commentaire:

Enregistrer un commentaire