Projet à microcontrôleur PIC 16F628A

Acquisition de température par liaison RS-232C

+ Logiciel de suivi de température

 

1- Présentation

2- Rappel sur le bus série asynchrone RS-232C

3- Schémas électriques

4- Principe de fonctionnement

5- Communication entre l'ordinateur et la carte à microcontrôleur

6- Liste du matériel

7- Le code source du microcontrôleur PIC 16F628A

 

Il s'agit d'une carte à microcontrôleur (PIC 16F628A) équipée d'un capteur de température analogique (LM335).

La plage de mesure va de 0,0 à 51,0 °C avec une résolution numérique de 0,2 °C.

L'incertitude de mesure est de l'ordre de 2°C.

Cette carte communique avec un ordinateur à travers une liaison série RS-232C.

 

Côté ordinateur, une application permet l'acquisition de la température, puis l'affichage sous la forme d'un graphe déroulant de l'évolution dans le temps de cette température :

Le protocole de communication entre l'ordinateur et la carte est le suivant :

Quand l'ordinateur envoie l'octet 0x74 (code ASCII du caractère 't'), la carte renvoie la température (en °C) avec le format xx,x (4 caractères).

 

Les paramètres de la liaison RS232C sont ici :

Au repos, le niveau logique est 1.

Le début de la transmission est marqué par un bit Start au niveau 0, suivi des 8 bits de données (bit de poids faible en premier).

La fin de la transmission est marquée par un bit Stop (niveau 1).

 

Notez que les niveaux logiques de la liaison RS232C ne sont pas compatibles avec la logique TTL.

Le rôle d'un circuit intégré de type MAX232 est de faire l'interface :

Exemple :

- Oscillogramme de la transmission du caractère '5' (0x35 en code ASCII, 00110101 en binaire) :

- Oscillogramme (niveau TTL) de la transmission des caractères 'B', '2' et 'h' (0x42, 0x32 et 0x68 en code ASCII) :

 

 

 

 

 

 

4-2- Le convertisseur analogique / numérique ADC080x

L'ADC0804 est un convertisseur analogique / numérique à approximations successives dont voici les principales caractérisques :

L'ADC est ici en mode "free-running".

La fréquence de l'horloge dépend de R1 et C9 : f # 1/(1,7.R1.C9) # 270 kHz

La fréquence d'échantillonnage est proportionnelle à la fréquence d'horloge : # 3,9 kHz (ce qui est plus que suffisant pour suivre l'évolution d'une grandeur telle que la température !).

On notera la présence du bouton poussoir "Start". En effet, il peut arriver que l'ADC se bloque à la mise sous tension, il suffit alors d'appuyer sur ce bouton pour résoudre le problème.

Pour plus d'informations, consulter le data sheet des différents fabriquants de ce circuit intégré (National semiconductor, Philips, Texas Instruments ...).

 

4-3- Le microcontrôleur 16F628A

Le µC communique :

Quand une donnée est reçue et décodée par l'UART, une interruption est déclenchée. Dans la routine d'interruption, cette donnée est directement lue dans le registre RCREG.

Si la donnée est 0x74 (code ASCII du caractère 't'), le µC renvoie la température (en °C) avec le format xx,x (4 caractères) :

Le µC lit et convertit les 8 bits de sortie de l'ADC en une série de 4 caractères ASCII.

L'interruption d'émission de l'UART est générée quand l'UART est disponible pour émettre. La routine d'interruption envoie le 1er caractère (il suffit d'écrire la donnée dans le registre TXREG), puis le second caractère à l'interruption suivante etc ...

RB1/RX : donnée reçue par l'UART : 0x74 (t en code ASCII)

RB2/TX : données émises par l'UART : 0x35 0x31 0x2C 0x30 (51,0 en code ASCII)

 

Il faut bien sûr un ordinateur qui possède un port COM, reconnaissable par son connecteur SubD 9 broches mâle.

Il faut brancher un câble "null-modem" (câble croisé) entre l'ordinateur et la carte.

Si vous n'en avez pas, vous pouvez facilement en faire un (il faut 3 fils et 2 connecteurs SubD 9 broches femelle).

 

Ce logiciel est normalement installé avec Windows.

Si vous ne le trouvez pas, rechercher le fichier hypertrm.exe (démarrer -> Rechercher).

Autrement, vous pouvez le télécharger gratuitement à l'adresse suivante :

http://www.hilgraeve.com/htpe/download.html

 

Lancer l'application HyperTerminal.

La fenêtre "Description de la connexion" s'ouvre et vous demande d'entrer un nom pour la nouvelle connexion (par exemple : PIC).

Choisir la valeur par défaut (COM1) dans le fenêtre "Connexion", puis :

 

Quand vous appuyez sur une touche, HyperTerminal transmet son code ASCII par la liaison RS-232C.

S'il s'agit de la touche 't', HyperTerminal reçoit la température :

 

Voici une application qui permet l'acquisition de la température, puis l'affichage sous la forme d'un graphe déroulant de l'évolution dans le temps de cette température :

 

Avant-propos

Cette application a été écrite en C++ Borland Builder 5.

L'application fonctionne sous Windows NT4 et Windows XP (non testée sous Windows Vista, merci de me dire ce qu'il en est ...).

N.B. La gestion de la liaison RS232 nécessite l'installation du composant TComPort (la version 2.64 est suffisante) :

 

Description

Une acquisition de température est réalisée toutes les 30 millisecondes.

La température retenue est la moyenne des 30 dernières mesures : on réalise ainsi un filtrage numérique qui atténue l'influence du bruit.

Il y a la possibilité de sauvegarder les données dans un fichier texte :

Ce fichier peut ensuite être exploité avec Excel, Matlab ...

 

Le code source a été écrit en langage assembleur avec l'environnement de développement gratuit MPLAB IDE de Microchip.

(C) Fabrice Sincère ; Révision 01