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.
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; }
Código de referência:
https://github.com/G6EJD/ESP32-DAC-Examples
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:
5 Comentários
Olá!
ResponderExcluirEstou tentando realizar o teste porém quado tento compilar o programa a IDE me informa que "dacWrite" não está declaro, porém você também não está importando nenhuma biblioteca. como posso resolver este erro, por favor?
OI VOCE PODE FAZER UM OSCILOSCOPIO DE DOIS CANAIS COM O ESP32
ResponderExcluirOI VOCE PODE FAZER UM OSCILOSCOPIO DE DOIS CANAIS COM O ESP32
ResponderExcluirTeria como gerar um sinal-1,5 e +1,5?
ResponderExcluirque tal trasformar esse post em um osciloscopio
ResponderExcluir