Transmissão de Dados via Serial Para Matlab e Calibração Do ADC _ Rafael Bolzan - Academia
-
Upload
neemias-monteiro -
Category
Documents
-
view
3 -
download
2
description
Transcript of Transmissão de Dados via Serial Para Matlab e Calibração Do ADC _ Rafael Bolzan - Academia
-
Home Log In Sign Up
Ads by Brow ser Extension. More Info | Hide These Ads
Transmisso de Dados via Serial para Matlab e Calibrao do ADCby Rafael Bolzan
more
completo, ento foi utilizado uma interrupo no DMA
que sinaliza a transmisso por completa dos dados no buffer, em outras palavras, que o buffer encheu. Nessa
interrupo uma flag setada e a transmisso iniciada.
USART_InitTypeDef USART_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
% Nome da porta Serial a ser Conectada
s = serial('COM4');
% Mesma Configurao estabelecida no
Microcontrolador
set(s,'BaudRate',115200);
set(s,'DataBits',8);
Search People, Research Interests and Universities
477
http://www.academia.edu/http://www.academia.edu/http://www.academia.edu/loginhttp://www.academia.edu/signuphttp://www.academia.edu/3742279/Transmissao_de_Dados_via_Serial_para_Matlab_e_Calibracao_do_ADChttp://cefetpr.academia.edu/RafaelBolzan -
Figura 1. Configurao USART STM32F4Discovery
Lembrando que as definies da USART podem
mudar dependendo da aplicao, neste caso foi utilizadoum BoudRate de 115200, WordLength de 8 bits, 1StopBit e no modo Transmiter (Tx). Cabe ressaltar que o
tamanho do dado a ser transmitido de 16 bits (nestaaplicao) e a serial tem tamanho de 8 bits (WordLength)assim o dado enviado e duas partes de 8 bits.
Tambm h a necessidade de um ponteiro paradirecionar o buffer de memria o qual ser enviado viaserial e a configurao das portas de transmisso de
dados (Tx). A flag a ser setada na RTI (Rotina detratamento de interrupo) do DMA dar incio atransmisso dos dados o qual feita no while (1).
3. CONEXO SERIAL NO MATLAB
Como j visto o microcontrolador j foi configurado
para mandar um conjunto de dados via serial, agora necessrio interpretar esses dados para que seja possvel
a manipulao dos mesmos.
Primeiramente necessrio estabelecer a conexoserial no Matlab, ou seja, configurar a porta que estsendo utilizada, o BoudRate, o tamanho do dado, e assim
por diante, lembrando que as configuraes da feitas nomicrocontrolador devem ser as mesmas utilizadas noMatlab, para que haja um compatibilidade entre as duas portas.
Um exemplo do cdigo implementado no Matlab paraestabelecer a conexo da porta serial esta demostrado nafigura 2.
Figura 2. Configurao Porta Serial Matlab
No exemplo da figura 2 foi utilizada a porta COM4,e as demais configuraes foram as mesmas
estabelecidas no microcontrolador. A funo freadretorna a informao a ser recebida pela serial a qual armazenada no vetor dado que possui 512 informaes de
8 bits cada. Neste caso foi enviado 256 dados de 16 bitsos quais resulta em 512 dados de 8bits cada.
Agora necessrio montar a informao enviada, ou
seja, montar o dado de 16 bits. Para o mesmo exemploda figura 2 foi utilizado o cdigo descrito na figura 3.
Figura 3. Funo de juno de dados.
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
USART_InitStructure.USART_BaudRate = 115200;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl =
USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Tx;
USART_Init(USART1, &USART_InitStructure);
USART_Cmd(USART1, ENABLE);
set(s,'Parity','None');
set(s,'stopBits',1);
set(s,'FlowControl','none');
% Tamanho do Buffer de entrada
set(s,'InputBufferSize',512);
% Tempo que para receber algum dado (ms) set(s,'Timeout',5000);
% Abre a porta Serial
fopen(s);
% Os dados recebidos so armazenados no vetor
dado
dado=fread(s,512);
% Fecha a porta Serial
fclose(s);
% Exclui a varivel s
delete(s);
% Limpa a varivel s
clear s
for I=1:length(dado)
if(rem(I,2)==1)
dadopar=dado(I);
else
dadoimpar=dado(I);
mont(J)=(dadoimpar*256+dadopar)
J=J+1;
end
end
A figura 3 demostra um funo a qual monta o dado
de 16 bits e retorna um vetor mont de 256 dados. Ento
agora j possvel enviar e receber dados atravs da porta serial com simplicidade e exatido.
Porm ainda no possvel a manipulao desses
dados com preciso, pois o conversor A/D tem um errode converso o qual deve ser corrigido.
4. CALIBRAO DO CONVERSOR A/D
Embora o conversor A/D possui vrios erros de
converso o mais preocupante o erro de ganho, ento para qualquer aplicao que haja a necessidade deutilizar dados com uma alta preciso necessrio acalibrao do ADC.
Como foi utilizado neste experimento omicrocontrolador STM32F4Discovery, foi analisado o
erro de ganho do conversor A/D. Foram realizadosmedies de 0 a 3 volts e registrados os valoresfornecidos pelo ADC e o valor esperado pelo mesmo.Cabe ressaltar que o conversor possui uma resoluo de12 bits, ou seja a 3 volts a converso equivale a 4096 eesperasse um comportamento linear desse sistema. Osvalores registrados esto na tabela 1.
Amostra Tenso (V) ValorEsperado
ValorRegistrado
0 0 0 6
1 0,3 409 428
2 0,6 820 843
3 0,9 1228 1265
4 1,2 1639 16965 1,5 2048 2110
6 1,8 2457 2523
Figura 4. Erro de Ganho e Saturao do ADC
Como visto na figura 4 h uma defasagem entre acurva real e a esperada, essa defasagem o erro de ganhodo conversor A/D, tambm possvel notar que o erro
constante, consequentemente possvel determinar umfator de correo para o sistema. Percebesse tambm que
h um outro problema na curva real, houve a saturaoda curva na ltima amostra do ADC.
Primeiramente devesse calibrar o ADC, para que essadefasagem seja minimizada, posteriormente analisar o
quo grave o problema de saturao. Para a calibrao, determinado um fator de correo o qual ser aplicadoem cada converso do ADC. Esse fator de correo
determinado a partir de uma tenso de referncia interna(Vrefint), que no caso do STM32F4Discovery equivale
a 1,21 [1] volts, esse valor de tenso preciso e normalmente encontrado em todos os conversores A/D.
Para o experimento, foi utilizado uma funo deinicializao do ADC, a qual o conversor realiza 10
0 1 2 3 4 5 6 7 8 9 100
500
1000
1500
2000
2500
3000
3500
4000
4500
Amostras
L e i t u r a
A D C
Leitura Real
Leitura Esperada
Saturao
-
6 1,8 2457 2523
7 2,1 2867 2942
8 2,4 3277 3368
9 2,7 3686 3789
10 3,0 4096 4095Tabela 1. Dados de Converso.
Para essa anlise foi variado a tenso de entrada doADC de 0 a 3 volts com um incremento de 0,3 volts e
comparado os valores registrados pelo ADC e o valoresesperado pela converso a partir da determinada tensode entrada. A curva dos entre o valor esperado e o valor registrado podem ser observadas na figura 4.
inicializao do ADC, a qual o conversor realiza 10
converses e partir desses resultados calculado a mdiadas converses, em seguida calculado o fator de
correo das amostras (equao 1).
=
(1)
Assim cada amostra deve ser multiplicada por o fator
de correo () e resultar o valor da converso emvolts. Posteriormente ser analisado as comparaesentre resultados das amostras sem calibrao do ADC eaps a calibrao.
5. R ESULTADOS
Primeiramente foram obtidos resultados da
calibrao do conversor A/D, como feito anteriormente,foram obtidas vrias amostras das converses e
analisados os resultados, na tabela 2 descrito os dadosdesse experimento.
Amostra LeituraMultmetro
Leitura ADCsem Fc
Leitura ADCcom Fc
0 0,0041 0,0051 0,0051
1 0,3009 0,3076 0,3007
2 0,6013 0,6152 0,6014
3 0,8997 0,9199 0,8993
4 1,2007 1,2250 1,2000
5 1,5007 1,5330 1,4990
6 1,8007 1,8380 1,7990
7 2,1084 2,1510 2,1030
8 2,4058 2,4540 2,3990
9 2,7025 2,7590 2,6960
10 2,8043 2,8620 2,7970
11 2,9051 2,9660 2,8990
12 2,9515 2,9990 2,9320Tabela 2. Dados de Converso.
Posteriormente foi graficado os dados da tabela 2.
Figura 5. Analises das Amostras do ADC.
Aps a correo do ADC, foi realizado um outroexperimento, gerou-se um sinal senoidal a partir de umgerador de funo com amplitude de 2,8 Vp, o mesmofoi inserido do ADC e enviado via conexo serial para oMatlab. Foi analisado o sinal com calibrao do ADC e
sem calibrao (figura 6).
Figura 6. Sinal Recebidos via Serial com e sem Fator deCorreo.
Tambm possvel enviar mais de um sinal para oMatlab, dependendo do nmero de ADCs que o usurioest utilizando, neste caso o microcontrolador utilizado possui trs ADC, consequentemente possvel o enviode at trs sinais para o Matlab. A figura 7 mostra dois
sinais gerados por um gerador de funo e enviados viaserial, os sinais possuem uma defasagem de 30 e
amplitude de 2,8 volts. Para este caso o ADC j foicalibrado.
Figura 7. Sinais Recebidos via Serial
Este documento demonstrou o funcionamento daconexo serial via Matlab e o procedimento de calibraodo ADC, o qual de grande utilidade pois possvel
realizar estudos e anlises de quaisquer sinais primeiramente atravs do Matlab e posteriormente nomicrocontrolador.
0 2 4 6 8 10 120
0.5
1
1.5
2
2.5
3
X: 9
Y: 2.696
Comparao de leituras de Tenso
Amostra
Multimetro
Sem Fator de Correo
Com Fator de Correo
10 20 30 40 50 60 70 80 90 1000
0.5
1
1.5
2
2.5
Sinas Recebidos via Serial
Sinal com Fator de Correo
Sinal sem Fator de Correo
0 50 100 150 200 250 3000
0.5
1
1.5
2
2.5
3
Sinas Recebidos via Serial
Download (.pdf)
Transmissao_de_Dad
318 KB
http://www.academia.edu/attachments/31417299/download_file?st=MTM5NzI2MTEyOSwyMDAuMTY0LjEzMS41Nw%3D%3D&ct=MTM5NzI2MzExMQ%3D%3D -
Job Board About Mission Press Blog Stories We're hiring engineers! FAQ Terms Privacy Copyright Send us Feedback
Academia 2014