Marcio Socrates Sperandio Goncalves

40
UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO CENTRO TECNOLÓGICO DEPARTAMENTO DE ENGENHARIA ELÉTRICA PROJETO DE GRADUAÇÃO MEDIDOR DE DISTÂNCIAS E ÁREAS USANDO MICROCONTROLADOR MÁRCIO SÓCRATES SPERANDIO GONÇALVES VITÓRIA – ES AGOSTO/2005

Transcript of Marcio Socrates Sperandio Goncalves

Page 1: Marcio Socrates Sperandio Goncalves

UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO

CENTRO TECNOLÓGICO DEPARTAMENTO DE ENGENHARIA ELÉTRICA

PROJETO DE GRADUAÇÃO

MEDIDOR DE DISTÂNCIAS E ÁREAS USANDO MICROCONTROLADOR

MÁRCIO SÓCRATES SPERANDIO GONÇALVES

VITÓRIA – ES AGOSTO/2005

Page 2: Marcio Socrates Sperandio Goncalves

MÁRCIO SÓCRATES SPERANDIO GONÇALVES

MEDIDOR DE DISTÂNCIAS E ÁREAS USANDO MICROCONTROLADOR

Parte manuscrita do Projeto de Graduação do aluno Marcio Sócrates Sperandio Gonçalves, apresentado ao Departamento de Engenharia Elétrica do Centro Tecnológico da Universidade Federal do Espírito Santo, para obtenção do grau de Engenheiro Eletricista.

VITÓRIA – ES AGOSTO/2005

Page 3: Marcio Socrates Sperandio Goncalves

MÁRCIO SÓCRATES SPERANDIO GONÇALVES

MEDIDOR DE DISTÂNCIAS E ÁREAS USANDO MICROCONTROLADOR

COMISSÃO EXAMINADORA: ___________________________________ Prof. Dr. Paulo Faria Santos Amaral Orientador ___________________________________ Prof. Dr. Ailson Rosetti de Almeida. Examinador ___________________________________ Prof. Dr. Evandro Ottoni Teatini Salles. Examinador

Vitória - ES, 05, agosto, 2005

Page 4: Marcio Socrates Sperandio Goncalves

i

DEDICATÓRIA

Aos meus pais, Ferdinando e Lourdes.

Page 5: Marcio Socrates Sperandio Goncalves

ii

AGRADECIMENTOS

Agradeço a todos os professores do Departamento de Engenharia Elétrica da

UFES, principalmente, ao Professor Paulo F. S. Amaral, que me orientou e me ajudou

na montagem e desenvolvimento deste projeto.

Aos colegas e funcionários do Curso, que de alguma forma, contribuíram para a

realização deste trabalho.

Page 6: Marcio Socrates Sperandio Goncalves

iii

LISTA DE FIGURAS

Figura 1 – Diagrama de blocos do medidor ................................................................... 9

Figura 2 – Sensor: Encoder CP-350 [2] ....................................................................... 10

Figura 3 – Sinal de Saída do Encoder [2] .................................................................... 11

Figura 4 – Diagrama de blocos do HCTL-2016 [3] .................................................... 12

Figura 5 – HCTL2016 [3] ............................................................................................ 12

Figura 6 – Pinagem do PIC [1] .................................................................................... 14

Figura 7 – Esquema de acionamento do LCD ............................................................. 15

Figura 8 - LCD e botões .............................................................................................. 16

Figura 9 – Fonte Chaveada [4] .................................................................................... 16

Figura 10 – Eficiência X Corrente de saída [4] ........................................................... 17

Figura 11 – Potência Dissipada X Corrente de saída [4] ............................................. 17

Figura 12 – Diagrama do circuito ................................................................................ 18

Figura 13 – Medidor de Distância e Áreas .................................................................. 19

Figura 14 – Roda, eixo e engrenagens ......................................................................... 20

Figura 15 – Placa com o Microcontrolador ................................................................. 20

Figura 16 – Menu 1 ...................................................................................................... 23

Figura 17 – Fluxograma para medir distâncias............................................................ 24

Figura 18 – Cálculo de uma área complexa ................................................................. 25

Figura 19 – Fluxograma para cálculo da área .............................................................. 25

Figura 20 - Medindo distância ..................................................................................... 28

Page 7: Marcio Socrates Sperandio Goncalves

iv

LISTA DE TABELA

Tabela 1 – Memória do PIC [1] ................................................................................... 15

Tabela 2 - Distância percorrida em 3 voltas da roda ................................................... 27

Tabela 3 - Valores de raio encontrados ....................................................................... 27

Tabela 4 – Valores medidos ........................................................................................ 29

Page 8: Marcio Socrates Sperandio Goncalves

v

SUMÁRIO

DEDICATÓRIA ........................................................................................................... I

AGRADECIMENTOS .............................................................................................. II

LISTA DE FIGURAS ............................................................................................... III

LISTA DE TABELA ................................................................................................ IV

SUMÁRIO .................................................................................................................... v

RESUMO .................................................................................................................. VII

1 INTRODUÇÃO ................................................................................................ 8

1.1 Motivação............................................................................................................ 8

1.2 Definição do problema e desafios ....................................................................... 8

1.3 O Funcionamento ................................................................................................ 9

1.4 Estrutura do trabalho ........................................................................................... 9

2 O HARDWARE .............................................................................................. 10

2.1 Introdução ......................................................................................................... 10

2.2 Descrição do circuito ........................................................................................ 10

2.2.1 O sensor ................................................................................................... 10

2.2.2 Tratamento do sinal .............................................................................. 11

2.2.3 O microcontrolador ............................................................................... 13

2.2.4 O display ou LCD ................................................................................. 15

2.2.5 Alimentação do circuito ........................................................................ 16

2.3 Diagrama do circuito ......................................................................................... 18

2.4 Conclusões ........................................................................................................ 18

3 A MONTAGEM ............................................................................................. 19

3.1 Introdução ......................................................................................................... 19

3.2 A roda, eixo e redução ...................................................................................... 19

3.3 Placa de circuito impresso ................................................................................ 20

3.4 Conclusões ........................................................................................................ 21

4 O SOFTWARE ............................................................................................... 22

4.1 Introdução ......................................................................................................... 22

4.2 Funcionamento do programa ............................................................................ 22

Page 9: Marcio Socrates Sperandio Goncalves

vi

4.2.1 Medição de distâncias ............................................................................. 23

4.2.2 Cálculo da área ........................................................................................ 24

4.3 Conclusões ........................................................................................................ 26

5 RESULTADOS ............................................................................................... 27

5.1 Introdução ......................................................................................................... 27

5.2 Método de calibração ........................................................................................ 27

5.3 Medições de distâncias ..................................................................................... 28

5.4 Cálculo de áreas ................................................................................................ 29

6 CONCLUSÕES .............................................................................................. 30

REFERÊNCIAS BIBLIOGRÁFICAS ..................................................................... 31

APÊNDICE A – CÓDIGO DO PROGRAMA ........................................................ 32

Page 10: Marcio Socrates Sperandio Goncalves

vii

RESUMO

Neste trabalho apresenta-se a construção de um equipamento para medir

distâncias, e áreas com a forma geométrica de um retângulo.

O projeto é composto de um roda com um suporte, acoplada a um encoder CP-

350 que converte o sinal ótico gerado com o movimento da roda, em um sinal elétrico,

que será enviado à placa com um microcontrolador.

Os pulsos adquiridos são contados e através de uma multiplicação, realizada

pelo microcontrolador, da quantidade de pulsos contados pelo valor de distância que

um pulso representa, teremos as dimensões das distâncias desejadas.

Efetuadas 2 medidas de distâncias, o microcontrolador é capaz de calcular a

área, fazendo o produto de um comprimento vezes a largura e armazenar este resultado

se assim for desejado para compor um resultado de uma área mais complexa.

A construção deste equipamento resultou em um produto de fácil manuseio,

com alta precisão e confiabilidade.

Page 11: Marcio Socrates Sperandio Goncalves

8

1 INTRODUÇÃO

1.1 Motivação

Medições de distâncias realizadas de forma manual, com auxílio de uma trena,

normalmente é uma operação cansativa e pouco precisa. A utilização equipamentos

que utilizam laser ou ultra-som também possui limitações em relação à distância de

alcance e a necessidade de uma superfície refletora para funcionarem.

Os conhecimentos adquiridos ao longo do curso de Engenharia Elétrica foram

utilizados para o desenvolvimento de um medidor de distâncias digital, que aplica

conhecimentos de eletrônica, microcontroladores e linguagem de programação.

1.2 Definição do problema e desafios

Um medidor de distâncias digital deve ser um produto de baixo custo, portátil e

de fácil manuseio, e ainda com uma boa precisão.

Um equipamento de medição deste tipo, aparentemente pode parecer um

problema simples de se resolver, porém no momento em que se começa a pensar na

construção de uma solução portátil, viável e estável, os desafios começam a surgir.

O primeiro desafio encontrado surgiu no momento de realizar a leitura do

encoder e enviar o sinal para o microcontrolador, visto que a interferência de ruídos

poderia gerar erros na leitura. Para resolver este problema, poderia ser implementada

uma solução via software que permitiria minimizar estes erros, porém o conhecimento

de um chip adequado para realizar a interface do encoder com o microcontrolador,

permitiu uma solução mais rápida e confiável, sendo esta a escolhida.

Outro problema foi o erro na medição devido à posição inicial em que se inicia

a medição e a posição final de chegada, que pode ocasionar um erro de até 2 cm,

decorrente da inclinação do suporte do equipamento. Para resolver esta questão faz-se

necessário que a posição inicial da medição coincida com a inclinação no ponto final

da medição.

Page 12: Marcio Socrates Sperandio Goncalves

9

1.3 O Funcionamento

O sistema é baseado em uma roda com um suporte para fixação do seu eixo,

acoplada a um encoder que converterá o sinal ótico gerado com o movimento da roda,

em um sinal elétrico, que será enviado para a placa com o microcontrolador.

Os pulsos adquiridos serão contados pelo HCTL e lidos pelo PIC, que efetuará

uma multiplicação da quantidade de pulsos contados pelo valor de distância que um

pulso representa, apresentando as dimensões das distâncias desejadas no display.

O diagrama de blocos é apresentado na figura 1.

Figura 1 – Diagrama de blocos do medidor

1.4 Estrutura do trabalho

Na primeira parte, abordamos o problema com uma visão mais ampla,

mostrando de forma geral o funcionamento do medidor digital de distâncias e áreas, e

os desafios que existiram na construção de um produto confiável e de fácil manuseio.

Nos próximos capítulos serão expostos detalhadamente os passos para a

construção e o funcionamento do equipamento. No capítulo 2 será abordada a

obtenção do circuito eletrônico do medidor, no capítulo 3, a montagem da roda com a

redução, o suporte para o encoder e da placa microcontrolada contendo o display. O

capítulo 4 apresenta o funcionamento do programa que o microcontrolador executa.

No capítulo 5, aparecem os resultados e no capítulo 6 as conclusões.

Page 13: Marcio Socrates Sperandio Goncalves

10

2 O HARDWARE

2.1 Introdução

Após a determinação dos problemas existentes, começa-se a pensar no

funcionamento do circuito, que é o foco deste capítulo. Serão abordados os problemas

e soluções encontradas para a obtenção do hardware do equipamento.

2.2 Descrição do circuito

Para facilitar o entendimento do seu funcionamento, o capítulo será dividido em

blocos distintos, na mesma linha de raciocínio que levou à criação do projeto.

2.2.1 O sensor

O circuito eletrônico necessita de um sensor para capturar a rotação do eixo da

roda e assim medir a distância percorrida.

O sensor usado para capturar a rotação do eixo é um encoder rotativo. O

encoder é um dispositivo ótico que converte uma posição mecânica em um sinal

elétrico, através de um disco moldado ou uma escala, uma fonte luminosa e elementos

fotossensíveis. Com uma interface eletrônica, posição e velocidade podem ser obtidas.

Utilizou-se o encoder CP-350, da Computer Optical Encoder [2]. É um

dispositivo pequeno (±40mm) e robusto, em que a fonte luminosa é um único diodo de

silício monolítico. O encoder é visível na figura 2.

Figura 2 – Sensor: Encoder CP-350 [2]

O Encoder é alimentado com uma tensão de 5V DC e drena uma corrente de 36

mA. O sinal de saída é digital e incremental, possuindo 6 sinais em quadratura na

saída: 2 canais (A e B), 1 índice de canal e seus respectivos sinais invertidos.

Page 14: Marcio Socrates Sperandio Goncalves

11

O sinal de saída do encoder é TTL (Transistor Transistor Logic), da série

74LS04, isto é, pode operar na faixa de temperatura 0ºC a +70ºC e apresenta boa

velocidade e baixo consumo de corrente. Os circuitos integrados da família TTL se

caracterizam por exigir uma tensão de alimentação de 5V. Para que a entrada

reconheça o nível lógico baixo, é preciso que a tensão seja de 0 a 0,8V. Analogamente,

uma entrada alta deve estender-se de 2 a 5V [3].

Este encoder apresenta 400 pulsos por volta por canal. Foi montada uma

redução entre o eixo da roda e o encoder, para aumentar a precisão do equipamento.

A precisão obtida foi considerada excelente, visto que, a cada volta completa da

roda, o encoder gira 60/14 vezes. Resultando em uma constante p, que é utilizada no

cálculo da distância.

400.6014..2π

=p = 0,0036652

Como é mostrado na figura 3, o sinal em quadratura, ou seja, dois sinais com

um deslocamento de 90º na fase, é o arranjo mais comum para indicar a direção e taxa

de rotação do sinal medido pelo sensor. Quando o deslocamento é para uma direção o

canal A fica adiantado em relação ao canal B e na direção oposta, o inverso.

Figura 3 – Sinal de Saída do Encoder [2]

2.2.2 Tratamento do sinal

Para realizar a interface entre o encoder e o microcontrolador, utilizou-se um

decodificador de quadratura e contador, o HCTL-2016, da Agilent Technologies Inc.

Este chip é responsável por decodificar os sinais do encoder de quadratura e manter

um contador interno que representará a posição do encoder. Funciona com freqüência

Page 15: Marcio Socrates Sperandio Goncalves

12

de operação de até 14 MHz, tensão de alimentação de 5 V DC, decodifica até 4 sinais

de entrada e possui alta imunidade ao ruído, sendo muito usado em aplicações que

requerem alta precisão e confiabilidade [3].

O HCTL-2016 possui um encapsulamento com 16 pinos e sua operação é

mostrada de forma simplificada no diagrama de blocos apresentado na figura 4.

O filtro digital é responsável por filtrar o ruído que chega junto com o sinal em

quadratura e garantir a integridade dos dados que vão para o decodificador. Este envia

o sinal filtrado para um contador interno de 16 bits, porém a interface com o

microcontrolador é de 8 bits e o HCTL armazena em um latch o resultado que será

lido usando 2 leituras sucessivas de 8 bits. Há uma máquina de estado interna que

determina a ordem correta do byte de saída [3]. Os pinos do HCTL-2016 estão

mostrados na figura 5.

Figura 4 – Diagrama de blocos do HCTL-2016 [3]

Figura 5 – HCTL2016 [3]

Page 16: Marcio Socrates Sperandio Goncalves

13

Existem 3 pinos no HCTL-2016 que são usados para controlar operações de

leitura: SEL, –OE e CLK. SEL controla qual byte está sendo acessado, o –OE permite

o chip colocar dados no barramento do microcontrolador e na transição negativa do

clock seja iniciada a transferência dos dados. Existe também o sinal de –RST, que é

usado para inicializar o HCTL-2016.

2.2.3 O microcontrolador

O microcontrolador escolhido foi o PIC16F877-04P, da Microchip Technology

Inc.[1], que incorpora no mesmo encapsulamento um microprocessador, memória de

programa e dados e vários periféricos como temporizadores, watchdog timer,

comunicação serial, conversores analógico/digital, geradores de PWM, etc, fazendo

com que o hardware final fique extremamente complexo. Entretanto, o medidor, utiliza

somente o processador, memória de programa e dados para calcular a distância

percorrida pela roda, e exibí-la no display.

A arquitetura do microcontrolador é RISC, o que permite um alto desempenho,

além de apresentar um mapa de registradores versátil e arquitetura de instruções em

pipeline.

Algumas características gerais do PIC são apresentadas a seguir:

• Apenas 35 palavras de instrução para aprender

• Todas instruções com um ciclo exceto para desvios que levam dois ciclos

• Velocidade de operação: DC até 20 MHz de clock

• Instruções com 14 bits de largura

• Barramento de dados de 8 bits

• 16 registradores de funções especiais de hardware

• Pilha com 8 níveis de profundidade

• Modos de endereçamento direto, indireto e relativo para dados e instruções.

• Capacidade de interrupção

Em relação aos periféricos, são destacadas as seguintes características:

Page 17: Marcio Socrates Sperandio Goncalves

14

• 33 pinos de I/O individualmente configurados

• Temporizador/Contador de 8 bits com 8 bits de “pré-escala”

• Power-On Reset (POR)

• Temporizador Watch-Dog (WDT) com oscilador próprio para operações seguras

• Proteção de Código Programável

• Modo SLEEP para diminuição de consumo de energia.

• Opções de oscilador selecionável:

o RC – oscilador RC de baixo custo

o XT – cristal padrão

o HS – Cristal de alta velocidade

o LP – Cristal de baixa freqüência (redução de consumo)

• Programação Serial in-circuit (através de dois pinos)

• 4 bytes de identificação (ID) programáveis pelo usuário

A pinagem do PIC está mostrada na figura 6.

Figura 6 – Pinagem do PIC [1]

Na tabela 1 vemos a quantidade de memória disponível no microcontrolador.

Page 18: Marcio Socrates Sperandio Goncalves

15

Tabela 1 – Memória do PIC [1]

Microcontrolador

Program Data Data Max.

Memory RAM EEPROM Freq.

(14 bits-words) (bytes) (bytes) (MHz)

PIC16F877 8 K 368 256 20

2.2.4 O display ou LCD

Para que os valores de distâncias e área medidos pudessem ser lidos pelo

usuário, foi utilizado um LCD de 2 linhas e 16 caracteres, baseado no chip controlador

HD 44780, um chip que é praticamente um padrão no segmento de módulos LCD.

Esses controladores permitem uma interface simples com o microcontrolador.

Utilizou-se a comunicação no modo 4 bits, onde são usados apenas as 4 linhas mais

significativas de dados (D7 a D4), dividindo o byte em 2 nibbles que são transferidos

sempre iniciando pelo mais significativo seguido pelo menos significativo. São ligadas

mais 3 linhas de sinalização, Enable, RS, R/W e a alimentação de 5V.

Figura 7 – Esquema de acionamento do LCD

Page 19: Marcio Socrates Sperandio Goncalves

16

Através do botão “Luz”, na interface do medidor, é possível ligar ou desligar a

luz de fundo (background) do display, permitindo assim uma economia de 70 mA

quando este estiver desligado.

Figura 8 - LCD e botões

2.2.5 Alimentação do circuito

A alimentação do circuito deve atender a necessidade de tensão do

microcontrolador e dos outros componentes presentes no equipamento. O PIC pode

funcionar com uma faixa de tensão de 2V até 5.5V. Operando em 4 MHz, o

microcontrolador apresenta um baixo consumo de corrente, cerca de 0.6 mA. Foi

escolhida uma alimentação através de uma bateria Duracell de 9V e 565 mAh [5].

Utilizou-se um regulador de tensão, PT5101A – Texas Instruments, para

alimentar o circuito com 5V. Os módulos PT5100 são fontes chaveadas que utilizam

circuito integrado (ISR - Integrated Switching Regulators) fáceis de usar e compatíveis

com a maioria dos TO-220, estilo regulador linear [4].

Figura 9 – Fonte Chaveada [4]

Page 20: Marcio Socrates Sperandio Goncalves

17

O uso deste componente apresentou benefícios em relação à eficiência e

dissipação de potência e mostrou uma ótima precisão na tensão de saída e na regulação

da corrente na carga. Para o circuito apresentado, a eficiência da fonte chaveada é de

+/- 80%, o que proporciona uma maior autonomia ao equipamento com a utilização da

bateria de 9V.

Figura 10 – Eficiência X Corrente de saída [4]

Figura 11 – Potência Dissipada X Corrente de saída [4]

Page 21: Marcio Socrates Sperandio Goncalves

18

2.3 Diagrama do circuito

O diagrama do circuito eletrônico do medidor é mostrado na figura 11.

Figura 12 – Diagrama do circuito

O circuito é composto de um oscilador 4430008 da NDK, alimentado em 5 V,

capaz de gerar clocks de 4 MHz para o microcontrolador PIC e para o HCTL-2016.

2.4 Conclusões

Neste capítulo apresentou-se a interligação dos componentes que formam o

hardware do medidor. A elaboração de um circuito eletrônico requer experiência para

fazer a união perfeita entre todos os componentes.

Page 22: Marcio Socrates Sperandio Goncalves

19

3 A MONTAGEM

3.1 Introdução

Após a elaboração do circuito, foi projetada uma estrutura onde todos os

dispositivos foram acomodados. Alguns cuidados com a calibração da roda e uma boa

fixação do encoder devem ser tomados.

3.2 A roda, eixo e redução

A praticidade quanto ao tamanho da roda em relação ao manuseio e a facilidade

de se encontrar no mercado foram os critérios importantes que conduziram a escolha

da roda. Utilizou-se uma roda de bicicleta. A calibração da roda foi realizada

colocando 20 lb/pol2 de pressão em sua câmara de ar.

Um garfo de bicicleta foi utilizado para prender a roda e guiar até o suporte

onde está localizada a placa do circuito, juntamente com o display. Um apoio manual

possibilita uma total praticidade e comodidade para o mesmo efetuar suas medidas.

Figura 13 – Medidor de Distância e Áreas

Page 23: Marcio Socrates Sperandio Goncalves

20

Junto ao eixo da roda, foi instalada uma engrenagem de 60 dentes que através

de uma correia dentada, transmite o movimento da roda a outra engrenagem de 14

dentes, ligada ao encoder, posicionado em um suporte específico, também instalado no

eixo da roda. A utilização desta redução por engrenagens proporciona um aumento na

precisão do equipamento e facilita o acoplamento do encoder com a roda.

Figura 14 – Roda, eixo e engrenagens

3.3 Placa de circuito impresso

Responsável pela acomodação do microcontrolador, o display e os botões que

fazem a interface com o usuário, a localização da placa foi crucial para um ótimo

desempenho do produto. Um cabo realiza a ligação entre a placa e o encoder,

garantindo o funcionamento do equipamento.

Figura 15 – Placa com o Microcontrolador

Page 24: Marcio Socrates Sperandio Goncalves

21

Na parte inferior da placa está localizada a bateria e a fonte chaveada para a

alimentação do circuito.

3.4 Conclusões

É muito importante que um protótipo seja construído para visualizarmos as

possíveis melhorias em um equipamento. A montagem desta estrutura resultou em

uma boa precisão na medida efetuada mostrando-se bastante satisfatória, atingindo o

objetivo proposto.

A roda utilizada tem a necessidade de estar bem calibrada, para não gerar erro

na medida. A grande vantagem de ter sido usada esta roda é que se pode trabalhar nas

mais diversas superfícies, desde asfaltos até terrenos pedregosos.

A inclusão de um suporte para possibilitar que o medidor permaneça na posição

vertical poderá auxiliar em seu manuseio.

Page 25: Marcio Socrates Sperandio Goncalves

22

4 O SOFTWARE

4.1 Introdução

O microcontrolador deve ser programado com uma seqüência de comandos

para que o medidor funcione corretamente. Serão abordadas neste capítulo a lógica de

programação e a técnica utilizada para o mesmo.

4.2 Funcionamento do programa

Com base no manual do PIC e o manual de referência C [6], foi possível

programar a memória Flash utilizando a linguagem de programação C, que se mostrou

muito eficaz.

Para transferir o programa para a memória do microcontrolador foi utilizado o

gravador PICSTART PLUS, que funciona acoplado a um computador PC via cabo

serial padrão RS232 em ambiente Windows através do software MPLAB-IDE na

versão 5.00.

No programa existem duas funções específicas do HCTL-2016, a zera_hctl( ) e

le_hctl( ) .

A função zera_hctl( ) é responsável por colocar o Reset do HCTL em 1 e zerar

o conteúdo do buffer de saída.

A outra função, o lê_hctl( ) é responsável pelo controle de leitura do sinal

proveniente do encoder. Os 2 pinos no HCL-2016 que são controlados por esta função

são o SEL e –OE. Primeiramente faz-se SEL = 0, pois ele é responsável por controlar

qual byte está sendo acessado, para acessar o high byte, logo após colocamos SEL = 1

para ler o low byte. Em seguida o –OE = 1 permite o chip colocar dados no barramento

e na transição negativa do clock seja iniciada a transferência dos dados e reiniciar o

ciclo de leitura.

O programa possui 2 Menus, sendo o primeiro para a realização das medições

de distâncias e o segundo para o cálculo da área, armazenamento de áreas medidas e

para ligar ou desligar a luz do display.

Page 26: Marcio Socrates Sperandio Goncalves

23

4.2.1 Medição de distâncias

O programa é responsável por monitorar o sensor que incrementa a variável

pulsos. O microcontrolador realiza o cálculo da distância através dos pulsos contados,

vezes uma constante p e o raio (r).

O PIC também é responsável por mostrar o resultado no display, através do

driver lcd.c. Ele analisa se a distância é menor que 1000 e mostra o valor em

milímetros (mm), caso o valor medido seja maior ele converte para metros (m).

Figura 16 – Menu 1

Ao pressionar o botão On/Off, quatro opções são mostradas no menu 1:

o Ini – Quando estiver posicionado, aperte esta tecla para começar a medir.

o Fim – Quando chegar ao ponto desejado, este botão finaliza a medição.

o R+ – Este botão soma o valor medido com 2 vezes o raio da roda para a medida

linear total, deve ser usado para medições que vão de uma parede a outra.

o > – Este botão avança ao Menu 2, referente ao cálculo da área.

Page 27: Marcio Socrates Sperandio Goncalves

24

Na figura 17 verifica-se o fluxograma do programa para medir distância.

Figura 17 – Fluxograma para medir distâncias

4.2.2 Cálculo da área

Após ter realizado as 2 medidas referentes a largura e o comprimento de uma

determinada área, avança-se o menu pressionando o botão “>”, e seleciona-se a opção

“Area". Aparecerá no display o resultado da área calculado.

Este resultado poderá ser armazenado, apertando o botão “A+”, ideal para se

obter o resultado de uma área formada por diversos retângulos.

É possível, subtrair uma determinada área, fazendo uma das 2 medições de

distâncias negativa, ou seja, girando a roda no sentido contrário ao sentido em que foi

realizada a primeira medida.

A figura 18 mostra um exemplo de cálculo de área usando este recurso, mede-se

as dimensões de largura e comprimento do retângulo completo (10 m x 6 m), calcula-

se a área e armazena-se o resultado, em seguida medem-se as dimensões da área que

deverá ser subtraída (-5 m x 3 m). Observe que uma das medidas deve ser feita

Page 28: Marcio Socrates Sperandio Goncalves

25

girando-se a roda do medidor no sentido em que a distância mostrada no display

apareça com sinal de menos (ex.: -5 ). Calcula-se a área e em seguida pressiona-se

“A+” para obter o valor real da área da figura 18.

Figura 18 – Cálculo de uma área complexa

Observa-se o fluxograma do programa para o cálculo da área na figura 15.

Figura 19 – Fluxograma para cálculo da área

5 metros

3

m

6

m

10 metros

Page 29: Marcio Socrates Sperandio Goncalves

26

4.3 Conclusões

A lógica de programação do medidor não foi complicada, visto que, são

realizadas operações simples. O bom entendimento da linguagem de programação C

para PIC, usando o compilador PCW, permitiu superar os desafios que surgiram ao

longo da elaboração do software.

Page 30: Marcio Socrates Sperandio Goncalves

27

5 RESULTADOS

5.1 Introdução

Nesse capítulo serão mostrados alguns resultados obtidos com o medidor

desenvolvido e o método de calibração do equipamento.

5.2 Método de calibração

A calibração do equipamento é muito importante para determinar o valor

exato do raio da roda, que é um fator que está diretamente relacionado com a

confiabilidade das medidas efetuadas.

Após encher o pneu da roda com exatamente 20 lb/pol², mediu-se, com uma

trena, a distância percorrida pela roda em três voltas completas.

Tabela 2 - Distância percorrida em 3 voltas da roda

Pneu-(lb/pol²)

Distância medida (mm)

M-1 M-2 M-320 3.705 3.710 3.705

Vazio 3.670 3.678 3.671

Com estas distâncias medidas, calculou-se o raio da roda utilizando a equação

do perímetro de uma circunferência (perímetro = 2.π.r). Nos cálculos, foi considerado

o valor de π sendo 3,14159265359.

Tabela 3 - Valores de raio encontrados

Pneu-(lb/pol²)

Raio da roda (mm)

R-1 R-2 R-320 196,56 196,82 196,56

Vazio 194,70 195,12 194,75

A variação do raio entre o pneu cheio e vazio é de aproximadamente 1,8 mm, o

que ocasiona um acréscimo na medida, pois o software está programado para um valor

de raio fixo e se o valor real do raio estiver menor, a quantidade de pulsos gerada pelo

encoder em virtude do movimento da roda será maior, resultando em uma medida

Page 31: Marcio Socrates Sperandio Goncalves

28

mostrada no display maior do que a realidade. Daí verifica-se a importância de

calibrarmos o pneu antes de se efetuar medições com o medidor digital.

O valor escolhido com sendo o raio da roda foi r = 196,56 mm. Verificou-se

com este valor de raio medições com desvios muito pequenos como mostrados na

tabela 4.

5.3 Medições de distâncias

A figura 20 mostra uma pessoa efetuando uma medida de distância.

Figura 20 - Medindo distância

Na tabela 4 são mostrados alguns resultados de medidas realizadas com o

medidor digital de distâncias e uma trena de 50 metros.

Verificaram-se desvios muito pequenos das medições realizadas com a trena e

com o medidor construído.

Page 32: Marcio Socrates Sperandio Goncalves

29

Tabela 4 – Valores medidos

Local Trena (m) Medidor (m)

Desvio (%)

M-1 M-2 D-1 D-2

Largura do Lab. Micro 6,47 6,46 6,47 0,15 0,00 Comprimento do Lab. Micro 8,73 8,74 8,73 -0,11 0,00Largura do LCEE 7,05 7,04 7,05 0,14 0,00 Comprimento do LCEE 8,74 8,73 8,73 0,11 0,11Corredor superior do CT 02 44,21 44,18 44,17 0,07 0,09Largura do corredor do CT 02 2,95 2,95 2,95 0,00 0,00 Passarela em frente ao CT 02 25,41 25,40 25,41 0,04 0,00Passarela do CT 02 ao CT 03 90,15 90,10 90,08 0,06 0,08Passarela em frente à Petrobrás 39,01 39,00 38,99 0,03 0,05

Os resultados obtidos com o medidor digital, em sua maioria, ficaram em

torno de 1 cm abaixo da medida realizada com a trena. A justificativa para esta

diferença, provavelmente se deva ao erro ocasionado na medida pela trena, devido à

dificuldade em mantê-la plenamente esticada em longas distâncias.

Para os desvios em que a distância lida através do medidor digital seja maior

que a medida pela trena, pode ser justificada pela dificuldade em seguir uma linha reta

no momento em que se está andando com o medidor.

A inexatidão da medida também pode ser decorrente da diferença na

inclinação do suporte do medidor entre o instante inicial e final da medida. Esta

diferença de posição pode ocasionar um erro de +/- 2 cm.

O erro ocasionado pela diferença na inclinação do suporte pode ser eliminado

com a instalação de uma chave ótica, que garantiria a mesma inclinação inicial e final.

5.4 Cálculo de áreas

Ao avaliar o resultado da área, constatou-se que os resultados obtidos foram

exatos, pois o microcontrolador realiza precisamente a multiplicação das dimensões

medidas, consideradas lados do retângulo.

Para exemplificar, a área obtida para o laboratório de microprocessadores foi de

56,40 m², quando medimos as dimensões de 6,46 m x 8,73 m.

Page 33: Marcio Socrates Sperandio Goncalves

30

6 CONCLUSÕES

Neste trabalho foi apresentada uma descrição de montagem e funcionamento de

um medidor digital de distâncias e áreas usando um microcontrolador.

O PIC16F877 se mostrou uma solução atraente, por se tratar de um

microcontrolador bastante conhecido, o que facilitou sua programação e interface com

outros dispositivos como o HCTL e o HD-44780. A disponibilidade de informações ao

seu respeito em livros e na Internet facilitou muito os estudos de seu funcionamento e

programação.

A realização deste projeto de graduação proporcionou uma oportunidade muito

boa para criação de um produto prático e útil, que atenda as expectativas do usuário.

A precisão alcançada; em virtude do sensor utilizado que permitiu uma

resolução 0,72 mm; superou as expectativas em possíveis aplicações topográficas e

outras medições que não requeiram precisões acima de 1 cm, como terrenos, campos

de futebol, estacionamentos etc.

Em relação à precisão do raio da roda, observou-se a necessidade de se

trabalhar com o pneu calibrado em 20 lb/in², pois a diferença entre os raios com o pneu

cheio e vazio é de cerca de 1%, o que pode gerar diferenças em torno de 10 mm por

volta entre medida real e a mostrada no display.

Observou-se a vantagem de ter sido usada esta roda específica, que apesar da

necessidade de uma boa calibração, pode-se trabalhar nas mais diversas superfícies,

desde asfaltos até terrenos pedregosos. No entanto, para superfícies lisas e asfaltadas,

uma roda rígida, que desprezasse a calibração do pneu, certamente se tornaria mais

prática.

O equipamento apresentou resultados muito bons. Os desvios foram menor que

0,15% implicando em uma precisão de 99,85% (15 cm / 100 m).

Não se observou limite de velocidade de medição e o medidor tem a capacidade

de exibir até 99.999,99 m (7 dígitos).

O sistema permite que uma única pessoa meça distâncias lineares e faça o

levantamento de áreas com velocidade, precisão e conforto.

Page 34: Marcio Socrates Sperandio Goncalves

31

REFERÊNCIAS BIBLIOGRÁFICAS

[1] MICROCHIP. PIC16F87X Data Sheet Microcontrollers [on line] 2001.

Disponível: http://www.microchip.com/downloads/en/DeviceDoc/30292c.pdf

[capturado em 28/03/2005].

[2] Computer Optical Products, Inc.. CP-300 Series Housed Encoders [on line] 2000.

Disponível: http://www.opticalencoder.com/summaries/cp-300_summary.html

[capturado em 28/03/2005].

[3] Agilent Technologies, Inc.. Quadrature Decoder/Counter Interface ICs –

Technical Data [on line] 1999. Disponível: http://www.chipdocs.com/datasheets/

datasheet-pdf/HP/HCTL-2000.html [capturado em 25/04/2005].

[4] TEXAS INSTRUMENTS. A Positive Step-down Integrated Switching

Regulator [on line] 2001. Disponível: http://www.ti.com/productcontent

[capturado em 18/05/2005].

[5] DURACELL . Procell Alkaline Batteries [on line] 2005. Disponível:

http://www.mouser.com/catalog/622/1422.pdf [capturado em 01/06/05].

[6] C Compiler Reference Manual [on line] 2005. Disponível:

http://www.ccsinfo.com/picc [capturado em 11/02/2005].

[7] SOUZA, D. J. Desbravando o PIC. 8 ed. São Paulo: Érica, 2003.

[8] PEREIRA, F. Microcontroladores PIC: Programação em C. 3 ed. São Paulo:

ÉRICA, 2003.

Page 35: Marcio Socrates Sperandio Goncalves

32

APÊNDICE A – CÓDIGO DO PROGRAMA /******************************************************************* 

*              UNIVERSIDADE FEDERAL DO ESPIRITO SANTO              * 

*                                                                  * 

*      M E D I D O R  D I G I T A L  D E  D I S T A N C I A S      * 

*                                                                  * 

*    E  A R E A S  U S A N D O  M I C R O C O N T R O L A D O R    * 

*                                                                  * 

*          PIC16F877‐04/P, LCD HD‐44780, CP‐350, HCTL2016          * 

*                                                                  * 

*     ORIENTADOR: PROF. DR. PAULO FARIA SANTOS AMARAL              * 

*     ALUNO     : MARCIO SOCRATES SPERANDIO GONCALVES              * 

*******************************************************************/ 

 

#device  PIC16F877 

#fuses   HS,NOWDT,NOPROTECT,PUT,BROWNOUT,NOLVP,NOCPD,NOWRT 

#include "c:\marcio\medidor\medidor.h" 

#include "c:\marcio\medidor\lcd.c" 

 

#define r      196.56 //raio da roda em mm com 20 lb/in^2 

#define p      0.0036652 // (2*3.141592654)/((60/14)*400) 

 

signed long int ult_hctl = 0; 

signed int32 pulsos      = 0; 

signed int i             = 0; 

float  d[4]          ={0,0,0,0}; 

boolean mede, area, next, luz, raio  = 0; 

//**********************************************************************// 

void debounce() // debounce: le o contato no botao uma unica vez 

  if (port_D!=0xFF) 

  { 

    delay_ms(200); 

    while(port_D!=0xFF); 

    delay_ms(200);} 

//**********************************************************************// 

//             Funções do HCTL2016 em 4MHZ                              // 

//**********************************************************************// 

void zera_hctl() 

// coloca oe do hctl2016 em 1 

Page 36: Marcio Socrates Sperandio Goncalves

33

       output_high(PIN_C1); 

// coloca SEL do hctl2016 em 0 

        output_low(PIN_C0); 

// coloca Reset do hctl2016 em 1 

       output_high(PIN_C2); 

       output_low(PIN_C2); 

        delay_us(1); 

       output_high(PIN_C2); 

        ult_hctl=0; 

signed long int le_hctl() 

  signed long int valor,incremento; 

// para inibir atualização SEL=0 e OE=0 por mais de 1 tclk 

  output_low(PIN_C1);  // SEL já é zero, coloca OE em 0 

  delay_us(2); 

// portd tem o high byte 

  valor=port_D; 

  output_high(PIN_C0);  //SEL=1 low byte 

  delay_us(1); 

  valor=(valor<<8) + port_D; 

  output_high(PIN_C1);  //volta OE para 1 

  delay_us(1); 

  output_low(PIN_C0);  // volta SEL para 0 

  incremento=valor‐ult_hctl; 

  ult_hctl=valor; 

  return (incremento); 

//**********************************************************************// 

 

main() // programa principal 

  disable_interrupts(GLOBAL); 

  setup_counters(RTCC_INTERNAL,RTCC_DIV_2); //Timer 0 com clock interno 

                        // Prescaler ligado ao timer 0 e dividindo por 2 

  option_reg=option_reg & 0xbf; 

  setup_port_a(RA0_RA1_RA3_ANALOG); 

  setup_adc(ADC_CLOCK_INTERNAL); 

  setup_timer_1(T1_INTERNAL | T1_DIV_BY_8); //Configura o timer 1 com 

               // clock interno e prescaler do timer 1 dividindo por 8 

   lcd_init(); 

  zera_hctl(); 

  set_timer1(3036); 

Page 37: Marcio Socrates Sperandio Goncalves

34

  disable_interrupts(GLOBAL); 

   printf(lcd_putc,"\Projeto Grad.    "); 

   printf(lcd_putc,"\nMedidor  Digital"); 

   delay_ms(2000); 

 

while(true) 

 { 

   if (mede) { 

       lcd_gotoxy(1,1); 

       pulsos= pulsos ‐ (signed int32)le_hctl(); 

 

     if (raio == 1) 

       d[i] = ((float)(pulsos)*r*p) + 2*r; else 

       d[i] = ((float)(pulsos)*r*p); 

 

     if ((d[i] > 1000) || (d[i] < ‐1000)) 

       printf(lcd_putc,"D%d=%7.2f  m",i,d[i]/1000); else 

       printf(lcd_putc,"D%d=%7.2f mm",i,d[i]); 

      } 

   if (area) { 

      lcd_gotoxy(1,1); 

      d[0] = d[1]*d[2]; 

      if ((d[0] > 1000000) || (d[0] < ‐1000000)) 

      printf(lcd_putc,"A=%7.2f  m^2",d[0]/1000000); else 

      printf(lcd_putc,"A=%7.2f mm^2",d[0]);} 

 

if (next == 0) 

{   printf(lcd_putc,"\nIni Fim     R+ >"); 

 

   switch (input_D()) { 

       case 0xFE :{ 

            mede = 1; //mede distancia 

            pulsos=0; 

            area = 0; 

            raio = 0; 

            if (i<2) i=i+1; else i = 1; 

            zera_hctl (); 

         debounce(); 

            break; 

            } 

       case 0xFD : 

            { 

            mede = 0; 

Page 38: Marcio Socrates Sperandio Goncalves

35

            area = 0; 

           debounce(); 

            break; 

            } 

       case 0xBF : 

            { 

            area = 0;  //soma raio 

            mede = 1; 

            raio = 1; 

          debounce(); 

            break; 

            } 

       case 0x7F : 

            { 

            lcd_limpa(1);  //reset 

            lcd_gotoxy(1,1); 

            pulsos=0; 

            mede = 0;  area = 0; 

            i=0; next = 1; 

            raio = 0; 

           debounce(); 

            break; 

            } 

 

    }//switch 

   }//if 

 

if (next == 1) 

{   printf(lcd_putc,"\n< Area    A+ Luz"); 

 

   switch (input_D()) { 

       case 0xFE : 

            { 

             lcd_limpa(1);  //reset 

            lcd_gotoxy(1,1); 

            pulsos=0; 

            mede = 0;  area = 0; 

            i=0; next = 0; 

           debounce(); 

            break; 

            } 

       case 0xFD : 

            { 

Page 39: Marcio Socrates Sperandio Goncalves

36

             area = 1; 

            break; 

            } 

       case 0xBF : 

            { 

            area = 0; 

            lcd_gotoxy(1,1); 

            printf(lcd_putc,"Armazedo Area    "); 

            delay_ms(1500); 

            lcd_limpa(1); 

            lcd_gotoxy(1,1); 

            d[3] = d[3] + d[0]; 

            printf(lcd_putc,"A=%7.2f  m^2",d[3]/1000000); 

          debounce(); 

            break; 

            } 

       case 0x7F : 

            { 

             if (luz ==1) luz = 0; else luz = 1; 

             if (luz) output_high(PIN_C4); else output_low(PIN_C4); 

             debounce(); 

             break; 

            } 

    }//switch 

   }//if 

 }//while 

}//main 

Page 40: Marcio Socrates Sperandio Goncalves

37