• UFRJ Nautilus

Como fazer um gerador de funções simples com Arduino

Gerador de funções (ou gerador de sinais) é um aparelho que gera sinais elétricos com variadas formas, frequências e amplitudes. Entre essas formas, as mais comuns são a onda quadrada, a triangular, a dente de serra e a senoidal, que podem variar suas frequências e a voltagem de pico a pico. Aprenda, aqui, a gerar as principais ondas de forma prática usando um Arduino.

Um gerador de funções de bancada é muito útil em várias aplicações, principalmente para simular e testar um circuito eletrônico. Seu principal uso está ligado a circuitos osciladores, filtros e amplificadores.

Gerador de funções de bancada

Usamos os osciloscópios para fazer a medição dos sinais que estão sendo recebidos em relação ao tempo. Com ele, é possível observar a forma de onda que está sendo recebida em determinado ponto de um circuito.


Osciloscópio com onda senoidal. Gerador de Funçoes
Osciloscópio com onda senoidal

Há um problema no uso do gerador de sinais: um aparelho de qualidade custa a partir de R$ 1.000,00, ou seja, possui um custo alto, quando sua necessidade de uso é pontual e simples. Nesse caso, é possível programar um Arduino para funcionar como um gerador de funções básico e acessível através das suas saídas PWM. Isso nos possibilita de fazer testes para circuitos simples de forma rápida, barata e prática.


Veja, abaixo, o projeto dos principais formatos de onda.



1. Onda Quadrada:


A onda quadrada é um sinal digital que funciona com alternância de níveis lógicos: 1 (amplitude máxima) e 0 (amplitude mínima). É usada como referência de tempo em sinais de clock e utilizada na informática na transmissão serial de informações em redes de computadores.

Reproduzir esse tipo de onda no Arduino é bem simples, existe a função tone() que é responsável pela geração de ondas quadradas, precisando apenas explicitar o pino de saída e a frequência desejada do sinal, como pode ser visto no exemplo abaixo com uma frequência de 50 Hz.

Simulação no TinkerCad
// Projeto 20 – Arduino como um gerador de frequência (Onda quadrada)

void setup() {

Serial.begin(9600); // Inicia o Serial Monitor
}

void loop() {
// Imprime na tela a frequência gerada
Serial.println("A frequencia eh de: 50 Hz");
{
tone(6, 50); // Defini o pino em OUTPUT, e a frequencia gerada no pino
delay(2000); // Gera a frequência por 2 segundos
}
}


2. Onda triangular:

A onda triangular possui uma ascendência linear até sua amplitude máxima e uma decadência linear até sua amplitude mínima. É normalmente usada nos sintetizadores de som.


O problema de gerar essa onda, é que ela facilmente pode apresentar ruídos. Por isso é preciso sempre colocar algum tipo de filtro entre o sinal produzido e o circuito em que ele vai ser usado. Com o Arduino, um circuito RC resolve esse problema.

Simulação no TinkerCad
// Onda triangular
 
int saidaPWM;
int x;

#define saidaPWM 3

void setup()
{ 
pinMode(saidaPWM, OUTPUT)
}

void loop() 
{ 
  for (x=0; x<255; x++) 
  {
   analogWrite (saidaPWM, x);
     delay(10);
  }
   for (x=255; x>0; x--) 
   {
     analogWrite (saidaPWM, x); 
       delay(10);
   }
}
 // Esse código é seguido de um circuito RC na saida PWM do arduino


3. Onda Dente de Serra:

A onda dente de serra é uma particularidade da onda triangular, onde o tempo de subida ou o tempo de descida é igual a zero, se comportando nesse instante como um “sinal digital”.


As aplicações são as mesmas e o código é o mesmo somente com a alteração do delay() de subida ou descida mais próximo de zero.

Simulação no TinkerCad
// Onda dente de serra

int saidaPWM; 
int x; 

#define saidaPWM 3
  
void setup()  {
  pinMode(saidaPWM, OUTPUT);
}
    
void loop ()  {
  for (x=0; x<255; x++) {
    analogWrite (saidaPWM, x);
    delay(10);
  }
  for (x=255; x>0; x--) {
    analogWrite (saidaPWM, x); 
    delay(1);
  }
}

4. Onda Senoidal:

A onda senoidal é gerada a partir da função seno ou cosseno invertendo a polaridade de acordo com a frequência, por isso ela também é conhecida como corrente alternada. Ela possui diversas aplicações. Na eletrônica, a principal delas é como onda portadora nas modulações de rádio.

Assim como na onda triangular, nela podem ser encontrados ruídos, logo ela também necessita de um filtro RC antes de seu uso. O código do Arduino é muito parecido com a triangular, porém possui a adição da função sin() para a coleta de dados.

Simulação no TinkerCad
// Simulador de gerador de onda senoidal

int saidaPWM;
int x, valor;
float seno; 

#define saidaPWM 3 


void setup() {
  pinMode (saidaPWM, OUTPUT);
  
}


void loop () {
  for (x=0; x<255; x++) {
    seno = 100+(100*(sin(x*(6.28/255))));
    valor = int(seno);
    analogWrite(saidaPWM, valor);
    delay(10);
  }
}

Escrito por Lucas Alexandre

0 comments

Recent Posts

See All