Arduino


Variateur de lumière (AC Light Dimmer) pour ampoule à incandescence 220v

Publié le 11/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)...

Un gradateur de lumière est un appareil que l'on utilise pour faire varier l'intensité lumineuse d'une lampe par exemple.
On peut ainsi créer une lumière d'ambiance avec des ampoules à incandescences uniquement (ne fonctionne pas avec les autres types d'ampoules).

Mais ce composant peut également être utilisé avec d'autres objets, un ventilateur par exemple.

Pour faire fonctionner ce variateur, il faudra installer la bibliothèque fournit dans le projet zippé.

L'écran LCD affiche en temps réelle la puissance d'éclairage demandée (en pourcentage). 100% étant complètement allumé, et 0% étant complètement éteint.

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

  • Résistance 47 ohms1
  • Potentiomètre1
  • LCD1
  • AC Light Dimmer1
  • Arduino Nano1


Schéma du montage électronique :


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


Voici le code à importer dans l'Arduino:

#include <RBDdimmer.h>

#include <LiquidCrystal.h>


// 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 = 5, d5 = 4, d6 = 3, d7 = 6;         // ARDUINO NANO
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

#define outputPin  13 
#define TempsMax 25

dimmerLamp dimmer(outputPin); //initialise port for dimmer for MEGA, Leonardo, UNO, Arduino M0, Arduino Zero

void setup()  
{  
  Serial.begin(9600);
  while (!Serial);  // For Yun/Leo/Micro/Zero/...
  delay(100);
  Serial.println("\n\nToggle Dimmer 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.setCursor(0, 0);
  lcd.print("Toggle Dimmer");

  dimmer.begin(NORMAL_MODE, ON); //dimmer initialisation: name.begin(MODE, STATE)
}

int Easing(int i)
{
  // (p) puissance 3
  return (((float)i/100)*((float)i/100)*((float)i/100))*TempsMax;
}

void allumeLED()
{
  int j=20;

  lcd.setCursor(0, 1);
  lcd.print("                ");  
  
  lcd.setCursor(0, 1);
  lcd.print("ON  :");   
  
  for (int i=0;i<=100;i++)
  {
    Serial.print(i);
    Serial.print(F(" "));
    
    Serial.println(i); 
    dimmer.setPower(i); // name.setPower(0%-100%)
    
    lcd.setCursor(5, 1);
    lcd.print("   ");  
  
    lcd.setCursor(5, 1);
    lcd.print(i);  
  
    lcd.setCursor(9, 1);
    lcd.print("%");  
  
    Serial.println(Easing(i));    
    j=Easing(i);

    delay(j);
  }
}

void eteintLED()
{
  int j=20;
  
  lcd.setCursor(0, 1);
  lcd.print("                ");  
  
  lcd.setCursor(0, 1);
  lcd.print("OFF :");   
  
  
  for (int i=100;i>=0;i--)
  {
    Serial.print(i);
    Serial.print(F(" "));
    
    Serial.println(i); 
    dimmer.setPower(i); // name.setPower(0%-100%)
    
    lcd.setCursor(5, 1);
    lcd.print("   ");  
  
    lcd.setCursor(5, 1);
    lcd.print(i);  
  
    lcd.setCursor(9, 1);
    lcd.print("%");  
  
    Serial.println(Easing(i));    
    j=Easing(i);   
    
    delay(j);
  }
}


void loop()                     // run over and over again
{
  allumeLED();
  delay(2000);
  eteintLED();
  delay(2000);
}


Voici le code du projet ainsi que la librairie à ajouter:

Voici le projet zippé.


Nombre de vue(s): 93

Forum


Vos avis/remarques...


Veuillez vous connecter pour laisser vos commentaires...