Professional Documents
Culture Documents
ENGENHARIA DE COMPUTAÇÃO
NATAL / RN
JANEIRO DE 2007
ALANN KARLLO GOMES XAVIER MARINHO
DANIEL CÂMARA GADÊ DE VASCONCELOS
NATAL / RN
JANEIRO DE 2007
“Não podemos construir uma máquina do tempo para mudar o passado porque
se o passado fosse mudado não construiríamos uma máquina do tempo.”
“Todos nós temos máquinas do tempo. As que nos levam ao passado são nossas
lembranças, e as que nos fazem ir em frente são os nossos sonhos.”
Herbert George Wells – “A Máquina do Tempo”
3
AGRADECIMENTOS
4
SUMÁRIO
SUMÁRIO 5
LISTA DE FIGURAS 7
LISTA DE TABELAS 9
LISTA DE SÍMBOLOS E ABREVIATURAS 10
RESUMO 11
ABSTRACT 12
CAPÍTULO 1 - INTRODUÇÃO 13
CAPÍTULO 2 - A REDE ELÉTRICA 15
2.1 A REDE ELÉTRICA COMO CANAL DE COMUNICAÇÕES 15
2.2 DISTÚRBIOS CARACTERÍSTICOS DA REDE ELÉTRICA 18
2.2.1 Impedância 19
2.2.2 Atenuação 20
2.2.3 Ruídos 20
2.2.4 Outros Distúrbios na Rede Elétrica 22
CAPÍTULO 3 - MODULAÇÃO 25
3.1 MODULAÇÃO DE ONDA CONTÍNUA ANALÓGICA 25
3.1.1 Modulação de Onda Contínua por Amplitude (AM) 26
3.1.2 Modulação de Onda Contínua por Ângulo 26
3.2 MODULAÇÃO DE ONDA CONTÍNUA DIGITAL 27
3.2.1 Modulação em Amplitude por Chaveamento (ASK) 27
3.2.2 Modulação em Freqüência por Chaveamento (FSK) 27
3.2.3 Modulação em Fase por Chaveamento (PSK) 28
3.3 MODULADOR E DEMODULADOR FSK 29
3.3.1 Modulador FSK 29
3.3.2 Demodulador FSK 30
3.3.2.1 Phase-Locked Loop (PLL) 31
3.4 LEGISLAÇÃO E REGULAMENTAÇÕES 32
CAPÍTULO 4 - TEMPERATURA 34
4.1 DEFINIÇÃO 34
4.2 MEDIÇÃO DA TEMPERATURA 34
5
4.2.1 Instrumentos de Medição 34
4.2.1.1 Termistores 35
4.2.1.2 Termopares 36
4.2.1.3 Pirômetros 36
4.2.1.4 Sensores semicondutores 37
4.2.1.5 Circuitos integrados 37
CAPÍTULO 5 - MICROCONTROLADOR PIC16F877A 41
5.1 CONVERSOR A/D 42
5.2 COMUNICAÇÃO SERIAL I2C NO PIC16F877A 43
5.2.1 O I2C 43
5.2.2 Barramento I2C 43
5.2.3 Transmissão dos Dados 44
5.3 COMUNICAÇÃO SERIAL RS-232 NO PIC16F877A 46
5.3.1 Módulo USART 46
5.3.2 Protocolo de Comunicação Serial RS-232 47
5.3.3 Driver RS-232 47
CAPÍTULO 6 - INTERFACE DE ACOPLAMENTO 49
6.1 DRIVER DE SAÍDA (AMPLIFICADOR DE POTÊNCIA) 49
6.2 REDE DE ACOPLAMENTO 50
CAPÍTULO 7 - IMPLEMENTAÇÕES, TESTES E RESULTADOS 52
7.1 CIRCUITO COM TRANSMISSÃO ANALÓGICA DE MALHA ABERTA 52
7.2 CIRCUITO COM TRANSMISSÃO DIGITAL UTILIZANDO I2C 54
7.3 CIRCUITO COM TRANSMISSÃO DIGITAL UTILIZANDO O CONVERSOR
A/D 60
CAPÍTULO 8 - CONCLUSÃO 64
BIBLIOGRAFIA 66
ANEXO A - CIRCUITO TRANSMISSOR / RECEPTOR 69
ANEXO B - IMAGENS DOS TESTES 71
ANEXO C - PROGRAMA DO PIC16F877A 73
6
LISTA DE FIGURAS
8
LISTA DE TABELAS
Tabela 2.1 - Anomalias mais comuns provenientes da rede elétrica, suas causas e efeitos 22
Tabela 3.1 - Alocação de freqüências para redes de baixa tensão residencial 33
Tabela 5.1 – Níveis de tensão fornecidos pelo PIC16F877A e pelo padrão RS-232 48
Tabela 6.1 - Características dos amplificadores com configuração coletor comum 49
Tabela 7.1 – Valores de conversão da temperatura 61
9
LISTA DE SÍMBOLOS E ABREVIATURAS
Palavras chaves: Transmissão de Dados Via Rede Elétrica, PLC, Medição de Temperatura,
Modulação.
11
ABSTRACT
12
CAPÍTULO 1
INTRODUÇÃO
13
Figura 1.1 – Diagrama de blocos do projeto.
No Capítulo 2 será estudada a rede elétrica. Serão descritas suas características, seus
problemas e os requisitos para que haja uma transmissão de dados por ela. Também serão
discutidos os tipos de modulações e suas características
No Capítulo 3 é a vez da temperatura ser debatida. Suas características, instrumentos
e métodos usados para fazer a sua medição.
No Capítulo 4 será estudado o protocolo I2C para transferência de dados serial entre
dispositivos.
As implementações deste trabalho, bem como os testes e seus resultados serão
apresentadas no Capítulo 5.
As conclusões e futuras implementações que podem ser feitas para melhorar o
projeto e dar continuidade serão apresentadas no Capítulo 6.
14
CAPÍTULO 2
A REDE ELÉTRICA
15
Figura 2.1 – Rede Telefônica [2].
18
resultados confiáveis. Sistemas de comunicações que usam a rede elétrica dependem do
ambiente, ou seja, os parâmetros de comunicação se alteram de acordo com as cargas ligadas
nela intermitentemente.
Isso quer dizer que a qualidade da energia elétrica não pode ser completamente
controlada pelas concessionárias, uma vez que os aparelhos eletrônicos são suscetíveis a
distúrbios decorrentes de fenômenos naturais (como descargas atmosféricas, por exemplo) e
aqueles inerentes da própria operação do sistema, como curtos-circuitos causados por defeitos
de equipamentos, vandalismo, queimadas debaixo das linhas de transmissão, etc.
A transmissão de dados via PLC não interfere em nenhum eletrodoméstico, pois as
freqüências utilizadas por ela não são usadas por nenhum outro aparelho eletrônico.
Entretanto, outros equipamentos podem causar interferências em uma rede PLC, como
motores de escova utilizados em furadeiras e liquidificadores, por exemplo, e os dimmers de
luz.
2.2.1 Impedância
Z=U/i (2.1)
19
Mínimo
Figura 2.5 - Freqüência (MHz) – Impedância de Redes Elétricas na Europa, por Malack e Engstrom [4].
2.2.2 Atenuação
2.2.3 Ruídos
Em redes de alta tensão, o ruído do canal pode ser devido a relâmpagos, a operações
de disjuntores de circuito e aos transientes produzidos dentro de uma estação de força. Nas
redes de média tensão, especialmente o liga-desliga dos bancos de capacitores usados para a
correção de fator de potência, pode causar picos elevados de ruído. Na rede notoriamente
ruidosa de baixa tensão, os causadores de ruídos são os vários dispositivos residenciais
conectados à rede [1].
20
No entanto, nunca houve a preocupação com interferências de alta freqüência em
redes de distribuição de energia, pois os sistemas operam em 60Hz. Deste modo, os cabos não
têm nenhum tipo de proteção contra ruídos como uma malha metálica (blindado) ou sequer
são trançados [4].
A rede de baixa tensão é um ambiente bastante ruidoso e os piores causadores destes
ruídos são os vários dispositivos residenciais e equipamentos de escritórios conectados a rede
elétrica. VINES [6] classifica os ruídos em baixa tensão da seguinte forma [4]:
d) Ruído Não-Sincronizado:
Este é um ruído de pulso periódico que ocorre com uma freqüência não múltipla da
rede de tensão. A maior fonte de ruído tipo D é a televisão.
A Figura 2.7 mostra o espectro de tensão de algumas fontes de ruídos citadas acima.
21
RUÍDO DE FUNDO
RUÍDO DE FURADEIRA
RUÍDO DE TEMPORIZADORES
DE LUZ
RUÍDO DE COMPUTADOR
(FONTE CHAVEADA)
Tabela 2.1 - Anomalias mais comuns provenientes da rede elétrica, suas causas e efeitos [8]:
22
É quando a rede elétrica São inúmeras as causas Mal funcionamento de
sofre uma alteração da desta anomalia, porém as equipamentos que
Distorção Harmônica forma de onda. mais comuns são, fontes possuam fontes lineares
chaveadas e motores ou motores. Os
elétricos, ou então redes computadores suportam
alimentadas por um maior nível de
geradores de má distorção harmônica,
qualidade ou com enfrentando assim,
manutenção inadequada. menores transtornos,
23
O SAG é caracterizado Geralmente são Mal funcionamento da
Afundamento de pela redução causados por curto- carga (travamento,
Tensão - SAG momentânea do valor circuito na rede elétrica e “reset” de computadores,
eficaz da tensão da rede chaveamento de etc.).
elétrica. equipamentos que
demandam altas
quantidades de energia.
24
CAPÍTULO 3
MODULAÇÃO
A modulação de onda contínua do tipo analógica usa uma onda portadora senoidal
para transmitir informação. Os tipos mais comuns desta modulação são a modulação por
amplitude (AM) e a modulação por ângulo.
25
3.1.1 Modulação de Onda Contínua por Amplitude (AM)
Nesse tipo de modulação o ângulo da onda portadora é variado de acordo com o sinal
a ser transmitido. Os dois métodos mais comuns desse tipo de modulação são: modulação em
fase (Phase Modulation PM) e modulação em freqüência (Frequency Modulation FM) [10].
A modulação em fase consiste em variar linearmente o ângulo do sinal modulado,
enquanto a modulação em freqüência varia, conforme o nome diz, a freqüência do sinal
modulado. Um sinal FM pode ser obtido de um sinal PM e vice-versa. Portanto, todas as
propriedades de um sinal FM podem ser deduzidas das propriedades de um sinal PM. A
Figura 3.1 faz um comparativo do resultado das modulações de onda contínua do tipo
analógica descritas.
26
3.2 MODULAÇÃO DE ONDA CONTÍNUA DIGITAL
fr = fp + fd (2.2)
fr = fp – fd (2.3)
28
Figura 3.2 – Modulação de Onda Contínua do tipo digital [12].
O sinal de saída do sensor precisa ser modulado para que seja enviado pela rede
elétrica. Como a sua saída corresponde apenas a uma tensão DC, precisamos de circuito para
modular esta tensão. Como vimos anteriormente, a melhor modulação para transmissões pela
rede elétrica é a modulação FSK. Para isto usaremos o XR-2206 da Exar Corporation. Este
CI tem uma excelente qualidade no sinal e boa estabilidade para sinais FSK. Ele trabalha com
freqüências entre 0.01Hz e 1MHz e é ideal para dispositivos de comunicações. A Figura 5.8
mostra a configuração do XR-2206 para ser usado como modulador FSK. O capacitor C e os
resistores R1 e R2 são quem definem as freqüências de saída dos níveis alto e baixo do
modulador respectivamente. A Figura 3.3 mostra o circuito indicado para fazer a modulação
FSK no XR-2206:
29
Figura 3.3 – Circuito para modulação FSK usando o XR-2206 [19].
Figura 3.4 – Diagrama de blocos do XR-2211 [35]. Figura 3.5 – Diagrama de blocos de um PLL básico [36].
30
3.3.2.1 Phase-Locked Loop (PLL)
Com sinal de entrada Ve, e freqüência fe dentro da faixa de captura ou aquisição Fa,
aparece uma tensão Vd na saída do Detector de Fase, tal que a freqüência do VCO seja
alterada até ser igual à freqüência do sinal de entrada, porém mantendo um erro ou diferença
de fase constante e tal que gere um Vc que sustente esta nova freqüência do VCO. Nesta
condição estável, o PLL está sincronizado ou travado, à custa de uma diferença de fase dphi
entre Ve e Vv, (donde o nome de Elo Travado em Fase), mantendo a freqüência fv do VCO
exatamente igual a freqüência fe do sinal de entrada. Se fe variar dentro da faixa de
sincronismo Fs, a freqüência do VCO acompanha fe [36]. Nas Figuras 3.6 e 3.7 podemos
observar como funciona o travamento dos sinais no PLL:
31
Banda do
Sinal
Figura 3.6 – Representação da faixa ocupada por um sinal. Figura 3.7 – Faixa de sincronismo de um sinal [36].
De acordo com a Figura 3.7, para o PLL poder sincronizar-se (travar) a partir da
condição não travada, é preciso que fe esteja acima de f1 ou abaixo de f3, ou seja, dentro da
faixa de aquisição Fa = f3 - f1. E uma vez sincronizado, o PLL se mantém sincronizado desde
que fe não passe acima de f2 e nem abaixo de f4, ou seja, fe não saia da faixa de sincronismo
Fs = f2 - f4 [36].
Tabela 3.1 – Alocação de freqüências para redes de baixa tensão residencial, visão Européia.
33
CAPÍTULO 4
TEMPERATURA
4.1 DEFINIÇÃO
A temperatura é uma das grandezas físicas mais medidas, sejam no dia-a-dia das
pessoas ou em processos industriais. Muitos métodos foram desenvolvidos para medir as
temperaturas. Muitos deles são baseados sobre o efeito da temperatura sobre matérias.
34
• Termistores
• Termopares
• Pirômetros
• Sensores Semicondutores
• Circuitos Integrados
4.2.1.1 Termistores
35
Figura 4.1 - Variação da resistência dos termistores com relação à temperatura [14].
4.2.1.2 Termopares
4.2.1.3 Pirômetros
36
4.2.1.4 Sensores semicondutores
Parâmetros elétricos dos semicondutores variam com a temperatura. E, por isso, eles
podem ser usados como sensores térmicos. Um simples diodo de silício diretamente
polarizado é provavelmente o mais barato sensor de temperatura que pode existir. Diversos
fabricantes desenvolveram diodos específicos para a função [16]. A curva da Figura 3.3
exemplifica a curva de variação Temperatura x Resistência de um diodo utilizado como
sensor:
Para isso, vários fabricantes produzem o conjunto sensor junto com circuitos auxiliares
em forma de circuito integrado. Existem tipos analógicos com saída de tensão ou saída de
corrente e os de saída digital para uso com microcontroladores. Experimentamos neste
trabalho o LM35 da National Semiconductor e o TMP101 da Texas Semiconductor
4.2.1.5.1 LM35
37
ERRO DE MEDIÇÃO (ºC)
TEMPERATURA (ºC)
O LM35CA, usado nas experiências, opera com uma tensão de entrada (Vin) entre 4V
e 30V medindo temperaturas entre -40 até 110 ºC e possui um invólucro de plástico. As
medições de temperatura feitas pelo sensor são provenientes de seus contatos. Visto que a
temperatura da superfície e a do ambiente está próxima, este método de medição não traz
problema de precisão significativo.
Este circuito integrado possui em seu interior uma configuração semelhante à descrita na
Figura 4.6:
38
Figura 4.6 - Esquema interno do LM35 [17].
Esta regra é obedecida quando temos a seguinte ligação elétrica do LM35, descrita em
seu datasheet, que está representada na Figura 4.7:
Figura 4.7 - Montagem para medições de temperatura entre -55ºC e 150ºC [17].
39
Figura 4.8 - Montagem para medições de temperatura entre 2ºC e 150ºC [17].
Com essa alteração, o calculo da tensão de saída do sensor sofre uma pequena
mudança conforme descrito abaixo:
Vout (mV) = 10mV x T
Onde:
Vout = Tensão de saída do LM35
T = Temperatura em º C
4.2.1.5.2 TMP101
Temperatura (ºC)
Figura 4.9 – Erro de medição (em ºC) do TMP101 x variação de temperatura (ºC) [39].
40
CAPÍTULO 5
MICROCONTROLADOR PIC16F877A
41
• 3 timers;
• 2 módulos PWM;
• Capacidade de comunicação serial utilizando o MSSP (protocolo I2C e ISP) e
USART (protocolo RS-232);
• Capacidade de comunicação paralela (PSP);
• Conversor A/D de 10bits com 8 canais de entrada;
• 2 comparadores analógicos;
• E um conjunto de apenas 35 instruções.
Como utilizamos apenas o conversor A/D e a comunicação serial via protocolo I2C e
protocolo RS-232, detalharemos o funcionamento destes a seguir.
42
5.2 COMUNICAÇÃO SERIAL I2C NO PIC16F877A
Em 1999, a Microchip introduziu o módulo MSSP nos modelos PIC16F87X [34]. Foi
este módulo que possibilitou a comunicação serial síncrona deste microcontrolador,
possibilitando a implementação por hardware no protocolo I2C. Antes disso, este protocolo
era implementado por software, a partir de uma técnica chamada de bit-bang. O módulo
MSSP do PIC16F877A tem suporte para endereçamento de 7bits e de 10bits, além de poder
operar com um clock numa transmissão I2C de no máximo 1MHz.
5.2.1 O I2C
O protocolo serial síncrono I2C foi criado pela Philips na década de 80 com o objetivo
de interconectar seus novos dispositivos eletrônicos. Sua principal finalidade é permitir a
comunicação entre dispositivos onboard, ou seja, dispositivos que estão instalados na mesma
placa de circuito impresso, mas nada impede a comunicação via barramento I2C entre
dispositivos instalados em placas diferentes desde que estejam próximas fisicamente. Para
uma comunicação a longa distância será necessária a utilização de um circuito integrado I2C
Bus Extender (Extensor de Barramento I2C), como o 82B715 fabricado pela Philips [34].
Ao longo do tempo o barramento I2C foi sofrendo atualizações de modo que os
primeiros CI’s fabricados com a interface I2C integrada podia transmitir e/ou receber dados a
uma velocidade máxima de 100kb/s (Standad-mode). Mais tarde a taxa de transferência
máxima foi ampliada para 400kb/s (fast-mode), e posteriormente para 3,4mb/s (high-mode)
[34].
Este protocolo tem um baixo nível de complexidade por ser composto fisicamente de
apenas dois fios: um cabo de transferência dos dados (SDA) e um cabo de clock (SCL) para o
sincronismo da transmissão. Por ter uma estrutura tão simples, este sistema tem um baixo
custo de implementação.
No barramento I2C os elementos envolvidos na comunicação são denominados de
Master (Mestre) e Slave (Escravo). O dispositivo mestre é sempre responsável pela geração
do sinal de clock. Sendo assim, a forma mais elementar de implementar um barramento I2C é
43
configurar um dos dispositivos como mestre e os demais como escravos, como mostra a
Figura 5.2:
44
linha SDA, sendo os 7bits primeiros o endereço do dispositivo escravo e o oitavo bit, o bit
R/W, que define se a comunicação será de leitura (R/W = 1) ou de escrita (R/W = 0) [34].
As linhas SDA e SLC são bidirecionais e devem se manter conectadas à linha de
alimentação VDD por meio de resistores de pull-ups para que, no momento em que o
barramento estiver ocioso, o sinal em qualquer uma das linhas esteja em nível lógico alto.
Deste modo, uma comunicação terá início quando ocorrer uma transição negativa na linha
SDA. Após a condição de START, o barramento deve ser considerado ocupado, pois uma
transmissão de dados está em andamento [34].
Após a condição de START o sinal de clock é enviado pelo dispositivo mestre. A
partir deste momento, os bits vão sendo colocados de forma serial na linha SDA a partir do bit
mais significativo, devendo o bit da vez assumir o nível lógico correto enquanto o sinal de
clock estiver em nível baixo. O receptor deve ler os bits enquanto o sinal de clock estiver em
nível lógico alto, período em que o bit presente na linha SDA deve se manter
obrigatoriamente estável. Na Figura 5.3 temos o esquema de uma transmissão do protocolo
I2C:
Depois que o dispositivo mestre envia byte de endereçamento, os bytes seguintes são
os dados propriamente ditos, não havendo limites para a quantidade de dados a serem
transmitidos.
Ao final de cada byte transmitido, o receptor tem que enviar um pulso de ACK
(acknowledge), conhecido como pulso de conhecimento. Isto é realizado fazendo a linha DAS
assumir nível lógico baixo. O pulso ACK indica para o transmissor que um byte foi
transmitido com sucesso. Caso o receptor não receba o byte corretamente, ele enviará para o
transmissor um sinal de NACK indicando um erro na transmissão. Neste caso, o dispositivo
45
mestre finaliza a transmissão com uma condição de STOP e depois inicia uma nova
transmissão. Quando o dispositivo mestre quiser encerrar a transmissão, ele gerará um pulso
NACK e, assim, gerando uma condição de STOP.
46
5.3.2 Protocolo de Comunicação Serial RS-232
Observe que quando o meio de transmissão estiver ocioso, ele mantém nível lógico
alto, para se iniciar uma transmissão é necessário apenas o envio de um bit com nível lógico
zero (Start Bit) antes dos 8bits, e para parar a transmissão é necessário o envio de um ou dois
bits com níveis lógicos altos após os 8bits, e isso se repete para cada byte enviado.
47
correspondentes aos níveis lógicos 0 e 1 que trafegam no padrão RS-232 e os níveis lógicos
correspondentes fornecidos pelo PIC16F877A para um VDD = 5V [34].
Tabela 5.1 – Níveis de tensão fornecidos pelo PIC16F877A e pelo padrão RS-232, respectivamente [34].
+12V
-12V
Como usamos apenas a transferência de dados entre o PIC e o PC, utilizamos apenas
um canal de conversão TTL / CMOS para RS-232, e as entradas dos canais de controle (DSR,
RTS e CTS) são ligadas entre si (pinos 6, 7 e 8, respectivamente), já que o PIC16F877A não
tem suporte para estes canais. Mais detalhes sobre este circuito no Anexo B.
48
CAPÍTULO 6
INTERFACE DE ACOPLAMENTO
Tabela 6.1 - Características dos amplificadores com configuração coletor comum [4].
Tabela Característica do Amplificador Classe AB
Impedância de Entrada Alta
Impedância de Saída Baixa
Ganho de Tensão Baixo
Ganho de Corrente Alto
Ganho de Potência Médio
49
O amplificador usado tem uma configuração do tipo AB, onde serão usados dois
transistores de potência juntos com diodos para amplificar o sinal a ser transmitido, como
mostra a Figura 6.2.
Nesta topologia, os dois capacitores C1 e C2, são colocados para o caso de não se
saber qual condutor é o fase, estes bloqueiam a freqüência da rede elétrica (60Hz) e evitam a
saturação do transformador. Um terceiro capacitor (Cs) de sintonização é adicionado à
topologia e, como os capacitores de bloqueio C1 e C2 são maiores que o Cs, conclui-se que
estes capacitores não contribuem para a alteração na sintonização da freqüência de interesse.
O transformador foi projetado com relação e espiras de 1:1. Os diodos servem para proteção
contra sobre-tensão.
51
CAPÍTULO 7
IMPLEMENTAÇÕES, TESTES E RESULTADOS
A Figura 7.1 mostra o nosso primeiro esquema que obtivemos partindo do diagrama
de blocos da Figura 1.1, projetamos um circuito simples para a monitoração remota da
temperatura.
52
Figura 7.2 – Teste do sensor.
53
Figura 7.3 – Esquema do circuito de condicionamento e do VCO.
Este projeto tem dois grandes defeitos: primeiro, como vimos no Capítulo 2, a rede
elétrica é bastante ruidosa e poderia alterar a freqüência do sinal, causando um erro na leitura
do mesmo, segundo, ocorrendo esses erros, nós não podíamos descobri-los facilmente porque
este circuito é d e malha aberta, isto é, não há um controle de erros.
54
Figura 7.4 – Circuito com transmissão digital utilizando I2C.
55
Figura 7.5 – Diagrama de blocos do programa do PIC16F877A para o sensor TMP101.
Depois do microcontrolador, o sinal era enviado para o transmissor FSK. Este era
responsável por receber os dados provenientes do microcontrolador e passá-los para a rede
elétrica. Ele é composto por um modulador FSK, continuamos usando o XR-2206 porque ele
56
também é capaz de modular em FSK, e uma interface de acoplamento. A Figura 7.6
representa um transmissor FSK.
1 1
f1 = f2 =
R1C R2C
1 1
R1 = R2 =
f1C f 2C (7.1)
1 1
R1 = R2 =
(102kHz *10nF ) ( 98kHz *10nF )
R1 ≅ 980Ω R2 ≅ 1020Ω
57
A configuração do demodulador FSK consiste no ajuste de alguns componentes
passivos que fazem parte do mesmo. A Figura 7.7 mostra a topologia indicada pelo fabricante
para a configuração dos componentes do demodulador:
O XR-2211 foi projetado inicialmente com o resistor R0 = 10kΩ, que está obedecendo
a faixa de valores indicados pelo fabricante (entre 10KΩ e 100KΩ). Depois foi calculada a
freqüência central f0 pela Equação (7.2):
1
C0 = (7.3)
R0 f 0
R0 f 0
R1 = 2 (7.4)
f1 − f 2
58
Foi encontrado o valor de R1 = 500kΩ e foi usado um resistor de 470kΩ, resistor
comercial mais próximo. Calcula-se então o valor do capacitor C1 pela Fórmula (7.5). Ele vai
calcular a constante de tempo do Detector de Fase. O fabricante recomenda um ζ = 0.5.
1250 C 0
C1 = (7.5)
R1 ς 2
(7.6)
(7.7)
(7.8)
59
muito difícil a sua implantação física para pessoas sem experiência e sem equipamentos
adequados para isto. A solução encontrada foi voltar a utilizar o sensor de temperatura LM35.
A Figura 7.8 mostra que o circuito é praticamente idêntico ao anterior, a mudança que
ocorreu foi a troca do sensor de temperatura TMP101, que tem saída serial mas um
encapsulamento de difícil implementação, por um LM35, de fácil implementação, porém de
saída analógica.
Para poder utilizar este sensor e gerar um sinal digital, é necessário o uso de um
conversor A/D. Como vimos no Capítulo 5.1, o microcontrolador PIC16F877A também
possui um conversor interno, o que mantém a maior parte do projeto como estava.
Para configurá-lo utilizaramos 1200bps como valor de baud rate devido à menor
ocorrência de erros e de não haver necessidade de uma alta velocidade de transmissão. Para
configurar o baud rate no PIC16F877A precisamos definir um valor para o registrador
SPBRG que controla o período da transmissão dos 8bits. Este valor pode ser encontrado
tabelado ou calculado a partir da sua freqüência de oscilação (clock) no datasheet [38] do
microcontrolador.
60
Para utilizar a conversão de 10bits, o PIC16F877A utiliza dois bytes para acomodar o
resultado, mas isto dificulta o envio e o controle das informações pela rede elétrica, por isto
utilizaremos apenas os 8bits mais significativos da conversão para fazer o envio. Esta
modificação redução na resolução do conversor não irá causar problemas porque esta
resolução é suficiente para precisão do sensor de temperatura. A Figura 7.9 mostra como é
feita a divisão dos registradores do conversor A/D, no ADRESH ficam os bytes mais
significativos e no ADRESL ficam os bytes menos significativos. Em vermelho, a indicação
do registrador que utilizaremos no modo de conversão justificado à esquerda.
No nosso caso, queremos medir a temperatura entre 2ºC e 125ºC, utilizando apenas
8bits do conversor. Definindo Vref+ = 1280mV e Vref- = 0V ficamos com 1280 / 256 = 5mV.
Isto quer dizer que a temperatura será medida de 0,5ºC em 0,5ºC que valem 5mV. Deste
modo, os valores das temperaturas ficaram de acordo com a Tabela 7.1.
Transmitido
Temperatura = −2 (7.9)
2
62
Figura 7.10 – Organograma básico do programa do PIC16F877A usado neste projeto.
63
CAPÍTULO 8
CONCLUSÃO
65
BIBLIOGRAFIA
67
[27] HAAG, R., OLIVEIRA, L. M., VEIT, E. A., Coleta Automática e Interpretada de
Dados em um Laboratório Didático de Termologia. 2003. Instituto de Física – UFRGS,
Porto Alegre.
[28] Temperatura. Disponível em: http://pt.wikipedia.org/wiki/Temperatura > Acesso em
Abril 2006
[29] Termístor. Disponível em: http://pt.wikipedia.org/wiki/Termistor > Acesso em Abril
2006.
[30] Termopar. Disponível em: http://pt.wikipedia.org/wiki/Termopar > Acesso em Abril
2006.
[31] Pirômetro. Disponível em: http://pt.wikipedia.org/wiki/Pirômetro > Acesso em Abril
2006.
[32] Sensor de Temperatura - Técnicas de Medição de Temperatura. Disponível em:
http://vinicius.brasil.vilabol.uol.com.br/eletronica/Sensortemp/SENSORTEMP.htm. Acesso
em Abril 2006.
[33] Voltage-Controlled Oscillator. Disponível em: http://en.wikipedia.org/wiki/Voltage-
controlled_oscillator. Acesso em Junho 2006.
[34] ZANCO, W. S., Microcontroladores PIC: Técnicas de Software e Hardware para
Projetos de Circuitos Eletrônicos Com Base no PIC16F877A. São Paulo: Érica, 2006.
[35] Datasheet do componente XR-2211 FSK Demodulator / Tone Decoder, 1997.
[36] PLL : Phase-Locked Loop ou Elo Travado em Fase. Disponível em:
http://paginas.terra.com.br/lazer/py4zbz/teoria/pll.htm. Acesso em Janeiro 2006.
[37] Datasheet do componente MAX232 – Dual EIA-232 Drivers / Receivers, 2004.
[38] Datasheet do componente PIC16F877, 2003.
[39] Datasheet do componente TMP101, 2003
68
ANEXO A
CIRCUITO TRANSMISSOR / RECEPTOR
71
Figura B.3 - Onda da saída do sinal da freqüência F2 modulador XR-2206 com aproximadamente 98kHz.
Figura B.4 - Onda da saída do sinal da freqüência F1 modulador XR-2206 com aproximadamente 102kHz.
72
ANEXO C
PROGRAMA DO PIC16F877A
Este programa foi baseado no programa de Wagner da Silva Zanco em [34] com
adaptações para este projeto.
;****************************************************************************************************************
; ARQUIVOS DE DEFINICOES
;****************************************************************************************************************
#INCLUDE <P16F877A.INC> ;ARQUIVO PADRAO MICROCHIP PARA PIC16F877A
;****************************************************************************************************************
; BITS DE CONFIGURACAO
;****************************************************************************************************************
__CONFIG
_CP_OFF&_WRT_OFF&_DEBUG_OFF&_CPD_OFF&_LVP_OFF&_WDT_OFF&_BODEN_ON&_PWRTE_ON&_XT_OSC
;****************************************************************************************************************
;_CP_OFF ==> MEMORIA DE PROGRAMA DESPROTEGIDA CONTRA LEITURA
;_WRT_OFF ==> SEM PERMISSAO PARA ESCREVER NA MEMORIA DE PROGRAMA
;_DEBUG_OFF ==> DEBUG DESATIVADO
;_CPD_OFF ==> MEMORIA EEPROM PROTEGIDA CONTRA LEITURA
;_LVP_OFF ==> PROGRAMACAO EM BAIXA TENSAO DESABILITADA
;_WDT_OFF ==> WDT DESATIVADO
;_BODEN_ON ==> BROWN-OUT ATIVADO
;_PWRTE_ON ==> POWER-ON RESET ATIVADO
;_XT_OSC ==> OSCILADOR A CRISTAL (4MHz)
;****************************************************************************************************************
; PAGINACAO DA MEMORIA
;****************************************************************************************************************
;COMANDOS PARA ALTERACAO DE PAGINA DE MEMORIA
BANK0 MACRO ;MACRO PARA SELECIONAR BANCO 0
BCF STATUS,RP0
BCF STATUS,RP1
ENDM
BANK1 MACRO ;MACRO PARA SELECIONAR BANCO 1
BSF STATUS,RP0
BCF STATUS,RP1
ENDM
;****************************************************************************************************************
; CONSTANTES
;****************************************************************************************************************
;CONSTANTES UTILIZADAS PELO SISTEMA
INIC_TMR0 EQU .6 ;INICIALIZA TMR0
CONTA EQU .125 ;INICIALIZA COUNT
#DEFINE UM_SEG FLAGS,0
73
;****************************************************************************************************************
; VARIAVEIS
;****************************************************************************************************************
;VARIAVEIS UTILIZADAS PELO SISTEMA
FLAGS EQU H'40'
COUNT EQU H'41'
DADO EQU H'46'
COUNT_T EQU H'5B'
COUNT1 EQU H'42'
;****************************************************************************************************************
; VETOR DE RESET
;****************************************************************************************************************
ORG 0x00 ;ENDERECO INICIAL DE PROCESSAMENTO
GOTO INICIO
;****************************************************************************************************************
; INTERRUPCAO
;****************************************************************************************************************
;AS INTERRUPCOES NAO SERAO UTILIZADAS
ORG 0x04 ;ENDERECO INICAL DA INTERRUPCAO
RETFIE ;RETORNA AO PROGRAMA PRINCIPAL
;****************************************************************************************************************
; INICIO
;****************************************************************************************************************
INICIO
BANK1 ;ALTERA PARA BANCO1
MOVLW B'00001101' ;DEFINE RA2, RA1 e RA0 COMO ENTRADA E DEMAIS PINOS COMO SAIDA
MOVWF TRISA
MOVLW B'00000000' ;DEFINE RB6:RB0 COMO SAIDA E RB7 COMO ENTRADA
MOVWF TRISB ; || ||
MOVLW B'00000000' ;DEFINE O PORTC COMO SAIDA
MOVWF TRISC ; || ||
MOVLW B'00000000' ;DEFINE O PORTD COMO SAIDA
MOVWF TRISD ; || ||
MOVLW B'00000000' ;DEFINE O PORTE COMO SAIDA
MOVWF TRISE ; || ||
MOVLW B'00000100' ;TMRO OPERANDO COMO TEMPORIZADOR
MOVWF OPTION_REG ;PRESCALER 1:32 NO TMRO
;PULL_UPS HABILIADOS, DEMAIS BITS IRRELEVANTES
MOVLW B'00000000' ;CHAVE GERAL DE INTERRUPCAO DESLIGADA
MOVWF INTCON ;DEMAIS BITS IRRELEVANTES
BANK0 ;RETORNA PARA O BANCO 0
;****************************************************************************************************************
; INICIALIZACAO DAS VARIAVEIS
;****************************************************************************************************************
74
CLRF PORTA ;LIMPA PORTA
CLRF PORTB ;LIMPA PORTB
CLRF PORTC ;LIMPA PORTC
CLRF PORTD ;LIMPA PORTD
CLRF PORTE ;LIMPA PORTE
CLRF FLAGS ;LIMPA FLAGS
MOVLW CONTA
MOVWF COUNT_T ;INICIALIZA COUNT_T COM 25
MOVLW INIC_TMR0
MOVWF TMR0 ;INICIALIZA TMR0 COM 6
CLRF DADO ;LIMPA REG
;****************************************************************************************************************
;ESTA SUB-ROTINA CONFIGURA E ATIVA O CONVERSOR A/D
;****************************************************************************************************************
ATIVA_CONVERSOR_AD
BANK1 ;ATIVA BANCO 1
MOVLW B'00001111'
MOVWF ADCON1 ;JUSTIFICADO A ESQUERDA <7>
;ADRESH <9:2>, ADRESL <1:0>
;RA0/AN0 COMO ENTRADA ANANLOGICA <3:0>
;RE2:RE0 CONFIGURADO COMO I/O
;VREF+ = RA3/AN3 (+1,024V)
;VREF- = RA2/AN2 VSS (0V)
BANK0 ;ATIVA BANCO0
MOVLW B'01000001'
MOVWF ADCON0 ;FREQUENCIA = FOSC/8 <7:6>
;CANAL 0 SELECIONADO <5:3>
;MODULO A/D LIGADO <0>
;****************************************************************************************************************
;ESTA SUB-ROTINA CONFIGURA OS PARAMETROS DA TRANSMISSAO
;****************************************************************************************************************
TX_1200
BANK1 ;ATIVA BANCO 1
MOVLW .51
MOVWF SPBRG ;BAUD RATE = 1200 bps A 4MHZ
BCF TXSTA,TX9 ;NÃO HAVERÁ BIT DE PARIDADE
BCF TXSTA,SYNC ;ATIVA COMUNICACAO ASSINCRONA
BANK0 ;ATIVA BANCO 0
BSF RCSTA,SPEN ;HABILITA PORTA SERIAL
BSF RCSTA,CREN ;HABILITA RECEPCAO
;****************************************************************************************************************
;ESTA SUB-ROTINA LIMPA O BUFFER DE RECEPCAO DA USART (70h - 7Fh)
;****************************************************************************************************************
APAGA_BUFFER_RX
MOVLW .16
75
MOVWF COUNT1 ;COUNT1 = 16
MOVLW 0x70
MOVWF FSR ;FSR APONTA PARA O ENDERECO 70h (END. INICIAL DO BUFFER)
MOVLW 0x30
STORE_02
MOVWF INDF ;END APONTADO POR FSR RECEBE VALOR
DECFSZ COUNT1,F ;DECREMNENTA COUNT1. COUNT1=0?
GOTO INCFSR_02 ;NAO, DESVIA
GOTO PRINCIPAL ;SIM, DESVIA
INCFSR_02
INCF FSR,F ;INCREMENTA FSR. APONTA PARA A PROXIMA POSICAO DO BUFFER
GOTO STORE_02 ;DESVIA
;****************************************************************************************************************
;ROTINA PRINCIPAL DO PROGRAMA
;****************************************************************************************************************
PRINCIPAL
CALL CONVERSAO_AD ;CHAMA A SUB-ROTINA. FAZ CONVERSAO A/D
CALL TRANSMITE ;CHAMA A SUB-ROTINA. TRANSMITE VIA RS-232
CALL TIMER_8mSEG ;CHAMA A SUB-ROTINA. AGUARDA 8 MILISSEGUNDOS
GOTO PRINCIPAL ;DESVIA. FAZER LOOP
;****************************************************************************************************************
;ESTA SUB-ROTINA EFETUA A CONVERSAO A/D E ARMAZENA O BYTE OBTIDO NA CONVERSAO NO REGS DADO
;****************************************************************************************************************
CONVERSAO_AD
BTFSS UM_SEG ;PASSOU 1 SEGUNDO?
BSF ADCON0,GO ;SIM, INICIA CONVERSAO
BTFSC ADCON0,GO ;CONVERSAO TERMINADA?
GOTO $-1 ;NAO, AGUARDA TERMINAR CONVERSAO
MOVF ADRESH,W ;SIM, W <== ADRESH
MOVWF DADO
BCF UM_SEG ;APAGA FLAG
RETURN ;RETORNA
;****************************************************************************************************************
;ESTA SUB-ROTINA TRANSMITE DADOS PARA O PC VIA RS-232.
;****************************************************************************************************************
TRANSMITE
BANK1 ; ALTERA P/ BANCO 1 DA RAM
BSF TXSTA,TXEN ;ATIVA COMUNICACAO
BANK0 ;ALTERA P/ BANCO 0 DA RAM
MOVWF TXREG ; SALVA WORK EM TXREG (INICIA TX)
BANK1 ; ALTERA P/ BANCO 1 DA RAM
BTFSS TXSTA,TRMT ; O BUFFER DE TX ESTÁ VAZIO ?
GOTO $-1 ; NÃO - AGUARDA ESVAZIAR
BANK0 ;ALTERA P/ BANCO 0 DA RAM
RETURN
76
;****************************************************************************************************************
;ESTA SUB-ROTINA EFETUA CONTAGEM DO TEMPO
;****************************************************************************************************************
TIMER_8mSEG
BTFSS INTCON,T0IF TIMER 0 ESTOUROU?
GOTO $-1 ;NAO, ESPERA ESTOURAR
BCF INTCON,T0IF ;SIM, APAGA FLAGS T0IF
MOVLW INIC_TMR0 ;INICIALIZA TIMER 0 COM 6
MOVWF TMR0
DECFSZ COUNT_T,F ;PASSOU 1S?
RETURN ;NAO, RETORNA
MOVLW CONTA ;SIM, INICIALIZA COUNT_T COM 125
MOVWF COUNT_T
BSF UM_SEG ;SETA FLAG UM_SEG
RETURN ;RETORNA
;***************************************************************************************************************
END ;FIM DO PROGRAMA
;***************************************************************************************************************
77