From 7431eeb75954ce00f8b87deb9451fcfe44b53c3d Mon Sep 17 00:00:00 2001 From: Christian Zufferey Date: Wed, 3 Jun 2020 20:13:40 +0200 Subject: [PATCH] =?UTF-8?q?La=20mesure=20de=20puissance=20fonctionne=20mai?= =?UTF-8?q?ntenant,=20reste=20encore=20tout=20le=20reste=20=C3=A0=20faire?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../energy/transfo_courant_clip_1p/0_cron.lua | 15 ++- .../transfo_courant_clip_1p/0_get_power.lua | 9 +- .../energy/transfo_courant_clip_1p/README.md | 24 +++- .../energy/transfo_courant_clip_1p/boot.lua | 7 +- .../oldies/z_index.html | 112 +++++++++++++++--- .../transfo_courant_clip_1p/z_index.html | 103 ---------------- 6 files changed, 134 insertions(+), 136 deletions(-) delete mode 100644 Mesures/energy/transfo_courant_clip_1p/z_index.html diff --git a/Mesures/energy/transfo_courant_clip_1p/0_cron.lua b/Mesures/energy/transfo_courant_clip_1p/0_cron.lua index 8252c99..63627c6 100644 --- a/Mesures/energy/transfo_courant_clip_1p/0_cron.lua +++ b/Mesures/energy/transfo_courant_clip_1p/0_cron.lua @@ -1,5 +1,5 @@ -- Petit script pour faire office de crontab pour les mesures -print("\n 0_cron.lua zf200527.1827 \n") +print("\n 0_cron.lua zf200603.1950 \n") cron1=tmr.create() cron1:alarm(10*1000, tmr.ALARM_AUTO, function() @@ -8,15 +8,14 @@ cron1:alarm(10*1000, tmr.ALARM_AUTO, function() http_post(influxdb_url,"energy,memory=cron1_"..yellow_id.." ram="..node.heap()) - f = "0_1_htu21d.lua" if file.exists(f) then dofile(f) end - http_post(influxdb_url,"energy,capteur=th1 temperature="..ztemp1) - http_post(influxdb_url,"energy,capteur=th1 humidity="..zhum1) + -- f = "0_1_htu21d.lua" if file.exists(f) then dofile(f) end + -- http_post(influxdb_url,"energy,capteur=th1 temperature="..ztemp1) + -- http_post(influxdb_url,"energy,capteur=th1 humidity="..zhum1) + -- + -- ztemp1=nil zhum1=nil ztemp2=nil zhum2=nil + - f = "0_2_htu21d.lua" if file.exists(f) then dofile(f) end - http_post(influxdb_url,"energy,capteur=th2 temperature="..ztemp2) - http_post(influxdb_url,"energy,capteur=th2 humidity="..zhum2) - ztemp1=nil zhum1=nil ztemp2=nil zhum2=nil -- f = "0_zdyndns.lua" if file.exists(f) then dofile(f) end diff --git a/Mesures/energy/transfo_courant_clip_1p/0_get_power.lua b/Mesures/energy/transfo_courant_clip_1p/0_get_power.lua index 9c81dd7..5fe8936 100644 --- a/Mesures/energy/transfo_courant_clip_1p/0_get_power.lua +++ b/Mesures/energy/transfo_courant_clip_1p/0_get_power.lua @@ -1,6 +1,6 @@ -- Lit le convertisseur ADC connecté sur le transformateur de courant -- pour mesurer le courant électrique de l'installation PV -print("\n 0_get_data.lua zf191024.1037 \n") +print("\n 0_get_power.lua zf200603.2013 \n") -- Astuce de mesure: -- On converti le courant en tension avec la résistance de charge du @@ -17,10 +17,9 @@ print("\n 0_get_data.lua zf191024.1037 \n") -- bien dans la plage de mesure avec le choix de la résistance de conversion -- la conversion courant/tension/puissance est faite avec une simple régle de 3 - -zpow_cal=401 --puissance mesurée de la charge étalon -zadc_cal=189 --valeur de l'adc pour zpow_cal -zadc_offset=548 +zpow_cal=692 --puissance mesurée de la charge étalon +zadc_cal=59 --valeur de l'adc pour zpow_cal +zadc_offset=172 zadc_sum=0 zadc_offset_sum=0 znb_mes=0 zadc_min=zadc_offset zadc_max=zadc_offset diff --git a/Mesures/energy/transfo_courant_clip_1p/README.md b/Mesures/energy/transfo_courant_clip_1p/README.md index 785796d..3874192 100644 --- a/Mesures/energy/transfo_courant_clip_1p/README.md +++ b/Mesures/energy/transfo_courant_clip_1p/README.md @@ -1,10 +1,16 @@ # Mesure d'énergie d'une installation monophasée -zf200603.1508 +zf200603.1940 + +**ATTENTION:
+Ce README est parti d'un autre projet similaire, donc pas tout juste pour ce projet** + ## Table of Contents * [Astuces de mesures de la puissance](#astuces-de-mesures-de-la-puissance) + * [Schéma](#schéma) + * [Astuces](#astuces) * [Installation](#installation) * [Utilisation](#utilisation) * [Distribution des rôles de NodeMCU](#distribution-des-rôles-de-nodemcu) @@ -55,7 +61,21 @@ Toutes les fonctions sont bien séparées dans des scripts, cela *complexifie* l ## Astuces de mesures de la puissance -Dans ce projet il y a 1x NodeMCU qui mesure la production électrique de mon installation solaire PV. On mesure le courant injecté dans le réseau électrique de la maison avec un petit transformateur de courant 1/800 *clipsé* sur la phase de l'onduleur.
+Dans ce projet il y a 1x NodeMCU qui mesure la production électrique de mon installation solaire PV. On mesure le courant injecté dans le réseau électrique de la maison avec un petit transformateur de courant *clipsé* sur la phase du smart inverter.
+ +### Schéma + +![Image](https://github.com/zuzu59/NodeMCU_Lua/blob/master/Mesures/energy/transfo_courant_clip_1p/schemas/sch%C3%A9ma.png?raw=true) + +Le petit transfo de courant a un rapport de 25mA à 20A, soit 0.025/20=0.00125 soit encore 1/800. + +Une masse virtuelle de 0.5V est constituée avec le pont des résistances R2/R1, cela permet de *remonter* la tension alternative de la mesure de courant. + +La résistance R3 est utilisée pour la conversion courant/tension du transfo de courant.
+Pour une charge maximale de 600W, la résistance R3 est de 100R, et pour 1'200W elle est de 56R. + +### Astuces + * Comme le convertisseur ADC du NodeMCU ne peut mesurer que des valeurs positives comprises entre 0V et 1V, on ajoute une masse *fictive* au signal du transformateur de courant de 0.5V afin de *remonter* l'alternance négative.
Au lieu de *découper* la sinusoïde (50Hz) en 100 *parties*, c'est à dire toutes les 0.2ms (5'000x /s), pour en faire l'intégrale. On lit l'ADC toutes les 11ms (seulement 91x /s) donc beaucoup plus lentement.
* Comme la sinusoïde fait 20ms et est *répétitive*, on balaye (par *décalage*) statistiquement la sinusoïde.
diff --git a/Mesures/energy/transfo_courant_clip_1p/boot.lua b/Mesures/energy/transfo_courant_clip_1p/boot.lua index feb3f7c..939031a 100644 --- a/Mesures/energy/transfo_courant_clip_1p/boot.lua +++ b/Mesures/energy/transfo_courant_clip_1p/boot.lua @@ -1,6 +1,6 @@ -- Scripts à charger après le boot pour démarrer son projet -print("\n boot.lua zf200530.1211 \n") +print("\n boot.lua zf200603.1953 \n") -- function ztime_stamp() return tmr.now()/1000000 end @@ -20,7 +20,10 @@ function boot() f="0_btn_flipflop.lua" if file.exists(f) then dofile(f) end -- print(node.heap()) collectgarbage() print(node.heap()) - f="0_cron.lua" if file.exists(f) then dofile(f) end + f="0_get_power.lua" if file.exists(f) then dofile(f) end + + + -- f="0_cron.lua" if file.exists(f) then dofile(f) end print("verbose:",verbose) print("boot lancé...") gpio.write(zLED, gpio.HIGH) diff --git a/Mesures/energy/transfo_courant_clip_1p/oldies/z_index.html b/Mesures/energy/transfo_courant_clip_1p/oldies/z_index.html index 79c5352..724061f 100644 --- a/Mesures/energy/transfo_courant_clip_1p/oldies/z_index.html +++ b/Mesures/energy/transfo_courant_clip_1p/oldies/z_index.html @@ -1,23 +1,103 @@ + + + - - - ESP8266 home page + +<% + zout(""..node_id.."") +%> - -

ESP8266 home page 190727.0941

-

Différentes pages HTML:

-

- Page 1, affichage de la température dynamique en code Lua inline.
- Page 2, tableau dynamique écrit en Lua inline.
- Page 3, affichage du capteur non linéaire corrigé.
- Page 4, test de récupération d'arguments pour un web service.
- API HUB Temp, test d'un web service hub de mesures de température.
- Affichage des températures, affiche les températures mesurées.
- Page qui n'existe pas !
-

- +<% + zout("

"..node_id.."    200118.1804

") +%> + Home...
+

Menu:

+

+ LED + On + Off
+ + Affichage de la température et humidité
+
+ Wifi setup
+

+ +<% + if _GET.SetupWIFI == "true" then + print("On demande le setup wifi depuis le browser !") + wifi_setup_ok=(math.floor(100*node.random())) + zout("

Etes-vous vraiment certain ?
Si oui, faites: ") + zout(' Ok

') + end +%> + +<% + if (wifi_setup_ok ~= nil) and (_GET.SetupWIFI == tostring(wifi_setup_ok)) then + print("On confirme le setup wifi depuis le browser !") + zout("

Choisir comme WIFI AP: setup_gadget puis aller sur: http://192.168.4.1

") + file.putcontents("_setup_wifi_", "toto") + tmr.create():alarm(5*1000, tmr.ALARM_SINGLE, function() + print("on restart pour le setup wifi") + wifi.sta.config{ssid="", pwd="", auto=true, save=true} + wifi.sta.autoconnect(1) wifi.sta.connect() + node.restart() + end) + end +%> + +<% + if _GET.RESTART == "true" then + print("oups restart...") + zout("

oups restart...

") + tmr.create():alarm(5*1000, tmr.ALARM_SINGLE, function() + print("on restart...") + node.restart() + end) + end +%> + +<% + zout("Etat de la LED:") + if gpio.read(zLED) == 1 then zout("OFF") else zout("ON") end + zout("
") +%> + +<% + if zRELAY ~= nil then + zout("Etat du RELAY:") + if gpio.read(zRELAY) == 0 then zout("OFF") else zout("ON") end + zout("
") + end +%> + +<% + a,b,c = wifi.sta.getip() + if a ~= nil then + zout("
IP: "..a.."
\n".."MASK: "..b.."
\n".."GATEWAY: "..c.."
\n") + a=nil b=nil c=nil + end + collectgarbage() zout("RAM: "..node.heap().."
") +%> + +<% + zout("
Etat des GLOBALS !
\n") + zout("\n") + for k,v in pairs(_G) do + if k ~= "lua_code" then + v = tostring(v) + zout("") + zout("") zout("") + zout("\n") + end + end + zout("
"..k..""..v.."
") +%> + +

Restart !
+ + diff --git a/Mesures/energy/transfo_courant_clip_1p/z_index.html b/Mesures/energy/transfo_courant_clip_1p/z_index.html deleted file mode 100644 index 724061f..0000000 --- a/Mesures/energy/transfo_courant_clip_1p/z_index.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - -<% - zout(""..node_id.."") -%> - - -<% - zout("

"..node_id.."    200118.1804

") -%> - Home...
-

Menu:

-

- - LED - On - Off
- - Affichage de la température et humidité
-
- Wifi setup
-

- -<% - if _GET.SetupWIFI == "true" then - print("On demande le setup wifi depuis le browser !") - wifi_setup_ok=(math.floor(100*node.random())) - zout("

Etes-vous vraiment certain ?
Si oui, faites: ") - zout(' Ok

') - end -%> - -<% - if (wifi_setup_ok ~= nil) and (_GET.SetupWIFI == tostring(wifi_setup_ok)) then - print("On confirme le setup wifi depuis le browser !") - zout("

Choisir comme WIFI AP: setup_gadget puis aller sur: http://192.168.4.1

") - file.putcontents("_setup_wifi_", "toto") - tmr.create():alarm(5*1000, tmr.ALARM_SINGLE, function() - print("on restart pour le setup wifi") - wifi.sta.config{ssid="", pwd="", auto=true, save=true} - wifi.sta.autoconnect(1) wifi.sta.connect() - node.restart() - end) - end -%> - -<% - if _GET.RESTART == "true" then - print("oups restart...") - zout("

oups restart...

") - tmr.create():alarm(5*1000, tmr.ALARM_SINGLE, function() - print("on restart...") - node.restart() - end) - end -%> - -<% - zout("Etat de la LED:") - if gpio.read(zLED) == 1 then zout("OFF") else zout("ON") end - zout("
") -%> - -<% - if zRELAY ~= nil then - zout("Etat du RELAY:") - if gpio.read(zRELAY) == 0 then zout("OFF") else zout("ON") end - zout("
") - end -%> - -<% - a,b,c = wifi.sta.getip() - if a ~= nil then - zout("
IP: "..a.."
\n".."MASK: "..b.."
\n".."GATEWAY: "..c.."
\n") - a=nil b=nil c=nil - end - collectgarbage() zout("RAM: "..node.heap().."
") -%> - -<% - zout("
Etat des GLOBALS !
\n") - zout("\n") - for k,v in pairs(_G) do - if k ~= "lua_code" then - v = tostring(v) - zout("") - zout("") zout("") - zout("\n") - end - end - zout("
"..k..""..v.."
") -%> - -

Restart !
- - -