Le variateur de tension AC est un module permettant de faire varier la puissance d’un courant alternatif. Il a la même utilité qu’un transistor en courant continu. Il permet notamment de faire varier la luminosité d’une lampe alimentée en 220V ou faire varier la vitesse d’un ventilateur, par exemple. Nous allons voir comment gérer le variateur de tension AC avec un NodeMCU ESP8266.
Matériel
- Ordinateur
- NodeMCU ESP8266
- Câble USB A Mâle/Micro B Mâle
- AC Light Dimmer
- Une ampoule dimmable
Principe de fonctionnement
Le variateur de lumière AC est constitué d’un triac(équivalent du transistor en courant continu) et d’un détecteur de passage à zéro de la phase afin de synchroniser la variation de tension et la phase du courant alternatif.
Schéma
Pour ce qui est du schéma électrique, le module est relié au secteur via le bornier AC-IN et l’ampoule se branche au bornier LOAD. Côté électronique, les broches se connectent comme suit:
- Vcc à la broche 5 ou 3.3V du microcontrôleur
- GND à la masse GND du microcontrôleur
- Z-C à la broche D1 (Broches possibles D2,D5,D6,D7,D8)
- PWM à la broche D2 (broches possibles D0,D1,D5,D6,D7,D8 )
Si vous utilisez plusieurs variateurs, les broches Z-C sont toutes reliées à la même broche du microcontrôleur (dans notre cas D1). La librairie RBDdimmer utilisent certaines broches en particulier, selon le microcontrôleur utilisé. Vérifiez bien dans la documentation de la librairie les broches que vous pouvez utiliser.
Attention: Lorsque vous utilisez un NodeMCU, il existe différentes versions de ces cartes avec des brochages et des labels différents pouvant parfois présenter des erreurs. Renseignez-vous auprès de votre fournisseur et vérifiez bien la documentation de votre carte.
Code
Avant de programmer votre NodeMCU ESP8266, vérifiez que le gestionnaire de carte est installé sur l’IDE Arduino. Pour configurer l’IDE, vous pouvez suivre ce tutoriel.
Pour utiliser le module AC Light Dimmer, nous utilisons la librairie RBDdimmer.h. La librairie va gérer la synchronisation entre le signal PWM, qui règle la puissance, et la phase du courant alternatif. Une fois la librairie importée et le module initialisé, il ne nous reste qu’à choisir le niveau de puissance entre 0 et 100%.
//Libraries #include <RBDdimmer.h>//https://github.com/RobotDynOfficial/RBDDimmer //Parameters const int zeroCrossPin = D1; const int acdPin = D2; int MIN_POWER = 0; int MAX_POWER = 80; int POWER_STEP = 2; //Variables int power = 0; //Objects dimmerLamp acd(acdPin,zeroCrossPin); void setup(){ //Init Serial USB Serial.begin(115200); Serial.println(F("ESP8266 System")); acd.begin(NORMAL_MODE, ON); } void loop(){ testDimmer(); } void testDimmer(){/* function testDimmer */ ////Sweep light power to test dimmer for(power=MIN_POWER;power<=MAX_POWER;power+=POWER_STEP){ acd.setPower(power); // setPower(0-100%); Serial.print("lampValue -> "); Serial.print(acd.getPower()); Serial.println("%"); delay(100); } for(power=MAX_POWER;power>=MIN_POWER;power-=POWER_STEP){ acd.setPower(power); // setPower(0-100%); Serial.print("lampValue -> "); Serial.print(acd.getPower()); Serial.println("%"); delay(100); } }
Résultat
La luminosité de l’ampoule varie en fonction de la valeur ‘power’ envoyée au module. Il est bon de noté que ce module fonctionne avec des charges ‘dimmables’ et fonctionne mieux avec des ampoules à incandescences. J’utilise une ampoule à LED et la variation fonctionne bien entre 6 et 40. En dessous de 6, la lampe s’éteint, au delà, je n’observe pas de changement de luminosité et l’ampoule s’éteint au-dessus de 85.
Applications
- Créez une interface web pour piloter des lumières à distance.