Dernière mise à jour :
05/11/2012
Présentation
Ce chenillard est basé sur l'emploi d'un PIC de type 16F628A.
Encore un
chenillard ? Oui, mais celui-là a quelques particularités qui le distinguent des
précédents. Voici ses caractéristiques principales :
-
les sorties peuvent être activées selon un mode "point" (une seule LED
allumée à la fois) ou un mode "barre" (plusieurs LED peuvent être
allumées en même temps).
-
il est possible de spécifier le nombre de sorties activables, de 1 à
10, avant retour au point de départ (toutes LED éteintes).
- un signal sonore est produit à chaque avancée. Il est identique pour chaque étape sauf pour la dernière.
Le
passage d'une configuration de sortie (étape) à la suivante se fait de
façon manuelle via un bouton poussoir, mais peut être commandé par un
signal externe. Le but de ce montage est de montrer qu'on peut réaliser
un "chenillard / séquenceur" avec des actions qui peuvent être
spécifiques pour chaque étape.
Schéma
Un schéma plutôt simple et aéré, au vu de ses caractéristiques.
Fonctionnement général
Juste après la mise sous tension, le
programme du PIC entame une petite animation lumineuse pour signaler
que tout va bien (que le programme tourne correctement). Si rien ne se
passe,
vérifier la configuration des fusibles.
Ensuite, il reste en attente de commande de la part de l'utilisateur et
ne fait rien (si ce n'est d'attendre, ce qui est déjà quelque
chose, j'en conviens). Les interruptions sur les quatres broches RB4 à
RB7 du PIC sont activées, ce qui permet au logiciel de réagir quand il
se passe quelque chose au niveau des boutons poussoirs SW1 à SW3. La
broche RB4 étant utilisée en sortie pour piloter la dernière LED (D10),
l'interruption sur cette broche ne sera jamais utilisée.
- Appui
sur bouton poussoir SW1 / Go : le logiciel avance d'un cran (d'une étape). Si la
première LED était allumée, alors c'est la seconde qui s'allume. La
précédente peut rester allumée (mode d'affichage barre) ou s'éteindre
(mode d'affichage point) à ce moment, nous verrons cela dans peu de
temps.
- Appui sur bouton poussoir SW2 / More (more = plus) : le
logiciel utilise une variable interne qui permet d'enregistrer le
nombre de sorties actives que l'utilisateur désire avoir (nombre max de LED allumées). Cette
variable est sauvegardée en EEPROM et reste donc valable même après
coupure alimentation. Par défaut ce nombre est de 10, qui correspond au
maximum. En appuyant sur ce poussoir SW2, le nombre est incrémenté,
sauf bien sûr dans le cas où il est déjà à son maximum (10). Afin
d'indiquer à l'utilisateur quel est le nombre en cours, la LED
correspondante clignote deux fois puis l'affichage revient à
l'état où il en était. Si par exemple on a les trois premières LED
allumées (trois appuis sur SW1 depuis la mise sous tension) et que la
valeur par défaut de 10 n'a pas été encore modifiée, un appui sur SW2
fait éteindre les trois LED actuellement sous tension, la LED N°10
clignote deux fois, puis les trois premières LED se rallument.
- Appui sur bouton poussoir SW3 / Less (less = moins) : en appuyant sur ce poussoir, le
nombre maximal de sorties pouvant être activées est décrémenté, sauf dans le cas où il est déjà à son
minimum (1). Afin d'indiquer à l'utilisateur quel est le nombre en cours,
la LED correspondante clignote deux fois puis l'affichage revient à
l'état où il en était. Si par exemple on a les trois premières LED
allumées (trois appuis sur SW1 depuis la mise sous tension) et que la
valeur par défaut de 10 n'a pas encore été modifiée, un appui sur SW3
fait éteindre les trois LED actuellement sous tension, la LED N°9
clignote deux fois, puis les trois premières LED se rallument.
Le mode d'affichage "point" ou "barre" est défini par l'état logique de la broche RA6 du PIC, configurée en entrée :
- mode barre : RA6 = 0 (borne centrale du jumper / cavalier JP1 orientée vers la masse)
- mode point : RA6 = 1 (borne centrale du jumper / cavalier JP1 orientée vers le +5 V)
Remarque
: le changement de position du cavalier JP1 ne modifie pas l'affichage
en cours. On ne voit le changement de mode d'affichage que lors de
l'appui suivant sur SW1.
Générateur sonore
Un son est
produit à chaque nouvel appui sur SW1 / Go. Ce son peut être un peu de
n'importe quel type, fixe ou glissant. Il peut même s'agir d'une (très
courte) mélodie. J'aurais pu utiliser la procédure Sound_Play
incluse dans MikroPascal, mais j'ai préféré utiliser une des procédures
que j'avais développées dans ma
sirène 007
à base de PIC 12F675, et qui donne un son de type "laser", passant
rapidement de l'aigu au grave (tout autre choix est bien sûr permis).
procedure Out_DoSound_1;
var
i, iDelay, iPeriod: byte;
begin
for iDelay := 1 to 100 do
begin
for iPeriod := 0 to 5 do
begin
Out_Sound := Out_Sound xor 1;
for i := 0 to iDelay do
delay_us(1);
end;
end;
Out_Sound := 0; // important, éviter toute tension continue sur le piezo
end;
La sortie sonore se fait grâce à un transducteur de type piezo
directement raccordé sur la sortie RA7 du PIC et référencé par rapport
à la masse.
Voir aussi page
Programmation PIC - Bases - MP - Production sonore si le sujet vous intéresse.
Pour
jouer un fichier sonore complexe (parole, musique, effets spéciaux), on
peut envisager l'emploi d'un lecteur externe de fichiers MP3 (sur carte
SD ou clé USB) qui est piloté par le PIC via une liaison de type I2C ou
SPI (deux fils requis). Dans le cas présent il n'y a plus de
lignes libre sur le PIC mais cela pourrait s'arranger de deux
façons :
- soit en utilisant un PIC avec plus de broches (un de la famille 18F qui ne coûte pas forcement plus cher);
- soit en supprimant les deux poussoirs SW2 et SW3 pour faire de la place.
Pour
une sortie audio de plus forte puissance, il faut amplifier en courant
le signal sortant sur RA7 avec un amplificateur comme un de ceux
proposés à la page
amplificateurs audio pour signaux logiques.
Oscillateur PIC
On ne va surtout pas s'encombrer d'un quartz ou
d'un résonateur céramique pour ce genre d'application. Aussi
utilisons-nous avec modestie l'oscillateur 4 MHz intégré au PIC. Cette
vitesse d'horloge de 4 MHz est amplement suffisante pour gérer tout ce
qu'on veut, y compris la génération des sons. Mais la raison réelle, je
dois l'avouer, est de pouvoir disposer de deux broches d'entrée /
sortie supplémentaires (RA6 et RA7).
Sorties
Rien
de spécial à dire de ce côté, chaque LED est raccordée à une sortie
individuelle à travers une résistance de limitation de courant.
N'hésitez pas à employer des LED haute luminosité pour limiter le
courant consommé par l'ensemble. Songez en effet que si les dix LED
sont allumées en même temps et que chacune est parcourue par un courant
de 20 mA (valeur standard pour une LED classique), alors la
consommation globale grimpe à 200 mA. Bien sûr il n'est pas difficile
de recourir à une alimentation secteur capable de débiter un tel
courant. Mais si on peut limiter cette consommation pas forcément
utile, profitons-en. La commande d'ampoules reliées au secteur 230 V
est tout à fait envisageable, il suffit de remplacer chaque LED par une
interface secteur isolée
dotée d'un optotriac et d'un triac. Vous pouvez aussi utiliser de
simples transistors associés aux triacs, comme adopté dans le
chenillard 020. mais dans ce cas attention, plus de danger potentiel puisqu'une borne du secteur est reliée au circuit de commande.
Code source et fichier compilé
Code source MikroPascal Pro V5.30 et fichier binaire compilé (*.hex)
prêt à flasher dans le PIC, dans l'archive zip suivante :
Chenillard_021 - 16F628A
(version du 05/11/2012)
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é, vue 3D pour aperçu des composants utilisés.
Historique
05/11/2012
- Première mise à disposition.