Salut a tous
je reviens vers vous pour avoir de l'aide
j'ai trouvé sur le forum anglais le montage suivant basé sur le SCT-013
https://forum.mysensors.org/topic/1464/ ... -sensor/31
ça m’intéresse fortement ayant déjà préparé mon tableau avec une pince sur la phase
en revanche comment cabler la pince?
resistance? condensateur?
je suis toujours en recherche pour ma cuve également, je n'arrive pas a communiquer la hauteur et la température
-viewtopic.php?f=20&t=7152
merci a vous tous
DD91
SCT-013
Re: SCT-013
Salut,
Ce site m'avait aidé à l'époque quand j'avais fait la même chose que toi. Je n'ai plus le lien exact. Je n'utilise plus ce capteur depuis mon déménagement, il est dans un carton.
https://learn.openenergymonitor.org/ele ... ected=true
Ce site m'avait aidé à l'époque quand j'avais fait la même chose que toi. Je n'ai plus le lien exact. Je n'utilise plus ce capteur depuis mon déménagement, il est dans un carton.
https://learn.openenergymonitor.org/ele ... ected=true
Version: 2023.1 sur VM Synology, docker Zwave Js UI (Z-stick GEN5, Fibaro...), Zigbeefordomoticz. Nextion RGB Led Screen
Re: SCT-013
salut
merci pour ta réponse il y a donc des composants à rajouter en plus de la pince, je vais en tenir compte dans mon circuit
merci encore a toi
DD91
merci pour ta réponse il y a donc des composants à rajouter en plus de la pince, je vais en tenir compte dans mon circuit
merci encore a toi
DD91
Re: SCT-013
Bonjour, je me rappelle de ce post car j'y ai participé.
J'ai un montage avec 2 pince ampèremétriques depuis 3 ans maintenant et cela fonction très bien.
Attention toutefois :
Une pince ne donne que le courant Imax ou Irms mais pas le dephasage courant tension, le noeud MS retourne la puissance P=Urms x Irms et non la vraie puissance P=Urms x Irms x cos(phi)
Voici le code arduino (brut) (attention, il y a en plus un détecteur de lumière et une sonde ds18b20)
Effectivement, la pince sort une tension allant de -1 a 1V, il faut au préalable remonter cette tension
J'ai un montage avec 2 pince ampèremétriques depuis 3 ans maintenant et cela fonction très bien.
Attention toutefois :
Une pince ne donne que le courant Imax ou Irms mais pas le dephasage courant tension, le noeud MS retourne la puissance P=Urms x Irms et non la vraie puissance P=Urms x Irms x cos(phi)
Voici le code arduino (brut) (attention, il y a en plus un détecteur de lumière et une sonde ds18b20)
Code : Tout sélectionner
#include <Arduino.h>
#define MY_DEBUG
#define MY_RADIO_NRF24
#define MY_REPEATER_FEATURE
//#define MY_PARENT_NODE_ID 3
// EmonLibrary examples openenergymonitor.org, Licence GNU GPL V3 ***/
#include <SPI.h>
#include <MySensors.h>
#include <DallasTemperature.h>
#include <OneWire.h>
#include "EmonLib.h" // Include Emon Library
EnergyMonitor emon1,emon2; // Create an instance
#define CHILD_ID_CLAMP1 0
#define CHILD_ID_CLAMP2 1
#define CHILD_ID_TEMP 2
#define CHILD_ID_LDR 3
#define PIN_ANALOG_I1 A2 //pince amperemetrique1
#define PIN_ANALOG_I2 A3
#define PIN_LDR A0 // LDR
#define PIN_DALLAS 3
//Definition de dallas
#define MAX_ATTACHED_DS18B20 1
#define COMPARE_TEMP 1 // Send temperature only if changed? 1 = Yes 0 = No
OneWire oneWire(PIN_DALLAS);
DallasTemperature sensors(&oneWire);
float lastTemperature[MAX_ATTACHED_DS18B20];
int numSensors = 1;
bool receivedConfig = false;
bool metric = true; //truc v2.0
//int compat = 0;
unsigned long lastSend_temp = millis();
unsigned long lastSend_power = millis();
unsigned long lastSend_c;
unsigned long SEND_FREQUENCY = 120000; // Minimum time between send (in milliseconds). We don't wnat to spam the gateway.
unsigned long SEND_FREQUENCY_TEMP = 300000; //delais d'emission entre 2 mesures de temps
unsigned long SEND_FREQUENCY_C = SEND_FREQUENCY / 30;
int index = 0;
double Irms1 = 0;
double Irms2 = 0;
boolean pcReceived1 = false;
boolean pcReceived2 = false;
boolean first_time_temp = HIGH;
float nrj1 = 0, old_nrj1;
float nrj2 = 0, old_nrj2;
int ldr = 0, old_ldr;
MyMessage IrmsMsg1(CHILD_ID_CLAMP1, V_WATT);
MyMessage kWhMsg1(CHILD_ID_CLAMP1, V_KWH);
MyMessage pcMsg1(CHILD_ID_CLAMP1, V_VAR1);
MyMessage IrmsMsg2(CHILD_ID_CLAMP2, V_WATT);
MyMessage kWhMsg2(CHILD_ID_CLAMP2, V_KWH);
MyMessage pcMsg2(CHILD_ID_CLAMP2, V_VAR2);
MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP);
MyMessage msgLight(CHILD_ID_LDR, V_LIGHT_LEVEL);
void before() {
sensors.begin();
}
void presentation()
{
sendSketchInfo("Multisensors_Entree", "2.0"); // Send the sketch version information to the gateway and Controller
present(CHILD_ID_CLAMP1, S_POWER); // Register this device as power sensor
request(CHILD_ID_CLAMP1, V_VAR1);
present(CHILD_ID_CLAMP2, S_POWER); // Register this device as power sensor
request(CHILD_ID_CLAMP2, V_VAR2);
numSensors = sensors.getDeviceCount(); //compte le nb de ds18
present(CHILD_ID_TEMP, S_TEMP);
present(CHILD_ID_LDR, S_LIGHT_LEVEL);
}
void receive(const MyMessage &message)
{
if (message.type == V_VAR1)
{
nrj1 = old_nrj1 = message.getFloat();
Serial.print("Received last nrj count from gw:");
Serial.println(nrj1);
pcReceived1 = true;
}
if (message.type == V_VAR2)
{
nrj2 = old_nrj2 = message.getFloat();
Serial.print("Received last nrj count from gw:");
Serial.println(nrj2);
pcReceived2 = true;
}
}
void setup()
{
sensors.setWaitForConversion(false);
emon1.current(PIN_ANALOG_I1, 30.0); // Current: input pin, calibration.
emon2.current(PIN_ANALOG_I2, 30.0);
Serial.println("SETUP completed");
}
void envoi_donnees(double intrms, int id_clamp)
{
Serial.print("Envoi des donnees .... clamp="); Serial.println(id_clamp);
double energie = (intrms * 232.0 * SEND_FREQUENCY / 1000) / 3.6E6;
switch (id_clamp)
{
case 1:
{
send(IrmsMsg1.set(intrms * 232.0, 1));
nrj1 += energie;
send(kWhMsg1.set(nrj1, 5));
send(pcMsg1.set(nrj1, 5));
old_nrj1 = nrj1;
}
break;
case 2:
{
send(IrmsMsg2.set(intrms * 232.0, 1));
nrj2 += energie;
send(kWhMsg2.set(nrj2, 5));
send(pcMsg2.set(nrj2, 5));
old_nrj2 = nrj2;
}
break;
}
}
void loop() {
unsigned long now = millis();
bool sendTime_c = now - lastSend_c > SEND_FREQUENCY_C;
// Calcul de Irms1 et Irms2
Double i1,i2
if (sendTime_c) //calcul Irms moy clamp1/clamp2
{
if (index == 0)
{
i1=emon1.calcIrms(1480);
i1=(i1<0.2)?0:i1;
Irms1 = i1;
i2=emon2.calcIrms(1480);
i2=(i2<0.2)?0:i2;
Irms2 = i2;
}
else
{
i1=emon1.calcIrms(1480);
i1=(i1<0.2)?0:i1;
i2=emon2.calcIrms(1480);
i2=(i2<0.2)?0:i2;
Irms1 = (index * Irms1 + i1) / (index + 1);
Irms2 = (index * Irms2 + i2) / (index + 1);
}
lastSend_c = now;
index++;
}
bool sendTime_temp = now - lastSend_temp > SEND_FREQUENCY_TEMP;
if (sendTime_temp || first_time_temp)
{
Serial.println("........ quoiqu'il arrive, on envoi la temp+ldr");
first_time_temp = LOW;
//Send Temp
// Envoi Température d'après https://github.com/mysensors/MySensorsArduinoExamples/blob/master/examples/DallasTemperatureSensor/DallasTemperatureSensor.ino
sensors.requestTemperatures();
sleep(750);
for (int i = 0; i < numSensors && i < MAX_ATTACHED_DS18B20; i++)
{
// float temperature = static_cast<float>(static_cast<int>((getConfig().isMetric ? sensors.getTempCByIndex(i) : sensors.getTempFByIndex(i)) * 10.)) / 10.;
float temperature = static_cast<float>(static_cast<int>((getControllerConfig().isMetric?sensors.getTempCByIndex(i):sensors.getTempFByIndex(i)) * 10.)) / 10.;
if (lastTemperature[i] != temperature && temperature != -127.00 && temperature != 85.00)
{
// Send in the new temperature
send(msgTemp.setSensor(i).set(temperature, 1));
Serial.println(".....................Envoi Temp");
// Save new temperatures for next compare
lastTemperature[i] = temperature;
}
}
//Send light LDR
//Envoi Light LDR
ldr = (1023 - analogRead(PIN_LDR)) / 10.23;
if (old_ldr != ldr)
{
send(msgLight.set(ldr));
old_ldr = ldr;
}
lastSend_temp=now;
}
bool sendTime_power = now - lastSend_power > SEND_FREQUENCY;
if (sendTime_power)
{
// Envoi ou request Puissance1
if (pcReceived1) envoi_donnees(Irms1, 1);
else {
request(CHILD_ID_CLAMP1, V_VAR1);
Serial.println("Request VAR1");
}
// Envoi ou request Puissance2
if (pcReceived2) envoi_donnees(Irms2, 2);
else {
request(CHILD_ID_CLAMP2, V_VAR2);
Serial.println("Request VAR2");
}
//on reinitialise les compteurs
lastSend_power = now;
index = 0;
}
}
Opi
RFXCOM
RFLINK 433 & 315
Mysensors
Wifi & Mqtt
EspEasy - Tasmota
Zigate+
RFXCOM
RFLINK 433 & 315
Mysensors
Wifi & Mqtt
EspEasy - Tasmota
Zigate+