top of page

Explorando as Saídas Analógicas - ESP32

  • Foto do escritor: automatelabonline
    automatelabonline
  • 1 de mar.
  • 3 min de leitura

É muito comum encontrarmos em microcontroladores saídas PWM. Esse tipo de saída chaveia entre nível alto e baixo com uma frequência alta, de modo que o pino possa atuar como uma saída analógica em alguns casos, como LEDs por exemplo.

Porém, no ESP32, há a presença de dois pinos DAC (conversor digital para analógico). Esses pinos conseguem gerar saídas verdadeiramente analógicas. Esses pinos são as GPIO25 (DAC1) e GPIO26 (DAC2).

pinagem ESP32

Os pinos analógicos do ESP32 apresentam 8 bits de resolução, ou seja, conseguem gerar 2⁸ = 256 tensões diferentes, compreendidas entre 0V e 3,3V. Isso significa que o microcontrolador consegue escrever tensões com um intervalo mínimo de:

Saídas Analógicos ESP32

Funções para as Saídas Analógicas do ESP32

A principal função para o uso das saídas analógicas é:

dacWrite(PINO, VALOR);

Onde PINO é a GPIO de escrita, podendo ser a 25 ou a 26, e VALOR um inteiro entre 0 e 255 que representa a tensão desejada para o pino. Dada essa tensão desejada (Vd ), o valor passado na função (vamos chamá-lo de D ) deve seguir a fórmula abaixo.

Saídas Analógicos ESP32

Por exemplo, caso a tensão desejada na GPIO25 seja 1V. Faz-se:

Saídas Analógicos ESP32

O resultado deve ser sempre arrendado para o inteiro mais próximo. Então, a função para aplicar 1V esse pino é:

	dacWrite(25, 77);

Projeto - Controle do Brilho de um LED

Já vimos sobre o controle do brilho de um LED utilizando os pinos PWM. Porém com os pinos DAC, é possível fazer isso com um sinal verdadeiramente analógico. Para isso, vamos utilizar o circuito abaixo. Um potenciômetro é lido e controla o brilho do LED. O LED é conectado ao pino 25 e o potenciômetro ao pino 4.

Projeto saída analógica ESP32

O código para o projeto está abaixo.

#define PIN_LED 25 // define o pino do LED
#define PIN_POTENTIOMETER 4 // define o pino do potenciômetro

void setup() {
}

void loop() {
  int ledIntensity = map(analogRead(PIN_POTENTIOMETER), 0, 4095, 0, 255);
  dacWrite(PIN_LED, ledIntensity); // manda o sinal para o LED
  delay(10);
}

Entendendo o Código

Primeiramente, os pinos de leitura do potenciômetro e escrita do LED são definidos.

#define PIN_LED 25 // define o pino do LED
#define PIN_POTENTIOMETER 4 // define o pino do potenciômetro

Na função loop(), o pino do potenciômetro é lido utilizando a função analogRead(). Essa leitura serve de entrada para uma outra função, map(). Essa função passa o valor de um range para outro. Nesse caso, a leitura do pino analógico é de 12 bits, então o valor retornado estará entre 0 e 4095. Porém, o valor da escrita da saída analógica é de apenas 8 bits, então vai entre 0 e 255.

A função map() ajusta o valor para esse novo range. Por exemplo, caso o valor lido tenha sido 2047 (metade entre 0 e 4095), a saída da função seria 127 (metade entre 0 e 255). A função map() segue o seguinte formato:

map(VALOR, IN_MIN, IN_MAX, OUT_MIN, OUT_MAX);

Onde VALOR representa a entrada que será transformada, IN_MIN e IN_MAX os intervalos da entrada e OUT_MIN e OUT_MAX os intervalos da saída. Portanto, para mapear entre a leitura do potenciômetro (IN) e a escrita da saída analógica (OUT), é utilizado:

int ledIntensity = map(analogRead(PIN_POTENTIOMETER), 0, 4095, 0, 255);

Essa valor é passado como parâmetro para a função dacWrite(), que envia o sinal ao LED.

dacWrite(PIN_LED, ledIntensity); // manda o sinal para o LED

Conclusões

Em conclusão, as saídas analógicas (DAC) do ESP32 oferecem uma excelente opção para a geração de sinais analógicos de forma precisa e eficiente, expandindo as possibilidades de aplicação do microcontrolador em projetos que exigem controle de sinais contínuos.

A capacidade do ESP32 de gerar sinais com alta resolução e a flexibilidade de seus pinos DAC tornam-no uma escolha atraente para sistemas que demandam áudio, controle de volume, modulação de sinais ou interfaces analógicas. Sua integração com outras funcionalidades avançadas, como Wi-Fi e Bluetooth, reforça o potencial do ESP32 em projetos de automação, áudio e Internet das Coisas (IoT). Ao compreender e utilizar as saídas DAC do ESP32, os desenvolvedores podem criar soluções inovadoras que combinam desempenho, eficiência e acessibilidade em diversas áreas da tecnologia.








Comments


bottom of page