Brève description
Ce module est un capteur / wattmètre de précision pour courant continu (DC) :
-
Plage de mesure : Tension de 0 à 300 V DC et courant de 0 à 300 A DC (selon le Shunt externe utilisé).
-
Grandeur mesurées : Tension, Courant, Puissance instantanée (W) et Énergie consommée (kWh).
-
Communication : Interface série RS485 sous protocole Modbus-RTU, permettant d’interroger le module à distance via Arduino, ESP32, Raspberry Pi ou un PC (via convertisseur USB-RS485).
-
Sécurité : Mesure via Shunt externe et isolation de la partie mesure.
Utilité et applications
Ce composant est idéal pour la gestion et le suivi énergétique des installations solaires ou sur batteries :
-
Supervision d’installations solaires (PV) : Mesurer en temps réel la tension et le courant produits par les panneaux ou stockés dans les batteries.
-
Gestion de batterie / Power Management : Suivre la consommation électrique d’un système DC et calculer l’état de charge/décharge.
-
Banc de test électronique & Smart Home : Remonter les métriques de consommation électrique vers une centrale domotique (ex: Home Assistant, Domoticz) via RS485.
#include <SoftwareSerial.h>
#include <ModbusMaster.h>// Pins pour le MAX485
#define RX_PIN 2
#define TX_PIN 3
#define MAX485_RE_DE 4SoftwareSerial pzemSerial(RX_PIN, TX_PIN);
ModbusMaster node;// Fonctions de contrôle du sens de transmission RS485
void preTransmission() {
digitalWrite(MAX485_RE_DE, 1);
}void postTransmission() {
digitalWrite(MAX485_RE_DE, 0);
}void setup() {
Serial.begin(9600);
pzemSerial.begin(9600);pinMode(MAX485_RE_DE, OUTPUT);
digitalWrite(MAX485_RE_DE, 0);// Adresse Modbus par défaut du PZEM-017 = 1
node.begin(1, pzemSerial);
node.preTransmission(preTransmission);
node.postTransmission(postTransmission);Serial.println(« Initialisation de la lecture PZEM-017… »);
}void loop() {
uint8_t result;// Lecture de 6 registres d’entrée à partir de l’adresse 0x0000
result = node.readInputRegisters(0x0000, 6);if (result == node.ku8MBSuccess) {
float tension = node.getResponseBuffer(0) / 100.0; // En Volts
float courant = node.getResponseBuffer(1) / 100.0; // En Ampères
uint32_t puissance_raw = ((uint32_t)node.getResponseBuffer(3) << 16) | node.getResponseBuffer(2);
float puissance = puissance_raw / 10.0; // En WattsSerial.print(« Tension : « );
Serial.print(tension);
Serial.print( » V | Courant : « );
Serial.print(courant);
Serial.print( » A | Puissance : « );
Serial.print(puissance);
Serial.println( » W »);
} else {
Serial.print(« Erreur de lecture Modbus : « );
Serial.println(result, HEX);
}delay(2000); // Pause de 2 secondes entre deux lectures
}







Avis
Il n’y a pas encore d’avis.