Dernière mise à jour :
05/01/2014
Présentation
Ce séquenceur a été conçu pour délivrer une série d'impulsions avec
arrêt automatique.
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.
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.