Electronique > Réalisations > Jeux de lumière > Chenillard 009

Dernière mise à jour : 21/02/2010

Présentation

Ce chenillard un peu particulier m'a été demandé par quelqu'un qui souhait effectuer le dépannage d'un jouet d'enfant cassé, et dont le fonctionnement est semi-manuel. Composé de 10 leds et d'un bouton poussoir, voici son fonctionnement, sachant que les dix leds sont disposées verticalement, led D1 en haut et led D10 en bas :
- à la mise sous tension, toutes les leds sont éteintes.
- 1er appui sur le bouton poussoir : la led D1 s'allume, puis s'éteint quand s'allume la led D2, qui elle-même s'éteint quand s'allume la led D3, etc. L'illusion est celle d'une bille qui tombe. Une fois la led D10 allumée, tout se bloque (toutes les leds sont éteintes, sauf la led D10 qui reste allumée).
- 2ème appui sur le bouton poussoir : la led D1 s'allume, puis s'éteint quand s'allume la led D2, qui elle-même s'éteint quand s'allume la led D3, etc. Comme précédement, sauf que là, le système se bloque quand s'allume la led D9. A ce stade, les deux leds D9 et D10 restent allumées.
- 3ème appui sur le bouton poussoir : la led D1 s'allume, puis s'éteint quand s'allume la led D2, qui elle-même s'éteint quand s'allume la led D3, etc, même cinéma, jusqu'à allumage de la led D8, qui reste alors allumée en plus des deux du bas.
- idem pour les appuis suivant.
- 10ème appui : il y a à ce moment 9 leds allumées (D2 à D10), la dernière (D1) s'allume et hop, le système se fige. Toutes les leds sont allumées.
- 11ème appui : toutes les leds s'éteignent et il ne se passe rien d'autre, on se retrouve au point de départ.

Le dessin qui suit donne un aperçu de ce que cela doit donner. Chaque colonne représente les dix leds à un instant donné. Le "Go !" au dessus d'une colonne représente l'appui sur le bouton poussoir (ce dessin ne représente qu'une partie d'un cycle complet).

chenillard_009_figures_001a

Pour répondre à ce cahier des charges, je me suis dit que la meilleur solution serait sans doute d'utiliser un PIC, et je me suis donc attelé à emplir de quelques lignes de code, un 16F628A flambant neuf.

Schéma

Le schéma est très simple, surtout si on le compare à toute la mécanique qu'il aurait fallu mettre en place avec des circuits logiques classiques. L'horloge (l'oscillateur) est intégré dans l'unique circuit intégré présent, il est vraiment difficile de faire plus simple.

chenillard_009

Fonctionnement général
A la mise sous tension, toutes les leds clignotent trois fois de suite rapidement, puis restent ensuite éteintes. Si cet effet n'est pas souhaité, il faut simplement mettre en commentaire la ligne "Welcome" dans la procédure du programme principal et recompiler le programme (avec par exemple la version d'évaluation de MikroPascal puisque le code ici ne dépasse pas la limite de 1 KO). Pour initier le cycle de descentes de billes, il faut appuyer sur le bouton poussoir SW1. A noter que l'appui sur SW1 pendant qu'une bille est en train de descendre, n'est volontairement pas pris en compte. De même, un délai d'inactivité de 100 ms a été volontairement ajouté après chaque fin de descente, ce délai est surtout utile pour conserver un comportement normal quand on arrive à la dernière bille, si la vitesse de descente sélectionnée est rapide, pour ne pas enchaîner immédiatement avec la suite de façon incontrôlée (à cause des rebonds du poussoir). Il s'agit ici en quelque sorte d'un système anti-rebond logiciel.

Réglage de la vitesse
La vitesse de descente des "billes" est programmable via les trois cavaliers JP1, JP2 et JP3. Le délai qui s'écoule entre chaque étape (passage d'une bille à l'autre) dépend de l'orientation de ces cavaliers, vers le +Alim (niveau logique 1) ou vers la masse (niveau logique 0), selon le codage suivant.
JP1=0 et JP2=0 et JP3=0 > délai = 10 ms (le plus rapide)
JP1=1 et JP2=0 et JP3=0 > délai = 30 ms
JP1=0 et JP2=1 et JP3=0 > délai = 50 ms
JP1=1 et JP2=1 et JP3=0 > délai = 70 ms
JP1=0 et JP2=0 et JP3=1 > délai = 100 ms
JP1=1 et JP2=0 et JP3=1 > délai = 120 ms
JP1=0 et JP2=1 et JP3=1 > délai = 150 ms
JP1=1 et JP2=1 et JP3=1 > délai = 200 ms (le plus lent)
Important : les trois entrées RA5, RA6 et RA7 doivent impérativement être raccordées soit à la masse, soit au +Alim, il ne faut pas les laisser en l'air. Aucune obligation d'utiliser des cavaliers si vous souhaitez garder toujours la même vitesse, ces entrées peuvent être câblées à demeure. D'un point de vue pédagogique, le remplacement des trois cavaliers par trois inverseurs simples accessibles par l'utilisateur peut l'habituer à "évaluer le poids d'informations binaires", puisqu'à huit combinaisons possibles correspondent huit vitesses différentes. Vous pouvez aussi remplacer ces inverseurs par de simples interrupteurs câblés entre les entrées et le +Alim, il faut dans ce cas ajouter des résistances de rappel de 10 K0 à 47 K0 entre chaque entrée et la masse.

Prototype

Le montage a été essayé avec la platine EasyPic4, associée à un petit circuit d'expérimentation sans soudure, les deux systèmes étant raccordés entre eux au moyen de connecteurs de type EasyProto (un connecteur pour le port A du PIC et un autre pour le port B).

photos/electronique_chenillard_009_proto_001a.jpg

Les leds utilisées sont vieilles et n'éclairent pas beaucoup, d'autant que la valeur des résistances séries montées en série avec ces dernières est de 1K, mais cela suffisait amplement pour mettre au point le montage et en vérifier le fonctionnement.

Alimentation

Le circuit est prévu pour être directement alimenté sur pile, avec deux ou trois piles de 1,5 V montés en série. Mais vous pouvez bien entendu ajouter un régulateur de tension de type 7805 (ou mieux 78L05) si le branchement à une source de tension supérieure s'impose.

Code source et fichier compilé

Code source MikroPascal V8.3 et fichier binaire compilé (*.hex) prêt à flasher dans le PIC, dans l'archive zip que voici :
Chenillard_009 - 16F628 (version du 21/02/2010)
Si vous souhaitez recevoir par la poste un PIC préprogrammé et prêt à utiliser, merci de consulter la page PIC - Sources.

Circuit imprimé

Non réalisé.

Corrections et remarques

21/02/2010
- Possibilité ajout condensateur de 100 nF en parallèle sur le bouton poussoir de commande SW1, dans le cas où vous observez un déclanchement inopiné sur la dernière descente de led (poussoir enfoncé trop longtemps et rebonds au relachement). Cet ajout a nécessité une petite modification au niveau du logiciel, car le condensateur, à la mise sous tension, est déchargé et se comporte donc comme un court-circuit (même effet qu'un appui sur SW1).
- Portage du code logiciel pour compilation sous MikroPascal Pro V3.20.