Délesteur Arduino Nano – Librairie EmonLib.h

Il s’agit ici d’améliorer la précision de la mesure d’intensité du  délesteur décrit précédemment dans cet article.
Tous les détails ici concernant la technique de mesure de l’intensité via le capteur Capteur SCT 013.


Le schéma ci-dessous:

 

Code Arduino Nano:

//On charge les Librairies
	#include "EmonLib.h"                   	
	EnergyMonitor emon1;                   	
	#include <Wire.h>
	#include <LiquidCrystal_I2C.h>
	LiquidCrystal_I2C lcd(0x27, 20, 4);

// Initialisation des variables
  int relay1 = 6;
  int led = 7;
  float consigne = 0;

  
void setup()
{  
	  Serial.begin(9600);
// Current: input pin, calibration.
	  emon1.current(1,29.5); 
//Initialisation des sorties
	  pinMode(relay1, OUTPUT);
	  pinMode(led, OUTPUT);
// initialisation de l'afficheur
	  lcd.init();							
	  lcd.backlight();
}


void loop()
{
//Consigne potentiomètre
	  int potard = analogRead(0);
//Mise à l'échelle 0 à 30 ampères
    consigne = potard / 34;
	  
//Affichage 1ère ligne (seuil) sur LCD
	  lcd.setCursor(0, 0);
	  lcd.print("Seuil:");
	  lcd.setCursor(9, 0);
	  lcd.print(consigne);
	  lcd.setCursor(15, 0);
	  lcd.print("A");
	  lcd.setCursor(0, 1);
	  
// Calculate Irms only	  
	  double Irms = emon1.calcIrms(1480); 

//Affiche Mesure ligne 2 sur LCD
    lcd.setCursor(4, 1);
    lcd.print(Irms);
    lcd.setCursor(8, 1);
    lcd.print(" Amps");
	  
//Affichage sur moniteur série
	  Serial.println(Irms);
    

//Pilotage relais délestage (LOW -> état 1 !!!) (HIGH -> état 0 !!!)
  if (Irms > consigne) {
    digitalWrite(relay1, LOW);
    digitalWrite(led,HIGH);
    lcd.noDisplay();
    delay (500);
    lcd.display();
    delay (500);
  }
  if (Irms < (consigne -6)) {
    digitalWrite(relay1, HIGH);
    digitalWrite(led,LOW);
    lcd.noBlink();
  }
          
}