Dernière mise à jour :
11/02/2009
Présentation
Une roulette à 32 leds montées en
cercle, à la façon d'une horloge à aiguilles.
Le
tout piloté par un petit PIC de type 16F628A, associé
à deux démultiplexeurs 4 vers 16 de type CD4514. C'est en
quelques
sortes une extension de ma
Roulette 001
à 12 leds, puisqu'elle offre les mêmes
caractéristiques de base. Attention, avec 32 points, on ne gagne
pas souvent...
Schéma
Le schéma qui suit est complet.
Les points marqués TP1 et TP2 ne m'ont servi qu'à vérifier certains
détails au moment de la mise au point. Il s'agit de points test (TP =
Test Point) que vous pouvez ignorer.
Horloge et cadencement
Le PIC 16F628A est cadencé par son horloge interne de 4 MHz, ce
qui évite de reccourir à tout composant externe pour
faire tourner l'ensemble. Par la même occasion, les broches OSC1
et OSC2 sont libérées et peuvent servir d'entrées
/ sorties logiques standard. Ce dont je ne me prive pas.
Roulement et ralentissement de la "bille"
Ca y est, le montage fonctionne correctement, même s'il est
sans doute possible d'améliorer encore un peu la façon
dont le ralentissement de la "bille" s'opère. J'ai
abandonné la méthode qui consistait à
insérer un retard grandissant entre chaque pas de comptage, et
utilise désormais les interruptions du Timer0 avec une valeur de
prépositionnement du timer (TMR0) qui va diminuant, assurant
ainsi des interruptions de plus en plus espacées dans le temps.
Une fois que la valeur de TMR0 a atteint $00, le comptage (et le
mouvement des leds) est bloqué, et il faut un appui sur le
bouton poussoir relié à l'entrée RA5 pour
redémarrer l'ensemble (réaffectation de la valeur $FF
à TMR0). Les bips sonores associés à chaque
déplacement de led sont correctement
générés, j'ai juste monté un peu en
fréquence pour un meilleur rendu sonore : je suis passé
de 50 Hz à 100 Hz, la durée de chaque bip restant
égale à 20 ms. Autre modification apportée : quand
on appuie sur le bouton poussoir de relance SW1 / START, la
première
led qui s'allume est désormais choisie de façon
aléatoire. Cela évite que l'arrêt se fasse toujours
dans la même zone... Pour cette fonction, j'ai activé le
Timer1 et lis la valeur de TMR1L en boucle jusqu'à ce que je
tombe sur une valeur comprise entre 0 et 31. Ce n'est pas une
méthode parfaite mais ça donne toutefois un
résultat correct.
Fichier compilé et code source
Code source et fichier
binaire compilé (*.hex) prêt à flasher dans le pic,
disponibles dans l'archive zip suivante :
Roulette
002 - 16F628A
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é. La vue 3D n'existe que pour donner un apperçu des
composants utilisés.
Historique
11/02/2009
- Première mise à disposition