Electronique > Réalisations > Roulette 002

Dernière mise à jour : 11/02/2009

Présentation

Une roulette à 32 leds montées en cercle, à la façon d'une horloge à aiguilles.

roulette_002_pcb_3d_a

Le tout piloté par un petit PIC de type 16F628, 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.

Roulette 002

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 16F628 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/2019
- Première mise à disposition