Vous êtes sur la page 1sur 4

Home

Search People, Research Interests and Universities

Log In

Sign Up

Ads by Brow ser Extension. More Info | Hide These Ads

Transmisso de Dados via Serial para Matlab e Calibrao do ADC more


by Rafael Bolzan

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.

% Nome da porta Serial a ser Conectada


s = serial('COM4');
% Mesma Configurao estabelecida no
Microcontrolador
set(s,'BaudRate',115200);

USART_InitTypeDef USART_InitStructure;
set(s,'DataBits',8);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);

477

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
set(s,'Parity','None');

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;

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);

USART_Init(USART1, &USART_InitStructure);
USART_Cmd(USART1, ENABLE);

% Abre a porta Serial


fopen(s);

Figura 1. Configurao USART STM32F4Discovery

Lembrando que as definies da USART podem


mudar dependendo da aplicao, neste caso foi utilizado
um BoudRate de 115200, WordLength de 8 bits, 1
StopBit e no modo Transmiter (Tx). Cabe ressaltar que o
tamanho do dado a ser transmitido de 16 bits (nesta
aplicao) 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 para
direcionar o buffer de memria o qual ser enviado via
serial e a configurao das portas de transmisso de
dados (Tx). A flag a ser setada na RTI (Rotina de
tratamento de interrupo) do DMA dar incio a
transmisso 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 conexo
serial no Matlab, ou seja, configurar a porta que est
sendo utilizada, o BoudRate, o tamanho do dado, e assim

% 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

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 fread
retorna 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 bits
os 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 exemplo
da figura 2 foi utilizado o cdigo descrito na figura 3.
for I=1:length(dado)
if(rem(I,2)==1)
dadopar=dado(I);
else
dadoimpar=dado(I);

por diante, lembrando que as configuraes da feitas no


microcontrolador devem ser as mesmas utilizadas no
Matlab, para que haja um compatibilidade entre as duas
portas.

mont(J)=(dadoimpar*256+dadopar)
J=J+1;
end
end

Um exemplo do cdigo implementado no Matlab para


estabelecer a conexo da porta serial esta demostrado na
figura 2.

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 erro
de converso o qual deve ser corrigido.

Figura 3. Funo de juno de dados.

4500
Saturao
4000
3500
3000
C
D
A 2500
a
r
u
ti 2000
e
L

Leitura Real
Leitura Esperada

1500

4. CALIBRAO DO CONVERSOR A/D

1000
500

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 de
utilizar dados com uma alta preciso necessrio a
calibrao do ADC.
Como foi utilizado neste experimento o
microcontrolador STM32F4Discovery, foi analisado o
erro de ganho do conversor A/D. Foram realizados
medies de 0 a 3 volts e registrados os valores
fornecidos pelo ADC e o valor esperado pelo mesmo.
Cabe ressaltar que o conversor possui uma resoluo de
12 bits, ou seja a 3 volts a converso equivale a 4096 e
esperasse um comportamento linear desse sistema. Os
valores registrados esto na tabela 1.

5
Amostras

10

Figura 4. Erro de Ganho e Saturao do ADC

Como visto na figura 4 h uma defasagem entre a


curva real e a esperada, essa defasagem o erro de ganho
do conversor A/D, tambm possvel notar que o erro
constante, consequentemente possvel determinar um
fator de correo para o sistema. Percebesse tambm que
h um outro problema na curva real, houve a saturao
da curva na ltima amostra do ADC.

Amostra

Tenso (V)

Valor
Esperado

Valor
Registrado

0
1
2
3

0
0,3
0,6
0,9

0
409
820
1228

6
428
843
1265

Primeiramente devesse calibrar o ADC, para que essa


defasagem seja minimizada, posteriormente analisar o
quo grave o problema de saturao. Para a calibrao,
determinado um fator de correo o qual ser aplicado
em 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 normal
mente encontrado em todos os conversores A/D.

4
5
6

1,2
1,5
1,8

1639
2048
2457

1696
2110
2523

Para o experimento, foi utilizado uma funo de


inicializao do ADC, a qual o conversor realiza 10

6
7
8
9
10

1,8
2,1
2,4
2,7
3,0

2457
2867
3277
3686
4096

2523
2942
3368
3789
4095

inicializao do ADC, a qual o conversor realiza 10


converses e partir desses resultados calculado a mdia
das converses, em seguida calculado o fator de
correo das amostras (equao 1).

Tabela 1. Dados de Converso.

Para essa anlise foi variado a tenso de entrada do


ADC de 0 a 3 volts com um incremento de 0,3 volts e
comparado os valores registrados pelo ADC e o valores
esperado pela converso a partir da determinada tenso
de entrada. A curva dos entre o valor esperado e o valor
registrado podem ser observadas na figura 4.

(1)

Assim cada amostra deve ser multiplicada por o fator


de correo ( ) e resultar o valor da converso em
volts. Posteriormente ser analisado as comparaes
entre resultados das amostras sem calibrao do ADC e
aps a calibrao.

Download (.pdf)
Transmissao_de_Dad
318 KB

Sinas Recebidos via Serial

5. RESULTADOS
Sinal com Fator de Correo
Sinal sem Fator de Correo

2.5

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 dados
desse experimento.

Amostra

0,0041
0,3009
0,6013
0,8997
1,2007
1,5007
1,8007
2,1084
2,4058
2,7025
2,8043
2,9051
2,9515

0,0051
0,3076
0,6152
0,9199
1,2250
1,5330
1,8380
2,1510
2,4540
2,7590
2,8620
2,9660
2,9990

1.5

Leitura
Leitura ADC Leitura ADC
Multmetro sem Fc
com Fc

0
1
2
3
4
5
6
7
8
9
10
11
12

0.5

0,0051
0,3007
0,6014
0,8993
1,2000
1,4990
1,7990
2,1030
2,3990
2,6960
2,7970
2,8990
2,9320

0
10

20

30

40

50

60

70

80

90

100

Figura 6. Sinal Recebidos via Serial com e sem Fator de


Correo.

Tambm possvel enviar mais de um sinal para o


Matlab, dependendo do nmero de ADCs que o usurio
est utilizando, neste caso o microcontrolador utilizado
possui trs ADC, consequentemente possvel o envio
de at trs sinais para o Matlab. A figura 7 mostra dois
sinais gerados por um gerador de funo e enviados via
serial, os sinais possuem uma defasagem de 30 e
amplitude de 2,8 volts. Para este caso o ADC j foi
calibrado.

Tabela 2. Dados de Converso.

Posteriormente foi graficado os dados da tabela 2.

Sinas Recebidos via Serial


3

Comparao de leituras de Tenso


3

2.5

X: 9
Y: 2.696

2.5

Multimetro
Sem Fator de Correo
Com Fator de Correo

2
2

1.5
1.5

1
1

0.5
0.5

0
0
0

6
Amostra

10

50

100

150

200

250

300

12

Figura 5. Analises das Amostras do ADC.

Aps a correo do ADC, foi realizado um outro


experimento, gerou-se um sinal senoidal a partir de um
gerador de funo com amplitude de 2,8 Vp, o mesmo
foi inserido do ADC e enviado via conexo serial para o
Matlab. Foi analisado o sinal com calibrao do ADC e
sem calibrao (figura 6).

Figura 7. Sinais Recebidos via Serial

Este documento demonstrou o funcionamento da


conexo serial via Matlab e o procedimento de calibrao
do ADC, o qual de grande utilidade pois possvel
realizar estudos e anlises de quaisquer sinais
primeiramente atravs do Matlab e posteriormente no
microcontrolador.

Job Board

About

Mission

Press

Blog

Stories

We're hiring engineers!


Academia 2014

FAQ

Terms

Privacy

Copyright

Send us Feedback

Vous aimerez peut-être aussi