Sélectionnez votre langue

Présentation

Ce chenillard est basé sur l'emploi d'un PIC de type 16F628A.

chenillard_021_pcb_3d_a

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.

chenillard_021

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.