Você está na página 1de 60

Projeto de Sistemas

em
Microprocessadores
Trabalho Final Medidor EletroResistivo em DSP

Professor: Guilherme Rolim


Aluno: Laert Ferreira da Silva Neto

Projeto de Sistemas em Microprocessadores

ndice
0 Introduo e objetivos
1 Descrio Geral do Problema
1.1 O Sensor Eletro-Resistivo
2 Aparato Experimental e ferramentas utilizadas
2.1 Construo da Sonda
2.2 Circuito Analgico
2.3 O DSP F28335 da Texas Instruments
2.4 Teclado Matricial
2.5 Display LCD de caracteres
2.6 Comunicao Serial
2.6.1 Transmisso Assncrona
2.6.2 Transmisso Sncrona
3 Parmetros de Projeto
3.1 Anlise espectral e determinao da frequncia de amostragem
3.2 - Filtro Passa Altas
3.2.1 Funo de transferncia em tempo contnuo
3.2.2 - Funo de transferncia em tempo discreto e equao a diferenas
3.3 Deteces falsas dos sensores Eletro-Resistivos
3.4 Algoritmo de Digitalizao do sinal
3.5 Algoritmo de Obteno de parmetros
3.6 O critrio de Chauvenet
3.6.1 Critrio de chauvenet adaptado para operar em tempo real
4 Utilizao e programao do DSP
4.1 Configurao da CPU, Inicializao de perifricos e interrupes
4.2 Configurao de ADC
4.2.1 Configurao do ADC na funo main
4.2.2 Algoritmo de digitalizao, deteco e rejeio na funo de interrupo ADC
4.2.2.1 Associao do valor de converso de 12bits a uma varivel float
4.2.2.2 Filtro passa-altas, digitalizao e aplicao da funo diferencial
4.2.2.3 Determinao de Resultados e critrio de rejeio de Chauvenet
4.3 Entradas e Sadas Digitais (GPIO)
4.3.1 Mapa de entradas e sadas digitais aos perifricos (display e teclado)
4.3.2 Instrues de Configurao dos pinos GPIO
4.3.3 Funes bsicas utilizadas nos GPIO
4.3.4 Menu de interao com o usurio
4.3.5 Fluxograma de uso do GPIO
4.4 Interface de Comunicao Serial (SCI)
4.4.1 Programa em CVI para comunicao serial com DSP e aquisio de dados

Medidor Eletro-Resistivo em DSP

P g i n a 1 | 59

Projeto de Sistemas em Microprocessadores

5 Resultados Obtidos
5.1 Menu de comunicao com o usurio
5.2 Frequncia de amostragem do ADC
5.3 Resultados obtidos no programa de interface serial
5.4 Comparao entre os resultados obtidos pelo DSP e pelo Matlab
6 Concluso
7 - Bibliografia

Medidor Eletro-Resistivo em DSP

P g i n a 2 | 59

Projeto de Sistemas em Microprocessadores

0 Introduo e Objetivos
A caracterizao de escoamentos multifsicos atravs de ferramentas e instrumentos adequados,
pode conduzir a otimizao de processos e sistemas. A proposta deste trabalho desenvolver um sistema de
medio em tempo real, baseado em DSP, que permita ao usurio o monitoramento (atravs de um programa
com interface serial ou atravs do display de caractere) e aquisio de dados.
O sensor eletro-resistivo vem sendo desenvolvido j h muitos anos no laboratrio de mecnica da
turbulncia (integrante do NIDF, Ncleo interdisciplinar de Dinmica dos Fluidos). Algumas sondas foram
desenvolvidas e o circuito analgico foi projetado. Os resultados eram armazenados via conversor A/D no
matlab e em seguida digitalizados atravs da utilizao de um trigger. Os valores de velocidade eram calculados
manualmente, em uma anlise off-line, a partir da defasagem entre dois sinais. Nenhum critrio de rejeio de
sinais discrepantes provenientes da intruso do sensor no escoamento, foi criado.
A proposta deste trabalho criar um instrumento baseado em DSP que execute a medio,
digitalizao do sinal, com rejeio de sinais discrepantes, e indique os resultados em tempo real ao usurio,
que, opcionalmente poder tambm fazer aquisio de dados. Para tanto,utilizaremos um desses antigos
sinais da sonda, aquisitados e armazenados no matlab, como entrada para o DSP, j que as sondas existentes
precisam ser reconstrudas.
No captulo 1, apresentaremos uma descrio geral do problema, introduzindo o mtodo de medio
por sensor eletro-resistivo. No captulo 2 apresentaremos o aparato experimental e ferramentas utilizadas no
projeto. No captulo 3 discriminaremos todos os parmetros de projeto. No captulo 4, apresentaremos como
foi feita a programao no DSP e no captulo 5 veremos os resultados obtidos.

Medidor Eletro-Resistivo em DSP

P g i n a 3 | 59

Projeto de Sistemas em Microprocessadores

1 Descrio Geral do problema


O estudo de escoamentos multifsicos possui uma grande importncia em diversos sistemas e setores
da Indstria (como a produo de Energia Nuclear, Indstria de Alimentos e extrao de petrleo) e na
validao experimental de modelos tericos e simulaes.
Estes tipos de escoamentos, que possuem diferentes fases (no necessariamente diferentes estados
fsicos da matria), quando devidamente caracterizados conduzem a uma otimizao de processos e
consequentemente elevam a segurana e robustez de um determinado sistema associado.
Um exemplo que ilustra a importncia deste tipo de caracterizao o resfriamento de reatores
nucleares. A gua, responsvel pela reduo de temperatura, transportada comumente com a sua fase
gasosa, formando um escoamento bifsico. A garantia do bom desempenho deste processo est diretamente
associada as caractersticas do fluido em escoamento (gua-ar).
Os escoamentos multifsicos em tubulaes podem assumir diferentes formas de organizao das
fases. Estas, so classificadas de acordo com o arranjo espacial do duto, vertical ou horizontal. Em geral, em
dutos longos podem ocorrer at diferentes padres de escoamento dependendo do dimetro do tubo, razo
volumtrica entre fases e propriedades de fases na regio de interesse. O tipo de regime de escoamento est
diretamente relacionado a caractersticas como a perda de carga (perda de presso ao longo do escoamento)
e coeficiente de transferncia de calor.
Os padres de escoamento em tubos horizontais podem ser classificados da seguinte forma:
estratificado plano, bolhas dispersas, bolhas alongadas, golfadas e anular. Na figura 1 abaixo podemos ver uma
ilustrao para cada padro mencionado.

Figura 1 padres de escoamento em dutos horizontais

Medidor Eletro-Resistivo em DSP

P g i n a 4 | 59

Projeto de Sistemas em Microprocessadores

Os padres de escoamento em tubos verticais podem ser classificados da seguinte forma: bolhas
dispersas, Slug, Churn e anular. Na figura 2 abaixo podemos ver uma ilustrao para cada padro
mencionado.

Figura 2 padres de escoamento em dutos verticais

1.1 O Sensor Eletro-Resistivo


A tcnica de medio por sensores eletro-resistivo baseada na diferena de resistividade entre as fases em
um escoamento bifsico. Esta uma tcnica intrusiva ao escoamento, ou seja, pode comprometer a geometria
da bolha no momento da passagem pelo sensor. Porm uma tcnica que independe de acesso ptico ao
escoamento ou das caractersticas visuais dos fluidos.
Esta tcnica de medio foi introduzida no ano de 1963 por Neal e Nassos, onde estes sensores foram utilizados
a fim de determinar a frao de vazios no escoamento bifsico de nitrognio e mercrio.
Utilizando um par de sensores paralelos e defasados verticalmente por uma distncia conhecida, podemos
determinar no somente o tamanho da corda de bolha e a frequncia de passagem pelos sensores individuais
como tambm a velocidade pelo par de sensores com defasagem espacial conhecida e defasagem temporal de
sinal obtida na anlise e processamento do sinal. O aparato experimental, processamento e os detalhes
construtivos do sensor sero vistos com maiores detalhes no prximo captulo.

Medidor Eletro-Resistivo em DSP

P g i n a 5 | 59

Projeto de Sistemas em Microprocessadores

2 Aparato experimental e ferramentas utilizadas


O aparato experimental para construo do medidor de velocidade e frequncia de bolhas composto pelos
seguintes instrumentos e equipamentos:
12345678-

Um taque de vidro de aproximadamente 300L


Um pequeno compressor de ar imerso na gua dentro do tanque, a fim de gerar uma pluma de bolhas
O par de sensores acoplados a uma haste metlica, posicionada com um posicionador
O circuito analgico (ponte de wheatstone e amplificador de instrumentao)
DSP TMSf28335, da famlia C2000 da Texas Instruments
Um teclado matricial 1x4 para entrada de dados pelo usurio
Um Display LCD de Caractere 16x2
Software desenvolvido em CVI para monitorao e aquisio de dados via comunicao serial com o DSP

Na figura 3 abaixo podemos ver um diagrama que esquematiza o mtodo utilizado.

Figura3 Diagrama esquemtico do mtodo utilizado

Como podemos ver na figura 3, nosso sistema basicamente conta com o tanque de vidro de 300L cheio de
gua, com um pequeno compressor de ar provocando a produo do gs no fundo do reservatrio. Os
sensores, defasados verticalmente de uma distncia dx, percebem a passagem da pluma de bolhas. Cada
sensor apresentar uma resistividade em relao a haste metlica que se apresenta afogada no tanque. Cada
sonda servir de entrada ao seu circuito analgico, que basicamente conta com uma ponte de wheatstone, um
amplificador de instrumentao e diodo zener de proteo. Desta forma, cada sinal de tenso servir de

Medidor Eletro-Resistivo em DSP

P g i n a 6 | 59

Projeto de Sistemas em Microprocessadores

entrada a uma porta ADC do DSP F28335 da Texas Instruments. O microprocessador ento aplicar o algoritmo
de digitalizao do sinal (passa altas e comparadores de nvel de sinal, derivada primeira e derivada segunda),
em seguida utilizar o algoritmo de obteno dos parmetros, com rejeio sistemtica de sinais oriundos das
falhas intrusivas do sensor (este tema ser melhor abordado nas sees seguintes) e rejeio estatstica de
resultados fora do padro (critrio de chauvenet). O processador utilizar ainda um pequeno teclado matricial
de 1 linha e 4 colunas e um display LCD de caractere de 16x2.
Utilizando os pinos GPIO, foram configuradas 4 entradas digitais com sensibilidade a transio
para nvel lgico baixo e 12 sadas para comunicao paralela com os pinos do display. oferecido ao usurio
um pequeno menu, dando opes de entrar com distncia entre sondas (dx) e as unidades dos parmetros
medidos (m/s ou mm/s e Hz ou Rpm). O menu controlado no teclado matricial e observado no display. Este
ltimo, ainda, mostra os resultados das medies feitas em tempo real.
Uma outra opo dada ao usurio a de fazer aquisio via comunicao serial (SCI-A) de dados
e monitoramento dos resultados em um software dedicado, feito atravs do CVI (National Instruments). Neste,
teremos a possibilidade de gravar os resultados em arquivos txt e csv (excel).
Vale lembrar que, para este projeto, no foi possvel utilizar o sistema de forma completa pois
a sonda precisava ser reconstruda. Desta forma, para fazer os devidos testes no sistema desenvolvido com o
DSP, utilizamos um sinal antigo obtido atravs do conversor A/D de uma placa de aquisio. Portanto, a parte
do projeto correspondente ao reservatrio, compressor, sonda e circuito analgico foi substituda por uma
placa PCI 6014 da NI que exporta o sinal via porta D/A, utilizando o Matlab/Simulink. Porm, para efeito de
conhecimento da origem do sinal exportado e para futuras etapas deste mesmo projeto explicaremos todos
os componentes e ferramentas nas sees seguintes.

2.1 Construo da Sonda


O sensor eletro-resistivo, basicamente, constitudo por uma agulha (geralmente de
acupuntura, de 0.3 ou 0.5mm) toda revestida com material isolante e impermevel (teflon, epxi ou tinta
isolante), e apenas sua ponta descascada (fazendo o contato com o meio). Cada agulha ligada a um cabo e
presa a uma haste metlica. Como a haste permanece com parte de sua estrutura imersa no meio liquido, um
fio soldado em sua estrutura a fim de que a mesma sirva de retorno comum para ambos os sensores. Na
figura 4 abaixo podemos ver uma ilustrao do sensor.

Figura4 Ilustrao do sensor Eletro-Resistivo

Medidor Eletro-Resistivo em DSP

P g i n a 7 | 59

Projeto de Sistemas em Microprocessadores

A ponta da agulha dever ser o mais fina possvel, sem comprometer a robustez da sonda. Quanto maior
a agulha utilizada na sonda, maior ser a influncia destrutiva do sensor nas bolhas e piores sero os resultados
gerados. Na figura 5 abaixo podemos ver algumas sondas depois de construdas.

Figura5 Sensores eletro-resistivos construdos

Conforme descrito anteriormente, utilizaremos duas sondas paralelas defasadas de uma distncia conhecida.
A figura 6 abaixo ilustra a disposio paralela dos sensores.

Figura6 Sensores eletro-resistivos em paralelo

Medidor Eletro-Resistivo em DSP

P g i n a 8 | 59

Projeto de Sistemas em Microprocessadores

2.2 Circuito Analgico


O circuito analgico basicamente composto de uma ponte de wheatstone, um amplificador de
instrumentao (INA111) com um passa baixas na entrada e diodo comum e diodo zener para proteo da
entrada analgica do DSP (limitada em 3V). O circuito pode ser visto na figura 7 abaixo.

Figura 7 Sensores eletro-resistivos em paralelo

Como podemos observar no circuito acima, a resistncia Rx na ponte de Wheatstone varivel de acordo
com a resistividade do meio. Como o amplificador de instrumentao apresenta alta impedncia, logo a
corrente que circular por R4 ser praticamente nula, a ponto de desprezarmos a queda de tenso nestes
resistores. Assim, portanto, as tenses de entrada no amplificador de instrumentao sero dadas por:

+ = 3+

e = 1+2 (1)

Observe que V+ diretamente proporcional a resistividade do meio em que a sonda est inserida, pois
depende de Rx e V- constante pois no depende desta varivel.
Temos ainda, no circuito da figura 7, um filtro passa baixas conforme recomendao do fabricante do CI
INA111. Analisando a disposio dos capacitores no circuito, chegamos a seguinte equao:
3 =

44 (3 + 1 )

(2)

Este tipo de configurao importante para garantir a filtragem em caso de diferena entre os capacitores C1
e C2 que devem ser iguais.

Medidor Eletro-Resistivo em DSP

P g i n a 9 | 59

Projeto de Sistemas em Microprocessadores

O amplificador de instrumentao utilizado apresenta o seguinte ganho:


= 1+

50

(3)

Utilizando uma resistncia Rg de 47K, teremos que o ganho obtido pela equao 3 ser de 2.1.
Aps a passagem pelo amplificador, utilizamos um diodo zener IN4729 e um diodo IN4148 a fim de limitar a
tenso de entrada na porta ADC do DSP em 2.9V (3.6V do zener menos 0.7V do IN4148).
A resistncia R5 pode ser obtida pela seguinte expresso

5 =

12

(4)

Sabendo que Vz vale 3.6V e Iz, segundo o datasheet do fabricante do IN4729, vale 1mA, obtemos que R5
dever ser de 8.4K.

2.3 O DSP F28335 da Texas Instruments


Os DSPs (Digital Signal Processor) so utilizados em inmeras aplicaes em engenharia, como controle de
motores ou processamento digital de sinais. Basicamente o DSP um microprocessador com alta capacidade
de processamento e que programado de acordo com a necessidade de projeto.
O DSP utilizado neste projeto o TMS320F28335 da famlia C2000 da Texas Instruments. Este, possui, entre
outras, as seguintes caractersticas:

68KB de memria RAM


512KB de memria Flash
At 150MHz de frequncia de CPU
16 canais ADC com resoluo de 12bits e at 80ns de tempo de converso
3 SCI (Serial Communications Interface)
Controle de interrupo
88 GPIO
18 canais de PWM

Na figura 8 abaixo podemos ver a sua estrutura interna.

Medidor Eletro-Resistivo em DSP

P g i n a 10 | 59

Projeto de Sistemas em Microprocessadores

Figura 8 Estrutura interna do F28335

Como podemos ver na figura 8, o DSP possui dois barramentos indepentes: o barramento de dados (Data Bus)
e o barramento de programa (Program Bus). Esta caracterstica possibilita a leitura e transferncia de dois
operandos da memria para a CPU em um nico pulso de clock.
Na figura 8, observamos ainda a presena de registradores auxiliares de 32bits, registradores de 32bits para
multiplicao e adio em ponto fixo e uma unidade de hardware de 32bits chamada FPU para clculos em
ponto flutuante.
Em nosso projeto, utilizaremos 2 canais do mdulo ADC (de converso sincronizada a um ePWM), 14 canais
do mdulo GPIO (10 sadas e 4 entradas digitais), e interface de comunicao serial (SCI-A). Faremos a
programao na memria Flash.

2.4 Teclado Matricial


Utilizamos neste projeto um teclado matricial de 4 teclas. Este perifrico foi integrado ao DSP atravs de 4
entradas digitais. Na figura 9 abaixo podemos ver o teclado utilizado.

Medidor Eletro-Resistivo em DSP

P g i n a 11 | 59

Projeto de Sistemas em Microprocessadores

Figura 9 Teclado Matricial utilizado

No projeto, cada tecla quando apertada aplica uma transio de nvel lgico da entrada digital
correspondente de 1 para 0. Desta forma, cada tecla est associada a uma entrada e todas elas quando
pressionadas comunicam o seu pino a um quinto pino de ground.

2.5 Display LCD de caracteres


O display utilizado se baseia no controlador Hitachi HD44780 LCD, que usa a tabela ASCII como padro de
interpretao dos bits de dados e amostragem de caracteres. Na figura 10 abaixo podemos ver o arranjo dos
16 pinos.

Figura 10 Display LCD

Medidor Eletro-Resistivo em DSP

P g i n a 12 | 59

Projeto de Sistemas em Microprocessadores

No display, os pinos so enumerados de 1 a 16, da esquerda pra direita. Alguns no possuem os pinos 15 e
16, responsveis pelo backlight, possuindo, portanto, apenas 14 pinos. Na tabela 1 abaixo podemos ver
algumas instrues de entrada que sero teis neste projeto.
Tabela 1 instrues aplicveis ao display de caractere

A temporizao entre um enable on e enable off (na tabela, a transio entre estes estados foi
representada por 0-1-0 conforme variao de nvel lgico no pino) para cada instruo normalmente de
37s, de acordo com o datasheet do fabricante. As nicas excees so as instrues de Clear Display (linha
2 da tabela 1) e Cursor Home (linha 3 da tabela 1) cuja temporizao de 1.52ms.
Para escrever um caractere no display, basta utilizar a correspondente sequncia de bits (que pode ser obtida
da tabela ASCII) nos pinos D0-D7, com o RS em nvel lgico 1 e respeitando a temporizao entre o Enable
on e Enable off.
Desta forma, em nosso projeto fizemos as seguintes ligaes de pinos:

Pino 1 ligado ao ground


Pino 2 foi ligado ao Vcc (5v)
Pino 3 Ajuste de Contraste diretamente ligado ao ground
Pino 4 RS: foi ligado a uma sada digital do DSP
Pino 5 R/W: foi ligado ao ground, setando o modo de escrita
Pino 6 Enable: foi ligado a uma sada digital do DSP
Pino 7 D0: foi ligado a uma sada digital do DSP
Pino 8 D1: foi ligado a uma sada digital do DSP
Pino 9 D2: foi ligado a uma sada digital do DSP
Pino 10 D3: foi ligado a uma sada digital do DSP

Medidor Eletro-Resistivo em DSP

P g i n a 13 | 59

Projeto de Sistemas em Microprocessadores

Pino 11 D4: foi ligado a uma sada digital do DSP


Pino 12 D5: foi ligado a uma sada digital do DSP
Pino 13 D6: foi ligado a uma sada digital do DSP
Pino 14 D7: foi ligado a uma sada digital do DSP
Pino 15 Back Light +: foi ligado ao VCC (5V)
Pino 16 Back Light -: foi ligado ao ground

2.6 Comunicao Serial


Comunicao serial um protocolo de comunicao cuja informao transmitida bit a bit. Ela pode ser
classificada nos seguintes modos:

Simplex: comunicao unidirecional feita apenas do transmissor ao receptor


Half-Duplex: A comunicao bidirecional, ou seja, o transmissor tambm receptor, podendo enviar e
receber bits. Porm apenas uma direo pode ser utilizada por vez.
Full-Duplex: A comunicao bidirecional e pode ocorrer simultaneamente.

Quando ao tipo de transmisso, temos ainda duas classificaes: transmisso assncrona e


transmisso sncrona.

2.6.1 - Transmisso Assncrona


Neste tipo de transmisso, a comunicao feita caractere a caractere, no sendo necessrio
sincronismo entre transmissor e receptor. A transmisso no contnua, ou seja, existe um estado de
repouso do transmissor aps enviar um caractere (repouso em nvel lgico alto).
Em transmisses assncronas normalmente utiliza-se a tabela ASCII como base de transmisso
e recepo do conjunto de bits. Na figura 11 abaixo podemos ver uma ilustrao de uma transmisso
deste tipo.

Figura 11 Transmisso Assncrona

Conforme podemos observar na figura 11, uma transmisso de caractere somente iniciada aps o
start bit, que atribui nvel lgico zero em um perodo de tempo aps o estado de repouso (nvel lgico alto).
Aps o Start Bit, inicia-se a transmisso a cadeia de bits que formaro o caractere. A quantidade de bits
transmitidos por caractere pode ser previamente escolhida e normalmente varia entre 5 e 8 bits. Aps a
transmisso do conjunto de bits, ocorre um bit de paridade (para verificao da consistncia da transmisso
feita) e, aps, ocorre o bit de stop, onde novamente ocorre a fixao em nvel lgico alto. O intervalo de tempo
T de transmisso de 1 bit est diretamente relacionado ao baud rate que a taxa de transmisso em bits
por segundo. Desta forma temos que:
Medidor Eletro-Resistivo em DSP

P g i n a 14 | 59

Projeto de Sistemas em Microprocessadores

T = (Baud Rate)-1 (5)


A interface de comunicao serial (SCI) do F28335 uma porta serial assncrona de dois fios conhecida como
UART (Universal Asynchronous Receiver/Transmiter). A comunicao do tipo full duplex.

2.6.2 - Transmisso Sncrona


Neste tipo de transmisso, a comunicao feita continuamente, bit a bit. No existe estado de repouso e
no existe intervalos entre bits ou envio de bits grupo a grupo.
No entraremos nos detalhes deste tipo de transmisso pois no ser utilizado no projeto.

Medidor Eletro-Resistivo em DSP

P g i n a 15 | 59

Projeto de Sistemas em Microprocessadores

3 Parmetros de Projeto
Neste captulo abordaremos os parmetros de projeto, algoritmos criados e apresentaremos os problemas
encontrados e suas respectivas solues.

3.1 Anlise espectral e determinao da frequncia de amostragem


Utilizando um dos sinais antigos do sistema de deteco de bolhas eletro-resistivo, podemos fazer uma
anlise espectral do sinal atravs de sua DFT. O resultado disto pode ser visto na figura 12.

Figura 12 DFT de um antigo sinal do sensor eletro-resistivo

Conforme podemos observar na figura 12, o espectro do sinal est todo concentrado na regio de baixas
frequncias. A maior frequncia observada nesta anlise espectral foi de 280Hz. Portanto, utilizando o critrio
de Nyquist para frequncia de amostragem e sabendo que o sinal que ser utilizado foi amostrado a uma
frequncia de 5KHz, teremos que a frequncia de amostragem do ADC do DSP dever estar entre:
= (6)
(limitao inferior dada pelo critrio de Nyquist)

Medidor Eletro-Resistivo em DSP

(7)

P g i n a 16 | 59

Projeto de Sistemas em Microprocessadores

(limitao superior dada pela frequncia de amostragem do sinal antigo que ser utilizado)

Desta forma, a frequncia de amostragem escolhida foi de 4762Hz, ou seja:


=

= 4762 = 210s (8)

3.2 Projeto do filtro passa altas


Um filtro passa altas digital dever ser utilizado a fim de impedir que variaes de resistividade
encontradas na mesma fase (devido a presena de impurezas que modificam as propriedades qumicas do
meio) e de eliminar a componente DC do sinal para facilitar o processamento.

3.2.1 - Funo de transferncia do filtro em tempo contnuo


O filtro passa altas a ser projetado dever eliminar a componente DC do sinal. Desta forma,
utilizaremos uma frequncia de corte igual a 0.02Hz em um filtro de primeira ordem. A funo de
transferncia para este filtro ser, portanto:

() = + = +0.1256 (9)

Simulando este filtro no simulink, com o sinal da sonda como entrada, teremos o resultado da figura 13.

Figura 12 Resultado da aplicao do filtro

Como podemos observar na figura 12, a componente DC foi perfeitamente eliminada do sinal.

Medidor Eletro-Resistivo em DSP

P g i n a 17 | 59

Projeto de Sistemas em Microprocessadores

3.2.2 - Funo de transferncia do filtro em tempo discreto e equao a diferenas


Para realizar a discretizao da funo de transferncia dada pela equao 9, utilizaremos a equao
bilinear (regra de Tustin). A relao entre a varivel contnua s e a varivel discreta z dada por esta regra
pode ser vista na equao 10 abaixo.

2
0

11
1+ 1

(10)

Desta forma, substituindo a equao 9 pela equao 10, teremos que:

() =

22 1
1 (0 2)+(2+0 )

()
()

(11)

Nas equaes 10 e 11 temos que T0 o perodo de amostragem, Y(z) o sinal discretizado de sada e
U(z) o sinal discretizado de entrada. Aplicando a transformada Z inversa da equao 11, sabendo que Y(z)*z 1
= ytk-1 e Y(z) * constante = constante*ytk (o mesmo vlido para u(z)) teremos a seguinte equao a
diferenas do filtro passa altas, que ser implementada em cdigo no DSP:

2 2 +1 (20 )
2+ 0

(12)

3.3 Deteces falsas dos sensores eletro-resistivos

Deteces falsas dos sensores eletro-resistivos podem ocorrer tanto na sonda individual quando no
par de sensores. Qualquer deteco que no esteja relacionada a uma dinmica intrusiva de pouca influncia
na geometria do escoamento (no caso da sonda individual) ou de deteco da mesma bolha por parte das
duas sondas considerada falsa. No nosso caso, um escoamento bifsico de ar e gua, em uma sonda
individual podemos citar os seguintes problemas:
1 Bolha deformada pelo sensor: quando uma bolha deformada pelo sensor um atraso gerado entre o
momento da chegada na bolha no sensor e a mudana de fase a ser percebido pelo mesmo. Isso ocorre em
funo do uso de agulhas um pouco grossas.
2-Bolha desviada do sensor: ocorre quando uma bolha passa pela regio do sensor, porm defletida e no o
toca, ou seja, no percebida por ele.
3- Bolha Rompida pelo sensor: ocorre quando o sensor lentamente deforma a bolha at a sua ruptura. Nesta
situao o sensor no detecta a bolha.
Na figura 13 podemos ver essas trs situaes ilustradas

Medidor Eletro-Resistivo em DSP

P g i n a 18 | 59

Projeto de Sistemas em Microprocessadores

Figura 13 problemas em deteco de bolhas em uma sonda

Para o par de sensores podemos identificar os seguintes problemas:


1- Uma bolha pequena toca o segundo sensor e no toca o primeiro: o aparecimento de pequenas
bolhas em um escoamento bifsico muito comum. Desta forma, tambm ser comum uma
pequena bolha tocar apenas um dos sensores, gerando resultados equivocados.
2- Uma bolha toca o primeiro sensor, desvia e no toca no segundo sensor.
3- Duas bolhas pequenas tocam cada uma um sensor diferente, gerando concluses precipitadas da
velocidade daquela bolha.
Os trs casos descritos acima podem ser vistos na figura 14 abaixo.

Figura 14 problemas em deteco de bolhas em um par de sondas

Medidor Eletro-Resistivo em DSP

P g i n a 19 | 59

Projeto de Sistemas em Microprocessadores

Desta forma, um algoritmo de processamento dos sinais deve ser capaz de:
1) Rejeitar um sinal detectado por uma sonda e no detectado pela outra
2) Rejeitar quando o sinal da segunda sonda aparecer antes da primeira
3) Rejeitar um resultado quando ele for formado por duas bolhas distintas no lugar de uma

3.4 Algoritmo de digitalizao do sinal


O sinal de um sensor eletro-resistivo, proveniente da passagem de uma bolha pela sonda, precisa ser
digitalizado a fim de que se facilite a obteno dos parmetros associados. O sinal caracterstico pode ser visto
na figura 15.

Figura 15 sinal caracterstico e sua derivada primeira e segunda

Observe que o sinal, na passagem da bolha, sobe lentamente. Isso deve ao filme de lquido remanescente na
sonda e que demora a secar.
A digitalizao do sinal depender de quatro variveis: a derivada primeira do sinal; a derivada segunda do
sinal; a sada do filtro passa altas; o sinal digitalizado no instante t-1. No diagrama simulink da figura 16
abaixo, podemos entender melhor a lgica de binarizao do sinal.

Medidor Eletro-Resistivo em DSP

P g i n a 20 | 59

Projeto de Sistemas em Microprocessadores

Figura 16 Diagrama de blocos de deteco

Na figura 16 podemos observar que as quatro condies de entrada no primeiro And no so


satisfeitas simultaneamente enquanto a sonda estiver imersa no meio lquido. Desta forma, a sada do primeiro
And, ser sempre o zero negado, ou seja, 1. O programa fica aguardando a derivada primeira assumir um
valor superior a 0.1 (entrada da porta Or). Quando essa condio satisfeita, ou seja, no instante da
passagem da bolha, teremos que ambas as entradas do segundo bloco And sero iguais a 1, gerando uma
sada em nvel lgico alto. A partir deste ponto, independente do que acontea com a derivada primeira (que
sofre variaes, enquanto o sinal est respondendo a passagem da bolha), o sinal passar a observar o sinal
digital no instante anterior (bloco 1/z da entrada do Or). Desta forma, a sada continuar em nvel lgico 1
at o instante em que as 4 condies de entrada do primeiro And so satisfeitas (derivada primeira entre 0.12 e 0, derivada segunda maior que zero e nvel de sinal inferior a 0.2) e a sada do And fica sendo igual a
1, em seguida sendo negado e se tornando zero. A partir da o segundo And ter uma entrada em nvel lgico
1 (porta Or) e nvel lgico 0(porta And e Not), gerando uma sada nula. Deste momento em diante, a
entrada correspondente ao instante t-1 do sinal digitalizado passar a enxergar zero novamente. Desta forma
o sinal volta ao estado inicial, ou seja, quando no h passagem da bolha.
O diagrama de blocos da figura 16 pode ser substitudo pela linha de cdigo em C abaixo, que
utiliza a mesma lgica booleana para digitalizao do sinal:

Medidor Eletro-Resistivo em DSP

P g i n a 21 | 59

Projeto de Sistemas em Microprocessadores

Sinal_digitalizado[n]=((der1>0.1)|| Sinal_digitalizado[n-1] )&&(1-((der1[n]>-0.12)&&(der1[n]<0)&&(der2[n]>0)&&(y[n]<0.2)))

3.5 Algoritmo de obteno de parmetros


Com o sinal digitalizado, devemos agora obter as informaes que o par de sinais capaz de
fornecer. Na figura 17 abaixo podemos ver um par de sinais ideais.

Figura 17 Sinais digitais ideais

Sabendo que o par de sensores est defasado de uma distncia dx, podemos calcular a velocidade da
bolha:
=

(13)

Sabendo o valor da velocidade e o tempo que a bolha leva para atravessar o sensor (Tbolha), podemos
determinar o seu tamanho:
=

(14)

Para determinao destes tempos T e Tbolha, a estratgia criada em algoritmo a utilizao do


diferencial do sinal digitalizado, ou seja:

(_) = _() _( 1) (15)

Desta forma, teremos o sinal da figura 18.

Medidor Eletro-Resistivo em DSP

P g i n a 22 | 59

Projeto de Sistemas em Microprocessadores

Figura 18 sinal digital e seu diferencial

Como podemos observar na figura 18 acima, atravs do sinal digital diferencial podemos delimitar o instante
de incio da passagem da bolha como 1 e o instante do fim da bolha como -1. Desta forma, para calcular os
parmetros da bolha, basta seguir 5 passos:
1) Iniciar contador1 e contador2 quando a sonda 1 apresentar um sinal diferencial igual a 1.
2) Quando a sonda 2 apresentar sinal diferencial 1, parar o contador1. Sabendo que T0 o perodo de
amostragem, teremos que:

T = (contador1-1)*T0
Velocidade = dx/T
Incrementar um contador3
3) Quando o sinal diferencial 1 atingir o valor -1 (final da bolha), verificar se o passo 2 realmente aconteceu.
Se o passo 2 tiver acontecido:

Parar contador2
Tamanho_bolha = (contador2-1)*T0*Velocidade

4) Zerar contadores 1 e 2

5) Aps um perodo de tempo Tfreq, fazer:

Frequencia = contador3/Tfreq
Zerar contador3

Medidor Eletro-Resistivo em DSP

P g i n a 23 | 59

Projeto de Sistemas em Microprocessadores

Observe que, seguindo os 5 passos acima, ns garantimos que:


a) Um sinal que detectado por um sensor mas no detectado pelo outro ser rejeitado;
b) O sinal ser rejeitado se o sinal da sonda 2 se antecipar em relao ao sinal da sonda 1.

Desta forma, podemos verificar que apenas falta criar uma rotina de rejeio de um sinal quando os
dois sensores percebem bolhas diferentes na correta ordem de subida (sensor 1 e depois sensor 2), resultando
em valores aleatrios de velocidade. Para resolver este problema, utilizaremos um critrio estatstico que ser
apresentado na prxima seo.

3.6 O critrio de rejeio de Chauvenet


O critrio de Chauvenet um mtodo de rejeio de resultados, em um conjunto n de medies que
estatisticamente tem o comportamento da distribuio normal. Desta forma, os resultados a serem
desprezados neste conjunto tem a seguinte tero uma probabilidade menor que 1/2n e, consequentemente,
os resultados no desprezados tero uma probabilidade na faixa de 1-1/2n.
Tomando a curva de distribuio normal da figura 19, cuja mdia igual a e desvio padro , temos
que os resultados bons ocuparo a faixa central cuja rea igual a (1-1/2n)*100% da rea da curva.

Figura 19 distribuio normal

Como podemos observar da figura 19, os resultados considerados ruins so aqueles que so maiores
que a mdia somados de uma constante vezes o desvio padro ou menores que a mdia subtrados de uma
constante vezes o desvio padro. Essa constante C varia de acordo com o nmero de amostras e pode ser
obtida da tabela 2 abaixo.

Medidor Eletro-Resistivo em DSP

P g i n a 24 | 59

Projeto de Sistemas em Microprocessadores

Tabela 2 critrio de Chauvenet

N
3
4
5
6
7
8
9
10
15
20
25
50
100
300
500
1000

C
1,38
1,54
1,65
1,73
1,80
1,87
1,91
1,96
2,13
2,24
2,33
2,57
2,81
3,14
3,29
3,48

Portanto, em um conjunto N de amostras, uma medida ser considerada boa se estiver na faixa:
. ( ) + . , = 1, 2, (16)
Em que:
=
=1

()

=
=1

Medidor Eletro-Resistivo em DSP

(17)

()
1

(18)

P g i n a 25 | 59

Projeto de Sistemas em Microprocessadores

3.6.1 - Critrio de Chauvenet adaptado para operar em tempo real


Em nossa aplicao, como estamos tratando os dados em tempo real, precisamos que o critrio de rejeio
tambm funcione em tempo real.
Para utilizar o critrio de chauvenet em tempo real, faremos os seguintes passos:
1) Consideraremos inicialmente uma janela de 15 amostras. Dessas primeiras 15 amostras eu irei obter
a mdia atravs da equao 17.
2) Depois obter mais 15 amostras, e destas calcular o desvio padro atravs da equao 18 e com base
na primeira mdia e calcular novamente a mdia equivalente.
3) Com a mdia e desvio padro, calcular os limites superior e inferior dados pela equao 16 e tabela 2
4) A partir deste ponto somente aceitar pontos que estejam dentro dos limites definidos em (3).
5) Aps mais 15 amostras voltar para (2) para recalcular os parmetros
6) Se passarem dois segundos sem que mais nenhuma amostra tenha sido obtida dentro dos critrios,
voltar ao passo 1.

Medidor Eletro-Resistivo em DSP

P g i n a 26 | 59

Projeto de Sistemas em Microprocessadores

4 Utilizao e programao do DSP


Para desenvolvimento do cdigo utilizamos o software Code Composer Studio da Texas Instruments. Neste,
nos baseamos em trs exemplos para elaborao do projeto, os quais de forma muito resumida indicamos
sua principal caracterstica.
ADC_SOC:
Neste exemplo ocorre a converso Analgica Digital de dois canais (ADC2 e ADC3) via Epwm. No exemplo,
uma interrupo habilitada a cada evento especfico de Epwm, iniciando a converso.
SCI_ECHOBACK:
Este exemplo realiza comunicao serial. Um caractere enviado ao DSP atravs da porta Rx e o mesmo
retorna ao emissor atravs da porta Tx. Portanto temos uma porta serial assncrona de dois fios UART
(Universal Asynchronous Receiver/Transmiter) e comunicao full duplex.
FLASH_F28335
Este exemplo vem configurado para operar na memria flash do dsp. Para tanto ele realiza a inicializao da
flash e insere o arquivo F28335.cmd no lugar do arquivo 28335_RAM_Ink.cmd para que se conecte as sadas
programas na memria flash do DSP.
Nas sees seguintes descreveremos como foi feita a configurao e programao da CPU, interrupes,
ADC, GPIO e SCI para realizao do projeto.

4.1 Configurao de CPU, inicializao de perifricos e interrupes


O clock do F28335 gerado pelo oscilador de cristal em uma frequncia de 35MHz. A opo por utilizar um
oscilador de baixa frequncia e um circuito PLL para gerar as demais frequncias est relacionada a reduo
da interferncia eletromagntica. Dois pr-escalonadores de clock so utilizados para configurar a entrada de
clock de perifricos: o High-Speed Clock Pre-scaler (HISPCP), utilizado para escalonar o clock no ADC e o lowSpeed Clock Pre-scaler (LSPCLK) utilizado para escalonar o clock no SCI, SPI, I2C e McBSP. Quando no
configurados, assumem valores default (HSPCLK = 2 E LSPCLK = 4).
Abaixo temos algumas linhas de cdigo responsveis pela configurao de frequncia de trabalho da CPU,
inicializao de perifricos e configurao de interrupes presentes no cdigo de projeto, dentro da funo
main que em seguida so comentadas:
InitSysCtrl()
Responsvel pela desabilitao do Watchdog; inicializao de clock dos perifericos e determinando
frequncia de trabalho da CPU a partir do oscilador de 30MHZ com os pre-escalonadores DIV E DIVSEL.
Assim a CPU foi configurada a trabalhar em SYSCLKOUT = 10*30/2 = 150MHz (DIV = 10 e DIVSEL = 2)
InitSciaGpio();

Medidor Eletro-Resistivo em DSP

P g i n a 27 | 59

Projeto de Sistemas em Microprocessadores

inicializao da interfece de comunicao serial (SCI)


DINT;
Desabilita interrupes
#define ADC_MODCLK 0x3
Esta instruo define o valor da constante pre-escalonadora de clock do perifrico ADC (HSPCLK),
SysCtrlRegs.HISPCP.all = ADC_MODCLK
Aplicao do ADC_MODCLK para configurar o clock do perifrico ADC, ou seja: HSPCLK =
SYSCLKOUT/2*ADC_MODCLK = 150/(2*3) = 25.0 MHz
InitPieCtrl();
Instruo que apaga interrupes pendentes e desabilita canais de interrupo
InitPieVectTable()
Instruo que faz com que a memria dos perifricos inicialize em um estado conhecido. Esses estados iniciais
esto na tabela de interrupes disponvel no arquivo DSP2833x_pievect includa na rvore de projeto. Esta
mesma tabela copiada em uma varivel global chamada pievectable que foi definida atravs do arquivo
DSP2833x_GlobalVariableDefs.c
InitFlash()
Inicializao da memria flash do DSP
PieVectTable.ADCINT = &adc_isr;
Remapeamento de interrupo para a funo Isr contida dentro do cdigo
scia_fifo_init();
Inicializao do SCI FIFO
scia_echoback_init();
Inicializao das configuraes utilizadas no SCI (essa parte ser melhor explicada na seo 4.4)
InitAdc();
Inicializao do ADC
EINT;
Instruo que habilita interrupes
ERTM;
Macro que habilita interrupes de debug

Medidor Eletro-Resistivo em DSP

P g i n a 28 | 59

Projeto de Sistemas em Microprocessadores

4.2 Configurao de ADC


Conforme mencionado anteriormente, utilizamos como base o exemplo ADC_SOC para utilizao do conversor
A/D de 12 bits do DSP. Nosso projeto utiliza o mecanismo de interrupo para o ADC: o microprocessador
executa o cdigo presente dentro da funo main e de forma temporizada (sincronizada com o epwm) executa
o cdigo presente na funo de interrupo do ADC (interrupt void adc_isr(void)).

4.2.1 - Configurao do ADC na funo main


As linhas de configurao ADC, presentes na funo main, esto explicadas abaixo:
AdcRegs.ADCMAXCONV.all = 0x0001;

Determina o nmero de canais a serem convertidos. Se igual a zero, teremos apenas um canal de converso.
Como queremos utilizar dois canais de converso em nosso projeto, atribuiremos a instruo em
hexadecimal 0x0001 a este registrador.
AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x3; AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x2;

As instrues acima correlacionam o estado ao canal de entrada. Acima, correlacionamos os estados 0 e 1


(CONV00 e CONV01) as entradas ADCINA3 e ADCINA2 respectivamente.
AdcRegs.ADCTRL2.bit.EPWM_SOCA_SEQ1 = 1;

A instruo acima uma mscara que habilita a converso ADC via Epwm.
AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1;

Habilita o uso de interrupo


EPwm1Regs.ETSEL.bit.SOCAEN = 1;

Habilita o ADC Start of Conversion A (SOCA)


EPwm1Regs.ETSEL.bit.SOCASEL = 4;

Configura o CMPA como evento de mudana de nivel lgico do EPWM


EPwm1Regs.ETPS.bit.SOCAPRD = 1;

Gera o pulso de converso logo no primeiro evento


EPwm1Regs.CMPA.half.CMPA = 0x0080;

CMPA responsvel pela largura do pulso (lembrando que CMPA deve ser sempre menor que TBPRD)
EPwm1Regs.TBCTL.bit.CTRMODE = 0;

Aqui eu defino meu pwm como sendo do tipo count up


EPwm1Regs.TBPRD = T0*150000000/2;

Medidor Eletro-Resistivo em DSP

P g i n a 29 | 59

Projeto de Sistemas em Microprocessadores

Aqui eu defino a frequncia de pwm. Como nosso pwm do tipo count up, vlida a regra: TBPRD = Tpwm *
sysclkout / clkdiv*hspclkdiv. Observe que Tpwm o mesmo que TADC pois o pwm quem temporiza a converso.
Desta forma, escolhendo um intervalo de aquisio de dados definido como T0 (210s), sabendo que CLKDIV=1
e HSPCLKDIV = 2 por default e a frequncia de CPU (SYSCLkOUT) igual a 150000000, logo TBPRD = 210*10-6 *
150 *106/2 = 15750

4.2.2 - Algoritmos de digitalizao, deteco e rejeio na funo de interrupo ADC


Nesta seo veremos os trechos de cdigo que compem a funo de interrupo interrupt void
adc_isr(void).
4.2.2.1- Associao do valor de converso de 12bits a uma varivel float
Nas linhas de cdigo a seguir veremos como utilizar o valor de converso ADC e associar as variveis de
entrada do cdigo.
Voltage1 = AdcRegs.ADCRESULT0 >>4;
Voltage2 = AdcRegs.ADCRESULT1 >>4;
fVoltage1 = ((float)(Voltage1))*3/4095;
fVoltage2 = ((float)(Voltage2))*3/4095;
if((aux4==0)&&(ConversionCount<2))
{
if(ConversionCount==0) utk1[0]= fVoltage1;
if(ConversionCount==1) utk1[1]= fVoltage1;
if(ConversionCount==0) utk2[0]= fVoltage2;
if(ConversionCount==1) utk2[1]= fVoltage2;
}
else
{
if ((aux4==0)&&(ConversionCount==2))
{
utk1[2]= fVoltage1;
utk2[2]= fVoltage2;
aux4=1;
}
else
{
utk1[0]=utk1[1];
utk1[1]=utk1[2];
utk1[2]=fVoltage1;
utk2[0]=utk2[1];
utk2[1]=utk2[2];
utk2[2]= fVoltage2;
}

Nas linhas de cdigo acima, temos duas variveis inteiras de 16bits (Voltage1 e Voltage2) associadas aos valores
de converso de 12bits do ADC (ADCRESULT0 e ADCRESULT1) que so deslocados de 4bits a direita para que o
valor de converso de 12bits ocupe as primeiras posies da varivel de 16bits. Em seguida, essa varivel inteira
convertida em um float, multiplicando o valor inteiro pelo maior valor lido pela entrada ADC (3V) e dividindo
pelo maior valor inteiro que pode ser obtido pelo registrador de 12bits (212 1 = 4095).

Medidor Eletro-Resistivo em DSP

P g i n a 30 | 59

Projeto de Sistemas em Microprocessadores

As demais linhas de cdigo so responsveis por associar valores iniciais para as variveis utk1 e utk2 que na
verdade so as prprias entradas de sinal do ADC. Uma varivel auxiliar (aux4) foi criada para garantir que
essas instrues apenas sejam feitas uma vez. Aps isso, a varivel que um vetor de floats com trs posies
ir se atualizar de forma cclica, ou seja, sempre a posio 2 do vetor ser a mais atual, a posio 1
corresponder ao valor anteriormente lido e a posio 0 ao valor lido h dois ciclos atrs.
4.2.2.2- Filtro passa altas, digitalizao e aplicao da funo diferencial
Nas linhas de cdigo a seguir veremos a aplicao dos algoritmos de digitalizao do sinal, filtro passa altas e
funo diferencial de sinal digitalizado no sinal.
ytk[2] = (2*utk1[2] - 2*utk1[1]+((ytk[1])*(2-T0*wc)))/(2 + T0*wc);
der1 = (ytk[2]-ytk[1])/(T0*800);
der2 = (ytk[2]-2*ytk[1]+ytk[0])*(0.0000004)/T0;
result[2]=((der1>0.1)||result[1])&&(1-((der1>-0.12)&&(der1<0)&&(der2>0)&&(ytk[2]<0.2)));
ytk2[2] = (2*utk2[2] - 2*utk2[1]+((ytk2[1])*(2-T0*wc)))/(2 + T0*wc);
der22=(ytk2[2]-2*ytk2[1]+ytk2[0])*(0.00000015)/T0;
der11 = (ytk2[2]-ytk2[1])/(T0*800);
result2[2]=((der11>0.1)||result2[1])&&(1-((der11> 0.12)&&(der11<0)&&(der22>0)&&(ytk2[2]<0.2)));

dif1 = result[2]-result[1];
dif2 = result2[2]-result2[1];

No cdigo acima, temos que ytk e ytk2 so as sadas do filtro passa altas, T0 o intervalor de aquisio, wc a
frequncia de corte utilizada em rad/s, der1 e der11 so os valores de derivada primeira, der2 e der22 so os
valores de derivada segunda, result e result2 so os valores de sinal digitalizado, dif1 e dif2 so os sinais
digitalizados diferenciais. Observe que aqui vale a mesma regra anterior: os vetores de posio 2 so os mais
atuais, os de posio 1 so os de um ciclo anterior e os de posio 0 so os de 2 ciclos anteriores. Ao final da
funo de interrupo do ADC essas variveis so sempre atualizadas.
4.2.2.3- Determinao de Resultados e critrio de rejeio de chauvenet
Nas linhas de cdigo abaixo implementamos a determinao dos parmetros e o critrio de rejeio.
if((dif1==1)||(aux1==1))
{
if(aux1==0)
{
aux1=1;
}
Contador = Contador + 1;
count1 = count1 + 1;
if((dif2==1)&&(aux2==0))
{
time2 = (Contador-1)*T0;
velocidade = Dx/(time2);
time2=0;
count2 = count2+1;
if(velocidade)
{
count_freq++;
Velx = velocidade;
aux6=1;

Medidor Eletro-Resistivo em DSP

P g i n a 31 | 59

Projeto de Sistemas em Microprocessadores

if(aux5==0)
{
ttf = ttf+Velx;
N++;
N2=0;
}
if(aux5==1)
{
ttf = ttf+Velx;
vari = (Velx-medi)*(Velx-medi) + vari;
N++;
N2=0;
}
if((aux5==2)&(Velx<tsup)&(Velx>tinf))
{
N2=0;
ttf = ttf+Velx;
vari = (Velx-medi)*(Velx-medi)+vari;
N++;
}
}
aux2=1;
Contador=0;
}
if(dif1==-1)
{
if(velocidade != 0)
{
time_bolha = (count1-1)*T0;
tamanho = velocidade*time_bolha;
aux2=0;
velocidade = 0;
}
count1=0;
aux2=0;
Contador=0;
velocidade=0;
aux1=0;
}
}
}
if(couta*T0>2)
{
if(N==0)
{
aux5=0;
Velx=0;
freq=0;
medi=0;
ttf=0;
vari=0;
aux6=0;
aux9=0;
aux10=0;
aux11=0;
count2=0;
tinf = 0;
tsup = 0;

Medidor Eletro-Resistivo em DSP

P g i n a 32 | 59

Projeto de Sistemas em Microprocessadores

DP=0;
count_freq=0;
count4=0;
}
if(N2==1)
{
N=0;
}
N2=1;
couta=0;
}
if(N>15)
{
if(aux5==0)
{
aux5=1;
medi=ttf/N;
N=0;
count2=0;
count_freq=0;
count4=0;
}
if(aux5==1&N!=0)
{
medi=ttf/N;
DP = sqrt(vari/(N-1));
C = 2.13;
tsup = C*DP+medi;
tinf = medi-C*DP;
aux5=2;
N=0;
count2=0;
count_freq=0;
count4=0;
}
if(aux5==2&N!=0)
{
medi = ttf/N;
DP = sqrt(vari/(N-1));
C = 2.13;
tsup = C*DP+medi;
tinf = medi-C*DP;
N=0;
auxc=0;
freq = count_freq/((count4-1)*T0);
count_freq=0;
count4=0;
}
couta=0;
ttf=0;
var=0;
vari=0;
}
if(aux6==1)
{
couta++;
}
count4++;

Medidor Eletro-Resistivo em DSP

P g i n a 33 | 59

Projeto de Sistemas em Microprocessadores

As linhas de cdigo anteriores utilizam os algoritmos das sees 3.5 e 3.6. Como utilizamos uma janela fixa de
15 amostras, o valor de C utilizado 2.13, conforme podemos ver na tabela 2. Temos ainda que a varivel tsup
representa o valor limitante superior e tinf o valor limitante inferior para aceitao de amostras.

4.3 Entradas e sadas digitais (GPIO)


Existem 88 pinos de entrada e sada digitais (I/O) no DSP F28335. Elas esto organizadas em trs portas digitais
A,B e C. Cada pino I/O pode ser configurado para fins diferentes, como por exemplo o PWM, interface de
comunicao serial (SCI) ou sada e entrada digital. Na figura 20 abaixo podemos ver o diagrama de blocos
correspondente ao GPIO.

Figura 20 Diagrama de blocos do GPIO

Na figura 21 abaixo podemos ver o GPIO organizado por multiplexador

Figura 21 GPIO organizado por multiplexador

Medidor Eletro-Resistivo em DSP

P g i n a 34 | 59

Projeto de Sistemas em Microprocessadores

Nas linhas abaixo podemos ver os registradores de operao disponveis.


GPxDIR
Utilizado para definir a direo dos dados, ou seja, se um determinado GPIO ser uma entrada (se igual a 0)
ou sada digital (se igual a 1).
GPxCLEAR
Esta uma mscara utilizada para forar o pino ao nvel lgico baixo (0)
GPxSET
Esta uma mscara utilizada para forar o pino ao nvel lgico alto (1)
GPxTOGGLE
Esta uma mscara utilizada para forar o pino ao nvel inverso.
GPxDAT
Esta uma mscara utilizada para acessar e modificar o nvel lgico de um pino.
GPIO Input Qualification:
utilizado para minimizar rudos no sinal digital. Este recurso est disponvel somente nos 64 primeiros GPIO.

4.3.1 - Mapa de entradas e sadas digitais aos perifricos (display e teclado)


Conforme j descrito anteriormente, nosso projeto conta com um teclado matricial e um display de caractere.
Os pinos do display de caractere foram ligados em sadas digitais e os pinos do teclado matricial foram ligados
em entradas digitais do DSP. Na tabela 3 abaixo podemos ver como foram ligados os pinos GPIO nos pinos do
display.
Tabela 3 arranjo de pinos GPIO no display

Pino GPIO do DSP


GPIO16
GPIO17
GPIO18
GPIO19
GPIO20
GPIO21
GPIO22
GPIO23
GPIO24
GPIO26

Pino do Display
D0
D1
D2
D3
D4
D5
D6
D7
RS
ENABLE

Na tabela 4 podemos ver como foram ligados os pinos GPIO nos pinos do teclado matricial.

Medidor Eletro-Resistivo em DSP

P g i n a 35 | 59

Projeto de Sistemas em Microprocessadores

Tabela 4 Arranjo de pinos GPIO no teclado

Pino GPIO do DSP Pino do Teclado


GPIO25
3
GPIO27
1
GPIO30
2
GPIO31
4

Funo
Ok
Up
Down
Return

4.3.2 - Instrues de configurao dos pinos GPIO


Nas linhas de cdigo abaixo podemos ver como os pinos, disponveis nas tabelas 3 e 4, foram configurados.

EALLOW;
GpioCtrlRegs.GPAMUX2.bit.GPIO16
GpioCtrlRegs.GPAMUX2.bit.GPIO17
GpioCtrlRegs.GPAMUX2.bit.GPIO18
GpioCtrlRegs.GPAMUX2.bit.GPIO19
GpioCtrlRegs.GPAMUX2.bit.GPIO20
GpioCtrlRegs.GPAMUX2.bit.GPIO21
GpioCtrlRegs.GPAMUX2.bit.GPIO22
GpioCtrlRegs.GPAMUX2.bit.GPIO23
GpioCtrlRegs.GPAMUX2.bit.GPIO24
GpioCtrlRegs.GPAMUX2.bit.GPIO25
GpioCtrlRegs.GPAMUX2.bit.GPIO26
GpioCtrlRegs.GPAMUX2.bit.GPIO27
GpioCtrlRegs.GPAMUX2.bit.GPIO30
GpioCtrlRegs.GPAMUX2.bit.GPIO31
GpioCtrlRegs.GPADIR.bit.GPIO16
GpioCtrlRegs.GPADIR.bit.GPIO17
GpioCtrlRegs.GPADIR.bit.GPIO18
GpioCtrlRegs.GPADIR.bit.GPIO19
GpioCtrlRegs.GPADIR.bit.GPIO20
GpioCtrlRegs.GPADIR.bit.GPIO21
GpioCtrlRegs.GPADIR.bit.GPIO22
GpioCtrlRegs.GPADIR.bit.GPIO23
GpioCtrlRegs.GPADIR.bit.GPIO24
GpioCtrlRegs.GPADIR.bit.GPIO25
GpioCtrlRegs.GPADIR.bit.GPIO26
GpioCtrlRegs.GPADIR.bit.GPIO27
GpioCtrlRegs.GPADIR.bit.GPIO30
GpioCtrlRegs.GPADIR.bit.GPIO31
EDIS;

=
=
=
=
=
=
=
=
=
=
=
=
=
=

=
=
=
=
=
=
=
=
=
=
=
=
=
=

0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
0;
1;
1;
1;
1;
1;
1;
1;
1;
1;
0;
1;
0;
0;
0;

Observe que utilizamos somente o Mux 2 do GPIO A. Primeiramente configuramos os pinos como entradas e
sadas digitais (GpioCtrlRegs.GPAMUX2.bit.GPIOx = 0) e em seguida configuramos a direo de dados dos
pinos (GPADIR).

Medidor Eletro-Resistivo em DSP

P g i n a 36 | 59

Projeto de Sistemas em Microprocessadores

4.3.3 - Funes bsicas utilizadas nos GPIO


As funes dispostas a seguir esto diretamente relacionadas as portas GPIO utilizadas e sero comentadas
em seguida:

void stri(char entrada[]) //funo para mandar uma string de entrada ao display
{
var=0;
tam =tamanh(entrada); //AQUI DEFINO O TAMANHO DA MINHA STRING DE TEXTO PADRO
while (var<(tam))
{
car = entrada[var];
bite[0] = (car&(1));
bite[1] = ((car)&(2))>>1;
bite[2] = ((car)&(4))>>2;
bite[3] = ((car)&(8))>>3;
bite[4] = ((car)&(16))>>4;
bite[5] = ((car)&(32))>>5;
bite[6] =((car)&(64))>>6;
bite[7] = ((car)&(128))>>7;
GpioDataRegs.GPADAT.bit.GPIO24 = 1;
if(bite[0]==1) GpioDataRegs.GPASET.bit.GPIO16 = 1;
else GpioDataRegs.GPACLEAR.bit.GPIO16 = 1;
if(bite[1]==1) GpioDataRegs.GPASET.bit.GPIO17 = 1;
else GpioDataRegs.GPACLEAR.bit.GPIO17 = 1;
if(bite[2]==1) GpioDataRegs.GPASET.bit.GPIO18 = 1;
else GpioDataRegs.GPACLEAR.bit.GPIO18 = 1;
if(bite[3]==1) GpioDataRegs.GPASET.bit.GPIO19 = 1;
else GpioDataRegs.GPACLEAR.bit.GPIO19 = 1;
if(bite[4]==1) GpioDataRegs.GPASET.bit.GPIO20 = 1;
else GpioDataRegs.GPACLEAR.bit.GPIO20 = 1;
if(bite[5]==1) GpioDataRegs.GPASET.bit.GPIO21 = 1;
else GpioDataRegs.GPACLEAR.bit.GPIO21 = 1;
if(bite[6]==1) GpioDataRegs.GPASET.bit.GPIO22 = 1;
else GpioDataRegs.GPACLEAR.bit.GPIO22 = 1;
if(bite[7]==1) GpioDataRegs.GPASET.bit.GPIO23 = 1;
else GpioDataRegs.GPACLEAR.bit.GPIO23 = 1;
GpioDataRegs.GPASET.bit.GPIO26 = 1;
dela(delay_value);
GpioDataRegs.GPACLEAR.bit.GPIO26 = 1;
var++;
}
var22 = 0;
}
char* fti(float num, Uint16 parametro) //funo que converte o float de entrada em
string
{
Uint16 n1=0;
Uint16 n2=0;
Uint16 n3=0;
Uint16 n4=0;
Uint16 n5=0;
char *s;
s = malloc( 6 * sizeof (char));
if(parametro==0)

Medidor Eletro-Resistivo em DSP

P g i n a 37 | 59

Projeto de Sistemas em Microprocessadores

{
char c1,c2,c3,c4;
n1= num/10;
n2= (num-(n1*10))/1;
n3 = ((num*10-n1*100-n2*10))/1;
n4=(num*100-n1*1000-n2*100-n3*10)/1;
c1 = n1 + 48;
c2 = n2 + 48;
c3 = n3 + 48;
c4 = n4 + 48;
s[0] = c1;
s[1] = c2;
s[2] = '.';
s[3] = c3;
s[4] = c4;
s[5] = '\0';
}
else if(parametro==1)
{
char c1,c2,c3;
n1= num/10;
n2= (num-(n1*10))/1;
n3 = ((num*10-n1*100-n2*10))/1;
c1 = n1 + 48;
c2 = n2 + 48;
c3 = n3 + 48;
if(n1!=0)
{
s[0]
}
else
{
s[0]
}
if(n2!=0)
{
s[1]
}
else
{
s[1]
}

= c1;

= ' ';

= c2;

= ' ';

s[2] = '.';
s[3] = c3;
s[4] = '\0';
}
else if(parametro==60)
{
num = num*parametro;
char c1,c2,c3,c4,c5;
n1= num/10000;

Medidor Eletro-Resistivo em DSP

P g i n a 38 | 59

Projeto de Sistemas em Microprocessadores

n2= (num-(n1*10000))/1000;
n3 = ((num-n1*10000-n2*1000))/100;
n4=(num-n1*10000-n2*1000-n3*100)/10;
n5=(num-n1*10000-n2*1000-n3*100-n4*10);
c1 = n1 + 48;
c2 = n2 + 48;
c3 = n3 + 48;
c4 = n4 + 48;
c5 = n5 + 48;
if(n1==0)
{
s[0] = ' ';
}
else
{
s[0] = n1;
}
if((n2==0)&(n1==0))
{
s[1] = ' ';
}
else
{
s[1] = c2;
}
if((n3==0)&(n1==0)&(n2==0))
{
s[2] = ' ';
}
else
{
s[2] = c3;
}
if((n3==0)&(n1==0)&(n2==0)&(n4==0))
{
s[3] = ' ';
}
else
{
s[3] = c4;
}
s[4] = c4;
s[5] = '\0';
}
else
{
num = num*parametro;
char c1,c2,c3,c4,c5;
n1= num/10000;
n2= (num-(n1*10000))/1000;
n3 = ((num-n1*10000-n2*1000))/100;
n4=(num-n1*10000-n2*1000-n3*100)/10;
n5=(num-n1*10000-n2*1000-n3*100-n4*10);
c1 = n1 + 48;
c2 = n2 + 48;

Medidor Eletro-Resistivo em DSP

P g i n a 39 | 59

Projeto de Sistemas em Microprocessadores

c3 = n3 + 48;
c4 = n4 + 48;
c5 = n5 + 48;
if(n1==0)
{
s[0] = ' ';
}
else
{
s[0] = n1;
}
if((n2==0)&(n1==0))
{
s[1] = ' ';
}
else
{
s[1] = c2;
}
if((n3==0)&(n1==0)&(n2==0))
{
s[2] = ' ';
}
else
{
s[2] = c3;
}
if((n3==0)&(n1==0)&(n2==0)&(n4==0))
{
s[3] = ' ';
}
else
{
s[3] = c4;
}

s[4] = c4;
s[5] = '\0';
}
return(s);
}
void cursor_init_erase(void)
{
GpioDataRegs.GPACLEAR.all = 0x01FE0000;
GpioDataRegs.GPASET.all = 0x04010000;
dela(delay_value);
GpioDataRegs.GPACLEAR.bit.GPIO26 = 1;
}
void cursor_init(void)
{
GpioDataRegs.GPACLEAR.all = 0x01FD0000;
GpioDataRegs.GPASET.all = 0x04020000;
dela(delay_value);
GpioDataRegs.GPACLEAR.bit.GPIO26 = 1;

Medidor Eletro-Resistivo em DSP

P g i n a 40 | 59

Projeto de Sistemas em Microprocessadores

}
void cursor_init_l2(void)
{
GpioDataRegs.GPACLEAR.all = 0x013F0000;
GpioDataRegs.GPASET.all = 0x04C00000;
dela(delay_value);
GpioDataRegs.GPACLEAR.bit.GPIO26 = 1;
}
void cursor_desloc(Uint16 desl)
{
GpioDataRegs.GPASET.all = 0x00140000;
GpioDataRegs.GPACLEAR.all = 0x00EB0000;
j=0;
while(j<desl)
{
GpioDataRegs.GPASET.bit.GPIO26 = 1;
dela(delay_value);
GpioDataRegs.GPACLEAR.bit.GPIO26 = 1;
j++;
}
}
void cursor_desliga(void)
{
GpioDataRegs.GPACLEAR.all = 0x01F30000;
GpioDataRegs.GPASET.all = 0x040C0000;
dela(delay_value);
GpioDataRegs.GPACLEAR.bit.GPIO26 = 1;
}
void cursor_liga(void)
{
GpioDataRegs.GPACLEAR.all = 0X01F00000;
GpioDataRegs.GPASET.all = 0X040F0000;
dela(delay_value);
GpioDataRegs.GPACLEAR.bit.GPIO26 = 1;
}

void disp_vel(float veloc, Uint16 Par)


{
rt= fti(veloc,Par);
cursor_init();
cursor_desloc(5);
strcpy(rt2,rt);
stri(rt2);
scia_msg(rt2);
}
void disp_freq(float corda,Uint16 Par)
{
rt3= fti(corda, Par);
cursor_init_l2();
cursor_desloc(6);
strcpy(rt4,rt3);
stri(rt4);
scia_msg(rt4);
}

Medidor Eletro-Resistivo em DSP

P g i n a 41 | 59

Projeto de Sistemas em Microprocessadores

A funo stri recebe uma string de entrada e a direciona ao display. Para isso, ela separa caractere por
caractere desta string e do caractere separa bit por bit para ser associado ao GPIO correspondente ao envio
dos dados ao display.
A funo fti recebe um float de entrada e o converte para string. Ela utilizada para indicar os resultados no
display e para envia-los via porta serial.
As funes cursor_init_erase, cursor_init, cursor_init_l2, cursor_desloc, cursor_desliga e cursor_liga esto
associadas as linhas 2,3,12,11 e 9 da tabela 1, respectivamente.
As funes disp_vel e disp_freq so responsveis por atualizar os resultados de velocidade e frequncia no
display.

4.3.4 - Menu de interao com o usurio


Um menu de interao com o usurio foi criado. Neste, podemos escolher a unidade a ser utilizada para cada
parmetro (m/s ou mm/s para velocidade e Hz ou Rpm para frequncia). Podemos ainda entrar com a distncia
entre os sensores, para o caso de se utilizar outros pares de sensores com diferentes defasagens espaciais. O
cdigo responsvel pela dinmica do menu pode ser visto abaixo:
while(1)
{
menu1:
if(jjj==0)
{
cursor_init_erase();
stri("( )Medicao");
cursor_init_l2();
stri("( )Configuracoes");
cursor_init();
cursor_desloc(1);
jjj=1;
}
if((GpioDataRegs.GPADAT.bit.GPIO27==0)&(Up==0))
{
Up = 1;
Down = 0;
cursor_init();
cursor_desloc(1);
}
if((GpioDataRegs.GPADAT.bit.GPIO31==0)&(Down==0))
{
Up = 0;
Down = 1;
cursor_init_l2();
cursor_desloc(1);
}
if((GpioDataRegs.GPADAT.bit.GPIO25==0)&(Up==1))
{
break;
}
if((GpioDataRegs.GPADAT.bit.GPIO25==0)&(Down==1))

Medidor Eletro-Resistivo em DSP

P g i n a 42 | 59

Projeto de Sistemas em Microprocessadores

{
menu2:
cursor_init_erase();
stri("( )Unidades");
cursor_init_l2();
stri("( )Dist. Sondas");
cursor_init();
cursor_desloc(1);
Up=1; Down=0;
while(1)
{
if((GpioDataRegs.GPADAT.bit.GPIO27==0)&(Up==0))
{
Up = 1;
Down = 0;
cursor_init();
cursor_desloc(1);
}
if((GpioDataRegs.GPADAT.bit.GPIO31==0)&(Down==0))
{
Up = 0;
Down = 1;
cursor_init_l2();
cursor_desloc(1);
}
if(GpioDataRegs.GPADAT.bit.GPIO30==0)
{
jjj=0;
goto menu1;
}
if(GpioDataRegs.GPADAT.bit.GPIO25==0&Up==1)
{
menu3:
cursor_init_erase();
stri("( )Velocidade");
cursor_init_l2();
stri("( )Frequencia");
cursor_init();
cursor_desloc(1);
Up=1; Down=0;
while(1)
{
if((GpioDataRegs.GPADAT.bit.GPIO27==0)&(Up==0))
{
Up = 1;
Down = 0;
cursor_init();
cursor_desloc(1);
}
if((GpioDataRegs.GPADAT.bit.GPIO31==0)&(Down==0))
{
Up = 0;
Down = 1;
cursor_init_l2();
cursor_desloc(1);

Medidor Eletro-Resistivo em DSP

P g i n a 43 | 59

Projeto de Sistemas em Microprocessadores

}
if(GpioDataRegs.GPADAT.bit.GPIO30==0)
{
jjj=0;
goto menu2;
}
if(GpioDataRegs.GPADAT.bit.GPIO25==0&Up==1)
{
cursor_init_erase();
stri("( )m/s");
cursor_init_l2();
stri("( )mm/s");
cursor_init();
cursor_desloc(1);
Up=1; Down=0;
while(1)
{
if((GpioDataRegs.GPADAT.bit.GPIO27==0)&(Up==0))
{
Up = 1;
Down = 0;
cursor_init();
cursor_desloc(1);
}
if((GpioDataRegs.GPADAT.bit.GPIO31==0)&(Down==0))
{
Up = 0;
Down = 1;
cursor_init_l2();
cursor_desloc(1);
}
if(GpioDataRegs.GPADAT.bit.GPIO30==0)
{
jjj=0;
goto menu3;
}
if(GpioDataRegs.GPADAT.bit.GPIO25==0&Up==1)
{
univel = "m/s";
Velocidade = 0;
goto menu3;
}
if(GpioDataRegs.GPADAT.bit.GPIO25==0&Down==1)
{
univel = "mm/s";
Velocidade = 1000;
goto menu3;
}
}
}
if(GpioDataRegs.GPADAT.bit.GPIO25==0&Down==1)
{

Medidor Eletro-Resistivo em DSP

P g i n a 44 | 59

Projeto de Sistemas em Microprocessadores

cursor_init_erase();
stri("( )Hz");
cursor_init_l2();
stri("( )Rpm");
cursor_init();
cursor_desloc(1);
Up=1; Down=0;
while(1)
{
if((GpioDataRegs.GPADAT.bit.GPIO27==0)&(Up==0))
{
Up = 1;
Down = 0;
cursor_init();
cursor_desloc(1);
}
if((GpioDataRegs.GPADAT.bit.GPIO31==0)&(Down==0))
{
Up = 0;
Down = 1;
cursor_init_l2();
cursor_desloc(1);
}
if(GpioDataRegs.GPADAT.bit.GPIO30==0)
{
jjj=0;
goto menu3;
}
if(GpioDataRegs.GPADAT.bit.GPIO25==0&Up==1)
{
unicor = "Hz";
Frequencia = 0;
goto menu3;
}
if(GpioDataRegs.GPADAT.bit.GPIO25==0&Down==1)
{
unicor = "Rpm";
Frequencia = 60;
goto menu3;
}
}
}
}
}
if(GpioDataRegs.GPADAT.bit.GPIO25==0&Down==1)
{
cursor_desliga();
cursor_init_erase();
stri(" Dist. Sondas");
setcont:
cursor_init_l2();
stri("");
strcpy(rt6,fti(distson,1));

Medidor Eletro-Resistivo em DSP

P g i n a 45 | 59

Projeto de Sistemas em Microprocessadores

stri(rt6);
stri("mm");
stri("
+");
cursor_init();
cursor_desloc(1);
Up=1; Down=0;
while(1)
{
if((GpioDataRegs.GPADAT.bit.GPIO27==0)&(distson<31))
{
distson = distson + 0.1;
Dx = distson/1000;
goto setcont;
}
if((GpioDataRegs.GPADAT.bit.GPIO31==0)&(distson>(0)))
{
distson = distson - 0.1;
Dx = distson/1000;
goto setcont;
}
if(GpioDataRegs.GPADAT.bit.GPIO30==0|GpioDataRegs.GPADAT.bit.GPIO25==0)
{
jjj=0;
cursor_liga();
goto menu2;
}
}
}
}
}
}
delay_value=2;
cursor_desliga();
cursor_init_erase();

Basicamente o menu funciona acessando o nvel lgico da porta de entrada GPIO. As variveis Up e Down
servem para que o programa no se perca em relao a posio de cursor definida pelo usurio. Se o boto Up
apertado, a varivel Up ganha uma ficha e Down a perde. Se o usurio pressiona o boto Down, a varivel
Up perde a ficha e a Down a ganha. Utilizando a funo goto eu posso alternar entre um menu e outro
apertando o boto return.

Medidor Eletro-Resistivo em DSP

P g i n a 46 | 59

Projeto de Sistemas em Microprocessadores

4.3.5 - Fluxograma de uso do GPIO


Na figura 22 abaixo podemos ver o fluxograma simplificado de uso de GPIO.

Ligar display
Modo 8 bits

Ligar segunda
linha

Mensagem de
entrada no
display

Menu
Unidades e
Dist. entre Sondas definidas
Pelo usurio

Funo Main:
Se o numero de
amostras for 15:
Atualizar velocidade e
frequencia no display

A cada 210 s
Velocidade
Frequncia

Funo de
Interrupo ADC:
Recalculo os valores
de velocidade e
frequncia

Figura 22 fluxograma de uso do GPIO

Medidor Eletro-Resistivo em DSP

P g i n a 47 | 59

Projeto de Sistemas em Microprocessadores

4.4 Interface de Comunicao Serial (SCI)


A interface de comunicao serial realiza a transmisso e recepo por fios diferentes (Tx e Rx), em uma
comunicao que, como j vimos, do tipo full duplex. O DSP pode se comunicar com o computador ou outros
dispositivos que utilizem o padro NRZ (Non-return-to-zero).
Chamamos de SCICLK o clock correspondente ao SCI. Ele controlado pelo LSPCLK e pelo BRR (Baud-Rate
Register), que um registrador de 16bits utilizado para configurao da taxa de transmisso. Por default, o
LSPCLK vale 37.5MHz, ou seja, o resultado da diviso do SYSCLKOUT por 4, caso no seja configurado.
Podemos calcular o SCICLK a partir da equao 19 abaixo:
=

+1

(19)

Na prtica, no nos preocuparemos em calcular o SCICLK. Devemos somente verificar a taxa de


transmisso necessria para realizar a comunicao, e em funo disso calculamos o BRR correspondente.
Sabendo que um bit ocupa 8 ciclos do SCICLK, podemos reformular, na equao 20 abaixo, a equao 19 em
funo do BRR.

. 8

1 (20)

Outros importantes parmetros de configurao do SCI so o nmero de bits de parada e bit de


paridade. Podemos ainda utilizar um recurso conhecido como FIFO (First In, First Out). Os FIFOs armazenam as
informaes de envio e chegada em buffers, podendo enviar ou receber at 16 caracteres em uma nica
interrupo de CPU.
Conforme mencionado anteriormente, no projeto utilizamos como base o exemplo SCI ECHOBACK.
Nele, a transmisso e recepo de bits foram configuradas para ocorrer em um Baud Rate igual a 9600, sem
bit de paridade, 1 bit de stop e 8 bits de dados. Utilizaremos as funes scia_xmit (envio de um caractere via
serial) e a funo scia_msg presentes no exemplo.

4.4.1 Programa em CVI para comunicao serial com DSP e aquisio de dados
Atravs da ferramenta de criao de programas com interface grfica em C (CVI/LABWINDOWS) da
Texas Instruments, criamos um programa para realizar a comunicao serial e salvar os dados em um arquivo
txt ou csv (excel). O usurio tem a opo de somente fazer aquisio de dados, somente monitorar os
resultados (atualizados em tempo real) pelo programa ou fazer as duas coisas. Na figura 23 podemos ver o
programa criado.

Medidor Eletro-Resistivo em DSP

P g i n a 48 | 59

Projeto de Sistemas em Microprocessadores

Figura 23 programa criado no CVI

Conforme podemos ver na figura 23, o programa caracterizado por possuir 3 ilhas:
Configuraes de porta: nesta regio, configuramos a porta serial de entrada do dsp no computador. Caso
acontea algum problema de configurao por parte do usurio, uma mensagem padro de erro aparecer
na tela.
Resultados: nesta rea os resultados so atualizados para monitoramento. O usurio pode optar por desligar
a atualizao de resultados.
Aquisio de Dados: nesta regio o usurio define o nome, extenso (csv ou txt) e diretrio ao qual o arquivo
de aquisio de dados ser salvo. A aquisio de dados tambm opcional, podendo ser desligada.

Medidor Eletro-Resistivo em DSP

P g i n a 49 | 59

Projeto de Sistemas em Microprocessadores

5 Resultados obtidos
Nas sees a seguir analisaremos vrios aspectos a fim de verificar se os resultados obtidos foram
satisfatrios.

5.1 Menu de Comunicao com o usurio


Ao ligar o DSP, que j possui o cdigo em memria Flash, aparecer a seguinte mensagem de entrada da
figura 24.

Figura 24 menu do display

Aps a mensagem, uma tela de menu ser aberta ao usurio, conforme podemos ver na figura 25.

Figura 25 menu do display

Se o usurio apertar Ok (boto 3), imediatamente se iniciar a medio. Se o usurio apertar o boto para
baixo (boto 2) e em seguida apertar Ok, abrir a seguinte tela de configurao da figura 26.

Medidor Eletro-Resistivo em DSP

P g i n a 50 | 59

Projeto de Sistemas em Microprocessadores

Figura 26 menu do display

Se o usurio pressionar o boto para baixo e em seguida der Ok, abrir a configurao de distncia entre
sondas, conforme podemos ver na figura 27

Figura 27 menu do display

Apertando o boto UP (boto 1) o usurio incrementa 0.1mm no valor de distncia entre sonda e apertando
Down (boto 2), subtrai 0.1mm do valor de distncia entre sonda, que vai sendo atualizado imediatamente
no display. Apertando ok, eu dou um valor para a varivel Dx do cdigo, que representa a distncia entre
sensores para clculo da velocidade.
Apertando o boto Return (boto 4), eu volto para a tela da figura 26. Aqui posso selecionar a opo
Unidades apertando Ok. Em seguida, aparecero na tela as opes que pode ser vistas na figura 28.

Medidor Eletro-Resistivo em DSP

P g i n a 51 | 59

Projeto de Sistemas em Microprocessadores

Figura 28 menu do display

Conforme podemos ver na figura 28, o usurio pode escolher entre configurar unidades da velocidade ou
frequncia. Escolhendo configurar velocidade, teremos a tela da figura 29 abaixo

Figura 29 menu do display

De acordo com a escolha que fao nesta etapa, eu modo a forma com que o resultado se apresentar tanto
no prprio display quanto no programa CVI. Na figura 30 podemos ver a tela de configurao de unidades de
frequncia.

Medidor Eletro-Resistivo em DSP

P g i n a 52 | 59

Projeto de Sistemas em Microprocessadores

Figura 30 menu do display

Aps fazer as devidas escolhas para unidades e distncia entre sondas, apertando o boto return, o usurio
deve voltar a tela da figura 25 para ento selecionar a opo medio para ento comear a mostrar os
resultados.
Ao sair do menu, o programa detectar se existe ou no algum sinal na entrada. Se no existir ele transmitir
a mensagem da figura 31 no display

Figura 31 mensagem indicando ausncia de sinal na entrada

Se existir algum sinal de entrada, o programa imediatamente iniciar o processo de clculos dos parmetros
estatsticos para rejeio de valores discrepantes. Durante este processo, a mensagem da figura 32 aparecer
no display.

Medidor Eletro-Resistivo em DSP

P g i n a 53 | 59

Projeto de Sistemas em Microprocessadores

Figura 32 mensagem indicando clculo de parmetros estatsticos

Logo aps obter os parmetros estatsticos, o display mostrar os resultados da medio, conforme podemos
ver na figura 33.

Figura 33 Resultado

5.2 Frequncia de amostragem do ADC


Conforme vimos em sees anteriores, o perodo de amostragem utilizado para este projeto foi de 210s.
Entretanto, precisamos ver se, de fato, esse perodo de amostragem est adequado ao tempo gasto na rotina
de cdigo inserida dentro da interrupo do ADC. Para verificar isso, colocamos uma sada set no inicio da

Medidor Eletro-Resistivo em DSP

P g i n a 54 | 59

Projeto de Sistemas em Microprocessadores

funo de interrupo e uma sada clear no mesmo pino no final da funo. O resultado obtido pode ser visto
na figura 34.

Figura 34 perodo de amostragem do sinal no osciloscpio

Pela figura 34, podemos ver que, de fato, o intervalo de aquisio ocorreu em exatamente 210s. A largura
do pulso set que vemos na figura 34 representa o tempo gasto com aquela sequncia de instrues dentro
da funo. Assim, todo esse tempo em que o sinal aparece em reset poderia ser eliminado diminuindo-se o
intervalo de aquisio at o limite do valor da largura do pulso unitrio. O valor do tempo correspondente a
essa largura pode ser observado na figura 35.

Medidor Eletro-Resistivo em DSP

P g i n a 55 | 59

Projeto de Sistemas em Microprocessadores

Figura 35 durao de instrues na funo de interrupo do ADC, no osciloscpio

Como podemos ver na figura 35, o tempo gasto para realizar as instrues dentro da funo de interrupo do
ADC de 7.840s. Portanto, em aplicaes futuras, quando o sistema estiver operando novamente com o sinal
dos sensores e no com o sinal antigo enviado pelo conversor D/A da placa de aquisio, poderemos aumentar
a frequncia de amostragem para 50KHz, resultando em um perodo prximo a 20s, de modo a equilibrar o
tempo disponvel a ser gasto nas instrues da funo main (12.16 s) e da interrupo (7.840s).

5.3 Resultados obtidos no programa de interface serial


O programa de comunicao serial para aquisio de dados apresentou perfeito sincronismo com os
resultados apresentados em display, salvando os dados com sucesso em um documento txt ou csv nomeado
pelo usurio. Na figura 36 abaixo podemos ver o programa indicando os resultados, e na figura 37 o arquivo
gerado com os pontos salvos. Lembrando que cada linha do arquivo salvo representa a mdia de 15 amostras
que foram aceitas pelo critrio de chauvenet.

Medidor Eletro-Resistivo em DSP

P g i n a 56 | 59

Projeto de Sistemas em Microprocessadores

Figura 37 programa de comunicao serial funcionando e mostrando resultados

Figura 38 dados aquisitados pelo programa

Medidor Eletro-Resistivo em DSP

P g i n a 57 | 59

Projeto de Sistemas em Microprocessadores

No arquivo indicado pela figura 37, temos que a coluna da esquerda representa os valores de velocidade salvos
e a coluna da direita os valores de frequncia de passagem de bolhas salvos.

5.4 Comparao entre os resultados obtidos pelo DSP e Matlab


Conforme j descrito anteriormente, utilizamos um sinal antigo da sonda eletro-resistiva cujos pontos
estavam salvos em um arquivo de workspace do matlab para realizar os nossos testes no DSP. Na tabela 5 a
seguir podemos ver a comparao entre os resultados encontrados, o erro e a discrepncia relativa.

Tabela 5 Comparao entre resultados

Parmetro Medido
Velocidade mdia
Frequncia mdia

DSP
Matlab
Erro
Discrepancia Relativa (%)
1,4943 m/s 1,5 m/s 0,0057 m/s
0,38
4,23 Hz 4,3042 Hz 0,0742 Hz
1,724

Como podemos ver na tabela 5, os resultados encontrados foram muito prximos, obtendo um erro e
discrepncia relativa muito pequenos.

Medidor Eletro-Resistivo em DSP

P g i n a 58 | 59

Projeto de Sistemas em Microprocessadores

6 Concluso
No captulo 1 deste trabalho, vimos a importncia de quantificao das variveis de interesse em um
escoamento multifsico e como o conhecimento destas pode otimizar um processo industrial, um projeto.
Vimos ainda o princpio bsico de funcionamento do sensor eletro-resistivo e como ele pode ajudar na medio
de escoamentos bifsicos cujo acesso tico seja precrio.
No captulo 2 apresentamos as ferramentas necessrias para construo do medidor eletro-resistivo e
no captulo 3 vimos os parmetros de projeto e algoritmos para processamento e rejeio estatstica e
sistemtica de resultados discrepantes.
No captulo 4 vimos alguns perifricos do DSP TMS320F28335, bem como apresentamos como cada
um foi programado.
No captulo 5, vimos que os resultados obtidos com o sinal vindo do matlab foi excelente. Os erros e
as discrepncias para velocidade e frequncia calculados no dsp foram muito pequenos. Portanto, agora com
o sistema funcionando para o sinal vindo da placa de aquisio, para futuros projetos deve-se agora reconstruir
a sonda danificada e organizar os circuitos e o dsp em uma estrutura, de modo a assim, concluir a construo
de um robusto instrumento de medio de velocidade e frequncia de bolhas.

7 Bibliografia
[01]Using Enhanced Pulse Width Modulator (ePWM) Module for 0-100% Duty Cycle Control
http://www.ti.com/lit/an/spraai1/spraai1.pdf
[02] TMS320x2802x, 2803x Piccolo Enhanced Pulse Width Modulator (ePWM) Module

http://www.ti.com/lit/ug/spruge9e/spruge9e.pdf
[03] TMS320F28335, TMS320F28334, TMS320F28332 TMS320F28235, TMS320F28234, TMS320F28232
Digital Signal Controllers (DSCs)

http://www.ti.com/lit/ds/symlink/tms320f28335.pdf
[04] Running an Application from Internal Flash Memory on theTMS320F28xxx DSP
[05] TMS320x2834x Delfino Serial Communications Interface (SCI)

Medidor Eletro-Resistivo em DSP

P g i n a 59 | 59

Você também pode gostar