Slides 9 erm

50
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

Transcript of Slides 9 erm

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 ADC1-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,0\n",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 1N=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') ); endfclose(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^12b = Ka = [1 -(1-K)]Fs=200; % Frequencia de AmostragemTs=1/Fs;Nx=5000; % numero de AmostrasnT=Ts*(0:Nx-1); fin=10; % frequencia do Sinalrandn('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 AliasingExemplo: 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.

Curva do Filtro Ideal

4 Curvas para Filtros reais

Ref: http://www.maximintegrated.com/app-notes/index.mvp/id/928

4 tipos de filtros ativos

Butterworth de 4ª ordem Chebysev de 3ª ordem

Bessel de 4ª 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 + amplificadorhttps://www.youtube.com/watch?v=WTIEb4PUQFo&feature=c4-

overview&list=UU5oogEX4pk7PqJuDq6gG7QA

3 - Teste com matriz multi-eletrodo e folhas de arvores com osciloscopio convencionalhttps://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 DAQ1-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ências1-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/

3-Software gratuito de aquisição de dados:

http://www.msp430launchpad.com/2010/12/njcs-launchscope-launchpad-oscilloscope.html

4-DAQ32:

http://code.google.com/p/daq32datalogger11072010sohm/downloads/list

OBRIGADO !