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 9o. Encontro de Registros Multieletrodos
Julho de 2013
Francisco Fambrini – Faccamp
Matriz MEA60 padrão Multichannel
Systems
Soquete para MEA60, versão final
• Foi desenhado, prototipado e validado soquete para MEA60 (Novembro
Trabalho anterior: Simulador MEA-SG
• Desenvolvido e testado um simulador eletrônico, microcontrolado, com o
Trabalho anterior: Amplificador para Matriz
Multi-eletrodo
• Desenvolvido e implementado amplificador para sinais elétricos em matriz
Testando o Amplificador
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,
Parâmetros importantes do ADC
1-Resolução
2-Taxa de Amostragem (Sample Rate) 3-Faixa dinâmica
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 • 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.
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.
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
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
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'); 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)');
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);
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)')
Analisador de Espectro
Plotando 2 canais simultaneamente
• Um terceiro script escrito em Matlab é capaz de plotar 2 canais do conversor
simultaneamente, em baixa velocidade, video no Youtube:
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
Filtro Notch por hardware
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; 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)
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 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.
Filtros Anti-aliasing
•
Filtro RC passa-baixas passivo de 1ª ordem
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.
Curva do Filtro Ideal
4 Curvas para Filtros reais
4 tipos de filtros ativos
Butterworth de 4ª ordem Chebysev de 3ª 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
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 da folha de árvore na
MEA
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=c4-overview&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
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
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-and-matlab/
matlab/
3-Software gratuito de aquisição de dados:
http://www.msp430launchpad.com/2010/12/njcs-launchscope-launchpad-oscilloscope.html
4-DAQ32: