Projet à microcontrôleur PIC 16F84A /
16F628A
Minuteur longue durée
Il s'agit d'un minuteur que l'on peut régler de 0:00:01 (1 seconde) à 9:59:59 (9 h 59 min et 59 s) avec un pas de 1 seconde.
Ce minuteur pourra aussi bien servir pour la phase d'insolation par UV d'un circuit imprimé (1 min 45 s) que pour la cuisson lente de meringues (4 heures) !
Photo -> Le minuteur longue durée avec son buzzer (schéma version A) :
-> A la mise sous tension, les afficheurs indiquent 0:00:00.
-> Le bouton poussoir SELECTION DIGIT sélectionne successivement un des 5 digits : le digit actif clignote.
Le bouton poussoir SELECTION VALEUR permet de choisir la valeur désirée, pour le digit actif.
-> Une fois le réglage fait, il faut appuyer sur le bouton poussoir START/STOP pour lancer le compte à rebours. La durée restante est affichée et actualisée toutes les secondes.
N.B. Si on appuie sur le bouton poussoir SELECTION DIGIT ou SELECTION VALEUR, on revient dans le mode réglage.
-> A la fin du compte à rebours (0:00:00) :
et ce tant que l'on a pas appuyé sur le bouton poussoir START/STOP.
Le circuit retourne alors dans l'état initial (comme après la mise sous tension).
Schéma version A : commande d'un buzzer :
Schéma version B : commande d'un relais :
La différence avec le schéma de la version A est :
Le microcontrôleur utilise une seule source d'interruption (module TMR0 en mode timer).
Cette interruption fournit une base de temps nominale de 1/514 seconde (avec un quartz de précision 100 ppm, cela donne un écart inférieur à 4 secondes pour une durée de 10 heures).
La routine d'interruption assume la gestion de l'affichage, des trois boutons poussoirs et la commande du buzzer.
L'affichage se fait avec 5 afficheurs (7 segments à LED, anodes communes), à commande multiplexée.
Le multiplexage permet de commander les 5 digits avec seulement 7 + 5 = 12 fils.
Le décodeur BCD / 7 segments (74LS47) libère 3 broches au niveau du microcontrôleur.
En définitive, 13 entrées/sorties (sur 13, ce qui justifie la présence du 74LS47) du PIC 16F84A sont utilisées :
Commun aux deux versions :
Version A : commande d'un buzzer
- 1 buzzer
- 1 transistor 2N2222 (NPN)
- 1 résistance 4,7 k 1/4 W
Version B : commande d'un relais
- un relais électromécanique 12 V / 230 V :
- normalement ouvert si l'on veut mettre sous tension la charge en fin de temporisation
- normalement fermé si l'on veut mettre hors tension la charge en fin de temporisation
- 1 résistance 1 k 1/4 W (à calculer en fonction de la résistance de la bobine du relais)
- 1 transistor 2N1711 (NPN)
- 1 diode de roue libre 1N4007
Dimension : 90 x 100 mm
Double face.
Remarques :
La phase de soudage est délicate : il faut souder les supports de circuits intégrés sur les 2 faces, et le soudage des transistors (boîtier TO18) demande beaucoup de minutie.
On n'oubliera pas les 12 straps.
Le cavalier Marche/Arrêt est facultatif : on peut le shunter avec un strap.
Le code source a été écrit en langage assembleur avec l'environnement de développement gratuit MPLAB IDE de Microchip.
Version A :
Version B :
- 16F84A : Télécharger le code source en assembleur (.asm)
- 16F84A : Télécharger le code objet (.HEX)
- 16F628A : Télécharger le code source en assembleur (.asm)
- 16F628A : Télécharger le code objet (.HEX)
2. Minuteur longue durée, version à 6 digits (d'après une idée originale de Olivier Flayols)
On peut régler ce minuteur de 0:00:01 (1 seconde) à 99:59:59 (99 h 59 min et 59 s) avec un pas de 1 seconde, ce qui devrait ravir les fans de la série télé Sliders.
- Schéma électrique
Par rapport à la version 5 digits, on a libéré la broche RB6 (commande du buzzer) pour commander à la place un transistor contrôlant le 6ème afficheur.
- Photo et réalisation : Olivier Flayols
- Code source du microcontrôleur
Le code source a été écrit en langage assembleur avec l'environnement de développement gratuit MPLAB IDE de Microchip.
La modification du code (passage de la version 5 digits à la version 6 digits) a été réalisée par Olivier Flayols.
- 16F628A : Télécharger le code source en assembleur (.asm)
- 16F628A : Télécharger le code objet (.HEX)
(C) Fabrice Sincère ; Révision 1.2.6.