Electronique > Réalisations > Boîte à lumières 002

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.

boitalumiere_002_pcb_3d_a

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 !

boitalumiere_002

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.

selecteur_001cb_16f628_proto_001d

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. 

boitalumiere_002_proto_001a boitalumiere_002_proto_001b

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.

boitalumiere_002_pcb_composants

Typon aux formats PDF, EPS et Bitmap 600 dpi.