Cours:ArduinoPlaqueEssais : Différence entre versions
m (→{{Vert|Correspondance mesure, valeur de résistance}}) |
m (→{{Vert|Correspondance mesure, valeur de résistance}}) |
||
Ligne 154 : | Ligne 154 : | ||
==={{Vert|Correspondance mesure, valeur de résistance}}=== | ==={{Vert|Correspondance mesure, valeur de résistance}}=== | ||
Comme déjà indiqué dans ce TP, la valeur numérique mesurée est un nombre entre 0 et 1023 (valeur sur 10 bits). 0 correspond à une tension de 0V et 1023 correspond à une tension de 5V. | Comme déjà indiqué dans ce TP, la valeur numérique mesurée est un nombre entre 0 et 1023 (valeur sur 10 bits). 0 correspond à une tension de 0V et 1023 correspond à une tension de 5V. | ||
+ | |||
+ | Il vous est donc possible de modifier la formule du pont diviseur pour prendre en compte ces valeurs sur 10 bits. On notera désormais '''CAN''' la valeur retournée par le convertisseur analogique numérique. | ||
+ | |||
+ | {{Question|Donner l'expression de la valeur de CAN (avec donc 0 <= CAN <= 1023) en fonction de R1, 1023 et Rm. En déduire la valeur de l'expression de Rm en fonction des autres paramètres.}} | ||
=={{Bleu|Valeur normalisé}}== | =={{Bleu|Valeur normalisé}}== |
Version du 10 octobre 2015 à 15:31
Sommaire
Quelques leds
Nous utiliserons lors de ce TP 2 leds (verte et rouge) qui resteront donc connectées jusqu'à la fin.
Calculer la valeur de la résistance avec les données suivantes :
- On prendra Vf = 2 V (tension directe (Forward) aux bornes de la led : lorsqu'elle s'éclaire)
- On souhaite If = 10 mA (intensité du courant dans la led)
- On rappelle que la tension d'alimentation arduino UNO est de 5V => cette tension représente donc un niveau logique '1'
Câbler alors ces leds sur la carte de la façon suivante :
Couleur | Pin arduino |
---|---|
Rouge | 8 |
Verte | 9 |
Écrire (et vérifier !) un programme tel que :
- les leds sont allumées en alternance
- chaque led reste allumée pendant 500ms
Grandeur analogique
Dans le premier tp, nous avons utilisé uniquement des entrées/sorties binaires. Nous allons découvrir ici les mesures analogiques.
Une explication du monde analogique peut se trouver sur wikipedia au besoin.
Affichage sur liaison série
Afin de pouvoir afficher les valeurs lues, mais également pour écrire des programmes plus complexes, nous allons utiliser la liaison série.
Vous allez découvrir le principe de la liaison série sur le site ladyada.
Lire/comprendre/exécuter les programmes jusqu'à la partie Pythagore.
Rque : Il convient de terminer la lecture de la page pour les prochains TPs
Mesure analogique, principe
La page dédiée du site arduino donne quelques détails sur l'utilisation et les caractéristiques du convertisseur analogique-numérique de la carte arduino UNO.
Syntaxe | val = analogRead(arduinoPin) | ||||
---|---|---|---|---|---|
Paramètres |
|
Le code suivant donne la structure minimum permettant d'utiliser le Convertisseur Analogique Numérique
const char analogPin = A0;
unsigned int analogVal;
void setup()
{
}
void loop()
{
// lecture de la tension sur la patte "analogPin"
analogVal = analogRead(analogPin);
// utilisation de cette valeur
}
Mesure de luminosité
Vérification du fonctionnement
Connecter la photorésistance (LDR) tel qu'indiqué sur la figure. Vous utiliserez l'entrée analogique A5.
Écrire un programme qui lit la valeur de la tension aux bornes de la LDR et affiche la valeur convertie sur la liaison série
Extremums
Sachant que les capteurs ne peuvent être strictement identiques, ils donneront tous des valeurs (normalement légèrement) différentes pour un même éclairement.
Le programme doit donc être capable de s'adapter automatiquement au capteur. Pour se faire, il est nécessaire de trouver les valeurs maximum et minimum renvoyées.
Réaliser un programme permettant de trouver ces extrêmes, en vous appuyant sur l'algorithme suivant :
- initialiser maxi à la plus petite valeur possible (ici 0)
- initialiser mini à la plus grande valeur possible (ici 1023)
- répéter
- lire la valeur du capteur => val
- si val > maxi
- changer la valeur de maxi
- si val < mini
- changer la valeur de mini
Jour, nuit ?
Utilisons maintenant les leds à disposition de la façon suivant :
- s'il fait jour, allumer la led verte
- s'il fait nuit, allumer la led rouge
Écrire un programme répondant au cahier des charges, en utilisant les valeurs extrêmes.
Luminosité en %
L'objectif est d'afficher la valeur mesurée en pourcentage de la valeur maximum d'éclairement mesurée.
Si la valeur actuellement mesurée est
- la valeur min, on affichera 0%.
- la valeur max, on affichera 100%.
Une valeur en pourcentage ne dépend que des valeurs minimum, maximum et de la mesure. On peut donc écrire le prototype de la foncion comme suit :
// les paramètres sont des "int" car : 0 < val,min,max < 1024 (car conversion sur 10 bits)
// par contre on retourne unsigned char car entre 0 et 100
unsigned char valPourcent(int val, int min, int max);
Modifier votre programme pour utiliser la fonction valPourcent(), que vous implémenterez.
Mesure d'une résistance
Principe .... le pont diviseur !?
Soit le schéma ci contre, vous allez dans cette partie écrire un programme permettant de trouver la valeur de la résistance inconnue.
Vous constatez qu'il s'agit d'un simple montage appelé communément "pont diviseur".
On notera Vm la tension de mesure, soit la tension aux bornes de la résistance (Rm) à mesurer.
Donner l'expression de la tension Vm en fonction de R1, Vcc et Rm.
Donner ensuite l'expression de la valeur numérique donnée par le convertisseur (tension de référence 5v).
Mesure de la résistance
Présence de la résistance ?
- allumer led rouge si pas de résistance
- allumer led vert sinon
Correspondance mesure, valeur de résistance
Comme déjà indiqué dans ce TP, la valeur numérique mesurée est un nombre entre 0 et 1023 (valeur sur 10 bits). 0 correspond à une tension de 0V et 1023 correspond à une tension de 5V.
Il vous est donc possible de modifier la formule du pont diviseur pour prendre en compte ces valeurs sur 10 bits. On notera désormais CAN la valeur retournée par le convertisseur analogique numérique.