Sélectionnez votre langue

Présentation

Ce séquenceur a été conçu pour délivrer une série d'impulsions avec arrêt automatique.

sequenceur_006b_pcb_3d_a

Il fait appel à un PIC 16F88 et trois réglages sont disponibles :
- intervale de temps entre chaque impulsion (100 ms à 100 s);
- nombre d'impulsions (1 à 255);
- durée des impulsions (10 ms à 10 s).
Ce montage existe aussi en version plus "compliquée" mais sans PIC, voir page Séquenceur 006. A l'origine, le montage devait se faire sans microcontrôleur, mais je trouvais l'idée intéressante de montrer deux façons de faire pour parvenir aux mêmes résultats.

Schéma

Un seul circuit intégré, ça peut paraître peu, surtout quand on sait qu'on peut en mettre quatre.

sequenceur_006b

Principe général

Quand on presse le bouton-poussoir SW1/Start, le logiciel lit les valeurs analogiques présentes sur les entrées RA0/AN0 à RA2/AN2.

  • La tension lue sur RA0/AN0 (In0) définie l'intervale de temps entre chaque impulsion (100 ms à 100 s).
  • La tension lue sur RA1/AN1 (In1) définit le nombre d'impulsion à délivrer (1 à 255).
  • La tension lue sur RA2/AN2 (In2) définit la largeur de chaque impulsion (10 ms à 10 s).

La durée des impulsions de sortie ne peut pas dépasser l'intervale de temps entre chaque impulsion. La valeur de l'intervale entre chaque impulsion est prioritaire sur leur durée. Si par exemple vous définissez un intervale entre impulsions de 1 secondes et une durée d'impulsion de 2 secondes, alors la durée réelle des impulsions sera diminuée pour être légèrement inférieure à l'intervalle de temps.

Description détaillée

On utilise ici l'oscillateur interne du PIC à sa fréquence de 8 MHz. Le timer 1 est mis à contribution pour délivrer des interruptions toutes les 10 ms, qui est la base de temps principale du séquenceur. A chaque interruption, un compteur (variable iT1Cnt de type DWord) est incrémenté. Trois autres variables de type Word sont utilisées : iPulseInterval, iPulseCountMax et iPulseWidth, ces trois variables permettent de mémoriser les valeurs relatives aux tensions appliquées sur les entrées RA0/AN0 à RA2/AN2, selon la tactique suivante :

  • iPulseInterval : valeur numérique qui correspond à la tension lue sur RA0/AN0 et qui peut prendre une valeur comprise entre 0 (pour 0 V) et 1023 (pour +5 V). Cette valeur est multipliée par 10 et permet de définir l'intervalle de temps entre impulsions dont la valeur est comprise entre 0 et 10230 ms (une unité de la valeur numérique correspond à 100 ms). Dans les faits, et ça c'est moi qui l'ai décidé, un intervalle minimal de 100 ms est appliqué si la valeur lue en entrée est de 0 V.
  • iPulseCountMax : valeur numérique qui correspond à la tension lue sur RA1/AN1 et divisée par 4, qui peut prendre une valeur comprise entre 0 (pour 0 V) et 255 (pour +5 V). Cette valeur correspond au nombre d'impulsions à délivrer avant l'arrêt de la séquence. Dans les faits, le nombre d'impulsions minimum est de 1 même si la valeur lue en entrée est de 0 V.
  • iPulseWidth : valeur numérique qui correspond à la tension lue sur RA2/AN2 et qui peut prendre une valeur comprise entre 0 (pour 0 V) et 1023 (pour +5 V). Cette valeur définit la largeur des impulsions, valeur comprise entre 0 et 1023 ms (une unité correspond à 10 ms). Là encore j'impose une largeur minimale, de 10 ms (même pour une tension d'entrée de 0V).

Quand on met en marche le séquenceur en pressant le bouton-poussoir SW1/Start, la sortie principale Out est activée et le compteur iT1Cnt est remis à zéro puis s'incrémente de un point toutes les 10 ms. Quand ce compteur atteint la valeur iPulseWidth, la sortie est désactivé. Quand il atteint la valeur iPulseInterval, le compteur d'impulsions est incrémenté de un point et le compteur iT1Cnt est remis à zéro. L'opération se répète tant que le nombre d'impulsions désiré n'a pas été atteint. La LED D1 clignote tant que la séquence est en cours.

Logiciel du PIC

Fichiers binaires compilés (*.hex) et source MikroPascal (*.mpp*) fournis.
Séquenceur 006b - PIC 16F88 - Version du 05/01/2014
Pour obtenir un PIC préprogrammé avec ce logiciel, voir page Logiciel PIC - Sources .

Circuit imprimé

Non réalisé.

Historique

05/01/2014
- Première mise à disposition.