Académique Documents
Professionnel Documents
Culture Documents
Le matériel
• Onduleur compatible (voir liste au dessus)
• Microcontrôleur Arduino avec au moins un port série de disponible :
https://www.amazon.fr/gp/product/B07LCY1Q6Y/ref=ppx_yo_dt_b_asin_title_o07_s00
• Câble RJ45 (qui sera coupé par la suite) https://www.amazon.fr/MCL-FCC5EM-0-5M-C%C3%A2ble-r%C3%A9seau-RJ-
45/dp/B000FM7D0S
• Convertisseur bidirectionnel RS232/TTL (2 modèles possibles et testés)
https://www.amazon.fr/gp/product/B00K67XD7Y/ref=ppx_yo_dt_b_asin_title_o04_s00 ou
https://www.amazon.fr/gp/product/B01GKE3VUU/ref=ppx_yo_dt_b_asin_title_o00_s00
• Fils de câblage https://www.amazon.fr/gp/product/B07KCFG5YX/ref=ppx_yo_dt_b_asin_title_o08_s01
• Connecteur DB9 https://www.amazon.fr/gp/product/B00HUH9KFM/ref=ppx_yo_dt_b_asin_title_o05_s00 ou sans soudure
https://www.amazon.fr/Adaptateur-Broches-connecteur-Positions-Connector/dp/B071DS5GTW
Les liens proposés sont facultatifs, vous pourrez sans doute trouvez à meilleurs prix ailleurs
et en fonction de convertisseur rs232/TTL choisi vous aurez besoin ou non de connecteur
DB9 ou pas.
Le câblage et le matériel proposé par la suite est celui avec connecteur DB9 et l'interface
RS232/TTL. Cette solution est plus simple pour les personnes moins techniques, de même,
il est possible d'utiliser un db9 avec vis et sans soudure
Vous pouvez utiliser les chaînes de caractère suivantes pour obtenir d'autre information, voir piloter
et régler votre onduleur via l'arduino.
String QPIWS = "\x51\x50\x49\x57\x53\xB4\xDA\x0D";
String QDI = "\x51\x44\x49\x71\x1B\x0D";
String QMOD = "\x51\x4D\x4F\x44\x49\xC1\x0D";
String QVFW = "\x51\x56\x46\x57\x62\x99\x0D";
String QVFW2 = "\x51\x56\x46\x57\x32\xC3\xF5\x0D";
Le code pour arduino mega avec utilisation du port serie 2 pour le dialogue avec l'onduleur
Téléchargement : https://drive.google.com/file/d/139HpPuWth7btpYhhjbLF2ijHUXSH7x_N/view?usp=sharing )
Code exemple :
----------------------------------
String QPIGS = "\x51\x50\x49\x47\x53\xB7\xA9\x0D"; // (command for get data like voltage, frequency, power, etc ... from inverter)
/*
String QPIWS = "\x51\x50\x49\x57\x53\xB4\xDA\x0D";
String QDI = "\x51\x44\x49\x71\x1B\x0D";
String QMOD = "\x51\x4D\x4F\x44\x49\xC1\x0D";
String QVFW = "\x51\x56\x46\x57\x62\x99\x0D";
String QVFW2 = "\x51\x56\x46\x57\x32\xC3\xF5\x0D";
float PIP_Grid_Voltage=0;
float PIP_Grid_frequence=0;
float PIP_output_Voltage=0;
float PIP_output_frequence=0;
int PIP_output_apparent_power=0;
int PIP_output_active_power=0;
int PIP_output_load_percent=0;
int PIP_BUS_voltage=0;
float PIP_Battery_voltage=0;
float PIP_battery_charge_current=0;
float PIP_battery_capacity=0;
float PIP_Inverter_heat_sink_temperature =0;
float PIP_PV_current=0;
float PIP_PV_voltage=0;
float PIP_Battery_voltage_from_SCC =0;
float PIP_battery_discharge_current=0;
void setup() {
Serial.begin(2400);
Serial2.begin(2400);
}
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis > interval) {
Serial.println("ff");
previousMillis = currentMillis;
String inData;
Serial2.print(QPIGS);
if (Serial2.find("(")) {
Serial.println("fg");
PIP_Grid_Voltage=Serial2.parseFloat();
PIP_Grid_frequence=Serial2.parseFloat();
PIP_output_Voltage=Serial2.parseFloat();
PIP_output_frequence=Serial2.parseFloat();
PIP_output_apparent_power=Serial2.parseInt();
PIP_output_active_power=Serial2.parseInt();
PIP_output_load_percent=Serial2.parseInt();
PIP_BUS_voltage=Serial2.parseFloat();
PIP_Battery_voltage=Serial2.parseFloat();
PIP_battery_charge_current=Serial2.parseFloat();
PIP_battery_capacity=Serial2.parseInt();
PIP_Inverter_heat_sink_temperature =Serial2.parseInt();
PIP_PV_current=Serial2.parseFloat();
PIP_PV_voltage=Serial2.parseFloat();
PIP_Battery_voltage_from_SCC =Serial2.parseFloat();
PIP_battery_discharge_current=Serial2.parseFloat();
Serial.println("-----------------------------------------");
Serial.println("Grid voltage: " + String(PIP_Grid_Voltage)); //QPIGS.1 Grid voltage
Serial.println("Grid frequency: " + String(PIP_Grid_frequence)); //QPIGS.2 Grid frequency
Serial.println("Out voltage: " + String(PIP_output_Voltage)); //QPIGS.3 Out voltage
Serial.println("Out frequency: " + String(PIP_output_frequence)); //QPIGS.4 Out frequency
Serial.println("output apparent power: " + String(PIP_output_apparent_power)); //QPIGS.5 AC output apparent power
Serial.println("output active power: " + String(PIP_output_active_power)); //QPIGS.6 AC output active power
Serial.println("Output load percent: " + String(PIP_output_load_percent)); //QPIGS.7 Output load percent
Serial.println("PIP_BUS_voltage: " + String(PIP_BUS_voltage)); //skip
Serial.println("Battery voltage: " + String(PIP_Battery_voltage)); //QPIGS.9 Battery voltage
Serial.println("Battery charging current: " + String(PIP_battery_charge_current)); //QPIGS.10 Battery charging current
Serial.println("Battery capacity: " + String(PIP_battery_capacity)); //QPIGS.11 Battery capacity
Serial.println("PIP_Inverter_heat_sink_temperature: " + String(PIP_Inverter_heat_sink_temperature)); //skip
Serial.println("PIP_PV_current: " + String(PIP_PV_current)); //skip
Serial.println("PV Input voltage: " + String(PIP_PV_voltage)); //QPIGS.14 PV Input voltage
Serial.println("PIP_Battery_voltage_from_SCC: " + String(PIP_Battery_voltage_from_SCC)); //skip
Serial.println("Battery discharge current: " + String(PIP_battery_discharge_current)); //QPIGS.16 Battery discharge current
}
}
}
----------------------------------
Le câblage complet
Pour l'utilisation de l'autre carte sans connecteur DB9 , voici le principe de connexion sur
une arduino uno (j'ai testé donc c'est ok)