acquisition de temperature via rs232 pic 16f628a

15
Acquisition de temperature via RS232 PIC 16F628A 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 1- Présentation 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. http://fabrice.sincere.pagesperso-orange.fr/cm_electronique/projet_pic/rs232temperature/rs232temp.htm (1 of 15)02-Apr-13 12:27:42 PM

Upload: gauthier-toudjeu

Post on 05-Dec-2014

204 views

Category:

Documents


12 download

DESCRIPTION

nice file for pic

TRANSCRIPT

Page 1: Acquisition de Temperature via RS232 PIC 16F628A

Acquisition de temperature via RS232 PIC 16F628A

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

● 1- Présentation

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.

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

Page 2: Acquisition de Temperature via RS232 PIC 16F628A

Acquisition de temperature via RS232 PIC 16F628A

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 :

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

Page 3: Acquisition de Temperature via RS232 PIC 16F628A

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 caractère 't'), la carte renvoie la température (en °C) avec le format xx,x (4 caractères).

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

Les paramètres de la liaison RS232C sont ici :

● 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

Page 4: Acquisition de Temperature via RS232 PIC 16F628A

Acquisition de temperature via RS232 PIC 16F628A

● 8 bits de données● pas de bit de parité● 1 bit d'arrêt (Stop)● pas de contrôle de flux

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 :

● 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 caractère '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

Page 5: Acquisition de Temperature via RS232 PIC 16F628A

Acquisition de temperature via RS232 PIC 16F628A

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

● 3- Schémas électriqueshttp://fabrice.sincere.pagesperso-orange.fr/cm_electronique/projet_pic/rs232temperature/rs232temp.htm (5 of 15)02-Apr-13 12:27:42 PM

Page 6: Acquisition de Temperature via RS232 PIC 16F628A

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

Page 7: Acquisition de Temperature via RS232 PIC 16F628A

Acquisition de temperature via RS232 PIC 16F628A

● 4- Principe de fonctionnement

4-1- Capteur de température LM335

Le LM335 est un capteur de température analogique qui fournit une tension proportionnelle à la température (en kelvin).

Sa sensibilité est de 10 mV / K.

A 0°C (273 K), cela donne donc une tension continue de 2,73 V.

L'amplificateur de différence, construit autour d'un amplificateur opérationnel TL071, augmente la sensibilité d'un facteur 10 et assure un changement d'échelle (K -> °C).

En sortie, on a 100 mV / °C (aux tolérances près) :http://fabrice.sincere.pagesperso-orange.fr/cm_electronique/projet_pic/rs232temperature/rs232temp.htm (7 of 15)02-Apr-13 12:27:42 PM

Page 8: Acquisition de Temperature via RS232 PIC 16F628A

Acquisition de temperature via RS232 PIC 16F628A

❍ 0 V à 0 °C❍ 2 V à 20 °C❍ 5 V à 50 °C ...

Le potentiomètre R2 permet un ajustage.

Le potentiomètre doit être alimenté par une tension stable, ce qui justifie la présence d'un régulateur de tension (7805).

Il faut choisir R2 << R3 pour que le taux de réjection de mode commun de l'amplificateur de différence soit satisfaisant.

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

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

● 8 bits de résolution● sorties parallèles● tension d'alimentation unique + 5 V● entrées différentielles (0 à + 5 V)● fréquence d'horloge : jusqu'à 1 MHz ● fréquence d'échantillonnage : 14 kHz (avec une horloge de 1 MHz)

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.

● Avec Ve = 0 V, la sortie donne (0000 0000) = 0http://fabrice.sincere.pagesperso-orange.fr/cm_electronique/projet_pic/rs232temperature/rs232temp.htm (8 of 15)02-Apr-13 12:27:42 PM

Page 9: Acquisition de Temperature via RS232 PIC 16F628A

Acquisition de temperature via RS232 PIC 16F628A

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

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 :

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

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.

● 0°C -> Ve = 0 V -> 0000 0000 -> 00,0● 50°C -> Ve = 5 V -> 1111 1111 -> 51,0 (soit une erreur de 1 °C, ce qui est acceptable en comparaison de la

précision du capteur LM335).

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 ...

● Oscillogrammes :

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

Page 10: Acquisition de Temperature via RS232 PIC 16F628A

Acquisition de temperature via RS232 PIC 16F628A

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)

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

● 5-1- Le câble

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).

● 5-2- Logiciel HyperTerminal

Ce logiciel est normalement installé avec Windows.

Si vous ne le trouvez pas, rechercher le fichier hypertrm.exe (démarrer -> Rechercher).http://fabrice.sincere.pagesperso-orange.fr/cm_electronique/projet_pic/rs232temperature/rs232temp.htm (10 of 15)02-Apr-13 12:27:42 PM

Page 11: Acquisition de Temperature via RS232 PIC 16F628A

Acquisition de temperature via RS232 PIC 16F628A

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.

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

Page 12: Acquisition de Temperature via RS232 PIC 16F628A

Acquisition de temperature via RS232 PIC 16F628A

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

● 5-3- Logiciel de suivi de 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 :

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

Page 13: Acquisition de Temperature via RS232 PIC 16F628A

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 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) :

● Téléchargement : 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

Page 14: Acquisition de Temperature via RS232 PIC 16F628A

Acquisition de temperature via RS232 PIC 16F628A

● Procédure d'installation : http://petit.developpez.com/serie/install_tcomport/● Tutorial : http://petit.developpez.com/serie/cours_tcomport/

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 ...

● Télécharger l'application suivitemp12.exe (pour Windows) 560 ko

● Télécharger le code source de l'application suivitemp12.exe 58 ko

● 6- Liste du matériel

❍ 1 microcontrôleur PIC 16F628A❍ 1 quartz 4 MHz (nécessairement, car il règle le taux de transmission de la liaison RS232C) ❍ 1 circuit intégré 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

Page 15: Acquisition de Temperature via RS232 PIC 16F628A

Acquisition de temperature via RS232 PIC 16F628A

❍ 1 capteur de température LM335❍ 1 amplificateur opérationnel TL071❍ 1 potentiomètre 1 k❍ 1 résistance 2,2 k❍ 3 résistances 10 k❍ 2 résistances 100 k❍ 1 convertisseur analogique / numérique 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 régulateur de tension 7805❍ 1 connecteur SubD 9 broches mâle

● 1 câble null-modem (femelle/femelle)● 1 ordinateur avec port COM

● 1 programmateur pour flasher le programme du microcontrôleur PIC 16F628A

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

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

❍ Télécharger le code source en assembleur (.asm)❍ Télécharger le code objet (.HEX)

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

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