Blog 📚
A B C

Atenção

  • 🚧 Posts ainda estão sendo revisados
  • 🐞 Bugs de formatação podem ser encontrados
  • ⚒️ Todos os recursos ainda não foram implementados

Programação de microcontrolador para conversão AD e modulação PWM

Introdução

Os microcontroladores são dispositivos eletrônicos compostos por um único circuito integrado que inclui um processador, memórias (voláteis e não voláteis) e periféricos de entrada e saída. Uma das capacidades essenciais dos microcontroladores é a presença de um conversor analógico-digital, que permite a conversão de sinais analógicos em digitais.

Os microcontroladores desempenham um papel fundamental na capacidade de processamento e conversão de informações, especialmente considerando a ampla gama de variáveis analógicas e o poder de processamento dos computadores modernos. Nesse sentido, um aspecto relevante dos microcontroladores é a capacidade de converter sinais analógicos em sinais digitais.

Além disso, neste contexto de utilização do microcontrolador ATMega328, este texto tem como objetivo explorar de forma breve as capacidades desse dispositivo, tais como a leitura de dados analógicos por meio do conversor analógico-digital (ADC) e a geração de sinais PWM (Pulse Width Modulation) ou Modulação de Largura de Pulso. O PWM é empregado quando se deseja simular um sinal analógico a partir de um sinal digital, ao modular a largura do pulso do sinal digital e controlar a proporção de tempo em que o sinal permanece em nível alto ou em nível baixo durante cada período.

Avaliação da conversão AD

Com o objetivo de explorar a conversão analógico-digital (A/D), foi realizada uma leitura analógica inicialmente utilizando a função analogRead através da porta analógica A0. Utilizando o código a seguir, foi feita a digitalização da entrada VinV_{in} em uma faixa de 0 a 5V, com incrementos de 0.5V.

Código para realizar a leitura analógica

void setup() {
  Serial.begin(9600);
}

void loop() {
  int sensorValue = analogRead(A0);
  Serial.println(sensorValue);
}

Como mecanismo de alterar a entrada analógica optou-se pela utilização de um potenciômetro que representa uma variável analógica que pode assumir diversos valores. Portanto, ao variar o potenciômetro (0 a 100%), consegue-se realizar uma varredura de 0.5 V. O circuito completo pode ser visualizado na figura 1 a seguir:

Esquemático do Circuito
Esquemático para avaliação da conversão AD
Figura 1 - Esquemático para avaliação da conversão AD

Após realizar o procedimento descrito anteriormente, é imperioso observar o resultado da digitalização da porta serial. Dessa forma, enviou-se o valor decimal da conversão para cada valor correspondente, podendo-se, inclusive realizar um gráfico Vin×V_{in}\times Valor Decimal. Na figura 02 a seguir evidencia-se como foi o processo de coleta de dados por meio do monitor serial:

Saída do monitor serial
Saída serial para entrada de 1,0V
Figura 2 - Saída serial para entrada de 1,0V

Após a coleta de dados, montou-se a tabela 1 que correlaciona a entrada e o valor decimal:

Tensão de entrada Vin,DC (V)V_{in,DC}\space(V) Valor decimal
0.5 102
1.0 204
1.5 306
2.0 408
2.5 511
3.0 613
3.5 715
4.0 818
4.5 920
5.0 1022
Tabela 1 - Varredura da tensão de entrada

O resultado do gráfico é elucidado na figura a seguir e como se observa, há um comportamento que se assemelha a uma função linear, ou seja, incrementos de tensão de entrada representam o acréscimo proporcional no valor decimal. Contudo, da teoria, observa-se que esse comportamento, se não fosse pela escala preterida de 0,5V0,5V, formaria um evidente gráfico digital e discretizado:

Gráfico Vin,DC×Valor decimalV_{in,DC} \times Valor\space decimal
Gráfico comparativo tensão de entrada e valor serial decimal
Figura 3 - Gráfico comparativo tensão de entrada e valor serial decimal

É importante destacar que a equação que relaciona o valor decimal com o valor de entrada é a equação (1) apresentada abaixo:

D=VINVREF2N(1)D=\frac{V_{IN}}{V_{REF}}2^{N}\tag{1}

Como o Arduino apresenta um conversor analógico-digital 10 bits significa que este irá mapear tensões entre 00 e a tensão operacional 5V5V para valores inteiros entre 00 e 10231023. No Arduino UNO, por exemplo, isso permite uma resolução entre leituras de: 5 Volts / 1024 unidades, ou 0,0049V(4,9mV)0,0049 V (4,9 mV) por unidade

Avaliação da operação do PWM

Após realizar a conversão AD, implementa-se a modulação por largura de pulso (PWM) através da função analogWrite, responsável por acionar uma onda PWM num pino qualquer. Além de gerar um sinal PWM, buscou-se promover uma varredura da variavél da razão cíclica 0 a 255 com passo de 51.

Detalhe: A razão de ser de 0 a 255 está relacionada com o fato da quantidade de bits para gerar o PWM ser igual a 8 bits. A seguir verifica-se o código implementado para realizar a avaliação:

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

void loop() {
  analogWrite(5, 0); // Segundo parâmetro
                     // variado (D)
}

Além do código, montou-se o seguinte circuito, elucidado na figura 4, que possibilita realizar a varredura da razão cíclica com um passo de 51:

Esquemático do circuito para avaliação do PWM
esquematico para PWM
Figura 4 - Esquemático do circuito para avaliação do PWM

Resultados da simulação

Como se visualiza a seguir, com a varredura da variável que representa a razão cíclica, com D igual a 0, percebe-se que o valor de tensão é permamentente 0 ou nível baixo, enquanto que, conforme aumenta-se a variável da razão cíclica, intensifica também, a porcentagem de tempo em que a variável se encontra com um nível lógico igual a 1, até que se atinja 255 e o nível lógico é permanentemente 1. A figura 5 a seguir demonstra o efeito da varredura:

D=0 D=51 D=102
D=0 D=51 D=102
D=153 D=204 D=255
D=153 D=204 D=255
Figura 5 - Avaliação dos resultados para cada ciclo de trabalho

Para além das observações feitas acima, é fundamental realizar o cálculo do ciclo de tarefa relacionado para cada valor testado acima. Com uma frequência e período definidos, calculou-se o ciclo de tarefa relacionado:

{f=976.7HzT=1.02ms(2)\left\{ \begin{array}{c} f=976.7Hz\\ T=1.02ms\\ \end{array} \right.\tag{2}

A seguir, na tabela 2, para cada valor testado durante a varredura, determinou-se o ciclo de tarefa relacionado e, como já previsto, aumenta-se o tempo em que a variável se encontra em nível lógico alto, conforme eleva-se a varredura:

D t(μs)t (\mu s) D%D_{\%}
0 0 0%
51 210.9 20.67%
102 421.9 41.36%
153 616.6 60.45%
204 820.7 80.46%
255 1020.3 100.00%
Tabela 2 - Cálculo do ciclo de trabalho

Modulação PWM de um entrada senoidal

Para realizar a modulação PWM de uma entrada senoidal, fez-se uso da função analogRead() para digitalizar uma entrada senoidal com características específicas senoidal com f=10Hzf = 10 Hz, Vpp=5VV_{pp} = 5 V e Voffset=2,5VV_{offset} = 2,5 V. Ademais, utilizou-se também analogWrite() para gerar um sinal PWM por meio da sinal senoidal digitalizado.

O código responsável por exercer essa ação está elucidado a seguir. Para implementar a tarefa fez-se uso da função map, esta última faz com que a leitura analógica da função senoidal (que varia de 00 a 10231023) seja recebida pela variável output numa escala de 00 a 255255:

void setup() {
  pinMode(5,1);
}

void loop() {
  int input = analogRead(A0);
  int output = map(output, 0, 1023, 0, 255);
  analogWrite(5, output);
}

O circuito responsável por realizar a modulação PWM de uma entrada senoidal está elucidado na figura 6 a seguir:

Esquemático do circuito para modulação PWM
PWM Modulação para entrada senoidal
Figura 6 - Esquemático do circuito para modulação PWM de uma entrada senoidal

Após a montagem do circuito, variou-se a frequência da onda senoidal, fazendo f assumir 10Hz10 Hz, 100Hz100 Hz, 500Hz500 Hz e 1kHz1 kHz. O resultado pode ser visualizado na figura 7 a seguir:

f=10Hzf=10Hz f=100Hzf=100Hz
f=10Hz f=100Hz
f=500Hzf=500Hz f=1000Hzf=1000Hz
f=500Hz f=1000Hz
Figura 7 - Avaliação da modulação da senoide para diversas frequências

Como se pode observar, a medida que se aumenta a frequência da onda senoidal, o PWM, por conta da quantidade de amostras/tempo, não consegue modular o sinal senoidal de frequências elevadas. Como uma possível solução para o problema, avalia-se o aumento da frequência do PWM. Dessa forma, posterior ao passo descrito, buscou-se analisar os seguintes registradores, almejando-se aumentar a frequência do PWM.

Análise dos registradores TCCR0B e ADCSRA
Valores dos registradores TCCR0B e ADCSRA do ATMega328P
Figura 8 - Valores dos registradores TCCR0B e ADCSRA do ATMega328P

Configuração dos bits do registrador TCCR0B

Para se reconfigurar os bits do registrador TCC0B para obter a maior frequência possível de PWM primeiramente deve-se consultar o data sheet fornecido pelo fabricante.

Descrição do registrador TCC0B fornecido pelo fabricante
Descrição dos bits internos do registrador TCC0B
Figura 9 - Descrição dos bits internos do registrador TCC0B

De acordo com a figura 8, sabemos que o valor do registrador TCC0B é de 0b00000011. Analisando especialmente os bits CS02, CS01, CS00, nota-se pela figura 9 e 10 que eles são responsáveis pelo prescaler do clock para o Timer/Counter1, este Timer é utilizado para o circuito do PWM.

Esquemático do Prescaler
Funcionamento interno do divisor de frequência
Figura 10 - Funcionamento interno do divisor de frequência

Analisando também a figura 11, e com o valor do registrador verificado na figura 8, é possível calcular a frequência atual do PWM. Sabendo que a frequência fornecido pelo circuito de cristal externo é de 16MHz16MHz, com o valor de 0b011 nos bits CS02, CS01, CS00, temos um prescaler de 6464. Considerando também que o PWM é de 8 bits, para se determinar a frequência do PWM atual podemos implementar o que tá descrito em (3):

clkPWM=clkIO64128=1600000064256=976.5625Hz(3)clk_{PWM}=\frac{clk_{IO}}{64}\cdot\frac{1}{2^{8}}=\frac{16000000}{64\cdot256}=976.5625Hz\tag{3}

Esta frequência também foi obtida via simulação, representada na figura 5 e definida na equação (2).

Divisor de frequência
Tabela com configuração dos registradores para prescaler
Figura 11 - Tabela 14.9 do datasheet, configuração dos registradores para prescaler

Para se obter a maior frequência possível de PWM, deve-se ajustar esses mesmos bits para 0b001, correspondente a opção no prescaling.

Como sabemos o valor atual do registrador, essa operação será realizada a seguir alterando somente os bits necessários, por isso essa configuração (instrução em código) poderia ser diferente se nos deparássemos com um outro microcontrolador em uma situação prática. O código final pode ser visto abaixo:

void setup() {
  pinMode(5,1);
  TCCR0B&=~(1<<CS01);
}

void loop() {
  int input = analogRead(A0);
  int output = map(output, 0, 1023, 0, 255);
  analogWrite(5, output);
}
Resultados anteriores Resultados após ajuste
Antes Depois
Figura 12 - Comparação dos resultados anteriores e após ajuste no registrador TCC0B

É possível perceber pela figura 12 que o sinal após o ajuste consegue representar melhor a senoide. Esta senoide utilizada possui frequência f=1kHzf=1kHz.

Análise dos registradores TCCR0B e ADCSRA
Valores dos registradores TCCR0B e ADCSRA do ATMega328P
Figura 13 - Valores dos registradores TCCR0B e ADCSRA do ATMega328P

Analisando os registradores, podemos ver a mudança realizada.

Desta forma é obtido um sinal de PWM com o controle sobre a frequência

Configuração dos bits do registrador ADCSRA para fs = 76.9KHz

Para definir uma taxa de amostragem, primeiramente, deve-se conhecer o número de ciclos de clock necessários para uma conversão no ADC.

Diagrama temporal do ADC
Diagrama temporal do ADC para a obtenção de uma única amostra
Figura 14 - Diagrama temporal do ADC para a obtenção de uma única amostra

Analisando a figura 14, obtida pelos dados do fabricante, pode-se verificar que são necessários exatos 1313 ciclos de clock para uma única amostra. Com isso podemos determinar a frequência do sinal de clock para o circuito do ADC, sabendo a taxa de amostra do ADC desejado de fs=76.9Hzf_s=76.9Hz.

clkADC=nfs=1376.9kHz=0.9997MHz(4)clk_{ADC}=n\cdot f_{s}=13\cdot76.9kHz=0.9997MHz\tag{4}

Com o clock do ADC requerido, consultando os dados do fabricante de uma forma análoga à etapa anterior e consultando a figura 15, conclue-se que para obter este clock, deve-se realizar um prescaler de 16.

Bits para prescaler do clock do ADC
Prescaler do clock do ADC
Figura 15 - Bits ADSP2, ADSP1, ADSP0 para prescaler do clock do ADC

Estes bits se encontram nos espaços de memória dos bits menos significativos do registrador ADCSRA.

Registrador de controle ADCSRA
LSB do ADCSRA
Figura 16 - Bits ADSP2, ADSP1, ADSP0 como LSB do ADCSRA

Assim, para obter um fator de divisão de 16, deve-se configurar os bits com os valores 0b100, como é de conhecimento o valor anterior deste registrador, o código para mudar os bits para os desejados (para esta ocasião) está descrito abaixo:

void setup() {
  TCCR0B&=~(1<<CS01);
  ADCSRA&=~(1<<ADPS1);
  ADCSRA&=~(1<<ADPS0);
  pinMode(5,1);
}

void loop() {
  const int output = map(analogRead(A0), 0, 1023, 0, 255);
  analogWrite(5, output);
}

Para se avalizar o resultado, tomamos um intervalo de λ4\frac{\lambda}{4} como mostra o gráfico abaixo:

Resultado anterior Resultado após ajuste em ADCSRA
Resultado anterior Resultado após ajuste
Figura 17 - Comparação dos resultados após ajuste no registrador ADCSRA

Neste intervalo, foi possível verificar que após o ajuste, obtivemos uma modulação mais suave, não há mudanças tão repentinas nos ciclos de trabalho, isso decorre de uma maior amostragem do sinal.

Conclusões

Deste modo foi possível compreender diversas funcionalidades de um microcontrolador, entre elas, a sua capacidade de converter sinais analógicos em digitais com uma precisão de 10 bits, no caso do microcontrolador utilizado.

Além disso, pode-se compreender conceitos importantes como modulação por largura de pulso (PWM) de um sinal senoidal e a possibilidade de alterar registradores de um microcontrolador com o objetivo de aumentar a frequência do PWM e a taxa de amostragem.

Projeto de um filtro e conversão DA a partir do PWM

Introdução

Sabe-se que os diferentes sinais podem ser escritos como cossenos e senos ou ainda, por suas somas, que se diferenciam com relação a fase, amplitude e frequência. Em aplicações de Engenharia Elétrica são incontáveis as situações em que se almeja realizar uma alteração na amplitudes relativas de algumas frequências, ou mesmo eliminar determinadas faixas de frequência, a esse processo denominamos o nome de filtragem. Os filtros são os responsáveis por realizar a operação de atenuação ou eliminar uma determinada faixa, enquanto permite a passagem de componentes com outras faixas de frequência. Entre as aplicações, pode-se citar: recortar uma faixa de frequência para que se observe o comportamento de um determinado sistema, ou ainda, melhorar a resposta de um determinado sistema após a retirada de componentes específicos de frequência.

Por meio do teorema da amostragem um sinal de tempo contínuo pode ser completamente representado por suas amostras uniformemente espaçadas no tempo, em um período TT , isto é, a informação contida no sinal em tempo contínuo amostrado é equivalente ao do sinal discreto e de forma a minimizar ou eliminar o erro atrelado a essa operação, deve-se manter uma alta taxa de amostragem para a aplicação em questão. Entre as aplicações, pode-se citar a gravação de um áudio de voz por um celular, é claro que o sinal de áudio não está em tempo contínuo, contudo a taxa de amostragem está suficientemente alta ao ponto dos erros não serem percebidos pelo ouvido humano.

Dessa forma, após compreender sobre filtros e conversão analógica digital (AD), busca-se realizar o projeto de dois filtros de ordens diferentes para promover conversão D/A a partir de um sinal PWM.

Projeto dos filtros

O procedimento inicial foi o estudo, estruturação e desenvolvimento dos dois filtros solicitados conforme os requisitos a seguir:

  • Arquiteturas: filtros RC passivo e RC-Ativo
  • Seletividade: passa-baixas e passa banda
  • Frequência central (de corte): f0=1kHzf_0 = 1 kHz
  • RC-Ativo: N=2N = 2, Kω0=1K_{\omega_0} = 1, Q=10Q = 10.

Projeto do Filtro RC

O primeiro filtro implementado foi o de primeira ordem, também conhecido como filtro RC (Resistor - Capacitor) passivo, com frequência central de 1kHz. A seguir vê-se o procedimento realizado para o dimensionamento dos componentes:

f=1000Hzw0=10002πRC=1w0=0.0001592(5)\begin{aligned} f&=1000Hz\\ w_{0}&=1000\cdot2\pi\\ RC&=\frac{1}{w_{0}}=0.0001592 \end{aligned} \tag{5}

Assumindo C=100nFC=100nF obtemos R=1591.549ΩR=1591.549\Omega

Filtro passivo

Figura 18 - Filtro RC simples passa baixa

Por fim verifica-se na figura 18 a topologia e os valores dos componentes assumidos para montar esse circuito.

Projeto do Filtro Ativo

Para o projeto do filtro passa faixa de segunda ordem, utilizamos a equação de transferência:

T(s) = Kmaxw0Qss2+w0Qs+w02(6)T\left(s\right)\ =\ \frac{K_{max}\frac{w_{0}}{Q}s}{s^{2}+\frac{w_{0}}{Q}s+w_{0}^{2}}\tag{6}

De posse das espeficicações apresentadas, pode-se determinar os coeficientes numéricos da função de transferência do filtro.

T(s) = 200π ss2+200πs+4000000π2T(s) = 628.3185 ss2+628.3185s+39478417.60(7)\begin{aligned} T\left(s\right)\ =\ \frac{200\pi\ s}{s^{2}+200\pi s+4000000\pi^{2}}\\ T\left(s\right)\ =\ \frac{628.3185\ s}{s^{2}+628.3185s+39478417.60} \end{aligned} \tag{7}

A topologia utilizada para implementação deste filtro será a Sallen-&-Key.

Filtro ativo

Figura 19 - Filtro Ativo passa faixa

A função de transferência deste filtro está representada abaixo:

T(s)=ks(R1C1)s2+s(1R1C1+1R3C2+1R3C1+1kR2C1)+1(R1//R2)R3C1C2(8)T\left(s\right)=\frac{ks\left(R_{1}C_{1}\right)}{s^{2}+s\left(\frac{1}{R_{1}C_{1}}+\frac{1}{R_{3}C_{2}}+\frac{1}{R_{3}C_{1}}+\frac{1-k}{R_{2}C_{1}}\right)+\frac{1}{\left(R_{1}//R_{2}\right)R_{3}C_{1}C_{2}}}\tag{8}

Analisando a equação de transferência, podemos implementar o filtro conforme a equação 7, assim temos:

ω0=1(R1//R2)R3C1C2(9)\omega_{0}=\sqrt{\frac{1}{\left(R_{1}//R_{2}\right)R_{3}C_{1}C_{2}}}\tag{9}

Fazendo C1=C2=1C_{1}=C_{2}=1 e R1=R2=R3=RR_{1}=R_{2}=R_{3}=R:

w0=1(R2)R11(10)w_{0}=\sqrt{\frac{1}{\left(\frac{R}{2}\right)R\cdot1\cdot1}}\tag{10}
R=2w0=0.000225079079039 ΩR=\frac{\sqrt{2}}{w_{0}} = 0.000225079079039\space\Omega

Como na função transferência, o valor de R aparece sempre em par com C, podemos aumentar um, na mesma proporção de diminuição de outro valor mantendo o produto RCRC constante.

Utilizando o mesmo valor de capacitor do filtro passivo C=100nFC=100nF, representando uma redução de 10710^7, aumentando RR obtido no mesmo fator, temos R=2250.79 ΩR=2250.79\space\Omega

E assim, para determinar o kk:

w0Q=3RiCi+1kRiCi=200πk=3.85857864376(11)\begin{aligned} \frac{w_{0}}{Q}=\frac{3}{R_{i}C_{i}}+\frac{1-k}{R_{i}C_{i}}=200\pi\\ k=3.85857864376 \end{aligned} \tag{11}

E com o valor de kk, podemos atribuir um valor para R4R_4 e determinar R5R_5:

k2=1+R5R4R4=1000ΩR5=2858.57Ω(12)\begin{aligned} k_{2}&=1+\frac{R_{5}}{R_{4}}\\ R_{4}&=1000\Omega\\ R_{5}&=2858.57\Omega \end{aligned} \tag{12}

De posse desses valores, podemos determinar o ganho para frequencia zero.

Kmax=k4k=27.28(13)K_{max}=\frac{k}{4-k}\tag{13}=27.28

Por isso utilizamos resistores em divisor de tensão na entrada para diminuir o ganho por este mesmo fator:

V1=Viα=ViR11R11+R12α=1KmaxR12=R21α=2336.42ΩR11=R121αα=61411.18Ω(14)\begin{aligned} V_{1}&=V_{i}\cdot\alpha=V_{i}\frac{R_{11}}{R_{11}+R_{12}}\\ \alpha&=\frac{1}{K_{max}}\\ R_{12}&=\frac{R_{2}}{1-\alpha}=2336.42\Omega\\ R_{11}&=R_{12}\cdot\frac{1-\alpha}{\alpha}=61411.18\Omega \end{aligned} \tag{14}

Descrição das simulações solicitadas e análise dos resultados

O resultado do filtro passa baixa implementado analiticamente pode ser observado a seguir na figura 19:

Filtro passivo

Figura 19 - Filtro passa baixa

Na figura 20, a seguir, é possível também, verificar a topologia do filtro passa faixa, sem, contudo, realizar a alteração promovida para definir um K máx igual a 1: Filtro ativo

Figura 20 - Filtro Ativo passa faixa

Nas figura 21 e 22 abaixo pode-se comparar o comportamento dos dois filtros, o de primeira ordem com o seu comportamento característico e o passa faixa centralizado em 1KHz. Comparação tensão de saída dos filtros

Figura 21 - Comparação da magnitude dos filtros

Comparação da magnitude

Figura 22 - Comparação da fase dos filtros

Filtro RC

O resultado da implementação do filtro RC dimensionado no ADS em conexão com o osciloscópio pode ser visualizado a seguir:

Simulação do filtro passivo

Figura 23 - Simulação do filtro passivo

Osciloscópio do filtro passivo

Figura 24 - Osciloscópio do filtro passivo

O que se observa é a reconstrução do sinal senoidal por meio da atuação do filtro no sinal PWM PWM. Verifica-se ainda, como um comportamento inerente do filtro RC, um defasamento de 45° entre saída e entrada.

Filtro ativo passa faixa

O resultado da implementação do filtro RC dimensionado no ADS em conexão com o osciloscópio pode ser visualizado a seguir:

Simulação do filtro ativo

Figura 25 - Simulação do filtro ativo

Osciloscópio do filtro ativo

Figura 26 - Osciloscópio do filtro ativo

O resultado da atuação do circuito ativo é a satisfatória reconstrução do sinal senoidal com frequência 1kHz, sem, contudo, provocar uma defasagem entre os sinais.

f=500Hzf=500Hz f=1000Hzf=1000Hz f=5000Hzf=5000Hz
f=500Hz f=1000Hz f=5000Hz
Figura 27 - Atuação do filtro ativo passa faixa para diversas frequências

Na figura 27, pode-se analisar a atuação do filtro passa faixa, atenuando o sinal para componentes do sinal que se encontram fora da faixa de frequência para o qual o filtro foi projetado.

Conclusões

Através da pesquisa pode-se compreender a atuação de dois tipos de filtros diferentes: o passa baixa RC e o filtro ativo passa faixa de segunda ordem. Como descrito anteriormente, o filtro passa baixa causou uma defasagem de 45° no sinal de saída com relação ao sinal de entrada PWM, por outro lado, o filtro RC ativo não causa defasagem entre a saída e a entrada.

Por fim, pode-se concluir, não somente a importância dos filtros, mas também a capacidade de se utilizá-los em conjunto com microcontroladores para filtrar sinais e auxiliar na obtenção de dados desejados.

Referências

Noceti-Filho, Sidnei, “Filtros Seletores de Sinais,” Editora da UFSC, Florianópolis, 2003.

Arduino Language Reference https://www.arduino.cc/reference/en/.

LATHI, B. P. Sinais e Sistemas Lineares. 2ª Ed., Porto Alegre, Editora Bookman, 2006. 856p.