Desenvolvimento e Validação de um
Conversor Analógico/Digital para Aquisição e
Registros de sinais em Matrizes Multi
Eletrodo
9o. Encontro de Registros Multieletrodos
Julho de 2013

Francisco Fambrini – Faccamp
Orientador: prof. Dr. José Hiroki Saito
Matriz MEA60 padrão Multichannel
Systems
Soquete: primeiro protótipo (out. 2012)
Soquete para MEA60, versão final
•

Foi desenhado, prototipado e validado soquete para MEA60 (Novembro
de 2012):
Trabalho anterior: Simulador MEA-SG
•

Desenvolvido e testado um simulador eletrônico, microcontrolado, com o
mesmo padrão de pinos da MEA-60 (setembro de 2012), MEA-SG:
MEA-SG, versão final (março 2013)
Trabalho anterior: Amplificador para
Matriz Multi-eletrodo
•

Desenvolvido e implementado amplificador para sinais elétricos em matriz
multi-eletrodo (dezembro de 2012):
Testando o Amplificador
•

Um canal foi construído e testado em bancada ( dez/janeiro 2013)
Montando o simulador no soquete
Soquete e MEA-SG em teste...
Conversor Analógico/Digital (DAQ)
•
•

Os sinais elétricos presentes nos terminais do soquete da matriz multi-eletrodo
são analógicos, de baixa amplitude (entre 5 uV e 200 mV);
Para serem registrados no computador PC esses sinais precisam ser digitalizados,
isto é, transformados em sinais que tem nível lógicos 0 ou 1 apenas;
Sinal Analógico e sinal digitalizado
Parâmetros importantes do ADC
1-Resolução
2-Taxa de Amostragem (Sample Rate)
3-Faixa dinâmica
4 – Erro de Linearidade
Parâmetros do conversor AD
Teorema da Amostragem de Nyquist–Shannon
•

Um Sinal ou função é limitado em banda se não contém energia em
frequências maiores do que o limite de banda B.

•

O teorema da amostragem assegura que as amostras discretas
uniformemente espaçadas são uma representação completa do sinal, se
sua largura de banda é menos do que a metade da taxa de amostragem.

•

A condição suficiente para uma exata reconstrução a partir das amostras
em uma taxa de amostragem uniforme (em amostras por unidade de
tempo) é que a Frequência de Amostragem seja maior do que duas vezes
o limite de banca B.
Conversor AD em rampa
AD por Aproximações Sucessivas (SAR)
Nosso protótipo preliminar
•

Proposta: utilizar o conversor AD do microcontrolador PIC18F4620: 12
bits, sample rate maximo de 10 KHz, até 12 canais multiplexados, dos
quais são testados apenas 2 canais por enquanto.
Como enviar os dados para o computador?
Firmware gravado no microcontrolador
set_adc_channel (0); //canal 0
delay_us(20);
M1 = read_adc();
// faz a leitura do CH0
set_adc_channel (1); // canal 1
delay_us(20);
M2 = read_adc(); // faz a leitura do canal 1
tecla = getch( ); //espera o computador pedir o dado
if (tecla=='a') printf ("P,%Lu,0,%Lu,0n",M,M2 );
//envia
Filtros: Analógicos e Digitais
•

Filtros analógicos são construídos utilizando-se hardware (indutores,
resistores, capacitores e amplificadores operacionais). Filtros Digitais
podem ser implementados apenas por software ou em FPGAs.

Filtro passa-baixa analógico remove o ruído de alta frequência presente
no sinal antes do conversor analógico-digital (A / D).
Desta maneira, o código de saída digital obtido na conversão não
contém harmônicas indesejáveis (alias).
Em contraste, a um filtro digital pode ser utilizado para reduzir o ruído
em banda de freqüência, usando técnicas de cálculos de médias.
Usando scripts do Matlab
% --------------- SCRIPT 1
N=1000;
s = serial ('COM5','BaudRate',460800,'DataBits',8,'Parity','none','FlowControl','none');
fopen(s);
seq = 1:N;
y = zeros(1,N);

% Tamanho fixo é mais rápido.

for i=1:N
fprintf( s, '%s', 'a');
y(i) = str2num( fscanf(s,'%s') );
end
fclose(s);
plot(seq,y);

% função lenta executada fora do loop.

xlabel('registro');
ylabel('Tensao (mV)');
title('Sinal eletrico MEA60 - Fambrini & Saito DAQ ');b:
Matlab e DAQ – registrando sinal de teste
Script 1 funcionando
Matlab – script 2
• Esse script apresenta uma segunda figura que mostra o conteúdo
espectral (no domínio da frequência) do sinal amostrado pelo DAC,
aplicando FFT (Fast Fourier Transformer). O trecho abaixo aplica o
FFT sobre as amostras e plota a figura:
figure(2)
L=length(y);
NFFT = 2^nextpow2(L);
Y = fft(y,NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2+1);
plot(f,2*abs(Y(1:NFFT/2+1)))
title('Espectro de Amplitude em Frequencia Unilateral de y(t)')
xlabel('Frequencia (Hz)')
ylabel('|Y(f)|')
Figura-2 –Conteúdo espectral
Script-2 (Matlab)
Analisador de Espectro
10 Hz, 40 Hz

60 Hz, 80 Hz
Plotando 2 canais simultaneamente
•

Um terceiro script escrito em Matlab é capaz de plotar 2 canais do conversor
simultaneamente, em baixa velocidade, video no Youtube:
http://www.youtube.com/watch?v=FYGL5N2hOxE&feature=youtu.be
Filtrando artefatos
O principal ruído a ser filtrado é o de frequência igual a 60 Hz, proveniente da rede
elétrica. Esse ruído aparece mesmo quando se alimenta o sistema com baterias,
pois o sistema capta a EMI (Interferência Eletromagnética) dos fios próximos
ligados às tomadas. Um filtro muito usado, por hardware é o chamado Filtro
Notch. Esse tipo de filtro possui uma curva típica como a mostrada abaixo:
Filtro Notch por hardware

Ref:

http://www.ti.com/lit/an/sbfa012/sbfa012.pdf
Filtro Notch por software
É possível economizar hardware, implementando-se um filtro notch por
software de modo muito simples no Matlab. O trecho de código abaixo
implementa-o no Matlab e é usado no script-3 com a finalidade de
melhorar a filtragem de 60 Hz. A variável que armazena os valores a
serem plotados no eixo y é ‘m’. A e B determinam a largura de banda do
filtro.
% Filtra m com 60 Hz - notch filter
Wo = 60/(Fs/2); BW = Wo/35;
[b,a] = iirnotch(Wo,BW);
y = filter(b,a,m);
Filtros digitais recursivos, ou do tipo IIR (Infinit Impulse Response), são aqueles que
possuem componentes de realimentação, produzindo um efeito mais intenso na
curva de atuação do filtro, e com isto, reduzindo a ordem do filtro.
Filtro IIR no Matlab
Implementando um filtro passa-baixas IIR no
Matlab:
Equação a diferenças do filtro:
y(n)= K*x(n) +y(n-1)*(1-K)
com

K = 1/ 2^12

( 12 bits)
Código no Matlab, simula um sinal senoidal com ruído para
testar os filtros por software
K=1/2^12
b=K
a = [1 -(1-K)]
Fs=200;
% Frequencia de Amostragem
Ts=1/Fs;
Nx=5000;
% numero de Amostras
nT=Ts*(0:Nx-1);
fin=10;
% frequencia do Sinal
randn('state',sum(100*clock)); %gerando sinal aleatorio com ruido
noise=randn(1,Nx);
% simulando ruido
noise=noise-mean(noise);
xin=200+9*(cos(2*pi*fin*nT));
xin=xin+noise;
out = filter(b,a,xin);
plot(out,xin);
Aliasing
• Aliasing é o fenômeno através do qual sinais
de frequências diferentes se tornam
indistinguíveis quando amostrados através do
uso de um conversor AD.
Frequencia de Nyquist e Aliasing
Exemplo: Deseja-se ler apenas as frequencias f1 e f2.
Note-se que f3 reside na banda de transição do filtro.
Assim, a frequência f3 indesejada foi atenuada, mas sua imagem ainda é amostrada.
Note-se também que f4 foi completamente eliminada, porque está acima da faixa de
transição.
Exemplo de Aliasing
Filtros Anti-aliasing
• Filtro RC passa-baixas passivo de 1ª ordem

Ref:

http://ww1.microchip.com/downloads/en/appnotes/00699b.pdf
Como resolver o problema da frequência
imagem f3 ?
•

Resposta: usando-se filtros anti-aliasing ativos, com maior taxa de
atenuação por década.

4 Curvas para Filtros reais

Curva do Filtro Ideal
Ref: http://www.maximintegrated.com/app-notes/index.mvp/id/928
4 tipos de filtros ativos

Butterworth de 4ª ordem

Bessel de 4ª ordem

Chebysev de 3ª ordem

Sallen-key de 2ª ordem
Ruído de quantização
•

O sinal (onda retangular) gerado internamente pelo funcionamento do
conversor AD subtrai-se por “batimento” do sinal que está sendo
amostrado, gerando um outro sinal que é o ruído de quantização do AD:
Software grátis para Aquisição de dados
Oscilloscope program library: Michael Bernstein, Ju l 2009
http://www.oscilloscope-lib.com
Software de Aquisição de dados rodando no
DAQ
Experimento sugerido pelo prof. Saito
Experimento da folha de árvore na
MEA
Protótipo do Sistema Completo (Jul 2013)
Videos no Youtube mostrando os
testes do sistema
1 - Teste do Conversor AD (Fambrini e Saito DAQ)
https://www.youtube.com/watch?v=FYGL5N2hOxE&feature=c4-overview&list=UU5oogEX4pk7PqJuDq6gG7QA
2 - Teste do MEA-SG + amplificador
https://www.youtube.com/watch?v=WTIEb4PUQFo&feature=c4overview&list=UU5oogEX4pk7PqJuDq6gG7QA
3 - Teste com matriz multi-eletrodo e folhas de arvores com osciloscopio convencional
https://www.youtube.com/watch?v=U4eUE929JRY&feature=c4-overview&list=UU5oogEX4pk7PqJuDq6gG7QA
4 - Teste do sistema de aquisição de dados completo de 1 canal, com folhas de arvores na matriz e também
com o MEA-SG
https://www.youtube.com/watch?v=N2apZBI2mro&feature=c4-overview&list=UU5oogEX4pk7PqJuDq6gG7QA
Melhorias a implementar no DAQ
1-Aumentar a resolução do conversor AD, de 12 bits para 16 ou
24 bits;
2-Aumentar a velocidade de transferência de dados entre o
Conversor AD e a porta USB;
3-Usar microcontrolador com DMA (acesso direto a memória);
4-Usar técnicas de buffer de dados para aumentar a velocidade
de aquisição de dados;
5-Fazer um software especifico (em C++ ou Visual Studio) para
registrar os dados, que seja mais leve e mais rápido do que o
Matlab.
Referências
1-Apostila sobre conversores AD on-line:
http://paginapessoal.utfpr.edu.br/rosangela/lcd-e-adc/Dig2Cap4-Conversor
%20DA%20e%20AD.doc/view
2-Comunicação Microcontrolador e Matlab:
http://kr3l.wordpress.com/2008/06/23/scope-with-pic-microcontroller-andmatlab/
3-Software gratuito de aquisição de dados:
http://www.msp430launchpad.com/2010/12/njcs-launchscope-launchpadoscilloscope.html
4-DAQ32:
http://code.google.com/p/daq32datalogger11072010sohm/downloads/list
OBRIGADO !

Slides 9 erm

  • 1.
    Desenvolvimento e Validaçãode um Conversor Analógico/Digital para Aquisição e Registros de sinais em Matrizes Multi Eletrodo 9o. Encontro de Registros Multieletrodos Julho de 2013 Francisco Fambrini – Faccamp Orientador: prof. Dr. José Hiroki Saito
  • 2.
    Matriz MEA60 padrãoMultichannel Systems
  • 3.
  • 4.
    Soquete para MEA60,versão final • Foi desenhado, prototipado e validado soquete para MEA60 (Novembro de 2012):
  • 5.
    Trabalho anterior: SimuladorMEA-SG • Desenvolvido e testado um simulador eletrônico, microcontrolado, com o mesmo padrão de pinos da MEA-60 (setembro de 2012), MEA-SG:
  • 6.
    MEA-SG, versão final(março 2013)
  • 7.
    Trabalho anterior: Amplificadorpara Matriz Multi-eletrodo • Desenvolvido e implementado amplificador para sinais elétricos em matriz multi-eletrodo (dezembro de 2012):
  • 8.
    Testando o Amplificador • Umcanal foi construído e testado em bancada ( dez/janeiro 2013)
  • 9.
  • 10.
    Soquete e MEA-SGem teste...
  • 11.
    Conversor Analógico/Digital (DAQ) • • Ossinais elétricos presentes nos terminais do soquete da matriz multi-eletrodo são analógicos, de baixa amplitude (entre 5 uV e 200 mV); Para serem registrados no computador PC esses sinais precisam ser digitalizados, isto é, transformados em sinais que tem nível lógicos 0 ou 1 apenas;
  • 12.
    Sinal Analógico esinal digitalizado
  • 13.
    Parâmetros importantes doADC 1-Resolução 2-Taxa de Amostragem (Sample Rate) 3-Faixa dinâmica 4 – Erro de Linearidade
  • 14.
  • 15.
    Teorema da Amostragemde Nyquist–Shannon • Um Sinal ou função é limitado em banda se não contém energia em frequências maiores do que o limite de banda B. • O teorema da amostragem assegura que as amostras discretas uniformemente espaçadas são uma representação completa do sinal, se sua largura de banda é menos do que a metade da taxa de amostragem. • A condição suficiente para uma exata reconstrução a partir das amostras em uma taxa de amostragem uniforme (em amostras por unidade de tempo) é que a Frequência de Amostragem seja maior do que duas vezes o limite de banca B.
  • 16.
  • 17.
    AD por AproximaçõesSucessivas (SAR)
  • 18.
    Nosso protótipo preliminar • Proposta:utilizar o conversor AD do microcontrolador PIC18F4620: 12 bits, sample rate maximo de 10 KHz, até 12 canais multiplexados, dos quais são testados apenas 2 canais por enquanto.
  • 19.
    Como enviar osdados para o computador?
  • 20.
    Firmware gravado nomicrocontrolador set_adc_channel (0); //canal 0 delay_us(20); M1 = read_adc(); // faz a leitura do CH0 set_adc_channel (1); // canal 1 delay_us(20); M2 = read_adc(); // faz a leitura do canal 1 tecla = getch( ); //espera o computador pedir o dado if (tecla=='a') printf ("P,%Lu,0,%Lu,0n",M,M2 ); //envia
  • 21.
    Filtros: Analógicos eDigitais • Filtros analógicos são construídos utilizando-se hardware (indutores, resistores, capacitores e amplificadores operacionais). Filtros Digitais podem ser implementados apenas por software ou em FPGAs. Filtro passa-baixa analógico remove o ruído de alta frequência presente no sinal antes do conversor analógico-digital (A / D). Desta maneira, o código de saída digital obtido na conversão não contém harmônicas indesejáveis (alias). Em contraste, a um filtro digital pode ser utilizado para reduzir o ruído em banda de freqüência, usando técnicas de cálculos de médias.
  • 22.
    Usando scripts doMatlab % --------------- SCRIPT 1 N=1000; s = serial ('COM5','BaudRate',460800,'DataBits',8,'Parity','none','FlowControl','none'); fopen(s); seq = 1:N; y = zeros(1,N); % Tamanho fixo é mais rápido. for i=1:N fprintf( s, '%s', 'a'); y(i) = str2num( fscanf(s,'%s') ); end fclose(s); plot(seq,y); % função lenta executada fora do loop. xlabel('registro'); ylabel('Tensao (mV)'); title('Sinal eletrico MEA60 - Fambrini & Saito DAQ ');b:
  • 23.
    Matlab e DAQ– registrando sinal de teste
  • 24.
  • 25.
    Matlab – script2 • Esse script apresenta uma segunda figura que mostra o conteúdo espectral (no domínio da frequência) do sinal amostrado pelo DAC, aplicando FFT (Fast Fourier Transformer). O trecho abaixo aplica o FFT sobre as amostras e plota a figura: figure(2) L=length(y); NFFT = 2^nextpow2(L); Y = fft(y,NFFT)/L; f = Fs/2*linspace(0,1,NFFT/2+1); plot(f,2*abs(Y(1:NFFT/2+1))) title('Espectro de Amplitude em Frequencia Unilateral de y(t)') xlabel('Frequencia (Hz)') ylabel('|Y(f)|')
  • 26.
  • 27.
  • 28.
    Analisador de Espectro 10Hz, 40 Hz 60 Hz, 80 Hz
  • 29.
    Plotando 2 canaissimultaneamente • Um terceiro script escrito em Matlab é capaz de plotar 2 canais do conversor simultaneamente, em baixa velocidade, video no Youtube: http://www.youtube.com/watch?v=FYGL5N2hOxE&feature=youtu.be
  • 30.
    Filtrando artefatos O principalruído a ser filtrado é o de frequência igual a 60 Hz, proveniente da rede elétrica. Esse ruído aparece mesmo quando se alimenta o sistema com baterias, pois o sistema capta a EMI (Interferência Eletromagnética) dos fios próximos ligados às tomadas. Um filtro muito usado, por hardware é o chamado Filtro Notch. Esse tipo de filtro possui uma curva típica como a mostrada abaixo:
  • 31.
    Filtro Notch porhardware Ref: http://www.ti.com/lit/an/sbfa012/sbfa012.pdf
  • 32.
    Filtro Notch porsoftware É possível economizar hardware, implementando-se um filtro notch por software de modo muito simples no Matlab. O trecho de código abaixo implementa-o no Matlab e é usado no script-3 com a finalidade de melhorar a filtragem de 60 Hz. A variável que armazena os valores a serem plotados no eixo y é ‘m’. A e B determinam a largura de banda do filtro. % Filtra m com 60 Hz - notch filter Wo = 60/(Fs/2); BW = Wo/35; [b,a] = iirnotch(Wo,BW); y = filter(b,a,m); Filtros digitais recursivos, ou do tipo IIR (Infinit Impulse Response), são aqueles que possuem componentes de realimentação, produzindo um efeito mais intenso na curva de atuação do filtro, e com isto, reduzindo a ordem do filtro.
  • 33.
    Filtro IIR noMatlab Implementando um filtro passa-baixas IIR no Matlab: Equação a diferenças do filtro: y(n)= K*x(n) +y(n-1)*(1-K) com K = 1/ 2^12 ( 12 bits)
  • 34.
    Código no Matlab,simula um sinal senoidal com ruído para testar os filtros por software K=1/2^12 b=K a = [1 -(1-K)] Fs=200; % Frequencia de Amostragem Ts=1/Fs; Nx=5000; % numero de Amostras nT=Ts*(0:Nx-1); fin=10; % frequencia do Sinal randn('state',sum(100*clock)); %gerando sinal aleatorio com ruido noise=randn(1,Nx); % simulando ruido noise=noise-mean(noise); xin=200+9*(cos(2*pi*fin*nT)); xin=xin+noise; out = filter(b,a,xin); plot(out,xin);
  • 35.
    Aliasing • Aliasing éo fenômeno através do qual sinais de frequências diferentes se tornam indistinguíveis quando amostrados através do uso de um conversor AD.
  • 36.
    Frequencia de Nyquiste Aliasing Exemplo: Deseja-se ler apenas as frequencias f1 e f2. Note-se que f3 reside na banda de transição do filtro. Assim, a frequência f3 indesejada foi atenuada, mas sua imagem ainda é amostrada. Note-se também que f4 foi completamente eliminada, porque está acima da faixa de transição.
  • 37.
  • 38.
    Filtros Anti-aliasing • FiltroRC passa-baixas passivo de 1ª ordem Ref: http://ww1.microchip.com/downloads/en/appnotes/00699b.pdf
  • 39.
    Como resolver oproblema da frequência imagem f3 ? • Resposta: usando-se filtros anti-aliasing ativos, com maior taxa de atenuação por década. 4 Curvas para Filtros reais Curva do Filtro Ideal Ref: http://www.maximintegrated.com/app-notes/index.mvp/id/928
  • 40.
    4 tipos defiltros ativos Butterworth de 4ª ordem Bessel de 4ª ordem Chebysev de 3ª ordem Sallen-key de 2ª ordem
  • 41.
    Ruído de quantização • Osinal (onda retangular) gerado internamente pelo funcionamento do conversor AD subtrai-se por “batimento” do sinal que está sendo amostrado, gerando um outro sinal que é o ruído de quantização do AD:
  • 42.
    Software grátis paraAquisição de dados Oscilloscope program library: Michael Bernstein, Ju l 2009 http://www.oscilloscope-lib.com
  • 43.
    Software de Aquisiçãode dados rodando no DAQ
  • 44.
  • 45.
    Experimento da folhade árvore na MEA
  • 46.
    Protótipo do SistemaCompleto (Jul 2013)
  • 47.
    Videos no Youtubemostrando os testes do sistema 1 - Teste do Conversor AD (Fambrini e Saito DAQ) https://www.youtube.com/watch?v=FYGL5N2hOxE&feature=c4-overview&list=UU5oogEX4pk7PqJuDq6gG7QA 2 - Teste do MEA-SG + amplificador https://www.youtube.com/watch?v=WTIEb4PUQFo&feature=c4overview&list=UU5oogEX4pk7PqJuDq6gG7QA 3 - Teste com matriz multi-eletrodo e folhas de arvores com osciloscopio convencional https://www.youtube.com/watch?v=U4eUE929JRY&feature=c4-overview&list=UU5oogEX4pk7PqJuDq6gG7QA 4 - Teste do sistema de aquisição de dados completo de 1 canal, com folhas de arvores na matriz e também com o MEA-SG https://www.youtube.com/watch?v=N2apZBI2mro&feature=c4-overview&list=UU5oogEX4pk7PqJuDq6gG7QA
  • 48.
    Melhorias a implementarno DAQ 1-Aumentar a resolução do conversor AD, de 12 bits para 16 ou 24 bits; 2-Aumentar a velocidade de transferência de dados entre o Conversor AD e a porta USB; 3-Usar microcontrolador com DMA (acesso direto a memória); 4-Usar técnicas de buffer de dados para aumentar a velocidade de aquisição de dados; 5-Fazer um software especifico (em C++ ou Visual Studio) para registrar os dados, que seja mais leve e mais rápido do que o Matlab.
  • 49.
    Referências 1-Apostila sobre conversoresAD on-line: http://paginapessoal.utfpr.edu.br/rosangela/lcd-e-adc/Dig2Cap4-Conversor %20DA%20e%20AD.doc/view 2-Comunicação Microcontrolador e Matlab: http://kr3l.wordpress.com/2008/06/23/scope-with-pic-microcontroller-andmatlab/ 3-Software gratuito de aquisição de dados: http://www.msp430launchpad.com/2010/12/njcs-launchscope-launchpadoscilloscope.html 4-DAQ32: http://code.google.com/p/daq32datalogger11072010sohm/downloads/list
  • 50.