Enregistreur de données sur clé USB en temps réel
(Data logger)

L'enregistreur en temps réel

Pour un enregistrement sur clé USB l'enregistreur est autonome. Il suffit de récupérer la clé usb et la placer sur un PC pour lire le fichier.
L'enregistreur de données sérielles qui réalise l'interface entre la clé USB et l'enregistreur de données est décrit sur le site du magazine Elektor. Si l'on n'utilise pas l'enregistreur de données sérielles, le montage sera en permanence connecté à un PC auquel il transmettra ses données.

La réalisation

Le montage peut être réalisé sur plaquette pastillée.
Une Horloge en Temps Réel IC3, DS 1307 envoie les données horaires à IC2 un Pic 16F88 par l'intermédiaire du bus I2C.
Les valeurs analogiques mesurées sur les 4 entrées AN0 à AN3 sont placées sur la broche TxD du PIC avec l'heure d'enregistrement, pour l'exploitation par un PC ou une clé USB.

structurel
nomenclature
câblage

L'utilisation

Pour tester le fonctionnement, j'ai placé 4 photorésistances (LDR) sur les 4 entrées analogiques comme sur le schéma ci-contre. Les LDR captent les variations de lumière. Comme leurs orientations sont différentes, les mesures le sont aussi.
J'ai branché un câble FTDI TTL-RS232 sur la carte et sur la prise USB du PC. J'ai lancé une connexion avec HyperTerminal mais tout autre terminal convient. Le Port de communication est réglé à 9600 bauds, en mode VT52.
Une fois la connexion établie, les mesures apparaissent à l'écran. Un appui sur l'interrupteur S1 permet de choisir entre 2 modes :
Touche 1 du clavier -> Réglage de l'horloge
Touche 2 du clavier -> Réglage de l'intervalle de temps
Après les réglages, les mesures reprennent. Après l'arrêt de la connexion, les données peuvent être copiées et collées dans le Bloc Notes ou dans un traitement de texte. Enregistrées au format .txt, elles seront reconnues par un tableur comme étant au format .csv et exploitables.

HyperTerminal doit être en Mode VT52 et le Port COM doit correspondre à celui du câble FTDI à 9600 bauds
Le réglage de l'horloge, sauvegardé par la pile de 3V
Le réglage de l'intervalle entre 2 mesures
La copie dans le presse-papier des données et le tableau de mesures dans un tableur.
L'exploitation du tableau de mesure

La programmation du Pic

Le programme est écrit en JAL (Just another Language). Ce langage permet la programmation des PIC de Microchip. Le logiciel est libre.

Bert Van Dam dans son livre 50 applications des microcontrôleurs PIC proposent de nombreux montages. L'environnement JAL, les librairies et les programmes du livre sont téléchargeables gratuitement sur le site d'Elektor.
Pour développer cette application j'ai utilisé ces librairies que j'ai adaptées à un PIC 16F88.
Si l'on veut modifier le programme, le mieux est donc de télécharger l'ensemble sur le site d'Elektor et de placer dans le dossier Librairies les 4 librairies modifiées.
Si l'on ne veut pas modifier ou adapter le programme, on programmera le PIC avec le fichier .hex.

J'ai utilisé le programmateur ISCP Wisp648 de chez VOTI. Sur le schéma structurel et le plan de câblage, la couleur des 6 fils de liaison correspondent à ce programmateur.
Le Pic 16F88 peut bien sûr être programmé avec d'autres programmateurs, mais il faudra régler correctement les fusibles.
Si l'on se contente de charger le programme .hex, on peut se référer à la page Programmer un microcontrôleur PIC sur ce site.

Le programme utilise une boucle principale :
Forever loop ........End loop
Demande à l'horloge RTC l'heure
ds1307_readtime(sec, min, hrs)

Lit les 4 entrées analogiques : AN0 à AN3
meas = adc_read_low_res(counter)
Place l'heure et les mesures sur le Port sériel
ds1307_showtime(sec,min,hrs)
serial_hw_byte(meas)
Un appui sur l'interrupteur génère une interruption sur la broche RB0 du PIC et le programme rentre en mode configuration.
if (intf) & ( pin_b0 == 0) then
flag = 1

Le réglage de l'heure et des intervalles de mesure est possible.

Les fichiers pour la programmation du Pic