Table des matières:

Gradateur LED PWM 12V avec ESP8266 : 3 étapes
Gradateur LED PWM 12V avec ESP8266 : 3 étapes

Vidéo: Gradateur LED PWM 12V avec ESP8266 : 3 étapes

Vidéo: Gradateur LED PWM 12V avec ESP8266 : 3 étapes
Vidéo: Arduino - Contrôler la luminosité des LED avec un potentiomètre 2024, Novembre
Anonim
Gradateur LED PWM 12V avec ESP8266
Gradateur LED PWM 12V avec ESP8266

Tout en essayant de rendre mon ménage plus durable, j'échangeais des ampoules halogènes contre des lampes à LED. Il existe de nombreuses alternatives disponibles, pour remplacer tout type d'ampoule. En faisant cela, je suis tombé sur le problème suivant: j'avais un luminaire qui utilisait 7 ampoules halogènes de 12 volts, chacune de 10 watts. Cette lumière était contrôlée par un variateur, qui fonctionnait très bien. Lorsque j'ai remplacé les ampoules par des lampes à LED de 12 volts, chacune de 1 watt, le gradateur fonctionnait mal: la lumière vacillait et la gradation était quelque peu erratique. C'est un problème avec beaucoup de gradateurs classiques: ils ont une puissance minimale dont ils ont besoin pour fonctionner.

Ainsi, sur la base de mon système domotique, j'ai décidé d'échanger ce variateur manuel par un nouveau, qui aurait l'avantage supplémentaire de pouvoir être contrôlé à distance. J'avais déjà construit un gradateur utilisant un MOSFET canal N (IRF540), ce qui est parfait pour ce genre de chose: il peut être contrôlé par un signal PWM, et il est pratiquement indestructible, avec des valeurs nominales maximales de 100 volts et 33 ampères, suffisamment amplement à cet effet (vérification rapide: 7 x 1 Watt = 7 Watts, divisé par 12 volts donne un courant maximum d'environ 0,58 Ampères). Je veux utiliser ce gradateur pour un autre appareil qui a 12 ampoules, chacune 2 watts, ce qui donne un maximum de 2 ampères, donc c'est aussi suffisant. La seule chose à surveiller est la fréquence du signal PWM, mais les valeurs habituelles pour Arduino ou ESP8266 (500 Hz ou 1kHz) ne posent pas de problème.

Étape 1: Étape 1: les composants

Étape 1: les composants
Étape 1: les composants
  1. Driver LED (convertisseur 230 volts AC à 12 volts DC) Pour mon objectif, je souhaite utiliser un maximum de 24 watts, j'ai donc commencé avec un driver LED de 12 volts et 2 ampères. J'en ai trouvé un sur un site de distributeur chinois. Ce pilote a été évalué à 12 volts, 28 watts, il était donc suffisant pour piloter l'appareil par lui-même. Pour votre propre situation, vous pouvez utiliser une version plus légère ou plus lourde, selon votre luminaire.
  2. IRF540 MOSFET canal n
  3. Adafruit Huzzah ESP8266 BreakoutParce que je voulais utiliser le WiFi et que j'adore les produits Adafruit, j'ai choisi cette carte: elle me donne un ESP8266 avec un brochage de programmation pratique, un régulateur de puissance intégré et un facteur de forme élégant. C'est un peu exagéré pour ce projet, mais cela rend les tests et le débogage beaucoup plus faciles.
  4. Convertisseur DC-DC basé sur LM2596 Afin de dériver l'alimentation de la carte ESP à partir du 12 volts, j'avais besoin d'un régulateur; ces petits convertisseurs sont très efficaces et très bon marché.
  5. Encodeur rotatif avec fonction bouton, avec lumière LED intégrée:

    www.sparkfun.com/products/10596

    N'importe quel encodeur rotatif ferait l'affaire, mais j'ai aimé la fonctionnalité supplémentaire intéressante d'une LED intégrée.

  6. Bouton en plastique transparent

    www.sparkfun.com/products/10597

  7. Résistance 4k7
  8. Résistance 1k

Étape 2: Étape 2: le Circuit

Étape 2: le Circuit
Étape 2: le Circuit

Voici le circuit que j'ai utilisé: j'ai utilisé les broches 4 et 5 comme entrées pour l'encodeur rotatif et la broche 0 pour le bouton. La broche 0 est également connectée à la led rouge embarquée, j'ai donc pu vérifier la fonction du bouton sur l'encodage en regardant cette led.

La broche 16 est utilisée pour la sortie PWM, et je l'ai connectée directement à la led verte de l'encodeur Sparkfun. L'ESP8266 est en 3, 3 volts, et même avec 100%, je n'ai mesuré que 2, 9 volts en sortie, donc je l'ai connecté directement sans résistance série. Cette même sortie va à la porte du MOSFET à canal n, au moyen d'une résistance de 1 kOhm. Cette porte est élevée à 12 volts par une résistance de 4,7 kOhm.

J'ai utilisé le convertisseur DC-DC pour convertir le 12 volts en 5,5 volts, celui-ci est connecté à l'entrée V+ du breakout Adafruit. J'aurais pu utiliser 3,3 volts et le connecter directement, mais c'est un peu plus sûr.

La lampe LED 12 V dans le circuit est mon luminaire.

Étape 3: Étape 3: le Code

Étape 3: le Code
Étape 3: le Code

J'ai mis le code sur GitHub:

Croquis pour variateur ESP8266 LED PWM

Il est basé sur une idée autre instructable:

www.instructables.com/id/Arduino-PWM-LED-D…

Mais il s'agissait d'un contrôle purement local, j'ai donc ajouté ma propre solution domotique basée sur MQTT. Il fait fondamentalement la même chose, mais les principales différences sont:

  • le nombre par défaut d'étapes PWM avec un Arduino est de 255, avec l'ESP8266, il est de 1023 (comme je l'ai découvert plus tard, tout en essayant de comprendre pourquoi mon luminaire LED n'a pas atteint 100% de luminosité…)
  • Je n'ai pas utilisé le circuit 'Totempole' avec les 2 transistors, car le PWM était de toute façon DC, et fonctionnait bien avec l'IRF 540.
  • Je n'ai pas utilisé les résistances pull-up de 10k pour l'encodeur, j'ai fait confiance aux pullups intégrés de l'ESP8266.
  • L'ESP8266 utilise une logique de 3,3 volts au lieu de 5 volts pour l'Arduino, ce qui n'a posé aucun problème pour l'IRF540

Le logiciel a les caractéristiques suivantes:

  • tourner l'encodeur atténue la lumière vers le haut (CW) ou vers le bas (CCW), de 0 à 100 %, en 1023 pas, avec une certaine accélération dans les niveaux inférieurs.
  • appuyer sur le bouton allumera la lumière lorsqu'elle est éteinte, en utilisant le dernier niveau de luminosité enregistré, ou l'éteindra lorsqu'elle est allumée.
  • une pression prolongée sur le bouton pendant que la lumière est allumée enregistrera la luminosité actuelle comme niveau par défaut.
  • appuyer plus longtemps sur le bouton alors que la lumière est éteinte allumera la lumière à 100% de luminosité, sans changer le niveau par défaut.
  • Il se connectera aux paramètres WiFi définis par les chaînes 'SECRET_SSID' et 'SECRET_PASS', qui sont enregistrées dans un fichier séparé dans mon croquis, appelé 'secrets.h'
  • Il se connectera à un serveur MQTT du réseau WiFi, en utilisant les chaînes 'MQTTSERVER' et 'MQTTPORT' dans le même fichier.
  • Vous pouvez utiliser la rubrique entrante MQTT « domus/esp/in » pour émettre des commandes: « ON » ou « OFF » pour allumer ou éteindre la lumière, ou une valeur de 0 à 1023 pour modifier la luminosité.
  • Il rapportera l'état sur les sujets MQTT 'domus/esp/uit' (état ON ou OFF) et 'domus/esp/uit/brightness' (la valeur de luminosité).

Conseillé: