banner

Ir para o Forum

ESP32: Você sabe o que é DAC?


Hoje, vamos falar de dois assuntos. O primeiro deles é o DAC, do inglês Digital-to-Analog Converter, que traduzido para o português seria um Conversor Digital Analógico. Considero ele bastante importante, pois é através dele, por exemplo, que fazemos uma saída de áudio no ESP32. O segundo assunto que vamos tratar hoje é osciloscópio. Vamos, então, compilar um código básico DAC no ESP32, além de visualizar com osciloscópio os sinais analógicos em forma de onda gerados por tal microcontrolador.


A montagem de hoje é bastante simples, tanto que nem gravei demonstração já que esta poderia ser a própria imagem que deixo aqui. Basicamente, temos um ESP32 que, através de um programinha, vai gerar vários tipos de formas de ondas.
Usamos o GPIO25 como saída e o GND como referência.



Recursos usados


·         ESP32
·         Osciloscópio
·         Protoboard (opcional)
·         Jumpers


Pino utilizado


Neste exemplo utilizaremos o GPIO 25, correspondente ao DAC_1.
Outro que pode ser utilizado é o GPIO 26, correspondente ao DAC_2.



Código ESP32 – Matriz de ondas

Temos um código fonte que vai gerar quatro tipos de formas de ondas.
Primeiramente, montamos uma matriz bidimensional.




Aqui especifico o formato das ondas senoidal e triangular.



Já nesta imagem exibo o formato das ondas dente de serra e quadrada.



Quanto ao código fonte, no Setup não é necessário fazer nada. No Loop, determino a posição matriz correspondente ao tipo de onda e utilizo um exemplo de onda quadrada. Escrevemos no pino 25 os dados guardados pela matriz. Verifico se “i” está na última coluna da matriz. Em caso positivo, o “i” é zerado e volta ao início.
Quero deixar claro, pessoal, que esse DAC que tem dentro do ESP32, do STM32, ou seja, dos chips, de maneira geral, são de capacidade pequena, para uso mais genérico. Para gerar ondas de alta frequência, existe o próprio chip DAC, como da Texas ou da Analog Devices, por exemplo.

void setup() 
{
  //Serial.begin(115200);
}

//TESTE SEM POSICIONAMENTO (MAIOR FREQUENCIA)
/*
void loop() 
{
  dacWrite(25, 0xff); //25 ou 26
  dacWrite(25, 0x00); //25 ou 26
  //delayMicroseconds(10);
}
*/

//TESTE COM POSICIONAMENTO (MENOR FREQUENCIA)
void loop() 
{
 
  byte wave_type = 0; // Sine
  //byte wave_type = 1; // Triangle
  //byte wave_type = 2; // Sawtooth
  //byte wave_type = 3; // Square
  
  dacWrite(25, WaveFormTable[wave_type][i]); //25 ou 26
  i++;
  
  if (i >= Num_Samples)
  i = 0; 
    
}





Gerador profissional

Trago aqui um exemplo de um gerador profissional, só para lhe dar uma ideia de custo deste equipamento. Ele poderia ser utilizado, por exemplo, para simular uma fonte e gerar um ruído elétrico. Poderíamos injetar com ele, em um microcontrolador STM, um ruído elétrico, analisando o quanto esse barulho iria atrapalhar o chip. Esse modelo, inclusive, tem uma função automática para gerar ruído elétrico.




Osciloscópio Hantek DSO 4102C 100mhz com gerador de funções arbitrário

Essa é uma dica de equipamento mais barato. Custa em torno de U$ 245 no Aliexpress. Gosto dele, pois possui um gerador de função, sem contar que facilita na localização de erros no circuito.





Ondas obtidas com o osciloscópio

Capturamos, primeiramente, ondas em formato senoidal.


Triangular:



Dente de serra:


E, por fim, a Quadrada:




Faça o download dos arquivos:




Nenhum comentário:

Tecnologia do Blogger.