marcio socrates sperandio goncalves
TRANSCRIPT
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
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
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
i
DEDICATÓRIA
Aos meus pais, Ferdinando e Lourdes.
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.
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
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
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
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
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.
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.
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.
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.
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
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]
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:
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.
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
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]
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]
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.
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
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
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.
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.
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.
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
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
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.
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
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.
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.
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.
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.
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
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);
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;
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 :
{
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
37