mercredi 12 février 2014

Projet à microcontrôleur PIC 16F84A
Dé électronique sonore

  • 1- Présentation
  • 2- Schéma électrique
  • 3- Principe de fonctionnement
  • 4- Liste du matériel
  • 5- Code source du microcontrôleur PIC 16F84A
  • 6- Lien utile

  • 1- Présentation
Ce circuit génère un chiffre de 1 à 6 de manière aléatoire (comme un dé à 6 faces).

Pour cela, on lance à la main, la rotation d'une roue.
Sous l'effet des frottements, la vitesse de rotation diminue et la roue s'arrête : on obtient le résultat final (ici 5).

  • Aspect visuel
La valeur faciale du dé défile de la manière suivante : 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 1 etc ...


La vitesse de défilement du dé est synchronisée avec la vitesse de rotation de la roue.
On utilise pour cela une roue dentée associée à une fourche optique :

Le défilement est rapide au départ, puis de plus en plus lent, et enfin la roue s'arrête et le dé se fige.

  • Aspect sonore (facultatif)
Un "bop" sonore est généré quand la valeur faciale du dé change (c'est-à-dire quand la roue tourne).
Une fois la roue immobilisée, le circuit génère une série de "bip" (fréquence 100 Hz, fréquence de répétition 2 Hz) :
5 bips indiquent que la valeur du dé est 5, etc ...

  • 2- Schéma électrique

  • 3- Principe de fonctionnement
La base de temps du microcontrôleur PIC est fixée par R0 et C3 :
f OSC2 # 1/(4.R0.C3) # 65 kHz (en pratique : 50 kHz mesurée sur la broche OSC2).
L'interrupteur optique H21B1 est constitué d'une LED infrarouge (pour l'émission) et d'un phototransistor de type Darlington (pour la réception).
Quand le faisceau infrarouge est coupé par une dent de la roue, le phototransistor se bloque et on a un niveau haut sur l'entrée RB0/INT du microcontrôleur PIC.
Autrement (pas d'obstacle entre l'émetteur et le récepteur), le phototransistor est saturé et on a un niveau bas sur l'entrée RB0/INT.
Le microcontrôleur PIC utilise l'interruption RB0/INT (active sur front montant 0 -> 1) pour connaître l'état de la roue.
Notez que l'entrée RB0/INT est de type trigger : cela permet de mettre en forme proprement le signal de sortie de la fourche optique (qui a un temps de réponse d'environ 1 ms ...).
Le transistor 2N2905 sert d'interface entre le microcontrôleur PIC et le haut-parleur.

  • Schéma de la disposition des LED


  • A la mise sous tension du dé électronique, l'animation visuelle suivante est répétée 3 fois :

Merci à Maxime Weiten pour ses idées et schémas.

  • 4- Liste du matériel
     
    • 1 programmateur pour flasher le programme du microcontrôleur PIC

    • 1 microcontrôleur PIC 16F84A
      • Remarque : vous pouvez demander des échantillons gratuits chez Microchip :)
    • 1 condensateur de 470 pF
    • 1 condensateur de 100 nF (filtrage de l'alimentation)
    • 1 condensateur électrochimique de 10 µF (filtrage de l'alimentation)
    • 1 résistance de 8,2 k
    • 7 résistances de 220 ohms
    • 7 LED
    • 1 fourche optique H21B1
    • 1 résistance de 470 ohms
    • 2 résistances de 1 k
    • 1 résistance de 47 ohms 1/2 W (ou deux résistances de 100 ohms 1/4 W en parallèle)
    • 1 potentiomètre de 470 ohms (réglage du volume sonore)
    • 1 transistor PNP 2N2905
    • 1 diode de roue libre 1N4148
    • 1 source d'alimentation continue 5 V (ou 4,5 V)
    • 1 haut-parleur 8 ohms
    • 1 roue dentée (12 dents par exemple)

  • 5- Code source du microcontrôleur PIC
Le code source a été écrit en langage assembleur avec l'environnement de développement gratuit MPLAB IDE de Microchip.

  • 6- Lien utile
Voici un lien vers un dé électronique qui n'utilise pas de logique programmée (pas de microcontrôleur).
Dé électronique (circuit en logique non programmée)

(C) Fabrice Sincère ; révision 01

Projet à microcontrôleur PIC 16F84A / PIC 16F628A Dé électronique


  • 1- Présentation
  • 2- Schéma électrique
  • 3- Principe de fonctionnement
  • 4- Liste du matériel
  • 5- Codes sources des microcontrôleurs PIC
  • 6- Lien utile
  •  
  • 1- Présentation
Ce circuit génère un chiffre de 1 à 6 de manière aléatoire (comme un dé à 6 faces).


  • 2- Schéma électrique

  • 3- Principe de fonctionnement
Un appui sur le bouton poussoir provoque une interruption sur la broche RB0/INT : le segment central (g) de l'afficheur 7 segments s'allume pendant environ un seconde et demi, puis un chiffre de 1 à 6 s'affiche.
Pour obtenir une valeur aléatoire, une boucle incrémente le contenu d'un registre (1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 1 -> 2 etc...) environ trois cents fois par seconde.
A l'instant où on enfonce le bouton poussoir, le contenu du registre se fige sur un chiffre "quelconque" compris entre 1 et 6.

  • 4- Liste du matériel
     
    • 1 programmateur pour flasher le programme du microcontrôleur PIC

    • 1 microcontrôleur PIC 16F628A ou PIC 16F84A
    • 1 afficheur 7 segments à anodes communes
    • 1 bouton poussoir (ouvert au repos)
    • 1 condensateur de 10 nF
    • 1 condensateur de 100 nF (filtrage de l'alimentation)
    • 1 condensateur électrochimique de 10 µF (filtrage de l'alimentation)
    • 7 résistances de 220 ohms
    • 1 résistance de 10 k
    • 1 source d'alimentation continue 5 V (ou 4,5 V)

  • 5- Codes sources des microcontrôleurs PIC
Le code source a été écrit en langage assembleur avec l'environnement de développement gratuit MPLAB IDE de Microchip.

  • 6- Lien utile
Voici un lien vers un dé électronique qui n'utilise pas de logique programmée (pas de microcontrôleur).
Dé électronique (circuit en logique non programmée)

(C) Fabrice Sincère ; révision 1.2.2

Projet à microcontrôleur PIC 16F84A / 16F628A Diapason pour guitare 6 cordes


Ce diapason permet de générer 7 notes :
  • mi1 (mi grave de la 6ème corde)
  • la1 (5ème corde)
  • ré2 (4ème corde)
  • sol2 (3ème corde)
  • si2 (2ème corde)
  • mi3 (mi aigu de la 1ère corde)
  • la3 (440 hertz)
  •  
  • Principe de fonctionnement
C'est le même principe que dans le projet "diapason électronique" qui permettait de générer un la1, la2 et la3.
A l'aide de l'interruption du module TMR0 en mode timer, le microcontrôleur génère une temporisation d'une durée correspondant à la demi-période de la note.
Ainsi, pour avoir un sol2 (195,998 Hz), la temporisation est égale à 12755 cycles d'horloge (avec un quartz de 20 MHz).
Un bouton poussoir permet de sélectionner la note, en balayant du mi1 au la3.
La note active est visualisée par une LED (sorties RB1 à RB7).
Le bouton poussoir utilise l'interruption RB0/INT sur front descendant.
L'interruption RB0/INT est prioritaire sur l'interruption TMR0.




  • Schéma électrique


N.B. On pourra remplacer le haut-parleur par un buzzer 5 volts (supprimer alors le condensateur C5).


 
  • Résultats expérimentaux
Une mesure avec un fréquencemètre étalon (Agilent 34401A) a donné :
note
hauteur de la note (Hz)
fréquence mesurée (Hz)
mi1
82,407
82,415
la1
110
110,011
ré2
146,832
146,847
sol2
195,998
196,019
si2
246,942
246,960
mi3
329,628
329,671
la3
440
440,025
soit un écart inférieur à 0,02 %.
Cet écart dépend principalement de la tolérance sur la fréquence du quartz.
Il est très inférieur à la limite de résolution de l'oreille humaine.


  • Code source des microcontrôleurs
Le code source a été écrit en langage assembleur avec l'environnement de développement gratuit MPLAB IDE de Microchip.

(C) Fabrice Sincère ; Révision 1.2.6

Projet à microcontrôleur PIC 16F84A / 16F628A Diapason électronique



  • 1- Présentation
  • 2- Schéma électrique
  • 3- Principe de fonctionnement
  • 4- Liste du matériel
  • 5- Code source du microcontrôleur PIC

1- Présentation
Ce diapason permet de générer 3 notes :
  • la3 (la de la troisième octave) : fréquence 440 hertz
  • la2 (la de la deuxième octave) : fréquence 440 / 2 = 220 hertz
  • la1 (la de la première octave) : fréquence 220 / 2 = 110 hertz

2- Schéma électrique



3- Principe de fonctionnement
La demi-période d'un signal de fréquence 440 Hz est 1,13636 ms ou 5681,8 cycles d'horloge d'un oscillateur à quartz de fréquence 20 MHz.
Le programme va donc créer une temporisation de 5682 cycles (439,986 Hz) en utilisant l'interruption TMR0 en mode timer.
Le signal de fréquence 440 Hz est disponible sur la sortie RA0 : il s'agit d'un signal rectangulaire 0 V / 5 V.
R1 limite le courant de sortie et C5 filtre la composante continue.
Le signal de fréquence 220 Hz (sortie RA1) est obtenu en divisant par deux (de manière logicielle) la fréquence du signal de la broche RA0.
Le signal de fréquence 110 Hz (sortie RA2) est obtenu en divisant par deux la fréquence du signal de la broche RA1.

  • Résultats expérimentaux
Une mesure avec un fréquencemètre étalon a donné :
440,0271 Hz (sortie RA0) ; 220,0136 Hz (RA1) ; 110,0068 Hz (RA2)
soit un écart de 0,01 % avec la valeur nominale (439,986 Hz).
Cet écart dépend directement de la tolérance sur la fréquence du quartz.
Il est très inférieur à la limite de résolution de l'oreille humaine.

4- Liste du matériel
    • 1 programmateur pour flasher le programme du microcontrôleur PIC
    • 1 résistance 1 k
    • 1 microcontrôleur PIC 16F628A ou 16F84A (boîtier PDIP)
      • Remarque : Vous pouvez demander des échantillons gratuits chez Microchip :-)
    • 1 quartz 20 MHz
    • 1 condensateur électrochimique de 10 µF (filtrage)
    • 1 condensateur de 2,2 µF
    • 1 condensateur de 100 nF (filtrage)
    • 2 condensateurs de 22 pF
    • 1 source d'alimentation continue + 5 V
    • 1 haut-parleur
 
5- Code source du microcontrôleur PIC
Le code source a été écrit en langage assembleur avec l'environnement de développement gratuit MPLAB IDE de Microchip.
(C) Fabrice Sincère ; Révision 01

Projet à microcontrôleur PIC 16F84A / 16F628A Feux tricolores


  • Vue d'ensemble

  • Principe de fonctionnement

temporisation A = 5 secondes
temporisation B = temporisation D = 3 secondes
temporisation C = 10 secondes

  • Schéma électrique
Pour simplifier, le détecteur de passage de voitures est remplacé par un bouton poussoir.

dimanche 9 février 2014

Question pour un champion


Il s'agit de savoir, qui des 4 joueurs, a appuyé en premier ...

  • Schéma électrique
Chaque joueur possède un bouton poussoir.
Sur le pupitre du maître du jeu, une LED indique qui a appuyé le premier.
L'initialisation se fait en appuyant sur le bouton poussoir "reset" :

N.B. La fréquence de l'oscillateur n'est pas critique : on peut utiliser un quartz de 4 MHz.
La tension d'alimentation (Vcc) doit être comprise entre 2,0 et 5,5 V.
La valeur des résistances est donnée par la loi d'Ohm : R = (Vcc - 1,8) / I
(soit 220 ohms pour Vcc = 5 V et I = 15 mA).

Le code source du 16F628A est quasiment identique à celui du 16F84A.
Cependant, le début de la zone des registres d'usage général du 16F628A se trouve à l'adresse H'020' (H'00C' pour le 16F84A) et il faut penser à désactiver les comparateurs analogiques :
movlw B'00000111'
movwf CMCON

Clignotant à LED ; mise en oeuvre de l'oscillateur interne


  • 1- Présentation
  • 2- Schéma électrique
  • 3- Principe de fonctionnement
  • 4- Liste du matériel
  • 5- Code source du microcontrôleur PIC (écrit en assembleur)
  • 6- Pour plus d'informations


  • 1- Présentation
Ce circuit fait clignoter une LED à une fréquence de 1,91 Hz ou bien 7,63 Hz (suivant la position de l'interrupteur SW1).
Ce projet met en oeuvre l'oscillateur interne du PIC 16F88.

  • 2- Schéma électrique
Schéma électrique avec un PIC 16F88 (18 broches) :

  • 3- Principe de fonctionnement

On utilise l'oscillateur interne du PIC 16F88 : on fait ainsi l'économie d'un quartz ou d'un circuit RC.
La base de temps du microcontrôleur PIC 16F88 est fixée par son registre OSCCON :
IRCF2
(bit 6 du registre OSCCON)
IRCF1
(bit 5 du registre OSCCON)
IRCF0
(bit 4 du registre OSCCON)
Fréquence nominale
f OSC
0
0
0
31,25 kHz
0
0
1
125 kHz
0
1
0
250 kHz
0
1
1
500 kHz
1
0
0
1 MHz
1
0
1
2 MHz
1
1
0
4 MHz
1
1
1
8 MHz

  • Interrupteur SW1 en position OFF
Le registre OSCCON est configuré pour avoir f OSC = 1 MHz.
f OSC2 = f OSC / 4 = 250 kHz ou 250 000 cycles par seconde.
Le microcontrôleur utilise une source d'interruption : celle du module TMR0.
Le module TMR0 (8 bits) est configuré en mode timer.
L' interruption a donc lieu tous les 256*256 = 65 536 cycles (prescaler 1:256), ce qui correspond à 262 144 µs.
La routine d'interruption inverse le niveau logique de la sortie RA1 : la LED clignote donc avec une période de 524 288 µs (soit une fréquence nominale de 1,9073 Hz).

  • Interrupteur SW1 en position ON
Le registre OSCCON est configuré pour avoir f OSC = 4 MHz.
La LED clignote 4 fois plus vite (7,629 Hz).

  • 4- Liste du matériel
    • 1 microcontrôleur PIC 16F88
      • Remarque : vous pouvez demander des échantillons gratuits chez Microchip :)
    • 1 LED
    • 1 résistance de 220 ohms
    • 1 interrupteur
    • 1 source d'alimentation continue 5 V
    • 1 condensateur électrochimique de 10 µF (filtrage de l'alimentation)
    • 1 condensateur de 100 nF (filtrage de l'alimentation)

    • 1 programmateur pour flasher le programme du microcontrôleur PIC
  • 5- Code source du microcontrôleur PIC (en assembleur)
Le code source a été écrit en langage assembleur avec l'environnement de développement gratuit MPLAB IDE de Microchip.


(C) Fabrice Sincère ; Révision 1.0.4