Você está na página 1de 7

UFRJ Nautilus 23 de abr.

de 2020

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

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

Você também pode gostar