Description
ZMPT101B Capteur de Tension AC
Le module capteur de tension AC ZMPT101B est un capteur haute précision conçu pour mesurer des tensions alternatives (AC) jusqu’à 250V. Il utilise un transformateur de tension de micro-précision et un circuit amplificateur intégré pour fournir une sortie analogique proportionnelle à la tension mesurée. Ce module est couramment utilisé dans les projets de surveillance de la tension AC, l’automatisation de la maison et les compteurs d’énergie intelligents.
Caractéristiques en détail
- Tension d’entrée : 0 à 250V AC
- Sortie : Signal analogique 0-5V
- Précision : Haute précision avec un circuit amplificateur intégré
- Tension d’alimentation : 5V à 30V DC
- Température de fonctionnement : -40ºC à 70ºC
- Dimensions : Compact et facile à monter sur PCB
- Potentiomètre de calibration : Ajustement précis de la sortie analogique
Fonctionnement
Le capteur de tension AC ZMPT101B utilise un transformateur de tension pour abaisser la tension d’entrée AC, qui est ensuite traitée par un diviseur de tension résistif et un amplificateur opérationnel pour fournir une sortie analogique proportionnelle à la tension d’entrée. Le module est équipé d’un potentiomètre multi-tours pour calibrer la sortie en fonction de la tension d’entrée.
Applications
- Surveillance de la tension secteur
- Projets d’automatisation de la maison
- Compteurs d’énergie intelligents
- Détection de pannes de courant
- Analyse et contrôle de la puissance
Brochage
- VCC : Alimentation du module (5V)
- OUT : Sortie analogique proportionnelle à la tension mesurée
- GND : Masse
- GND : Masse
- Bornier 2 broches (AC input)
Comment l’utiliser
Pour utiliser le capteur de tension ZMPT101B avec un Arduino, connectez la broche VCC à l’alimentation 5V de l’Arduino, la broche GND à la masse, et la broche OUT à une entrée analogique de l’Arduino (par exemple, A0). Les bornes de tension AC (VIN+ et VIN-) doivent être connectées à la source de tension AC à mesurer.
Comment l’utiliser avec Arduino Uno
Exemple de code Arduino de base
#define VOLTAGE_SENSOR_PIN A0
void setup() {
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(VOLTAGE_SENSOR_PIN);
float voltage = (sensorValue / 1023.0) * 250.0; // Conversion pour 250V AC
Serial.print("Voltage: ");
Serial.print(voltage);
Serial.println(" V");
delay(1000);
}
But du code
Ce code lit les valeurs analogiques du capteur de tension et les convertit en tension réelle en utilisant la formule appropriée. Les valeurs de tension sont affichées sur le moniteur série.
Composants nécessaires pour le code de base
- Arduino Uno
- Module capteur de tension ZMPT101B
- Câbles de connexion
Explication détaillée du code de base
- Initialisation : La communication série est établie à 9600 bauds.
- Lecture des données : Les valeurs analogiques du capteur sont lues et converties en tension. La tension est ensuite multipliée pour correspondre à la plage de mesure du capteur (0-250V). Les valeurs de tension sont affichées sur le moniteur série.
Brochage détaillé des connexions du code de base
- VCC : Connecter à l’alimentation 5V (Arduino)
- GND : Connecter à la masse (Arduino)
- OUT : Connecter à A0 (Arduino)
- VIN+ : Entrée de tension AC positive
- VIN- : Entrée de tension AC négative
Exemple de code Arduino avancé pour affichage sur LCD avec gestion d’erreurs et améliorations
#include <LiquidCrystal_I2C.h> // Inclusion de la bibliothèque pour l'écran LCD I2C
// Constantes
const float V_REF = 5.0; // Tension de référence de l'Arduino
const int ADC_RESOLUTION = 1023; // Résolution de l'ADC de l'Arduino
const float VOLTAGE_RANGE = 250.0; // Plage de tension mesurée par le capteur
const int VOLTAGE_SENSOR_PIN = A0; // Broche de connexion du capteur de tension
const int DELAY_TIME = 1000; // Délai entre les lectures en millisecondes
LiquidCrystal_I2C lcd(0x27, 16, 2); // Initialisation de l'écran LCD I2C avec l'adresse 0x27 et une taille de 16x2
void setup() {
lcd.begin(); // Initialisation de l'écran LCD
lcd.backlight(); // Allumer le rétroéclairage de l'écran LCD
Serial.begin(9600); // Initialisation de la communication série à 9600 bauds
}
// Fonction pour lire la valeur du capteur de tension
void readSensorValue(int& sensorValue) {
sensorValue = analogRead(VOLTAGE_SENSOR_PIN); // Lire la valeur analogique du capteur
}
// Fonction pour calculer la tension mesurée à partir de la valeur du capteur
float calculateVoltage(int sensorValue) {
if (ADC_RESOLUTION == 0) { // Vérification pour éviter la division par zéro
Serial.println("Erreur: ADC_RESOLUTION est zéro.");
return 0.0;
}
float adc_voltage = sensorValue * (V_REF / ADC_RESOLUTION); // Calcul de la tension ADC
float voltage = adc_voltage * VOLTAGE_RANGE / V_REF; // Conversion de la tension ADC à la tension réelle
if (voltage > VOLTAGE_RANGE) { // Vérification si la tension dépasse la plage maximale
Serial.println("Erreur: Tension hors plage.");
return 0.0;
}
return voltage; // Retourne la tension calculée
}
// Fonction pour afficher les valeurs sur l'écran LCD
void displayValuesOnLCD(float voltage) {
static float lastVoltage = -1.0; // Variable pour stocker la dernière valeur de tension affichée
if (voltage != lastVoltage) { // Met à jour l'affichage uniquement si la valeur a changé
lcd.clear(); // Efface l'écran LCD
lcd.setCursor(0, 0); // Positionne le curseur à la première ligne
lcd.print("Voltage: "); // Affiche le texte "Voltage: "
lcd.print(voltage, 2); // Affiche la valeur de la tension avec 2 décimales
lcd.print(" V"); // Affiche l'unité de tension "V"
lastVoltage = voltage; // Met à jour la dernière valeur de tension affichée
}
}
// Fonction pour afficher les valeurs sur la console série
void displayValuesOnSerialConsole(float voltage) {
Serial.print("Voltage: "); // Affiche le texte "Voltage: " sur la console série
Serial.print(voltage, 2); // Affiche la valeur de la tension avec 2 décimales
Serial.println(" V"); // Affiche l'unité de tension "V" et passe à la ligne suivante
}
void loop() {
int sensorValue;
readSensorValue(sensorValue); // Lire la valeur du capteur de tension
float voltage = calculateVoltage(sensorValue); // Calculer la tension réelle
displayValuesOnLCD(voltage); // Afficher la tension sur l'écran LCD
displayValuesOnSerialConsole(voltage); // Afficher la tension sur la console série
delay(DELAY_TIME); // Attendre avant de refaire une lecture
}
But du code
Ce code affiche les valeurs de tension mesurées par le capteur ZMPT101B sur un écran LCD I2C et sur la console série.
Composants nécessaires pour le code avancé
- Arduino Uno
- Module capteur de tension ZMPT101B
- Écran LCD I2C 1602
- Câbles de connexion
Explication détaillée du code avancé
- Inclusion de la bibliothèque La bibliothèque
LiquidCrystal_I2C.hest incluse pour permettre la communication avec l’écran LCD utilisant le protocole I2C. - Définition des constantes Les constantes définissent la tension de référence (
V_REF), la résolution de l’ADC (ADC_RESOLUTION), la plage de tension mesurée (VOLTAGE_RANGE), la broche de connexion du capteur de tension (VOLTAGE_SENSOR_PIN), et le délai entre les lectures (DELAY_TIME). - Initialisation de l’écran LCD La fonction
setup()initialise l’écran LCD en appelant les méthodesbegin()etbacklight()de la bibliothèqueLiquidCrystal_I2C. Elle initialise également la communication série à une vitesse de 9600 bauds. - Lecture des valeurs des capteurs La fonction
readSensorValue(int& sensorValue)lit la valeur analogique du capteur de tension et la stocke dans la variablesensorValue. - Calcul de la tension La fonction
calculateVoltage(int sensorValue)calcule la tension en multipliant la valeur lue par la tension de référence, divisée par la résolution de l’ADC, et en tenant compte de la plage de tension mesurée. Elle vérifie également la division par zéro pourADC_RESOLUTIONet si la tension calculée dépasse la plage de tension maximale définie (VOLTAGE_RANGE). - Affichage des valeurs sur l’écran LCD La fonction
displayValuesOnLCD(float voltage)affiche la valeur de tension sur l’écran LCD avec deux décimales de précision. Pour éviter une mise à jour inefficace, elle n’efface et réécrit l’écran que si la valeur de tension a changé. - Affichage des valeurs sur la console série La fonction
displayValuesOnSerialConsole(float voltage)envoie la valeur de tension à la console série, avec deux décimales de précision. - Boucle principale La boucle
loop()lit les valeurs des capteurs de tension, calcule les valeurs réelles, et les affiche sur l’écran LCD et la console série. Elle attend ensuite une seconde avant de recommencer, grâce à l’appel de la fonctiondelay(DELAY_TIME).
Mots clés: voltage, current, sensor, voltmeter, ammeter, wattmeter.