Dernière mise à jour :
09/11/2014
Présentation
Ce séquenceur autonome permet d'activer ou de désactiver 64 sorties logiques de façon
indépendante et à des instants bien précis définis à l'avance, à partir d'une
séquence horaire enregistrée sur carte SD.
Il met en oeuvre un PIC 18F46K22 et un lecteur de carte MMC/SD,
ainsi que des registres à décalage de type 75HC595. Un simple fichier
texte enregistré sur la carte SD indique les moments où les sorties
doivent changer d'état. Ce fichier comporte autant de lignes que de
changements d'états souhaités, chaque ligne comporte l'information
horaire (moments où doivent avoir lieu les changements d'état) et les états
individuels que doivent avoir les 64 sorties à cet instant précis. Le
système peut gérer 255 séquences différentes, chacune pouvant
comporter 127 pas de programme (ce nombre de pas peut être plus élevé,
détails plus loin). Le démarrage d'une séquence peut se faire via un
clavier à touches ou via une commande série RS232 (ou USB avec
adaptateur USB/RS232).
Caractéristiques principales
Enregistrement des séquences : sur carte SD (système autonome)
Nombre de séquences max : 255
Nombre de sorties max : 64
Nombre maximal de pas par séquence en mode Lecture carte SD avec buffer, précision de 1/10 seconde (Nota 1) : 127
Nombre maximal de pas par séquence en mode Lecture carte SD au fil de l'eau, précision de 1 seconde (Nota 1) : 800
Durée maximale d'une séquence complète : 6500 secondes (108 minutes)
Déroulement séquence : en mode unique ou en boucle.
Démarrage séquence par clavier ou sur réception d'un ordre "série" (RS232-19200 bauds)
Mode debug : envoi possible sur la sortie Tx (port série) des actions en cours (format texte ASCII)
Nota 1 : détails dans le texte explicatif.
Avertissement
Le
logiciel du PIC n'est pas mis à disposition gratuite dans sa
version complète. En revanche, je mets à disposition gratuite une
version bridée capable de piloter les quatre premières sorties, ce qui
permet d'en évaluer le fonctionnement. Pour disposer du logiciel
dans sa version complète (64 sorties), merci de
me contacter.
Les fonctions "Lecture carte SD au fil de
l'eau" et "Commande par port série" ne sont pas implémentées dans cette première version.
Schéma
Quelques circuits intégrés, ça ne peut à priori pas faire de mal.
Principe général
Chaque séquence est composée d'un certain
nombre de lignes au format texte, enregistrées dans un fichier texte
lui-même stocké sur une carte SD formatée en FAT16 ou FAT32. Chaque ligne (pas
de séquence) comporte l'information horaire (moment où la ligne doit
être exécutée) et l'état que doivent prendre les 64 sorties à cet
instant précis. Par exemple, la ligne suivante indique que les 3
premières sorties seulements doivent être actives, 1,7 seconde après le
démarrage de la séquence.
00017=1110000000000000000000000000000000000000000000000000000000000000La
ligne suivante quant à elle indique que seules les 8 dernières
sorties doivent être actives au bout de 25,3 secondes.
00253=0000000000000000000000000000000000000000000000000000000011111111Les informations horaires (à gauche du signe égal) sont données en dixièmes de seconde.
Il aurait été également possible (et même
conseillé diront certains) d'enregistrer les informations de façon plus
compacte. Les 64 états logiques des sorties prennent en effet moins de
place dans le fichier si on les écrit au format hexa (8 octets - et donc 16 caractères hexa - suffisent). Mais au
départ, ce système était destiné à quelqu'un qui ne voulait pas
s'embêter avec le système hexa et préférait voir directement l'état
des sorties, d'un simple coup d'oeil. Il est vrai que l'écriture en
binaire est plus visuelle pour ce type d'action.
Modes de lecture
Il existe deux modes de lecture des séquences :
- Mode
Lecture carte SD avec buffer, précision de 1/10 seconde. Dans ce
mode, les instructions de séquencement sont toutes lues en une seule
fois et placées dans la mémoire RAM du PIC. Le Timer1 est ensuite mis à
contribution en provoquant une interruption toutes les 100 ms, pour
lire les lignes de séquence les unes après les autres.
- Mode
Lecture carte SD au fil de l'eau, précision de 1 seconde. Dans ce
mode, les instructions de séquencement sont lues au fur et
à mesure dans la carte SD. L'instruction N+1 est chargée juste après exécution de l'instruction N, de sorte que
l'activation des sorties ne soit pas retardée par le temps de lecture de la carte SD.
Le premier mode est préféré quand le nombre de pas de la séquence à exécuter ne dépasse pas 127.
Chargement, déclenchement et arrêt d'une séquence
Le chargement d'une séquence peut se faire de deux façons :
- par composition du numéro de séquence sur un clavier à touches (0 à 9 suivi de ENTER)
- par envoi d'un octet sur l'entrée Rx du PIC (numéro de la séquence compris entre 0 et 127).
Le démarrage de la séquence sélectionnée peut se faire de deux façons :
- par pression sur la touche START.
- par envoi d'un octet de valeur $FF sur l'entrée Rx du PIC.
Si la touche LOOP a été pressée avant démarrage de la séquence, la séquence est lue en boucle.
L'arrêt de la séquence en cours d'exécution peut se faire de deux façons :
- par pression sur la touche STOP
- par envoi d'un octet de valeur $FE sur l'entrée Rx du PIC.
Interface de sortie
Le
schéma montre que les sorties sont de type TTL, sorties directes des
registres à décalage 74HC595. La commande d'éléments de puissance
(lampes, moteurs, électrovannes, 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. Le
schéma mentionne tout de même dans un coin un bon vieux ULN2803 qui
comporte 8 transistors darlington et pourra être utilisé pour piloter
de modestes charges (inductives ou selfiques).
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.
Circuit imprimé
Non réalisé, vue 3D juste pour faire joli.
Logiciel du PIC
Seule la version bridée à 4 sorties est disponible gratuitement (version carte SD en FAT32).
Séquenceur 007 - 18F46K22 - Version limitée à 4 sorties (09/11/2014)
Deux fichiers sont fournis :
- electronique_sequenceur_007_18f46k22_le.hex = version limitée à 4 sorties
sans infos débogage sur sortie RS232
- electronique_sequenceur_007_18f46k22_le_debug.hex = version limitée à 4 sorties
avec infos débogage sur sortie RS232
En
temps normal, utiliser la version sans info de débogage. En cas de
soucis avec la carte SD, utiliser la version avec infos de débogage.
Pour la version complète à 64 sorties,
me contacter.
Historique
09/11/2014
- Première mise à disposition.