0% ont trouvé ce document utile (0 vote)
6 vues3 pages

Mesure de courant avec Arduino et LCD

Ce code Arduino utilise un écran LCD pour afficher le courant mesuré par un capteur ACS712-30A et une tension fixe de 12V. Il lit la valeur analogique du capteur, la convertit en millivolts, puis calcule le courant et la puissance. Les résultats sont affichés sur l'écran LCD avec une mise à jour toutes les secondes.

Transféré par

ludivinekembwa
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
6 vues3 pages

Mesure de courant avec Arduino et LCD

Ce code Arduino utilise un écran LCD pour afficher le courant mesuré par un capteur ACS712-30A et une tension fixe de 12V. Il lit la valeur analogique du capteur, la convertit en millivolts, puis calcule le courant et la puissance. Les résultats sont affichés sur l'écran LCD avec une mise à jour toutes les secondes.

Transféré par

ludivinekembwa
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

#include <LiquidCrystal.

h>

// Initialisation de l'écran LCD (RS, E, D4, D5, D6, D7)

// Les broches utilisées sont 11, 10, 5, 4, 3, 2.

// Note: Le code dans l'image utilise lcd(11,10,5,4,3,2);

LiquidCrystal lcd(11, 10, 5, 4, 3, 2);

// Broche analogique de lecture du capteur de courant

const int currentPin = A0;

// Constantes pour la conversion du capteur de courant

// La sensibilité est en mV/A. 66 mV/A est typique pour le modèle ACS712-


30A.

int sensitivity = 66;

// Valeur de décalage (offset) en mV. 2500 mV (2.5V) est l'offset pour un


capteur alimenté en 5V.

int offsetVoltage = 2500;

// Variables pour les calculs

int adcValue = 0;

// Note: Le code utilise des types int ici, mais pour stocker une valeur de
5000 mV,

// un 'int' est suffisant sur un Arduino Uno.

int adcVoltage = 0;

double currentValue = 0;

void setup() {

// Initialisation de l'écran LCD (16 colonnes, 2 lignes)

[Link](16, 2);

}
void loop() {

// 1. Lire la valeur analogique du capteur (0-1023)

adcValue = analogRead(currentPin);

// 2. Convertir la valeur ADC en millivolts (mV)

// Tension de référence de l'Arduino = 5000 mV (5V)

// 5000 / 1024.0 = mV par unité ADC

adcVoltage = (adcValue * (5000 / 1024.0)); // Note: Le code original dans


l'image est légèrement différent (5000 / 1024.0)

// 3. Calculer le courant (en Ampères)

// Formule pour les capteurs ACS712:

// Courant = (Tension_mesurée - Tension_offset) / Sensibilité(mV/A)

// Le résultat est en Ampères (A).

currentValue = ((adcVoltage - offsetVoltage) / sensitivity);

// 4. Calculer la tension de charge et la puissance

// Note: 'loadvoltage * 12' est très inhabituel et ne représente pas une


vraie tension.

// J'assume qu'une tension de charge fixe de 12V est utilisée ici à des fins
de démonstration.

// Une meilleure approche serait de lire une tension avec un diviseur de


tension.

int loadvoltage = 12; // La variable 'loadvoltage' est écrasée à 12, elle


devrait être 'int loadvoltage = 12;'

// Calcul de la Puissance (P = V * I)

// Note: La formule dans l'image est incomplète ou erronée: 'loadvoltage


* currentValue * currentValue'.

// Elle devrait être 'loadvoltage * currentValue' (P = V * I).


// Je vais utiliser la formule standard et corriger la multiplication dans le
code.

int power = loadvoltage * currentValue;

// 5. Afficher les résultats sur l'écran LCD

// Première ligne: Afficher le Courant

[Link](0, 0);

[Link]("Current = ");

// Afficher la valeur avec 2 décimales

[Link](currentValue, 2);

[Link](" A");

// Deuxième ligne: Afficher la Tension

[Link](0, 1);

[Link]("Voltage = ");

[Link](loadvoltage);

[Link](" V");

// Optionnel: Réinitialiser le curseur au début de la première ligne

// Ceci est redondant car il est déjà défini au début du loop pour la
première ligne.

// [Link](0, 0);

// Pause avant la prochaine lecture

delay(1000);

Vous aimerez peut-être aussi