Dernière mise à jour :
26/06/2011
Présentation
Un nouveau petit jouet tout simple pour mes enfants, qui adorent
toujours ce qui fait de la lumière et du son. Mais ici pas de
son,
d'où le titre.
Pour ma
première
boîte à lumières,
je m'étais contenté de quelques LED de formes variées et de quelques
boutons poussoirs. Cette fois j'ai intégré un petit PIC de type 16F628A
pour animer un peu l'ensemble.
Schéma
Le schéma est autant aéré que mon salon et une LED illumine les lieux.
Que demander de mieux !
Principe de fonctionnement
Le
principe général de fonctionnement est simple et cohérent avec mes
capacités neuronales du moment. Un ensemble de boutons poussoir est
câblé en matrice selon 4 colonnes (lignes A, B, C et D) et 4
rangées (lignes E, F, G et H). Le logiciel du PIC scrute en permanence
l'état de son port B et si un changement survient suite à appui sur un
bouton poussoir, on active la figure lumineuse qui lui correspond.
L'écriture (changement d'états provoqués par le PIC) se fait
sur
les rangées (lignes E, F, G et H) et la lecture se fait sur les
colonnes (lignes A, B, C et D) - l'inverse serait aussi
possible.
Horloge
Interne car pas besoin d'un quartz additionnel pour une telle
application. Le PIC 16F628A permet d'utiliser une horloge interne de 37
kHz ou de 4 MHz, ici la valeur la plus basse est recommandée pour une
simple question de consommation électrique. Un enfant oublie souvent de
placer l'interrupteur marche / arrêt en position arrêt, surtout si son
papa ne prévoit pas un tel interrupteur. Ne soyez surtout pas inquiet
de l'absence de connexion sur la broche RA5 du PIC, la fonction de RAZ
(MCLR) est désactivée et cette broche n'est pas utilisée.
Affichage LED
Les
lignes du port A sont utilisées pour alimenter les LED, seule la
ligne RA5 (MCLR) n'est pas utilisée du fait qu'on ne peut pas la
programmer en
tant que sortie. La sortie RA4 est de type collecteur ouvert ce qui
explique le câblage inversé de la LED qui y est raccordée par rapport
aux autres LED. Il faudra bien veiller à ce point lors du raccord de la
LED D7.
Premiers essais avec platine EasyPic
Les
tests de bon fonctionnement ont été réalisés sur ma platine EasyPic4 et
bien sûr ça n'a pas fonctionné du premier coup - l'initialisation du
PIC ne se faisait pas du tout. Comme c'était la première fois que
j'utilisais l'horloge interne de 37 kHz et non de 4 MHz, je me suis
tout de suite penché de ce côté là. Premier essai donc, basculer en
mode 4 MHz, histoire de voir. Mais voilatipa qu'avec cette
configuration en 4 MHz le compilateur se plaint d'un espace mémoire
insuffisant dans le PIC. Diable, j'ai touché un point sensible ! Je
supprime provisoirement (mets en remarque) quelques lignes de code et
reessaye en mode 4 MHz : cette fois ça fonctionne. Le problème se situe
donc bien du côté de la configuration de l'oscillateur interne. Je
rebouquine le
datasheet du 16F628A et localise rapidement une petite info du style :
PCON.OSCF := 0; // utilisation oscillateur interne 37 kHz
que je m'empresse d'inclure dans le code d'initialisation du PIC. Et
bingo, c'était bien ça, désormais le PIC s'initialise correctement et à
la vitesse d'horloge désirée. Je réintègre les lignes de code que
j'avais placées en remarque pour libérer un peu de mémoire et recompile
le tout. OK. Je continue maintenant les tests avec un clavier 4x4
raccordé directement sur le connecteur PORTB de la platine EasyPic4 et
appuie sur les petits boutons.
Tiens,
rien ne se passe... hum. Ah là le problème est vite localisé, j'ai
simplement oublié les huit résistances de rappel à la masse situées
sur chaque ligne du port B du PIC. Sur la platine EasyPic4, il
suffit de déplacer un cavalier pour mettre en service ces huit
résistances d'un coup (réseau de résistances connectable sur
GND
ou VCC). Désormais tout fonctionne comme attendu et je peux donc mettre
les codes source (MikroPascal) et compilé (*.hex) à disposition.
Prototype "final"
Réalisé sur plaque d'expérimentation à pastilles.
Le
circuit est assez compact et je n'ai utilisé aucun fil souple de
liaison - uniquement des queues rigides de composants (chutes) pour
assurer les diverses
liaisons. Les boutons poussoir sont raccordés aux deux borniers de 4
points visibles sur les deux côtés du PIC. L'alimentation était prévue
pour 5 V mais finalement je ne vais pas m'embêter avec une pile 9 V
associée à un régulateur de tension +5 V (ce que j'ai fait juste le
temps des tests sur le proto). Une simple pile plate de 4,5 V convient
très bien et dure plus longtemps. J'aurais aussi pû me contenter de
deux piles de 1,5 V style AA ou AAA (LR6 ou LR3) puisque le PIC
fonctionne encore sous une tension d'alimention de 3 V, mais comme j'ai
calculé les valeurs de résistance de limitation de courant dans les LED
pour une tension de 5 V et que les LED utilisées sont de type standard,
je reste sur la version alim 4,5 V. Les
photos du jouet viendront quand le tout sera mis en boîte.
Logiciel du PIC
L'archive zip dont le lien suit contient le source complet (MikroPascal
Pro
V4.80) et le fichier binaire compilé (*.hex).
Boîte
à lumières 002 - 16F628A (19/06/2011)
Si vous souhaitez recevoir par la poste un PIC
préprogrammé et prêt à utiliser, merci de
consulter la page
PIC
- Sources.
Circuit imprimé
Réalisé
en simple face avec un trou de 3 mm qui ne servira peut-être pas. Notez
l'effort que j'ai du faire pour orienter la LED D7 dans le même sens
que les autres dans l'unique but de vous éviter une catastrophe (quasi)
certaine.
Typon
aux formats PDF, EPS et Bitmap 600 dpi.