32
UNIVERSIDADE FEDERAL DE PERNAMBUCO CENTRO DE TECNOLOGIA E GEOCIÊNCIAS CURSO DE ENGENHARIA ELETRÔNICA Disciplina: Microcomputadores Professor: Mauro Rodrigues dos Santos Grupo: Dennis Victor Soares Lima Mozart Castro Melo Pedro Lyra Pereira Cabral Ulisses Santiago Rodrigues Batista Relatório do Projeto Final: Aplicação em Hotelaria RECIFE, 27 DE JUNHO DE 2010

Pedro Cabral - Dennis Lima - Mozart Melo - Ulisses Batista - Micro Control Adores Aplicacao Em Hotelaria - 2010

Embed Size (px)

DESCRIPTION

O projeto propunha apenas os requisitos mínimos a serem utilizados e foi criada a ideia de um sistema de controle em um hall de um hotel, pois seria necessário utilizar sensores de luminosidade, temperatura, de presença, motor DC, assim como as funções de PWM e Capture do PIC.

Citation preview

Page 1: Pedro Cabral - Dennis Lima - Mozart Melo - Ulisses Batista - Micro Control Adores Aplicacao Em Hotelaria - 2010

UNIVERSIDADE FEDERAL DE PERNAMBUCO

CENTRO DE TECNOLOGIA E GEOCIÊNCIAS

CURSO DE ENGENHARIA ELETRÔNICA

Disciplina: Microcomputadores

Professor: Mauro Rodrigues dos Santos

Grupo:

Dennis Victor Soares Lima

Mozart Castro Melo

Pedro Lyra Pereira Cabral

Ulisses Santiago Rodrigues Batista

Relatório do Projeto Final:

Aplicação em Hotelaria

RECIFE,

27 DE JUNHO DE 2010

Page 2: Pedro Cabral - Dennis Lima - Mozart Melo - Ulisses Batista - Micro Control Adores Aplicacao Em Hotelaria - 2010

SUMÁRIO

1 INTRODUÇÃO ....................................................................................................................... 3

2 OBJETIVO .............................................................................................................................. 4

3 DESENVOLVIMENTO .......................................................................................................... 5

3.1 Visão Geral do Projeto ...................................................................................................... 5

3.2 Controlador ....................................................................................................................... 6

3.3 Sensor de Luminosidade ................................................................................................... 8

3.4 Sensor de Temperatura ................................................................................................... 10

3.5 Motor DC ........................................................................................................................ 12

3.6 Ponte-H ........................................................................................................................... 13

3.7 PWM ............................................................................................................................... 15

3.8 Capture ............................................................................................................................ 16

3.9 Comunicação Serial ........................................................................................................ 17

3.10 Programa ....................................................................................................................... 18

4 CONCLUSÃO ....................................................................................................................... 20

5 REFERÊNCIAS .................................................................................................................... 21

APÊNDICE A – ESQUEMA COMPLETO DO CIRCUITO .................................................. 22

APÊNDICE B – CÓDIGO DO PROGRAMA ......................................................................... 23

APÊNDICE C – LISTA DE COMPONENTES E CUSTOS ................................................... 32

Page 3: Pedro Cabral - Dennis Lima - Mozart Melo - Ulisses Batista - Micro Control Adores Aplicacao Em Hotelaria - 2010

3

1 INTRODUÇÃO

A disciplina de Microcomputadores, obrigatória no curso de Engenharia Eletrônica da

Universidade Federal de Pernambuco, é muito importante para o futuro engenheiro em sua

formação, pois permite, além de um maior conhecimento da estrutura geral de um microcom-

putador, nos permite conhecer e ter uma boa visão do que os microcontroladores PIC são ca-

pazes de fazer. Ao final do curso de Microcomputadores, foi proposto o desenvolvimento de

uma aplicação prática. O grupo ficou com o tema Aplicação em Hotelaria.

Após uma fase inicial de estudos optou-se por utilizar a linguagem C, pois a mesma

possibilita um maior nível em comparação com o Assembly RISC do PIC, facilitando o de-

senvolvimento do programa com várias funções prontas.

Como o projeto propunha apenas os requisitos mínimos a serem utilizados, foi criada a

ideia de um sistema de controle em um hall de um hotel, pois seria necessário utilizar sensores

de luminosidade, temperatura, de presença, motor DC, assim como as funções de PWM e

Capture do PIC.

Este relatório está dividido em cinco partes. A Introdução mostra uma visão simplifi-

cada do projeto e o que ele representa a esta disciplina, no item Objetivo é mostrada a finali-

dade do relatório, na seção de Desenvolvimento apontamos passo-a-passo as etapas de reali-

zação do projeto, na Conclusão são apresentados os conhecimentos adquiridos e por fim as

referências.

Page 4: Pedro Cabral - Dennis Lima - Mozart Melo - Ulisses Batista - Micro Control Adores Aplicacao Em Hotelaria - 2010

4

2 OBJETIVO

Este projeto tem como objetivo o desenvolvimento de um sistema que controle o hall

de um hotel, com a função de garantir um maior conforto para os hóspedes e um melhor aten-

dimento por parte dos funcionários do estabelecimento em questão.

Através do controle de itens como a luminosidade, temperatura e presença, garante-se

uma recepção mais eficiente ao cliente e também se evita desperdícios financeiros para o do-

no do hotel, garantindo que lâmpadas e aparelhos de ar-condicionado só estejam ligados

quando necessário.

Também foi utilizado um controle manual de lâmpadas, ar-condicionado e porta, para

caso seja necessário ou até pedido por um dos clientes uma mudança de situação, o recepcio-

nista poderá ter o comando sobre estas variáveis.

Page 5: Pedro Cabral - Dennis Lima - Mozart Melo - Ulisses Batista - Micro Control Adores Aplicacao Em Hotelaria - 2010

5

3 DESENVOLVIMENTO

3.1 Visão Geral do Projeto

O sistema desenvolvido funciona da seguinte forma: o cliente ao chegar ao hotel, ati-

vará um sensor de presença. Com isso, deve se abrir a porta automática do hotel. Assim será

acionado um motor DC responsável pela abertura e fechamento da porta deste hall.

Constantemente, serão obtidas informações através dos sensores de luminosidade e

temperatura (localizados no interior do hall) para que, quando necessário, sejam ligadas as

lâmpadas e os aparelhos de ar-condicionado manualmente ou automaticamente.

As informações de quantas lâmpadas estão acesas, o número de aparelhos de ar-

condicionado ligados e os valores da temperatura e da luminosidade serão mostrados na tela

do computador localizado na recepção, assim como as mudanças que poderão ser realizadas

serão feitas através do computador.

A conexão do computador com o microcontrolador se dará através da comunicação

pela porta serial RS-232.

Figura 1 - Planta simplificada do hall do hotel, mostrando componentes do sistema

Page 6: Pedro Cabral - Dennis Lima - Mozart Melo - Ulisses Batista - Micro Control Adores Aplicacao Em Hotelaria - 2010

6

Figura 2 - Visão geral da estrutura de controle

3.2 Controlador

O modelo de controlador escolhido foi o PIC 16F877A da empresa Microchip. Este

modelo possui 40 pinos, sendo que destes 40 pinos, 7 pinos são usados para alimentação e

controle do mesmo.

Figura 3 - Foto do PIC 16F877A

PINO 1: Suporta 3 níveis de tensão. Quando este pino estiver recebendo 5V, o micro-

controlador estará em condições de executar o programa. Quando este pino receber 0V

(GND), o PIC será “resetado”. Quando este pino receber tensão de 13,4V, o PIC irá

entrar em modo gravação.

PINOS 11 e 32: Alimentação (máximo 5V)

PINOS 12 e 31: Referência (GND)

PINOS 13 e 14 : Onde estará ligado o resonador externo (cristal de clock).

Page 7: Pedro Cabral - Dennis Lima - Mozart Melo - Ulisses Batista - Micro Control Adores Aplicacao Em Hotelaria - 2010

7

Os demais pinos são conhecidos por I/Os (Inputs/Outputs). Estas I/Os são agrupadas

em PORTs (portas), de no máximo 8 pinos cada (limitação pois o componente possui um nú-

cleo de 8 bits).

Há um total de 33 I/Os disponíveis, que podem ser configuradas como entradas ou

saídas em tempo de execução.

Figura 4 - Esquema de Pinos do PIC 16F877A

Quando um pino é configurado como ENTRADA, ele pode ser conectado a algum

sensor para detectar sinais digitais através de variação da tensão de 0 e 5V. Quando um pino é

configurado como saída, o programa poderá acioná-lo, e com isso gerar uma corrente baixa

(max. 20 mA) com os níveis de tensão de 0V ou 5V.

Alguns pinos, porém, possuem outras funções além de serem entradas ou saídas digi-

tais. Por exemplo, pode-se observar que os pinos 2 a 10 (exceto o pino 6) são entradas analó-

gicas, e podem ser usados para detectar uma variação de tensão entre 0V e 5V, transformando

esta variação em uma informação binária de 10 bits. Os pinos 39 e 40 também são pinos usa-

dos na gravação do microcontrolador, e os pinos 25 e 26 são usados para comunicação SERI-

AL padrão RS232. Os pinos 16 e 17 são pinos geradores de pulso (PWM), que é similar a

uma saída analógica. Muito útil para controle de velocidade de motores, por exemplo. O pino

6 é um pino usado para contagem rápida.

Page 8: Pedro Cabral - Dennis Lima - Mozart Melo - Ulisses Batista - Micro Control Adores Aplicacao Em Hotelaria - 2010

8

3.3 Sensor de Luminosidade

Como sensor de luminosidade foi utilizado um fotoresistor, ou LDR (Light Dependent

Resistor). O LDR possui a interessante característica de ser um componente eletrônico cuja

resistência elétrica diminui quando sobre ele incide energia luminosa. Isto possibilita a utili-

zação deste componente para desenvolver um sensor que é ativado (ou desativado) quando

sobre ele incidir energia luminosa.

Figura 5 - Aspecto de um LDR

A resistência do LDR varia de forma inversamente proporcional à quantidade de luz

incidente sobre ele, isto é, enquanto o feixe de luz estiver incidindo, o LDR oferece uma re-

sistência muito baixa. Quando este feixe é cortado, sua resistência aumenta.

É composto de um material semicondutor, o sulfeto de cádmio, CdS, ou o sulfeto de

chumbo. O processo de construção de um LDR consiste na conexão do material fotossensível

com os terminais, sendo que uma fina camada é simplesmente exposta à incidência luminosa

externa.

Com o LDR pode-se fazer o controle automático de porta, alarme contra ladrão, con-

trole de iluminação em um recinto, contagem industrial, todos estes fotocontrolados para a

operação de um relé, por exemplo.

Também chamado de célula fotocondutiva, ou ainda de fotoresistência, o LDR é um

dispositivo semicondutor de dois terminais, cuja resistência varia linearmente com a intensi-

dade de luz incidente, obedecendo à equação R = C.L.a , onde L é a luminosidade em Lux, C

e a são constantes dependentes do processo de fabricação e material utilizado.

Como foi dito anteriormente o LDR tem sua resistência diminuída ao ser iluminado. A

energia luminosa desloca elétrons da camada de valência para a de condução (mais longe do

núcleo), aumentando o número destes, diminuindo a resistência.

Page 9: Pedro Cabral - Dennis Lima - Mozart Melo - Ulisses Batista - Micro Control Adores Aplicacao Em Hotelaria - 2010

9

Conforme aumenta a intensidade de luz incidente no LDR, um número maior de elé-

trons na estrutura tem também seu nível de energia aumentado, devido à aquisição da energia

entregue pelos fótons. O resultado é o aumento de elétrons livres e elétrons fracamente presos

ao núcleo.

Foram feitas medidas da resistência do LDR variando a intensidade de luz. Como não

se dispunha de equipamentos sofisticados para medição de intensidade luminosa, foram utili-

zados quatro níveis de luminosidade: totalmente coberto, parcialmente coberto, fracamente

iluminado e diretamente iluminado. Foram medidas as resistências para cada caso.

Figura 6 - Divisor de tensão com o LDR

Após isso montou-se um divisor de tensão com um resistor de 47kΩ. A partir disso

foram encontrados os níveis de tensão para cada caso. Sabe-se que para a conversão analógica

digital do PIC com 8 bits, de 0 a 5V corresponde a 0 a 255 em binário. Neste caso foram en-

contrados valores e determinados os níveis de luminosidade correspondentes a serem usados

no programa.

Nível de luminosidade Resistência (Ω) Tensão (V) Valor digital

Coberto 200k 1,0 51

Sombra 70k 2,0 102

Luz ambiente 25k 3,3 168

Luz direta 5k 4,5 229

Tabela 1 – Valores encontrados para o LDR

No caso da sua colocação no hall do hotel teria que se ter cuidado de que ele ficasse

em uma posição que recebesse a luz natural, mas que não fosse iluminado pelas luminárias, já

que neste caso estaria ocorrendo uma realimentação indesejada e o sistema poderia ficar a-

cendendo e apagando lâmpadas seguidamente.

Page 10: Pedro Cabral - Dennis Lima - Mozart Melo - Ulisses Batista - Micro Control Adores Aplicacao Em Hotelaria - 2010

10

3.4 Sensor de Temperatura

Como sensor de temperatura foi utilizado um termistor.

Termistores são resistores sensíveis a temperatura cuja função principal é exibir uma

mudança grande, previsível e precisa em resistência elétrica quando um equipamento ou pro-

duto sofrer uma mudança na temperatura de corpo.

Figura 7 - Aspecto de um termistor

Os de Coeficiente de Temperatura negativo (NTC) (Negative Temperature

Coefficient) exibem uma diminuição em resistência elétrica quando submetido a um aumento

em temperatura do equipamento e Coeficiente de Temperatura Positivo (PTC) (Positive

Temperature Coefficient) exibem um aumento em resistência elétrica quando acontece um

aumento da temperatura do termistor.

A desvantagem do termistor é que para grandes faixas de temperatura observa-se uma

não linearidade entre temperatura e resistência.

O termistor utilizado foi o 103 AT-5-TP, que tem 10kΩ a 25ºC com uma faixa de ope-

ração de -50ºC a 110ºC.

Figura 8 - Aspecto do AT-5 comercializado

Page 11: Pedro Cabral - Dennis Lima - Mozart Melo - Ulisses Batista - Micro Control Adores Aplicacao Em Hotelaria - 2010

11

Foi observado no data sheet do produto a tabela de valores correspondente a tempera-

turas. Como o sensor deve ser utilizado em um hotel, a faixa de operação deve ser pequena.

Escolheram-se valores entre 0ºC e 50ºC.

Figura 9 - Tabela do data sheet do termistor

Foi montado um divisor de tensão com um resistor de 10kΩ e foram encontrados os

respectivos valores de tensão.

Figura 10 - Divisor de tensão com o termistor

A partir disso foram determinados os valores correspondentes da conversão A/D e

encontrou-se uma fórmula de linearização para a faixa de operação.

Temperatura (ºC) Tensão (V) Valor Digital

0 1,3 66

10 1,8 91

25 2,5 127

40 3,1 158

50 3,5 178

Tabela 2 - Tabela de valores encontrados para o termistor

Page 12: Pedro Cabral - Dennis Lima - Mozart Melo - Ulisses Batista - Micro Control Adores Aplicacao Em Hotelaria - 2010

12

3.5 Motor DC

Um dos itens sugeridos para o projeto foi um motor DC, que é uma máquina elétrica

capaz de converter elétrica em energia mecânica.

Foi decidido pelo grupo que o mesmo seria utilizado para a abertura e fechamento da

porta do hotel. O motor utilizado foi o de 9V MMI-659RK (Singapore).

Figura 11 - Aspecto de um motor DC

Foram feitas medidas com o motor e observou-se que ele não é simétrico em relação a

velocidade, tensão e corrente. Os valores obtidos estão em tabelas a seguir.

VDC (V) I (mA)

1 0

2 4

3 32

4 38

5 44

6 44,2

7 44,3

8 44,3

9 44,3

Tabela 3 - Tabela com valores positivos de alimentação, motor girando no sentido anti-horário

Page 13: Pedro Cabral - Dennis Lima - Mozart Melo - Ulisses Batista - Micro Control Adores Aplicacao Em Hotelaria - 2010

13

VDC (V) I (mA)

-1 -30

-2 -39

-3 -48

-4 -60

-5 -85

-6 -110

-7 -120

-8 -135

-9 -160

Tabela 4 - Tabela com valores negativos de alimentação

3.6 Ponte-H

Como a ideia é controlar a abertura e fechamento de uma porta, torna-se necessário

que se possa girar o motor para os dois lados. Para isso pode-se utilizar uma ponte-h.

Apesar de não ser tão conhecida, um dos circuitos mais importantes na elaboração de

sistemas automatizados é a ponte H. Trata-se de um circuito utilizado para controlar um motor

DC a partir de sinais gerados por um microcontrolador.

Devido à disposição dos seus componentes, torna-se extremamente fácil selecionar o

sentido da rotação de um motor, apenas invertendo a polaridade sobre seus terminais.

Figura 12 - Esquema de uma ponte-h

Page 14: Pedro Cabral - Dennis Lima - Mozart Melo - Ulisses Batista - Micro Control Adores Aplicacao Em Hotelaria - 2010

14

Também é importante para a utilização com circuitos digitais, pois como os sinais de

saída dos microcontroladores não suportam a corrente necessária e nem possuem a tensão

adequada para acionar um motor, é necessária uma unidade de potência que possa alimentá-lo

convenientemente.

Quando ligamos um motor DC com uma bateria, observamos que ele gira numa velo-

cidade constante e numa única direção. Para alterarmos o sentido da rotação do motor, basta

apenas ligar os terminais do motor de forma invertida.

Para que não seja necessário fazer essa operação manualmente, podemos utilizar uma

ponte H. Pode-se criá-la facilmente com a finalidade de controlar o sentido da rotação de um

motor utilizando chaves simples, relés ou transistores, bastando apenas entender o seu funcio-

namento.

Uma ponte H básica é composta por 4 chaves mecânicas ou eletrônicas posicionadas

formando a letra “H”, sendo que cada uma localiza-se num extremo e o motor é posicionado

no meio.

Dependendo de como essas chaves são abertas a corrente irá fluir em um sentido ou

outro. No caso são utilizados transistores bipolares de junção dos tipos NPN e PNP como

chaves. Assim garante-se que a corrente flui no sentido desejado.

Figura 13 - Esquema de funcionamento da ponte-H

No caso da montagem percebeu-se que seria necessário utilizar transistores de maior

ganho, pois a corrente de base deve ser pequena, pois estará ligada ao PIC. Além disso o tran-

sistor deve suportar uma alta corrente de coletor, já que como visto o motor pode puxar até

160mA de corrente. Foi escolhida então uma ponte-H utilizando os transistores TIP31(NPN)

e TIP32 (PNP), como no esquema mostrado a seguir.

Page 15: Pedro Cabral - Dennis Lima - Mozart Melo - Ulisses Batista - Micro Control Adores Aplicacao Em Hotelaria - 2010

15

Figura 14 - Esquemático da ponte-h utilizada

3.7 PWM

Uma das vantagens de utilizar o microcontrolador 16F877A da empresa Microchip é

exatamente que ele já tem embutido um periférico de PWM, ou Pulse Width Modulation. Ele

pode ser utilizado para controlar a velocidade de um motor DC, e juntamente com a ponte-h

controlar a velocidade.

Como o PWM pode controlar a velocidade de um motor DC é mostrado a seguir. De-

pendendo de quanto tempo o ciclo fica ativo (Duty Cycle) é variado o nível DC médio e assim

controla-se a velocidade.

Figura 15 - Diagrama de tempo de um PWM

Page 16: Pedro Cabral - Dennis Lima - Mozart Melo - Ulisses Batista - Micro Control Adores Aplicacao Em Hotelaria - 2010

16

O controle do período do PWM é feito a partir do timer 2 do PIC, enquanto que o

tempo ativo, o Duty Cycle, pode ser controlado por uma função específica.

Figura 16 - Saída do PWM

No caso do circuito utilizado, o PWM foi colocado na base de um CI Darlington

TIP131, que suporta uma alta corrente (8 A) e tem um alto ganho (mínimo de 500). Este esta-

va ligado aonde ficaria o terra da ponte-h, de forma a controlar a corrente total que flui pelo

motor.

3.8 Capture

Este módulo tem como objetivo a contagem de tempo entre dois eventos ocorridos em

um dos pinos CCP. Para isso será utilizado como base de tempo o Timer 1 e no momento do

evento seu valor será capturado, daí o nome capture. Como o Timer 1 é de 16 bits, a captura

será feita em dois registradores: CCPRxH e CCPRxL.

Com esse recurso é possível criar um medidor de período, contando o tempo gasto, por

exemplo, entre duas bordas de subida da onda ligada ao pino CCP. É importante observar que

a captura de valor de Timer 1 não reseta o mesmo, e por isso, para definir-se o tempo real

entre duas leituras será necessário uma conta de subtração entra a última leitura e a anterior.

Esta conta deverá ser implementada pelo programa.

No programa a idéia inicial seria utilizar o captura para medir o tempo que demora até

um cliente ser atendimento no balcão da recepção do hotel, porém não foi possível implemen-

tar essa função no programa.

Page 17: Pedro Cabral - Dennis Lima - Mozart Melo - Ulisses Batista - Micro Control Adores Aplicacao Em Hotelaria - 2010

17

3.9 Comunicação Serial

A comunicação entre o usuário e o sistema implementado se dá através do software

RComSerial e da utilização do padrão RS-232, como mostra a figura a seguir:

Figura 17 - Esquema de ligação da porta serial do computador com ci MAX 232

Para controlar essa comunicação foi utilizado o programa RogerCom, que pode ser

encontrado na pagina HTTP://www.rogercom.com.

Figura 18 - Tela do programa RcomSerial v1.2

Page 18: Pedro Cabral - Dennis Lima - Mozart Melo - Ulisses Batista - Micro Control Adores Aplicacao Em Hotelaria - 2010

18

3.10 Programa

O sistema implementado tem as seguintes entradas: sensor de luminosidade (analógi-

ca), sensor de temperatura (analógica) e sensor de presença (digital) e consta com as seguintes

saídas: motor DC, luminárias e ar-condicionados.

O programa funciona da seguinte forma no modo automático: é obtido o valor da lu-

minosidade através da conversão analógica/digital e dependendo do nível de luminosidade

serão acendidas a quantidade de luminárias necessárias para o ambiente ter uma boa ilumina-

ção serão acesas.

O mesmo procedimento vale para os aparelhos de ar-condicionado, o valor da tempe-

ratura é adquirido através da conversão analógica/digital do sinal do sensor e dependendo do

nível de temperatura ele liga um ou dois ar-condicionados.

Quando o sensor de presença é ativado, ativa o maotor DC, abre a porta, verifica se o

sensor ainda está ativado, para a prevenção de acidentes e depois fecha a porta. Através do

computador, devidamente conectado ao sistema através da porta serial, padrão RS-232, o usu-

ário poderá obter o valor da temperatura, o número de luminárias acesas, o estado da porta e o

número de ar-condicionados ligados.

Já no modo manual, o recepcionista, através do computador, pode decidir o número de

ar-condicionados ligados, o número de lâmpadas acesas, abrir e fechar a porta, além de esco-

lher a velocidade da porta.

Figura 19 - Fluxograma - parte 1

Page 19: Pedro Cabral - Dennis Lima - Mozart Melo - Ulisses Batista - Micro Control Adores Aplicacao Em Hotelaria - 2010

19

Figura 20 - Fluxograma - parte 2

Page 20: Pedro Cabral - Dennis Lima - Mozart Melo - Ulisses Batista - Micro Control Adores Aplicacao Em Hotelaria - 2010

20

4 CONCLUSÃO

Este trabalho serve para complementar o aprendizado da disciplina de microcomputa-

dores. Inicialmente na cadeira foi estudado o funcionamento básico e a arquitetura de um mi-

crocomputador em geral, e após isso foi estudado o PIC, que é um microcontrolador que já

tem embutido vários componentes do microcomputador.

Foi muito importante ter um projeto de engenharia proposto e desenvolver todas as

etapas deste projeto, desde os estudos iniciais, passando pela descrição do sistema, apresenta-

ção do pré-projeto, desenvolvimento do circuito, pesquisas adicionais, compra e montagem de

componentes, testes diversos, programar o PIC, fazer a comunicação serial e finalmente ob-

servar o sistema funcionando como um todo.

Um aspecto essencial de um grande projeto como esse é dividir o projeto em blocos e

trabalhar neles de forma separada para depois juntar tudo no circuito completo. No caso, foi

necessário aprender a linguagem C aplicada a microcontroladores PIC, para em seguida de-

senvolver os blocos, como ponte-h, motor dc, sensor de temperatura, sensor de luminosidade,

comunicação serial, controle de luminárias e ar-condicionado.

Este trabalho foi muito importante, graças a ele, podemos obter um maior conheci-

mento sobre o funcionamento de microcontroladores na prática e como eles podem ser aplica-

dos no cotidiano de um hotel. Também foi importante lidar com o enorme desafio de fazer um

projeto que atendesse as especificações necessárias e ao mesmo tempo resolver, de maneira

criativa, os problemas que foram surgindo durante a realização do trabalho.

Enfim, a arquitetura genérica dos microcomputadores presente nos microcontroladores

PIC torna possível o desenvolvimento de sistemas de controle complexos, com aplicações

práticas e comerciais diversas na engenharia.

Page 21: Pedro Cabral - Dennis Lima - Mozart Melo - Ulisses Batista - Micro Control Adores Aplicacao Em Hotelaria - 2010

21

5 REFERÊNCIAS

ALVES, R. et al. Sistemas Digitais: Projeto Contador de Passagem. Disponivel em:

<http://www.gta.ufrj.br/grad/01_1/contador555/ldr.htm>.

BESINGA, R. W. H-Bridge Microchip PIC Microcontroller PWM Motor Controller.

Ermicroblog, 2009. Disponivel em: <http://www.ermicro.com/blog/?p=706>.

CUSTOM COMPUTER SERVICES. C Compiler Reference Manual. Brookfield. 2009.

MESSIAS, A. R. Comunicação com a Porta Serial. RogerCom, 2006. Disponivel em:

<http://www.rogercom.com/PortaSerial/PortaSerial.htm>.

PATSKO, L. F. Tutorial Montagem da Ponte H. Maxwell Bohr Instrumentação Eletrônica,

Londrina, 2006. Disponivel em:

<http://www.maxwellbohr.com.br/downloads/robotica/mec1000_kdr5000/tutorial_eletronica_

-_montagem_de_uma_ponte_h.pdf>.

PEREIRA, F. Microcontroladores PIC: Programação em C. São Paulo: Érica, 2003.

SEMITEC ISHIZUKA ELECTRONICS CORPORATION. Product Catalog. Tokyo. 2005.

SILVA JUNIOR, V. P. Linguagem C para microcontroladores PIC. [S.l.]: Vidal Projetos

Personalizados, 1999.

SOUZA, D. J.; LAVINIA, N. C. Conectando o PIC 16F877A: Recursos Avançados. São

Paulo: Érica.

Page 22: Pedro Cabral - Dennis Lima - Mozart Melo - Ulisses Batista - Micro Control Adores Aplicacao Em Hotelaria - 2010

22

APÊNDICE A – ESQUEMA COMPLETO DO CIRCUITO

Page 23: Pedro Cabral - Dennis Lima - Mozart Melo - Ulisses Batista - Micro Control Adores Aplicacao Em Hotelaria - 2010

23

APÊNDICE B – CÓDIGO DO PROGRAMA

/*

Universidade Federal de Pernambuco

Centro de Tecnologia e Geociências

Curso de Engenharia Eletrônica

Projeto Final de Microcomputadores

Professor: Mauro

Grupo:

Dennis Victor Soares Lima

Mozart Castro Melo

Pedro Lyra Pereira Cabral

Ulisses Santiago Rodrigues Batista

--------------------------------------------------

Projeto proposto:

Aplicação em Hotelaria:

1- Pelo menos duas variáveis analógicas (Temperatura e Luminosidade);

2- Função do PIC – PWM e Capture;

3- Sensor de Presença (Digital);

4- Motor DC;

--------------------------------------------------

Lê o valor da luminosidade através da conversão analógica/digital;

Dependendo do nível de luminosidade (determinado experimentalmente) serão acendidas 1,2,3 ou 4 luminárias;

Lê o valor de temperatura através da conversão analógica/digital do sinal do sensor;

A partir de uma fórmula experimental se encontra o valor real de temperatura;

Dependendo do nível de temperatura ele liga um ou dois ar-condicionados;

Quando o sensor de presença é ativado, ativa o motor o DC, abre a porta, verifica o sensor e depois fecha a porta;

O sistema deve ter uma interface com o computador através da porta serial, padrão RS-232;

O usuário pode observar valor de temperatura, número de luminárias acesas, número de ar-condicionados acesos,

estado da porta;

Deve ter um sistema que captura o estado do tempo para ver o tempo que demora ao cliente ser atendido;

---------------------------------------------------------------------

*/

#include <16F877A.h>

#device adc=8

#FUSES NOWDT //No Watch Dog Timer

#FUSES XT //Crystal osc <= 4mhz

#FUSES NOPUT //No Power Up Timer

#FUSES NOPROTECT //Code not protected from reading

#FUSES NODEBUG //No Debug mode for ICD

#FUSES NOBROWNOUT //No brownout reset

Page 24: Pedro Cabral - Dennis Lima - Mozart Melo - Ulisses Batista - Micro Control Adores Aplicacao Em Hotelaria - 2010

24

#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O

#FUSES NOCPD //No EE protection

//#FUSES WRT_50% //Lower half of Program Memory is Write Protected

#use delay(clock=4000000)

#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)

#include <stdio.h>

//Define nomes de Pinos e constantes

#define nivel_luz_1 75 //CONSTANTE DE ILUMINAÇÃO 1

#define nivel_luz_2 135 //CONSTANTE DE ILUMINAÇÃO 2

#define nivel_luz_3 200 //CONSTANTE DE ILUMINAÇÃO 3

#define nivel_temperatura 21 //Define o nivel de temperatura

#define ar1 pin_b2 //AR CONDICIONADO 1

#define ar2 pin_b1 //AR CONDICIONADO 2

#define lamp1 pin_d0 //LÂMPADA 1

#define lamp2 pin_d1 //LÂMPADA 2

#define lamp3 pin_d2 //LÂMPADA 3

#define lamp4 pin_d3 //LÂMPADA 4

#define fimdecurso_abre pin_d4 //Sensor de fim de curso que mostra quando a porta abre

#define fimdecurso_fecha pin_d5 //Sensor de fim de curso que mostra quando a porta fecha

#define ponteh1 pin_d6 //abre a ponte-h em um sentido

#define ponteh2 pin_d7 //abre a ponte-h em outro sentido

#define operacao pin_e0 //indicador de operacao (ligado/desligado)

#define presenca pin_b0 //pino RB0 ligado ao sensor de presença

//Prototipos de rotinas

void detecta_presenca(void);

void abre_porta(void);

void espera_porta(void);

void fecha_porta(void);

void verifica_luminosidade(void);

void compara_luminosidade (void);

void verifica_temperatura (void);

void compara_temperatura (void);

void controle_luminosidade (void);

void controle_ar (void);

void controle_porta (void);

void controle_pwm (void);

//Definicao de variaveis

unsigned int temperatura;

unsigned int luminosidade;

unsigned int N_lampada=0,N_ar=0;

int modo_operacao;

//define a interrupção externa pelo pino RB0

#int_ext

void detecta_presenca() //funcao ativada pela interrupcao

int sensor=0; //define variaveis locais

int porta_aberta=0;

Page 25: Pedro Cabral - Dennis Lima - Mozart Melo - Ulisses Batista - Micro Control Adores Aplicacao Em Hotelaria - 2010

25

int porta_fechada=0;

printf("\r\nInicio de interrupcao externa\r\n");

sensor=input_state(presenca); //sensor igual a 1 quando o pino rb0 esta ativo

do

abre_porta(); //chama a funcao abre porta

porta_aberta=input_state(fimdecurso_abre); //pega o valor do fim de curso

while(porta_aberta==0); //continua abrindo ate atingir o fim de curso

do

espera_porta(); //apos abrir aguarda

sensor=input_state(presenca); //espera que o sensor de presenca fique baixo

while(sensor==1);

do

fecha_porta(); //fecha porta

porta_fechada=input_state(fimdecurso_fecha); //pega o valor do fim de curso

while(porta_fechada==0); //continua fechando ate atingir o fim de curso

espera_porta();

//interrupcao serial

#INT_RDA

void recebe_serial()

modo_operacao=getc();

printf("\r\nInterrupcao serial\r\n");

//funcao abre porta, gira motor em um sentido

void abre_porta()

output_high(ponteh1);

output_low(ponteh2);

//funcao espera porta, para motor

void espera_porta()

output_low(ponteh1);

output_low(ponteh2);

//funcao fecha porta, gira motor no outro sentido

void fecha_porta()

output_low(ponteh1);

output_high(ponteh2);

//funcao converte A/D de luminosidade

void verifica_luminosidade()

setup_adc(ADC_CLOCK_INTERNAL); //CONFIGURA A CONVERSÃO AD

set_adc_channel(3); //HABILITA A CONVERSÃO PELO PINO A3

delay_ms(100); //TEMPO NESCESSÁRIO PARA CONVERSÃO AD

Page 26: Pedro Cabral - Dennis Lima - Mozart Melo - Ulisses Batista - Micro Control Adores Aplicacao Em Hotelaria - 2010

26

luminosidade=read_adc(); //VARIÁVEL QUE MOSTRA A LUMINOSIDADE

//Compara o nivel de luminosidade e acende lampadas

void compara_luminosidade()

if(luminosidade<nivel_luz_1) //Se o nivel de luz for menor que o nivel de luz 1

output_high(lamp1); //acende 4 lampadas

output_high(lamp2);

output_high(lamp3);

output_high(lamp4);

N_lampada=4;

else if ((luminosidade<=nivel_luz_2)&&(luminosidade>nivel_luz_1))

//se o nivel de luz estiver entre o nivel 1 e o nivel 2

output_high(lamp1); //acende 3 lampadas

output_high(lamp2);

output_low(lamp3);

output_high(lamp4);

N_lampada=3;

else if ((luminosidade<=nivel_luz_3)&&(luminosidade>nivel_luz_2))

//se o nivel de luz estiver entre o nivel de luz 2 e o 3

output_low(lamp1); //acende 2 lampadas

output_high(lamp2);

output_low(lamp3);

output_high(lamp4);

N_lampada=2;

else

//caso contrario, se estiver acima do nivel 3

output_low(lamp1); //acende 1 lampada apenas

output_low(lamp2);

output_high(lamp3);

output_low(lamp4);

N_lampada=1;

//funcao converte A/D sinal de temperatura

void verifica_temperatura()

unsigned int temporario;

setup_adc(ADC_CLOCK_INTERNAL); //CONFIGURA A CONVERSÃO AD

set_adc_channel(1); //HABILITA A CONVERSÃO PELO PINO A1

delay_ms(100); //TEMPO NESCESSÁRIO PARA CONVERSÃO AD

temporario=read_adc(); //Variavel temporario

temperatura=0.42*(temporario-66); //Formula para conversao da temperatura

//Determinada Experimentalmente

//funcao para comparar temperatura com nivel e ligar ar-condicionados

void compara_temperatura() //funcao para testar a temperatura

Page 27: Pedro Cabral - Dennis Lima - Mozart Melo - Ulisses Batista - Micro Control Adores Aplicacao Em Hotelaria - 2010

27

if (temperatura>nivel_temperatura) //se a temperatura for maior que certo nivel

OUTPUT_high(ar1); //liga o ar1 e ar2

OUTPUT_high(ar2);

N_ar=2;

else

OUTPUT_high(ar1); //caso contrario, liga ar1 e desliga ar2

OUTPUT_low(ar2);

N_ar=1;

//funcao para controle manual das lampadas

void controle_luminosidade()

printf("\r\nDigite o numero de lampadas que deseja acender (0, 1, 2, 3 ou 4).\r\n");

switch(getch())

//funcao que recebe um valor e acende o numero correspondente de lampadas

case '4':

output_high(lamp1); //acende 4 lampadas

output_high(lamp2);

output_high(lamp3);

output_high(lamp4);

N_lampada=4;

break;

case '3':

output_high(lamp1); //acende 3 lampadas

output_high(lamp2);

output_low(lamp3);

output_high(lamp4);

N_lampada=3;

break;

case '2':

output_low(lamp1); //acende 2 lampadas

output_high(lamp2);

output_low(lamp3);

output_high(lamp4);

N_lampada=2;

break;

case '1':

output_low(lamp1); //acende 1 lampada

output_low(lamp2);

output_high(lamp3);

output_low(lamp4);

N_lampada=1;

break;

case '0':

Page 28: Pedro Cabral - Dennis Lima - Mozart Melo - Ulisses Batista - Micro Control Adores Aplicacao Em Hotelaria - 2010

28

output_low(lamp1); //apaga todas as lampadas

output_low(lamp2);

output_low(lamp3);

output_low(lamp4);

N_lampada=0;

break;

//funcao para controle manual do ar-condicionado

void controle_ar()

printf("\r\nDigite o numero de ar-condicionados que deseja ligar (0,1 ou 2):\r\n");

switch(getch()) //recebe um valor e acende o numero correspondente de ar-condicionado

case '2':

OUTPUT_high(ar1); //liga o ar1 e ar2

OUTPUT_high(ar2);

N_ar=2;

break;

case '1':

OUTPUT_high(ar1); //caso contrario, liga ar1 e desliga ar2

OUTPUT_low(ar2);

N_ar=1;

break;

case '0':

output_low(ar1); //desliga ar1 e ar2

output_low(ar2);

N_ar=0;

break;

default:

printf("\r\nNumero invalido\r\n");

//funcao para controle manual da porta

void controle_porta()

int porta_aberta=0; //define variaveis locais

int porta_fechada=0;

printf("\r\nVoce deseja abrir (a) ou fechar (f) a porta?\r\n");

switch (getch()) //recebe um comando para abrir ou fechar

case 'a': //caso for a

do //faz enquanto não atinge o fim de curso

abre_porta(); //chama a funcao abre porta

Page 29: Pedro Cabral - Dennis Lima - Mozart Melo - Ulisses Batista - Micro Control Adores Aplicacao Em Hotelaria - 2010

29

porta_aberta=input_state(fimdecurso_abre); //pega o valor do fim de curso

while(porta_aberta==0); //continua abrindo ate atingir o fim de curso

espera_porta(); //desliga o motor

break;

case 'f': //caso for f

do //faz enquanto não atinge o fim de curso

fecha_porta(); //fecha porta

porta_fechada=input_state(fimdecurso_fecha); //pega o valor do fim de curso

while(porta_fechada==0); //continua fechando ate atingir o fim de curso

espera_porta(); //desliga motor

break;

default:

printf("\r\nOperacao Invalida\r\n");

break;

//controle do PWM

void controle_pwm()

long int ciclo=0; //cria a variavel long int ciclo

long int porcentagem=0; // variavel porcentagem

setup_ccp1(CCP_PWM); //Coloca o CCP1 (RC2) como PWM

set_pwm1_duty(0); //Determina o duty cicle inicial

setup_timer_2(T2_DIV_BY_4, 250, 1); //Ajusta o timer 2

//uma observacao importante: O set_pwm1_duty() deve ir antes do setup_timer_2

//Caso contrario, nao funciona e fica em zero o pino

printf("\r\nDigite o nivel de velocidade desejado (0-4)\r\n");

switch (getch()) //recebe um comando numerico pela serial

case '0': ciclo=0; break;

case '1': ciclo=102; break;

case '2': ciclo=256; break;

case '3': ciclo=512; break;

case '4': ciclo=1000; break;

set_pwm1_duty(ciclo); //seta o duty do pwm como valor do ciclo

setup_timer_2(T2_DIV_BY_4, 250, 1); //Deve ajustar o timer 2 apos isso

porcentagem=ciclo/10.24; //Da o valor do duty em percentual do tempo

printf("\r\nO Duty Cicle esta em %Lu %c\r\n",porcentagem,'%');

//funcao main do programa

void main()

Output_high(operacao); //LED INDICATIVO DE FUNCIONAMENTO DO SISTEMA

setup_adc_ports(AN0_AN1_AN3); //HABILITA A CONVERSÃO AD-DA

setup_adc(ADC_CLOCK_DIV_8); //CONFIGURA O TIMER DE CONTROLE DA CONVERSÃO

Page 30: Pedro Cabral - Dennis Lima - Mozart Melo - Ulisses Batista - Micro Control Adores Aplicacao Em Hotelaria - 2010

30

enable_interrupts(int_ext); //habilita a interrupcao externa do pin_b0

enable_interrupts(global); //habilita interrupcao global

enable_interrupts(int_rda); //habilita interrupcao serial

ext_int_edge(L_TO_H); //interrupcao externa na subida

printf("\r\nSistema inicializado.\r\n");

modo_operacao='m';

while(modo_operacao=='m')

disable_interrupts(int_ext);

disable_interrupts(int_rda);

printf("\r\nModo manual ativado.\r\n");

printf("\r\nOpcoes:\r\n");

printf("\r\nVerificar dados (d)\r\n");

printf("\r\nAcender Lampadas (l)\r\n");

printf("\r\nControle de ar-condicionado (c)\r\n");

printf("\r\nControle de Porta (p)\r\n");

printf("\r\nControle de Velocidade (v)\r\n");

printf("\r\nAtiva o automatico (a)\r\n");

switch(getch())

case 'd':

verifica_luminosidade ();

verifica_temperatura();

printf("\r\nTemperatura atual:%u",temperatura);

printf("\r\nLuminosidade atual:%u",luminosidade);

printf("\r\nNumero de lampadas:%u",N_lampada);

printf("\r\nNumero de ar-condicionados ligados: %u\r\n",N_ar);

break;

case 'l':

controle_luminosidade();

break;

case 'c':

controle_ar();

break;

case 'p':

controle_porta();

break;

case 'a':

modo_operacao='a';

break;

case 'v':

controle_pwm();

default:

printf("\r\nCaracter invalido\r\n");

Page 31: Pedro Cabral - Dennis Lima - Mozart Melo - Ulisses Batista - Micro Control Adores Aplicacao Em Hotelaria - 2010

31

break;

while((modo_operacao=='a')||(modo_operacao!='m'))

setup_ccp1(CCP_OFF);

output_high(pin_c2);

enable_interrupts(int_rda); //habilita interrupcao serial

enable_interrupts(int_ext);

verifica_luminosidade();

compara_luminosidade();

verifica_temperatura();

compara_temperatura();

printf("\r\nTemperatura atual:%u \r\n",temperatura);

printf("\r\nLuminosidade atual:%u \r\n",luminosidade);

printf("\r\nNumero de lampadas:%u \r\n",N_lampada);

printf("\r\nNumero de ar-condicionados ligados: %u\r\n",N_ar);

printf("\r\nPressione 'm' para ativar o modo manual.\r\n");

delay_ms(5000); //da um atraso de 5s

Page 32: Pedro Cabral - Dennis Lima - Mozart Melo - Ulisses Batista - Micro Control Adores Aplicacao Em Hotelaria - 2010

32

APÊNDICE C – LISTA DE COMPONENTES E CUSTOS

Componente Quantidade Preço por unidade Preço Total

Resistores 1/8W

10k 4 0,11 0,44

1k 3 0,11 0,33

100 2 0,11 0,22

56k 2 0,11 0,22

220 6 0,11 0,66

470 1 0,11 0,11

Capacitores

Eletrolítico 1uF 4 0,60 2,4

PIC16F877A 1 27,78 27,78

Transistores

BC547 - NPN 4 0,21 0,84

TIP31 - NPN 2 1,57 3,14

TIP32 - PNP 2 1,82 3,64

TIP132 - Darlington - NPN 1 2,81 2,81

Cristal 4MHz 1 2,60 2,6

Chave 5 1,96 9,8

LED 7 0,20 1,4

LDR 1 2,11 2,11

Termistor NTC 10k 1 3,03 3,03

CI MAX 232 1 3,79 3,79

Motor DC 9V 1 4,75 4,75

TOTAL 70,07