ESP8266 utilizando PWM com Potenciômetro





Para quem não é acostumado com eletrônica, PWM é controle de potência. E nesta montagem mostramos como utilizá-lo para controlar a intensidade da luz de um led, como uma espécie de um dimmer de um abajur, escurecendo e clareando.
Este mecanismo te possibilita também, por exemplo, ligar um driver de um motor. E esta é apenas mais uma das possibilidades.

- Observação: PWM, em inglês, significa Pulse-Width Modulation, ou seja, modulação por largura de pulso.





Objetivo

A montagem consiste em um potenciômetro, que é um resistor variável, monitorado pelo ESP. Neste esquema estou utilizando o mesmo código fonte que utilizaria com um Arduino, por isso sempre optamos por usar a IDE arduino com ESP, para melhor aproveitamento em outros projetos também.
Na montagem, o ESP está ligado na USB só por questão de alimentação. Temos também o pino do cursor, que é o pino do centro potenciômetro, ligado na porta AD, e o positivo e o negativo.
Conforme a tensão vai variando, é possível ler um valor diferente no AD. Portanto, girando o potenciômetro é possível aumentar ou diminuir o brilho do led.



Montagem


O esquema elétrico é bem simples: usando o ESP8266 na configuração do NodeMCU, vamos alimentar a USB. Então, aqui, o potenciômetro tem que estar ligado por uma ponta ao negativo e, pela outra ponta, ao positivo. O meio, que o é cursor, ele fica ligado no ADC 0, porque esse ESP só tem uma porta que lê valores analógicos.



WiFi ESP8266 NodeMCU ESP-12E




Código fonte

Na função Setup, definimos o modo de comportamento dos pinos que utilizamos, no caso o LED e o POTENCIÔMETRO.


void setup() 
{
 Serial.begin(115200);
  // Instrução para colocar o gpio que iremos utilizar como entrada,
  // podemos fazer a leitura nesse pino
  pinMode(A0, INPUT); // A0 é uma constante que indica o pino que ligamos nosso potenciômetro

  // Instrução para colocar o gpio que iremos utilizar como saída,
  // podemos alterar seu valor livremente para HIGH ou LOW
  pinMode(LED_BUILTIN, OUTPUT);// LED_BUILTIN é uma constante que indica o LED do ESP8266



}




Loop

Nesta função é feita a lógica para ler o valor do POTENCIÔMETRO e atribuir esse valor (que é a intensidade do brilho) no LED.



void loop() 
{
  // faz a leitura do pino A0 (no nosso caso, o potenciômetro, retorna um valor entre 0 e 1023)
  int potencia = analogRead(A0);
  Serial.println(potencia);

  // como o LED no ESP8266 trabalha de maneira contrária, ou seja, quanto maior o valor atribuído, menor a intensidade. Faremos o cálculo para aumentarmos o brilho conforme girarmos o potenciômetro em sentido horário.
  potencia = 1023 - potencia;
  
  //  atribui o valor lido do potenciômetro para configurar a intensidade do brilho do LED
  analogWrite(LED_BUILTIN, potencia);

}




Arquivos para download:


Nenhum comentário:

Tecnologia do Blogger.