Dernière mise à jour :
26/04/2015
Article non terminé, volontairement
non
référencé dans les sommaires du
site
Présentation
Ce séquenceur dispose de 64 sorties logiques qui peuvent être
activées selon une séquence enregistrée sur carte SD ou
micro-SD.
Il met en oeuvre un PIC 18F46K22, un lecteur de
carte SD et des
registres à décalage 75HC595.
Caractéristiques principales
Caractéristiques du logiciel "
complet"
et du logiciel "
limité"
(*) :
- Nombre de sorties logiques : 64
/ 8
- Nombre maximal de séquences sur carte SD : 255 / 1
- Nombre maximal de pas par séquence : 65000 / 32
- Temps minimal entre deux pas d'une séquence : 1/10 seconde
(*) Le logiciel "limité" est mis à disposition gratuite,
me contacter pour le logiciel
"complet" ou pour un système dérivé.
Mode de fonctionnement
Dès la mise sous tension, le contenu de la carte SD est analysé et le
premier fichier de séquence est lu. Une fois la séquence achevée, le
logiciel du PIC cherche la présence d'un autre fichier de séquence.
S'il en trouve un autre, il le lit et l'exécute à la suite. S'il n'en
trouve aucun autre, il arrête la lecture (mode de lecture unique) ou
reprend celle du ou des fichiers lus précédement (mode de lecture en
boucle).
Schéma
Quelques circuits intégrés, certains bien spécifiques.
Remarque : l'expandeur de port MCP23017 et les boutons-poussoirs ne sont actuellement pas utilisés.
Principe général
Chaque séquence enregistrée sur la carte SD (formatée en FAT16) est
composée d'un
certain
nombre de lignes de données. Chaque
ligne correspond à un pas de séquence, et comporte
l'information horaire (moment où la ligne doit
être exécutée) et l'état que doivent prendre les 64
sorties logiques à cet
instant précis. La première ligne est chargée en mémoire et est
exécutée à l'instant 00:00:00:00
(hh:mm:ss:cc). La ligne suivante est à son tour chargée et exécutée
quand vient son tour.
L'accès à la carte SD s'effectue au fil de l'eau, cela permet
d'exécuter un très grand nombre de pas de séquence sans surcharger la
RAM du microcontrôleur.
Remarque : si aucune carte SD n'est détectée au démarrage, la LED Err clignote.
Le
format du fichier de séquence est de type texte et peut donc être créé
et modifié avec un éditeur de texte simple comme Notepad. Le signe
"égal" sert de séparateur entre l'information horaire et les états
logiques :
hh:mm:ss:cc=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx[CR][LF]
hh = heures (0 à 23)
mm = minutes (0 à 59)
ss = secondes (0 à 59)
cc = centièmes de seconde (0 à 90, seule la valeur des dizaines sera prise en compte)
x = état logique, désactivé ou activé (0 ou 1)
Chaque
ligne doit être terminée par un couple [CR]+[LF] (retour charriot et
saut de ligne) et peut comporter entre 1 et 64 valeurs logiques.
Exemple d'une séquence simple à trois lignes (3 pas) pour pilotage de 64 sorties :
00:00:00:00=0000000000000000000000000000000000000000000000000000000000000001[CR][LF]
00:00:24:60=0000000000000000000000000000000000000000000000000000000000000011[CR][LF]
01:05:13:00=1000000000000000000000000000000000000000000000000000000000000000[CR][LF]
Au démarrage de cette séquence, seule la sortie #64 est activée. Après
24 secondes et 6/10 de seconde (60 centièmes de seconde), la sortie #63 est également activée (la
sortie #64 le reste). Une heure, 5 minutes et 13 secondes après le démarrage de
la séquence, la sortie #1 est activée et les sorties
#63 et #64 sont désactivées.
Le
type de ligne suivante est également accepté, car le logiciel du PIC se
base sur les caractrères [CR]+[LF] pour localiser les fins de ligne :
hh:mm:ss:cc=xxxxxxxx[CR][LF]
Dans
l'exemple qui précède, seules les 8 premières sorties du séquenceur
sont traitées, toutes les autres sont forcées à l'état logique 0.
Les
fichiers de séquence enregistrés sur la carte SD doivent être nommés
au format "xxxx.dat", avec xxxx une valeur numérique comprise
entre 0001 et 0255 et l'extension (.dat) en minuscule. Au démarrage, le
logiciel du PIC recherche un fichier nommé 0001.dat. S'il le trouve, il
le charge et le traite. Sinon il cherche un fichier nommé 0002.dat,
etc. Si la carte SD comporte seulement deux fichiers nommés 0005.dat et
0017.dat, ces deux fichiers seront exécutés. Un fichier présent sur la
carte SD qui ne correspond pas au format attendu est simplement ignoré.
Interface de sortie
Les sorties sont de type TTL, directement issues des
registres à décalage 74HC595. La commande d'éléments de puissance
(lampes, moteurs, etc) nécessite l'ajout d'une interface
de puissance qui n'est pas représentée ici. Cette interface
additionnelle dépendra bien sûr des courants et tensions à commuter.
Pour des besoins modestes, un bon vieux ULN2803 qui
comporte 8 transistors darlington sera peut-être suffisant pour piloter
des charges résistives ou inductives.
Alimentation
L'ensemble réclame une tension de +5 V pour les
circuits logiques et une tension de +3,3 V pour le lecteur de carte SD.
J'ai opté pour des régulateurs linéaires classiques de type LM317 mais
on peut aussi récupérer une alim +5 V
perdue dans un coin et lui ajouter un régulateur à faible chute de
tension pour obtenir le +3,3 V.
Prototype
Réalisé sur plaque sans soudure, programmation du PIC en ICSP avec programmateur PICkit2 de Microchip.
Pour
le lecteur de carte SD, j'ai utilisé un "vieux" module de
MikroElektronika ainsi que des
modules plus récents commandés sur eBay (Chine). Pour ces
derniers, j'ai du ajouter 6 résistances pour adapter les niveaux
de tension (R25 à R30 sur le schéma). Dans le module Mikroe, ces
résistances sont incluses, en plus de cavaliers qui
permettent de configurer le module en 3,3 V ou
en 5 V.
Circuit imprimé
Non réalisé.
Logiciel du PIC
La version mise à disposition ici est limitée.
Me
contacter pour une version complète ou pour un système dérivé (
exemple
de système dérivé).
Séquenceur 008 - 18F46K22 - (26/04/2015)
Si vous souhaitez recevoir par la poste un PIC
préprogrammé et prêt à utiliser, merci de
consulter la page
PIC
- Sources.
Historique
26/04/2015
- Première mise à disposition.