1. 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
4. Soquete para MEA60, versão final
•
Foi desenhado, prototipado e validado soquete para MEA60 (Novembro
de 2012):
5. 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:
7. Trabalho anterior: Amplificador para
Matriz Multi-eletrodo
•
Desenvolvido e implementado amplificador para sinais elétricos em matriz
multi-eletrodo (dezembro de 2012):
11. 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;
15. 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.
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.
20. 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
21. 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.
22. 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:
25. 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)|')
29. 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
30. 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:
31. Filtro Notch por hardware
Ref:
http://www.ti.com/lit/an/sbfa012/sbfa012.pdf
32. 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.
33. 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)
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 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.
38. Filtros Anti-aliasing
• Filtro RC passa-baixas passivo de 1ª ordem
Ref:
http://ww1.microchip.com/downloads/en/appnotes/00699b.pdf
39. 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
40. 4 tipos de filtros ativos
Butterworth de 4ª ordem
Bessel de 4ª ordem
Chebysev de 3ª ordem
Sallen-key de 2ª ordem
41. 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:
42. Software grátis para Aquisição de dados
Oscilloscope program library: Michael Bernstein, Ju l 2009
http://www.oscilloscope-lib.com
47. 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
48. 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.
49. 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