You are on page 1of 15

Acquisition de temperature via RS232 PIC 16F628A

Projet microcontrleur PIC 16F628A Acquisition de temprature par liaison RS-232C + Logiciel de suivi de temprature
1- Prsentation 2- Rappel sur le bus srie asynchrone RS-232C 3- Schmas lectriques 4- Principe de fonctionnement 5- Communication entre l'ordinateur et la carte microcontrleur 6- Liste du matriel 7- Le code source du microcontrleur PIC 16F628A

1- Prsentation

Il s'agit d'une carte microcontrleur (PIC 16F628A) quipe d'un capteur de temprature analogique (LM335). La plage de mesure va de 0,0 51,0 C avec une rsolution numrique de 0,2 C. L'incertitude de mesure est de l'ordre de 2C. Cette carte communique avec un ordinateur travers une liaison srie RS-232C.
http://fabrice.sincere.pagesperso-orange.fr/cm_electronique/projet_pic/rs232temperature/rs232temp.htm (1 of 15)02-Apr-13 12:27:42 PM

Acquisition de temperature via RS232 PIC 16F628A

Ct ordinateur, une application permet l'acquisition de la temprature, puis l'affichage sous la forme d'un graphe droulant de l'volution dans le temps de cette temprature :

http://fabrice.sincere.pagesperso-orange.fr/cm_electronique/projet_pic/rs232temperature/rs232temp.htm (2 of 15)02-Apr-13 12:27:42 PM

Acquisition de temperature via RS232 PIC 16F628A

Le protocole de communication entre l'ordinateur et la carte est le suivant : Quand l'ordinateur envoie l'octet 0x74 (code ASCII du caractre 't'), la carte renvoie la temprature (en C) avec le format xx,x (4 caractres).

2- Rappel sur le bus srie asynchrone RS-232C

Les paramtres de la liaison RS232C sont ici :


q

9600 bauds par seconde (vitesse de transmission)

http://fabrice.sincere.pagesperso-orange.fr/cm_electronique/projet_pic/rs232temperature/rs232temp.htm (3 of 15)02-Apr-13 12:27:42 PM

Acquisition de temperature via RS232 PIC 16F628A


q q q q

8 bits de donnes pas de bit de parit 1 bit d'arrt (Stop) pas de contrle de flux

Au repos, le niveau logique est 1. Le dbut de la transmission est marqu par un bit Start au niveau 0, suivi des 8 bits de donnes (bit de poids faible en premier). La fin de la transmission est marque par un bit Stop (niveau 1).

Notez que les niveaux logiques de la liaison RS232C ne sont pas compatibles avec la logique TTL. Le rle d'un circuit intgr de type MAX232 est de faire l'interface :
q q

niveau 0 RS232C ( # + 10 V) -> niveau 0 TTL (# 0 V) niveau 1 RS232C ( # - 10 V) -> niveau 1 TTL (# 5 V)

Exemple : - Oscillogramme de la transmission du caractre '5' (0x35 en code ASCII, 00110101 en binaire) :

http://fabrice.sincere.pagesperso-orange.fr/cm_electronique/projet_pic/rs232temperature/rs232temp.htm (4 of 15)02-Apr-13 12:27:42 PM

Acquisition de temperature via RS232 PIC 16F628A

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

3- Schmas lectriques

http://fabrice.sincere.pagesperso-orange.fr/cm_electronique/projet_pic/rs232temperature/rs232temp.htm (5 of 15)02-Apr-13 12:27:42 PM

Acquisition de temperature via RS232 PIC 16F628A

http://fabrice.sincere.pagesperso-orange.fr/cm_electronique/projet_pic/rs232temperature/rs232temp.htm (6 of 15)02-Apr-13 12:27:42 PM

Acquisition de temperature via RS232 PIC 16F628A

4- Principe de fonctionnement
4-1- Capteur de temprature LM335 Le LM335 est un capteur de temprature analogique qui fournit une tension proportionnelle la temprature (en kelvin). Sa sensibilit est de 10 mV / K. A 0C (273 K), cela donne donc une tension continue de 2,73 V. L'amplificateur de diffrence, construit autour d'un amplificateur oprationnel TL071, augmente la sensibilit d'un facteur 10 et assure un changement d'chelle (K -> C). En sortie, on a 100 mV / C (aux tolrances prs) :

http://fabrice.sincere.pagesperso-orange.fr/cm_electronique/projet_pic/rs232temperature/rs232temp.htm (7 of 15)02-Apr-13 12:27:42 PM

Acquisition de temperature via RS232 PIC 16F628A

r r r

0 V 0 C 2 V 20 C 5 V 50 C ...

Le potentiomtre R2 permet un ajustage. Le potentiomtre doit tre aliment par une tension stable, ce qui justifie la prsence d'un rgulateur de tension (7805). Il faut choisir R2 << R3 pour que le taux de rjection de mode commun de l'amplificateur de diffrence soit satisfaisant.

4-2- Le convertisseur analogique / numrique ADC080x L'ADC0804 est un convertisseur analogique / numrique approximations successives dont voici les principales caractrisques :
q q q q q q

8 bits de rsolution sorties parallles tension d'alimentation unique + 5 V entres diffrentielles (0 + 5 V) frquence d'horloge : jusqu' 1 MHz frquence d'chantillonnage : 14 kHz (avec une horloge de 1 MHz)

L'ADC est ici en mode "free-running". La frquence de l'horloge dpend de R1 et C9 : f # 1/(1,7.R1.C9) # 270 kHz La frquence d'chantillonnage est proportionnelle la frquence d'horloge : # 3,9 kHz (ce qui est plus que suffisant pour suivre l'volution d'une grandeur telle que la temprature !). On notera la prsence 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 rsoudre le problme.
q

Avec Ve = 0 V, la sortie donne (0000 0000) = 0

http://fabrice.sincere.pagesperso-orange.fr/cm_electronique/projet_pic/rs232temperature/rs232temp.htm (8 of 15)02-Apr-13 12:27:42 PM

Acquisition de temperature via RS232 PIC 16F628A


q

Avec Ve = 5 V (pleine chelle), la sortie donne (1111 1111) = 255

Pour plus d'informations, consulter le data sheet des diffrents fabriquants de ce circuit intgr (National semiconductor, Philips, Texas Instruments ...).

4-3- Le microcontrleur 16F628A Le C communique :


q q

avec un ordinateur par une liaison RS232C (broches RB1/RX et RB2/TX de l'UART) avec la sortie du convertisseur analogique / numrique (8 broches : RA0 RA2, RB3 RB7)

Quand une donne est reue et dcode par l'UART, une interruption est dclenche. Dans la routine d'interruption, cette donne est directement lue dans le registre RCREG. Si la donne est 0x74 (code ASCII du caractre 't'), le C renvoie la temprature (en C) avec le format xx,x (4 caractres) : Le C lit et convertit les 8 bits de sortie de l'ADC en une srie de 4 caractres ASCII.
q q

0C -> Ve = 0 V -> 0000 0000 -> 00,0 50C -> Ve = 5 V -> 1111 1111 -> 51,0 (soit une erreur de 1 C, ce qui est acceptable en comparaison de la prcision du capteur LM335).

L'interruption d'mission de l'UART est gnre quand l'UART est disponible pour mettre. La routine d'interruption envoie le 1er caractre (il suffit d'crire la donne dans le registre TXREG), puis le second caractre l'interruption suivante etc ...
q

Oscillogrammes :

http://fabrice.sincere.pagesperso-orange.fr/cm_electronique/projet_pic/rs232temperature/rs232temp.htm (9 of 15)02-Apr-13 12:27:42 PM

Acquisition de temperature via RS232 PIC 16F628A

RB1/RX : donne reue par l'UART : 0x74 (t en code ASCII) RB2/TX : donnes mises par l'UART : 0x35 0x31 0x2C 0x30 (51,0 en code ASCII)

5- Communication entre l'ordinateur et la carte microcontrleur


5-1- Le cble

Il faut bien sr un ordinateur qui possde un port COM, reconnaissable par son connecteur SubD 9 broches mle. Il faut brancher un cble "null-modem" (cble 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).

5-2- Logiciel HyperTerminal

Ce logiciel est normalement install avec Windows. Si vous ne le trouvez pas, rechercher le fichier hypertrm.exe (dmarrer -> Rechercher).
http://fabrice.sincere.pagesperso-orange.fr/cm_electronique/projet_pic/rs232temperature/rs232temp.htm (10 of 15)02-Apr-13 12:27:42 PM

Acquisition de temperature via RS232 PIC 16F628A

Autrement, vous pouvez le tlcharger gratuitement l'adresse suivante : http://www.hilgraeve.com/htpe/download.html

Lancer l'application HyperTerminal. La fentre "Description de la connexion" s'ouvre et vous demande d'entrer un nom pour la nouvelle connexion (par exemple : PIC). Choisir la valeur par dfaut (COM1) dans le fentre "Connexion", puis :

Quand vous appuyez sur une touche, HyperTerminal transmet son code ASCII par la liaison RS-232C.
http://fabrice.sincere.pagesperso-orange.fr/cm_electronique/projet_pic/rs232temperature/rs232temp.htm (11 of 15)02-Apr-13 12:27:42 PM

Acquisition de temperature via RS232 PIC 16F628A

S'il s'agit de la touche 't', HyperTerminal reoit la temprature :

5-3- Logiciel de suivi de temprature

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

http://fabrice.sincere.pagesperso-orange.fr/cm_electronique/projet_pic/rs232temperature/rs232temp.htm (12 of 15)02-Apr-13 12:27:42 PM

Acquisition de temperature via RS232 PIC 16F628A

Avant-propos Cette application a t crite en C++ Borland Builder 5. L'application fonctionne sous Windows NT4 et Windows XP (non teste sous Windows Vista, merci de me dire ce qu'il en est ...). N.B. La gestion de la liaison RS232 ncessite l'installation du composant TComPort (la version 2.64 est suffisante) :
q

Tlchargement : http://sourceforge.net/projects/comport/

http://fabrice.sincere.pagesperso-orange.fr/cm_electronique/projet_pic/rs232temperature/rs232temp.htm (13 of 15)02-Apr-13 12:27:42 PM

Acquisition de temperature via RS232 PIC 16F628A


q q

Procdure d'installation : http://petit.developpez.com/serie/install_tcomport/ Tutorial : http://petit.developpez.com/serie/cours_tcomport/

Description Une acquisition de temprature est ralise toutes les 30 millisecondes. La temprature retenue est la moyenne des 30 dernires mesures : on ralise ainsi un filtrage numrique qui attnue l'influence du bruit. Il y a la possibilit de sauvegarder les donnes dans un fichier texte :

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

Tlcharger l'application suivitemp12.exe (pour Windows) Tlcharger le code source de l'application suivitemp12.exe

560 ko 58 ko

6- Liste du matriel
r r r

1 microcontrleur PIC 16F628A 1 quartz 4 MHz (ncessairement, car il rgle le taux de transmission de la liaison RS232C) 1 circuit intgr MAX232 ou ICL232 (interface RS232C <-> TTL/CMOS)

http://fabrice.sincere.pagesperso-orange.fr/cm_electronique/projet_pic/rs232temperature/rs232temp.htm (14 of 15)02-Apr-13 12:27:42 PM

Acquisition de temperature via RS232 PIC 16F628A


r r r r r r r r r r r r r r r r r r

1 capteur de temprature LM335 1 amplificateur oprationnel TL071 1 potentiomtre 1 k 1 rsistance 2,2 k 3 rsistances 10 k 2 rsistances 100 k 1 convertisseur analogique / numrique ADC080x 1 bouton poussoir 3 condensateurs lectrochimiques de 10 F 2 condensateurs lectrochimiques de 100 F 4 condensateurs lectrochimiques de 1 F 3 condensateurs de 100 nF 2 condensateurs de 22 pF 1 condensateur de 220 pF 1 source d'alimentation continue +12 V 1 source d'alimentation continue - 12 V 1 rgulateur de tension 7805 1 connecteur SubD 9 broches mle 1 cble null-modem (femelle/femelle) 1 ordinateur avec port COM 1 programmateur pour flasher le programme du microcontrleur PIC 16F628A

q q

7- Le code source du microcontrleur PIC 16F628A

Le code source a t crit en langage assembleur avec l'environnement de dveloppement gratuit MPLAB IDE de Microchip.
r r

Tlcharger le code source en assembleur (.asm) Tlcharger le code objet (.HEX)

(C) Fabrice Sincre ; Rvision 01

http://fabrice.sincere.pagesperso-orange.fr/cm_electronique/projet_pic/rs232temperature/rs232temp.htm (15 of 15)02-Apr-13 12:27:42 PM

You might also like