• Aucun résultat trouvé

Partie 3 : La structure d un programme en «langage Arduino» : Lecture de données analogiques

N/A
N/A
Protected

Academic year: 2022

Partager "Partie 3 : La structure d un programme en «langage Arduino» : Lecture de données analogiques"

Copied!
5
0
0

Texte intégral

(1)

1

Partie 3 : La structure d’un programme en « langage Arduino » :

Lecture de données analogiques Thème 3

Jusqu’ici, vous avez utilisé des entrées numériques qui ne prennent que deux valeurs : 1 ou 0.

Vous allez à présent découvrir comment utiliser des entrées analogiques qui permettent de recevoir des données électriques plus subtiles.

Cette découverte des entrées analogiques se fera à travers la prise en main d’un nouveau composant : le potentiomètre analogique.

Vous allez apprendre à vous en servir pour créer toute une nouvelle gamme de réactions en traitant des données qui ne sont pas uniquement des 1 et des 0.

Le potentiomètre

Le potentiomètre est une résistance dont la valeur varie.

Le principe est assez simple : un curseur se déplace sur une piste résistante (au passage de l'électricité) et permet de faire varier la résistance du potentiomètre. Donc l'électricité entre par un côté du potentiomètre et sort par le curseur. Si le curseur est proche de l'entrée, la résistance est faible et si le curseur est éloigné de l'entrée, la résistance et grande.

La flèche représente le curseur.

On dit qu'il s'agit d'un potentiomètre linéaire, car le déplacement du curseur fait augmenter la résistance de façon régulière. On peut donc s'attendre, en positionnant le curseur bien au centre, que la valeur de la résistance soit égale à la moitié de la résistance totale possible.

Si vous utilisez un potentiomètre de résistance maximum 10 KΩ :

• Si vous placez le curseur à fond du côté de la patte d'entrée, la valeur de résistance sera de 0 Ω.

• Si vous placez le curseur au milieu, la valeur de résistance sera de 5 KΩ (la moitié du maximum).

• Si vous placez le curseur à fond de l'autre côté, la valeur de la résistance sera de 10 kΩ (valeur max).

Vous devrez connecter la patte centrale du potentiomètre sur un pin analogique (CAN) (patte du curseur celle au centre, notée C sur l'image) et connecter ensuite l'une des deux pattes restante (soit A ou B) sur le +5V et l'autre sur le ground.

L'Arduino possède 6 CAN, en effet, vous pouvez transformer jusqu'à 6 signaux analogiques en signaux numériques, donc en nombres entiers ! Ce n'est qu'une fois le signal transformé en nombre qu'il est exploitable avec un programme.

Les 6 CAN sont notées A0, A1, A2…A5 sur votre carte arduino. C’est à ce niveau que l’on peut connecter un fil pour recevoir un signal analogique.

L'Arduino a une limite de définition, c'est à dire de résolution du signal. En effet, il ne peut transformer un signal reçu qu'en nombre compris entre 0 et 1023, soit 1024 valeurs possibles.

Nous allons réaliser un montage simple pour observer les caractéristiques d’un signal analogique.

(2)

2

Réalisez le montage ci-contre.

Les trois broches sont utilisées : l'une des extrémités au +5V, l'autre au ground, et le curseur au pin A0.

Nous voyons donc que le courant part du +5V, entre dans le potentiomètre par l'une des deux pattes d'extrémité, puis sort par le curseur vers le pin A0 de l'Arduino. La connexion au ground permet la lecture par l'Arduino de la valeur de position du curseur.

Pour récupérer la valeur de la patte centrale connectée à A0, il faut utiliser un nouveau mot-clé : analogRead() ; dont vous avez les caractéristiques dans le tableau ci-dessous.

Ecrivez puis téléversez le programme suivant.

Observez les variations des valeurs lorsque l’on tourne le potentiomètre. (Cliquez sur la petite loupe en haut à droite de l’interface : c’est le moniteur série)

Entrées analogiques analogRead()

Lit la valeur de la tension présente sur la broche spécifiée. La carte Arduino comporte 6 voies : A0, A1.. connectées à un convertisseur analogique-numérique 10 bits. Cela signifie qu'il est possible de transformer la tension d'entrée entre 0 et 5V en une valeur numérique entière comprise entre 0 et 1023.

Ceci peut être utilisé pour lire les valeurs d’un potentiomètre, d’un capteur de température, d’une photorésistance etc.

Syntaxe

analogRead(broche_analogique);

Paramètres

broche_analogique : le numéro de la broche analogique (et non le numéro de la broche numérique) sur laquelle il faut convertir la tension analogique appliquée (0 à 5 sur la plupart des cartes Arduino)

Valeur renvoyée

valeur int (0 à 1023) correspondant au résultat de la mesure effectuée

int valPot=0; //variable pour récupérer la tension aux bornes du potentiomètre traduite par le CAN . On l’initialise à 0.

void setup() {

Serial.begin(9600); //Initialisation de la communication série avec la console }

void loop() {

valPot=analogRead(A0); //lit la tension, la convertit en valeur numérique et la stocke dans valeurPot Serial.print("Valeur lue : "); // Serial.print permet d’afficher des informations sur le moniteur série Serial.println(valPot);

}

(3)

3

Exercice 1 : clignotant à vitesse variable

Vous ajouterez au montage précédent, une LED connectée sur le pin 8 (n’oubliez pas la résistance).

La LED du montage clignote plus ou moins vite en fonction de la position du curseur du potentiomètre.

• Au plus lent, elle clignote toutes les secondes. C'est à dire qu'elle s'allume 0,5 s et s'éteint pendant 0,5 s.

• Au plus rapide, elle clignote 5 fois par seconde (5 Hz), donc elle s'allume pendant 0,1 s et s'éteint pendant 0,1 s de façon répétitive.

Le temps d'allumage est le même que le temps d'extinction.

Le tableau vous donne alors les temps d’attente correspondant en fonction du nombre de clignotement attendu par seconde.

En vous aidant du tableau ci-dessus, programmez ce nombre de

clignotement(s) pour la LED en fonction de la valeur du potentiomètre.

Montage capteur de température et LED

Le capteur de température utilisé ici est le capteur LM35, c’est un capteur linéaire fonctionnant en 5V.

Attention, ne le confondez pas avec le qui lui ressemble

beaucoup mais les pattes sont tordues sur le transistor et pas sur le capteur de température.

Lorsque vous le tenez côté plat vers vous, on le connecte de la manière suivante :

• patte de gauche : connectée au +5V ;

• patte de droite : connectée au ground ;

• patte du centre : connectée à un CAN de l'Arduino.

Afin de réaliser des mesures correctes, il est important de connaitre les

caractéristiques de ce capteur. Le datasheet (la fiche d’information du capteur) indique qu’il mesure la température entre -55 et +150 °C avec une variation de 10mV par °C.

Valeur du potentiomètre Valeur d'attente

Nombre de clignotements

Par seconde

Entre 0 et 204 1000/5/2=100ms 5

Entre 205 et 408 1000/4/2=125ms 4

Entre 409 et 613 1000/3/2=167ms 3

Entre 614 et 818 1000/2/2=250ms 2

Entre 818 et 1023 1000/1/2=500ms 1

(4)

4

Réaliser le montage décrit ci-dessus, avec la patte centrale connectée au A0.

Dans un premier temps, je vous fournis le programme qui permet de récupérer les valeurs lues en AO et de les transformer en valeur de température.

Rq. On utilise dans ce programme la fonction map.

Celle-ci possède la syntaxe suivante :

Elle fonctionne de la manière suivante :

Ré-étalonne un nombre d'une fourchette de valeur vers une autre fourchette.

Ainsi, une valeur basse source sera étalonnée en une valeur basse de destination, une valeur haute source sera étalonnée en une valeur haute de destination, une valeur entre les deux valeurs source sera étalonnée en une valeur entre les deux valeurs destinations, en respectant la proportionnalité.

Cette fonction est très utile pour effectuer des changements d'échelle automatiques.

Exercice 2

A partir du montage précédent, réaliser un indicateur lumineux de la température.

Le principe est simple. En utilisant 3 LEDS (n’oubliez pas les résistances), vous allez indiquer des seuils de température. On fixe le seuil initial à 20°C,

• Si la température est inférieure à cette température, les LEDS sont éteintes.

• Si la température est supérieure de 2°C à cette température, la 1ère LED s’allume.

• Si la température est supérieure de 4°C à cette température, la 2ème LED s’allume en plus de la 1ère.

• Si la température est supérieure de 6°C à cette température, les 3 LEDS s’allument.

int mesureBrute=0; // variable de la mesure donné par l'arduino float mesure; // variable pour donner le résultat de la température void setup() {

Serial.begin(9600);

}

void loop() {

mesureBrute=analogRead(A0); //on lit la valeur au CAN 0

mesure=map(mesureBrute,0,1023,0.0,5000.0); //on transforme la valeur lue en valeur de tension entre 0,0 et 5000,0 mV.

float temp=mesure/10; // on divise par 10 (car 10 mv par °C) // affichage du résultat

Serial.print("Mesure Brute :");

Serial.println(mesureBrute);

Serial.print(" soit : ");

Serial.print(mesure);

Serial.println(" mV ");

Serial.print(" soit : ");

Serial.print(temp);

Serial.println(" degres celsius");

delay(10000);

}

map (valeur, limite_basse_source, limite_haute_source, limit e_basse_destination, limite_haute_destination)

Paramètres

valeur : le nombre à ré-étalonner

limite_basse_source: la valeur de la limite inférieure de la fourchette de départ

limite_haute_source: la valeur de la limite supérieure de la fourchette de départ

limite_basse_destination: la valeur de la limite inférieure de la fourchette de destination

limite_haute_destination: la valeur de la limite supérieure de la fourchette de destination

(5)

5

La photo-résistance

La photorésistance est une forme de capteur de lumière. C'est un composant très simple à mettre en œuvre et qui permet une interaction intéressante avec l'environnement.

Le principe est assez simple : plus il y a de lumière, plus la résistance est basse. L'obscurité provoque une résistance importante.

Il s’agit donc d’un capteur de variation qu’il faudra connecter à l’Arduino avec un pin analogique.

Pour pouvoir utiliser efficacement une photo-résistance, il faut la mettre en série avec une autre résistance fixe.

L’entrée analogique sera connectée au point de jonction entre les 2 résistances (la résistance fixe et la photo-résistance)

Ecrivez puis téléversez le programme suivant.

Observez ce qu’il se passe lorsque l’on approche ou éloigne une source lumineuse de la photorésistance

Exercice 3

Réaliser un capteur d’obscurité.

Lorsque l’obscurité est trop faible, cela déclenche l’allumage d’une LED (n’oubliez pas la résistance).

Celle-ci s’éteint lorsque la luminosité est suffisante.

Vous êtes libre de choisir le seuil d’allumage/extinction que vous voulez…

int pinPR=A0; //pin de connexion pour la photorésistance void setup() {

Serial.begin(9600);

}

void loop() {

int valeur=analogRead(pinPR); // on lit la valeur transmise par la photorésistance Serial.println(valeur); // on l'affiche

}

Références

Documents relatifs

En utilisant la r´ eciproque du th´ eor` eme des milieux dans le triangle ABC , I est le milieu de [AC], donc si (KI) ´ etait parall` ele ` a (BC ) alors K serait le milieu de

Troisième partie: Calculs des périmètres des deux hexagones.

Indique pour chaque tableau s’il représente un mouvement accéléré, uniforme

Afin de rendre le problème de taille finie, susceptible d’être discrétisé, on approche le problème posé sur R 3 tout entier par un problème posé sur une boîte B englobant

Conditionner l'affichage des nouveaux éléments en fonction de la valeur de la variable Etape.. Les éléments dont l'affichage est ainsi conditionné s'effacent si le curseur Etape est

Les dispositions de clavier en alphabet latin s'écartant plus radicalement du modèle QWERTY sont de diffusion considérablement plus réduite, ainsi les dispositions de clavier de

Voici un algorithme qui, lorsque l’on saisit un nombre N non nul de jours écoulés, calcule et affiche la masse de gaz restant dans le système.. Recopier et compléter la

① Compléter le dessin en y ajoutant les fils conducteurs, afin que le câblage réalisé corresponde exactement au schéma du montage. Faire vérifier votre schéma