TP Acquisition1
TP Acquisition1
TP Acquisition1
: 2019/2020
Durée: 2 heures
T P N° 01
ACQUISITION DE DONNEES
NIVEAU :
1
I. Objectif du TP :
Logiciels nécessaires:
L’Arduino IDE est un logiciel open source permet d’éditer les programmes, les compiler et
les charger sur la carte Arduino.
Proteus est un outil logiciel permettant la conception électronique assistée par ordinateur
éditée par la société Labcenter Electronics Proteus est composé de deux logiciels principaux :
ISIS, permettant entre autres la création de schémas et la simulation électrique, et ARES,
dédié à la création de circuits imprimés.
Bibliothèques utilisées :
Arduino :
Proteus :
1. Capteur LM35
Le circuit LM35 est un capteur analogique de température. Le capteur de
température LM35 est capable de mesurer des températures allant de -50°C à
+150°C avec une précision de de ±0,5°C.
La température mesurée par le capteur est donnée par la relation :
��
�=
avec :
Vs : Tension de sortie [mV]
T : Température [°C]
DHT22
4. Afficheur LCD
Caractéristiques :
5. Carte Arduino Microcontrôleur : ATmega328
Tension de fonctionnement : 5V
Tension d'entrée (recommandé) : 7-12 V
Tension d'entrée (limites) : 6-20V
Broches d’E/S numérique : 14 (dont 6
fournissent la sortie PWM)
Broches d'entrée analogiques : 6
Courant DC par broche d’E/S : 40 mA
Mémoire Flash : 32 Ko dont 0,5 KB utilisé
par bootloader
SRAM : 2 KB
EEPROM : 1 KB
Vitesse d'horloge : 16 MHz
Longueur : 68,6 mm
Largeur : 53,4 mm
Poids : 25 g 3
III. Travail à faire
4
2. Amélioration de la précision de la mesure de la température par le capteur LM35
Dans le cas du capteur LM35, la température maximale mesurée Tmax ≈ 110°C, ce qui
correspond à une tension de sortie maximale Vmax = 1,1V. Pour améliorer la précision de la
mesure, on a intérêt à choisir une tension de référence Vréf très proche de Vmax, soit Vréf = 1.1 V.
La fonction analogReference(INTERNAL1V1) satisfait cette demande et oblige le
microcontrôleur à utiliser une tension de référence interne Vréf = 1.1V au lieu de Vréf = 5V.
Pour avoir Vréf = 1.1 V, utiliser analogReference(INTERNAL1V1)
Pour un retour à la tension par défault, Vréf = 5 V, utiliser analogReference(DEFAULT)
Ecrire un programme Arduino qui permet de lire le degré de la température et le taux d'humidité
d’un capteur DHT22 et les afficher sur un écran LCD (Simulation + réalisation), on se référant à
l'annexe 2 et aux montages suivants:
5
4. Comparaison des différentes mesures de la température
Ecrire un programme qui permet la mesure de la température par 3 méthodes différentes et son
affichage sur 4 digits (2 pour la partie entière et 2 pour la partie décimale) :
TDHT22 : Température mesurée par le capteur DHT22.
TDEF : Température mesurée par le capteur LM35 avec tension de référence 5V
analogReference(DEFAULT).
T1V1 : Température mesurée par le capteur LM35 avec tension de référence 1.1V :
analogReference(INTERNAL1V1).
6
5. Détecteur d’humidité du sol
Le détecteur d’humidité se plante dans la terre (près des racines) de le la plante. Ce capteur mesure
l'humidité du sol à partir des changements de conductivité électrique de la terre (la résistance du sol
augmente avec la sécheresse). il est utilisé soit en mode numérique ou analogique, si la terre est
Humide la sortie D0 du capteur est au niveau BAS (0). Si la terre est Sèche, la sortie D0 du capteur
est au niveau HAUT (1).
Ecrire un programme qui permet de mesure de taux d’humidité et afficher le résultat sur un
écran LCD ou le moniteur série.
7
Annexe N° 01
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
void setup() {
lcd.begin(16,2);
lcd.setCursor(1,0);
lcd.print("Temp= ");
lcd.setCursor(10,0);
lcd.print("C");
lcd.setCursor(1,1);
lcd.print("TP Acquisition");
void loop() {
int Valeur=analogRead(A0);
int Vout=Valeur*5.0/1023*1000;
int temp=Vout/10;
lcd.setCursor(7,0);
lcd.print(temp);
Annexe N° 02
void setup() {
Serial.begin(9600);
Serial.println("Test du composant DHT11 !");
dht.begin();
}
void loop() {
// Délai de 2 secondes entre chaque mesure. La lecture prend 250 millisecondes
delay(2000);
// Lecture du taux d'humidité
float h = dht.readHumidity();
// Lecture de la température en Celcius
float t = dht.readTemperature();
// Pour lire la température en Fahrenheit
float f = dht.readTemperature(true);
Serial.print("Humidite: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.println(" *C ");
}