Arduino : initiation à l’usage des radioamateurs. 2ème partie.

Un Arduino + un afficheur + 2 résistances = Un Voltmètre à moins de 5€ ….

Le but final n’est pas de construire un voltmètre (quoique !), mais plutôt de découvrir l’utilisation des entrées/sorties analogiques.

Notre carte Arduino ne peut recevoir qu’une tension entre 0 et 5V sur les entrées analogiques, elle nous retournera une valeur comprise entre 0 et 1024.
Pour mesurer plus de 5V, nous allons devoir utiliser un pont diviseur afin d’abaisser la tension sur notre broche analogique, et surtout éviter de détruire notre carte Arduino !


U2 = U X ( R2 / ( R2 + R1 ) )
Pour mesurer 0 à 50 volts, nous allons utiliser un pont diviseur avec R1=100K et R2=10K.
Avec 50V en entrée on obtient U2 = 50 x(10 000/(10 000+100 000)).
U2 = 4,55 (on est bien en dessous des 5V fatidiques !).
C’est notre programme qui se chargera de calculer la tension réellement mesurée.

Calcul de la tension réelle:
Le pont de résistances donne un rapport de (10 000 ohms / (10 000 ohms +100 000 ohms ) = 0,9
La conversion interne analogique vers numérique de l’Arduino donne un rapport de (5 / 1024) = 0,0048
Et (0,0048 / 0,9) = 0,0532 <- Voilà le coefficient à appliquer à la tension lue sur la borne de l’Arduino afin de la convertir en tension réellement mesurée.

Petite vérification, brancher l’entrée de notre pont de résistances sur le 5V de l’Arduino et afficher la tension lue sans correction, la ligne devient : Tension_reelle = (analogRead(Tension_lue));
On obtient 94 alors que l’on mesure 5V, et 5/94 = 0,05319 ! Tout va bien.

Nous reprenons notre précèdent montage et nous ajoutons notre pont diviseur relié à la borne (PIN) A0 de l’Arduino.

Soit on créé entièrement le programme, soit on adapte le précédent (ou on copie/colle celui ci-dessous … )
Les lignes commençant par // ne sont là que pour aider à la compréhension du programme.

On découvre les déclarations de variable :
int = nombres
string = caractères

Et une première fonction :
analogRead() qui lit la valeur de la tension présente sur la broche analogique spécifiée

 /////////////////////////////////
// Voltmetre Arduino 50 Volts //
/////////////////////////////////
// Ajouter librairie de gestion de l'écran LCD:
# include <LiquidCrystal.h>
// initialisation des broches à utiliser pour l'écran LCD.
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
// Initialisation des variables
int Tension_lue = A0; // On va lire la tension sur la borne A0 de l'arduino.
String Tension_reelle; // On va afficher cette variable après calcul.
void setup() {
// Préparation de l afficheur 16 colonnes sur 2 lignes
lcd.begin(16, 2);
// Afficher sur l'écran LCD.
lcd.print("Voltmetre 50Vmax");
}
void loop() {
// positionner le curseur colonne 0 de la ligne 1
lcd.setCursor(0, 1);
// Calcul de la tension reelle:
// Le pont de resistances donne un rapport de (10000 ohms/(10000 ohms +100000 ohms) = 0,9
// La conversion interne analogique vers numérique de l'Arduino donne un rapport de (5/1024) = 0,0048
// Et (0,0048 / 0,9) = 0,0532 <- Voilà mon coefficient à appliquer à la tension lue.
Tension_reelle = (analogRead(Tension_lue)*0.0532);
lcd.print(Tension_reelle);
  lcd.print(" V");
}
Sur la platine de circuit imprimé, on a les 2 résistances de polarisation de l’afficheur, et les deux résistances du pont diviseur de tension.

Il nous reste à faire évoluer notre programme afin d’effectuer des actions en fonction des tensions mesurées, comme par exemple allumer / éteindre une LED.
A suivre ……

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.