Arduino


Mesurer une intensité/puissance avec un capteur de courant SCT013

Publié le 09/05/2019



ATTENTION, dans cette publication nous manipulons du 220V ce qui peut être mortel !!! Les risques sont réels ! Vous le faites sous votre responsabilité.

Débranchez avant toute manipulation, rendez impossible l'accès aux contacts (boîte étanche)...





Le but est de pouvoir mesurer une intensité/puissance d'un matériel quelconque (halogène, ballon d'eau chaude) pour pouvoir quantifier la quantité de courant consommée.





L'intérêt est de pouvoir surveiller la consommation d'un appareil en particulier. Idéal pour surveiller la consommation de vos appareils électroménager : radiateur, chauffage électrique, sèche serviette, machine à laver, fer à repasser, frigo, congélateur





Le SCT013 est capteur de courant alternatif auto-alimenté.

Une seule des 2 phases doit passer dans le trou central (sinon la valeur lue sera égale à 0).



Plage de mesure: 0 à 30 A

Sortie: 0 à 1 V (résistance de charge intégrée) d'où la nécessité d'utiliser le pont de résistance.



Il est capable de mesurer un courant alternatif dans la plage 0 à 30A. La mesure est non invasive. Il suffit d’ouvrir le capteur et d’entourer le câble d’alimentation de l’appareil à surveiller.



Afin de gérer le capteur ampèremétrique, il est nécessaire d'installer la librairie EmonLib by OpenEnergyMonitor V1.1.0 (https://github.com/openenergymonitor/EmonLib)





Comme on peut le voir sur l'image, quand l'halogène n'est pas allumé, il reste affiché une intensité de 0.1A et une puissance de 21W. Cela n'est en fait qu'une fausse information: Bruit sur l'entrée AC. La meilleur façon est de filtrer le bruit dans le code et si la puissance est inférieure à 30W il faut l'ignorer.


Liste des composants nécessaires pour la réalisation du circuit :

  • Résistance 1kohms2
  • Résistance 47ohms1
  • Condensateur 100µF1
  • potentiomètre1
  • LCD1
  • Capteur ampèremétrique1


Schéma du montage électronique :


Pour les amateurs d'impression 3D, j'ai fait quelques templates qui permettent d'imprimer divers boitiers pouvant accueillir les divers composants utilisés dans mes tutoriels.
- Pour un composant PIR, vous trouverez le boitier à imprimer ici.

    Il faut compter environ 4h pour imprimer les composants de ce boitier.


- Pour un relais, vous trouverez le boitier à imprimer ici.
    Il faut compter environ 2h pour imprimer les composants de ce boitier.




L'ensemble des impressions 3D a été réalisé sur une imprimante Creality3D Ender-3 pro avec les réglages standards suivants:

Pour les personnes possédant Fritzing, voici le schéma électronique.


Voici le code à télécharger dans votre Arduino:

#include 
#include "EmonLib.h"                   // Include Emon Library


// initialize the library by associating any needed LCD interface pin
// with the arduino pin number it is connected to
//const int rs = 12, en = 11, d4 = 8, d5 = 7, d6 = 6, d7 = 5;       // ARDUINO UNO
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;         // ARDUINO NANO
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

EnergyMonitor emon1;                   // Create an instance


#define TENSION 226
#define PIN_SCT013 1


void setup()  
{  
  Serial.begin(9600);
  while (!Serial);  // For Yun/Leo/Micro/Zero/...
  delay(100);
  Serial.println("\n\nLiquid Cristal detector test");

  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);

  // Turn off the display:
  lcd.noDisplay();
  
  lcd.display();

  // Print a message to the LCD.
  lcd.print("Liquid Cristal detector test");

  lcd.setCursor(0, 1);
  // print the number of seconds since reset:
  lcd.print(millis() / 1000);  
    
  emon1.current(PIN_SCT013, 28.7);             // Current: input pin, calibration.
}

void loop()                     // run over and over again
{
  double Irms = emon1.calcIrms(1480);  // Calculate Irms only
  
  lcd.setCursor(0, 0);
  lcd.print("                ");
  lcd.setCursor(0, 1);
  lcd.print("                ");

  // Print a message to the LCD.
  lcd.setCursor(0, 0);
  lcd.print("Courant :");
  lcd.setCursor(0, 1);
  lcd.print(Irms);
  lcd.setCursor(6, 1);
  lcd.print("A");

  lcd.setCursor(9, 1);
  lcd.print(Irms*TENSION);         
  lcd.setCursor(15, 1);
  lcd.println("W");
}
Nombre de vue(s): 6220

Forum


Vos avis/remarques...


Veuillez vous connecter pour laisser vos commentaires...

Bonjour,

Il est effectivement important de prendre le modèle SCT013 remontant une tension en sortie, sinon l'Arduino ne sera pas capable de l'interpréter directement.

 

Il y a un autre point important, plus la valeur de l'ampérage théorique est importante, moins la précision sera grande.

 

Il faut donc bien réfléchir à l'usage du module.

 

Pour mesurer l'intensité d'un radiateur électrique par exemple, un simple module de 30A sera largement suffisant: https://www.ebay.fr/itm/SCT-013-030-30A-Non-invasive-AC-Current-Sensor-Split-Core-Current-Transformer/

GAUTHIER Ludovic
2020-12-18 09:05:06

Bonjour

Super ce projet, j'aimerai faire le même.

Je me permets de te poser quelques questions avant de commander le matos.

Concernant la pince ampèremétrique bleue. Il faut prendre quel modèle ?

J'ai vu sur internet que dans la gamme SCT013 il y a plusieures déclinaisons , certaines remontant une tensions en sortie et d'autres du courant

SCT-013-000    Primary AC current: 100A  Secondary current: 50mA
SCT-013-005    Primary AC current: 5A      Secondary voltage: 1V
SCT-013-010    Primary AC current: 10A    Secondary voltage: 1V
SCT-013-020    Primary AC current: 20A    Secondary voltage: 1V
SCT-013-030    Primary AC current: 30A    Secondary voltage: 1V
SCT-013-050    Primary AC current: 50A    Secondary voltage: 1V
SCT-013-060    Primary AC current: 60A    Secondary voltage: 1V
SCT-013-000V  Primary AC current: 100A Secondary voltage: 1V

Je voudrais mesurer la consommation de ma maison mais je me suis précipité et j'ai pris la SCT-013-000 (input 100A - output 50mA). J'ai peur de ne pas avoir commandé la bonne.

Peux tu m'aider merci ?

DIERICKX BENOIT
2020-10-30 09:07:31