Gerador de sinais DIY – Mini Wave_Gen Parte 01 2

Provavelmente você deve ter aquela curiosidade de saber como os instrumentos funcionam, os algoritmos envolvidos e talvez até vontade de montar seus próprios instrumentos. Este pensamento está muito alinhado com o “jeito maker de ser”, algo bastante em alta atualmente com o crescimento deste movimento e da cultura do compartilhamento. Nesta pequena série com dois artigos sobre o Mini Wave_Gen tentarei unir o útil ao agradável, apresentando o desenvolvimento de um instrumento bastante importante na bancada de qualquer desenvolvedor, o gerador de sinais.

IMG_6056

Este instrumento tem grande importância desde aplicações e projetos profissionais, até projetos com um foco no aprendizado ou mesmo diversão (afinal, é muito divertido e enriquecedor o processo de desenvolver um novo projeto).

Neste primeiro artigo irei focar em apresentar a ideia envolvida no projeto, apresentar o circuito relacionado, os componentes necessários e também o código para o Arduino Nano (você também pode utilizar um Arduino Uno com as devidas modificações de montagem).

Já que vamos desenvolver algo simples e acessível (mas MUITO ÚTIL), já deixo claro que o objetivo não é competir com modelos profissionais e suas características. Nosso foco será desenvolver um pequeno gerador de sinais utilizando um Arduino Nano, um DAC (conversor digital analógico), um display OLED e mais alguns componentes listados mais a frente.

O leitor poderá estudar sobre as estratégias utilizadas e ao final ter um instrumento bastante útil e versátil para auxiliar nos projetos futuros.

Além disso, espero espalhar aquela semente onde cada um tem a possibilidade de incrementar um pouco mais o projeto, criando novas formas de onda, novas funcionalidades ou até migrando o projeto do gerador de sinais para plataformas mais potentes como uma Freescale Freedom FRDM-KL05Z ou FRDM-K64F. 

PRINCIPAIS MATERIAIS UTILIZADOS

O GERADOR DE SINAIS

Dentre os diversos instrumentos mais tradicionais presente na bancada de um projetista (e por que não na bancada de um maker?), podemos listar o gerador de sinais como um dos mais importantes (em especial se você gosta de eletrônica analógica).

Esse instrumento torna possível simular diversos tipos de formas de onda que serão então aplicados aos mais diversos circuitos eletrônicos, permitindo, através de outros instrumentos, como o multímetro ou osciloscópio, avaliar seu funcionamento, curva de resposta, ganho, etc.

Exemplos de formas de onda

Um gerador de sinais mais simples consegue gerar formas tradicionais como uma onda senoidal, quadrada e rampa, permitindo que o operador configure seus valores de frequência, amplitude e tensão de offset de acordo com sua necessidade. Modelos mais sofisticados e modernos são geralmente nomeados como Arbitrary Waveform Generator (AWG), permitindo ao usuário reproduzir formas de ondas mais complexas como Sinc, ECG, ruído e em alguns casos permite reproduzir formas de onda desenhadas ou criadas pelo usuário através de expressões.

Você pode, por exemplo, utilizar o gerador de sinais para analisar o ganho de algum amplificador, a resposta de um filtro RC ou mesmo emular um sinal que será convertido pelo ADC do seu microcontrolador permitindo calibrar algumas constantes. 

UM RESUMO SOBRE O “mini Wave_Gen

Nosso gerador de sinais “mini Wave_Gen” (nome carinhoso) tem as seguintes características

  • DAC de 12bits com interface i2c (4096 nível possíveis)
  • Sample rate: 16, 32, 64 ou 128 amostras por ciclo
  • Nível de tensão na saída analógica: 0 a 5V
  • Frequência do sinal: de DC até 568 Hz (Dependente da amostragem)
  • Formas de onda: Senoidal, Rampa, Quadrada e DC
  • Parâmetros configuráveis: Frequência, amplitude (Vpp), Tensão offset e quantidade de amostras 

O CIRCUITO

O circuito do mini Wave_Gen é relativamente simples como pode ser visto na figura a seguir. Tudo gira em torno do nosso cérebro (Arduino Nano) e nosso DAC responsável por converter os valores digitais em analógicos, além do display que permite visualizar as configurações do gerador de sinais.

Circuito Gerador de Sinais

Estamos utilizando uma fonte para protoboard que facilita bastante os projetos e confere boa estabilidade à alimentação. Note que tanto o seletor da saída superior como da inferior estão configurados para 5 volts. Para minimizar ruído e garantir a estabilidade da alimentação foram adicionados dois capacitores na barra de alimentação inferior, um eletrolítico de 100uF e outro cerâmico de 100nF.

O pinos SDA (dados) do DAC deve ser conectado ao pino A4 da placa Nano e o pino SCL (clock) ao pino A5. O mesmo deve ser realizado com o display OLED. Como cada dispositivo tem um endereço diferente não haverá problemas na comunicação.

Note que cada um dos pinos digitais utilizados (D2, D3, D6, D7) possuem um capacitor cerâmico de 100nF para minimizar os efeitos do ruído gerado pelas chaves mecânica (bouncing).

Os pinos D2 e D3 estão conectados as duas chaves para configuração (um botão push-button e o botão do encoder). Os pinos D6 e D7 estão conectados a saídas do encoder, CLK e DATA, respectivamente.

O código do Mini Wave_Gen

Mais abaixo está disponível o código completo do nosso gerador de sinais mini Wave_Gen. No próximo artigo explicaremos melhor sobre os algoritmos envolvidos no código e algumas modificações necessárias.

Após o circuito montado, indico executar um “i2c scanner” para verificar se está tudo ok e também o endereço dos dispositivos (DAC e display). Você deverá substituir esses valores na inicialização dos respectivos periféricos, no meu caso, o DAC está no endereço “0x63” e o display OLED no endereço “0x3C”. De acordo com o lote de fabricação ou mesmo configuração dos jumpers das placas este valores podem ser diferentes. O link1 e link2 são exemplos de scanners i2c.

i2c-scanner

Para realização deste projeto você necessitará instalar a biblioteca “Adafruit_MCP4725”, responsável pelas funções para controle do DAC, “Adafruit GFX” e “Adafruit_SSD1306”, responsável pelas bibliotecas gráficas (formas geométricas, fontes) e pelo driver para displays OLED com o controlador SSD1306, neste caso, utilizando a comunicação i2c. Lembrando que as bibliotecas podem ser instaladas através do menu “gerenciar bibliotecas” (eu fiz assim), ou então baixando os “.zip” no github e instalando através do menu “Adicionar biblioteca .ZIP”.

Chegamos ao final desta primeira parte do nosso gerador de sinais Mini Wave_Gen. No próximo artigo nos aprofundaremos mais no projeto explicando sobre as escolhas realizadas e configurações necessárias.

Os principais arquivos deste projeto estão disponíveis no meu Github, onde você também poderá enviar seus pull-requests.

Achou interessante este artigo sobre o Gerador de Sinais DIY? Ajude-nos a melhorar o blog atribuindo uma nota a este tutorial (estrelas no final do artigo), comente e visite nossa loja FILIPEFLOP!

Posts Relacionados

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

2 Comentários

  1. Parabéns… É um projeto bastante pra´tico, mas que acrescenta conceito muito importantes para o desenvolvimento dos futuros técnicos de TI, engenheiros de som, ou de eletrônica. Este é o caminho.

Trackbacks and Pingbacks

  1. […] Caso tenha chegado até aqui sem ler a primeira parte do artigo, encorajo-o a acessá-la neste link, onde você encontrará uma introdução sobre o projeto, seu circuito e também o código […]