UNIVERSIDADE POSITIVO NÚCLEO DE CIÊNCIAS EXATAS E TECNOLÓGICAS ENGENHARIA ELÉTRICA SISTEMA DE LOCALIZAÇÃO DE DEFEITOS EM CABOS CURITIBA, 2009 Anderson da Silveira Matheus Azevedo Garcia SISTEMA DE LOCALIZAÇÃO DE DEFEITOS EM CABOS Trabalho de Conclusão de Curso apresentado ao Curso de Engenharia Elétrica da Universidade Positivo, para obtenção de avaliação parcial da disciplina de Trabalho de Conclusão de Curso (TCC), como requisito à obtenção do grau de Engenheiro Eletricista, sob a orientação do Prof. Anselmo Rodrigues. CURITIBA, 2009 AGRADECIMENTOS Agradecemos primeiramente a Deus que tornou possível a realização deste sonho. Agradecemos também nossos familiares que durante a realização deste nos incentivaram e souberam compreender nossas dificuldades. Aos amigos que participaram e contribuíram para a realização deste trabalho. A Universidade Positivo por sempre nos fornecer os materiais necessários para o desenvolvimento. Ao Prof. Anselmo Rodrigues, orientador e amigo que participou conosco em todos os momentos críticos sendo sua participação de fundamental importância. “Determinação, coragem e auto confiança são fatores decisivos para o sucesso. Se estamos possuídos por uma inabalável determinação conseguiremos superá-los. Independentemente das circunstâncias, devemos ser sempre humildes, recatados e despidos de orgulho.” DALAI LAMA RESUMO Neste trabalho de conclusão de curso será apresentado um sistema embarcado de localização de defeitos em cabos de telefonia e redes, cuja função é avaliar a distância em que se encontra a avaria no cabo, seja um curto-circuito ou circuito aberto. Baseado na teoria das ondas viajantes, a reflexão de uma onda ocorrerá quando houver mudanças na impedância cabo. Esse projeto possibilitará ao usuário encontrar com maior rapidez a distância onde o defeito se situa ao longo do cabo apresentando em um display o valor em metros. Palavras-chave: Localização de defeitos em cabos, Ondas Viajantes, Refletometria. SUMÁRIO 1 INTRODUÇÃO .........................................................................................................................................1 PROBLEMA.........................................................................................................................................1 JUSTIFICATIVA .................................................................................................................................2 OBJETIVOS ESPECÍFICOS................................................................................................................2 2 FUNDAMENTAÇÃO TEÓRICA ............................................................................................................3 2.1 PROPAGAÇÃO DE ONDA UNIFORME EM MEIO COM PERDAS ................................................3 2.2 LINHAS DE TRANSMISSÃO.............................................................................................................5 2.3 ONDAS VIAJANTES EM SISTEMAS DE TRANSMISSÃO.............................................................8 3 ESPECIFICAÇÃO TÉCNICA...............................................................................................................10 3.1 ESPECIFICAÇÃO GERAL................................................................................................................10 3.2 ESPECIFICAÇÃO FIRMWARE.........................................................................................................11 3.3 PLACA DE DESENVOLVIMENTO .................................................................................................12 3.4 ESPECIFICAÇÃO DE HARDWARE..................................................................................................13 3.5 DIMENSIONAMENTO E MEMORIAL DE CÁLCULO..................................................................15 3.5.1 Gerador de Pulso...........................................................................................................................15 3.5.2 Amplificador .................................................................................................................................17 3.5.3 Circuito de loop.............................................................................................................................18 3.5.4 Microcontrolador ..........................................................................................................................19 3.5.5 Interface com o Usuário................................................................................................................20 4 IMPLEMENTAÇÃO ..............................................................................................................................21 4.1 DESCRIÇÃO DA MONTAGEM .......................................................................................................21 4.2 TESTES, MEDIÇÕES E CONFIGURAÇÕES...................................................................................22 4.3 CÓDIGO FONTE FIRMWARE ..............................................................................................................24 4.4 COMPONENTES, MATERIAIS E CUSTO DO PROJETO ..............................................................25 5 RESULTADOS ........................................................................................................................................26 6 CONSIDERAÇÕES FINAIS..................................................................................................................32 REFERÊNCIAS..................................................................................................................................................34 APÊNDICE A – CÓDIGO DO DSPIC 30F4013..............................................................................................35 ANEXO A – 30F4013.H......................................................................................................................................36 1.1 1.2 1.3 LISTA DE FIGURAS Figura 1 - Circuito a parâmetros distribuídos .................................................................5 Figura 2 - Diagrama em Blocos do Projeto ..................................................................10 Figura 3 – Fluxograma do Programa do Microcontrolador...........................................11 Figura 4 - Placa de desenvolvimento EASYdsPIC4 .....................................................12 Figura 5 - Diagrama de Funcionamento do DM74121 .................................................15 Figura 6 – Circuito Gerador de Pulso com DM74121 ..................................................16 Figura 7 – Pinagem do TL084 .....................................................................................17 Figura 8 - Circuito Amplificador com TL084 ..............................................................18 Figura 9 – Circuito de Loop.........................................................................................18 Figura 10 - Pinagem do dsPIC30F4013 .......................................................................19 Figura 11 - Circuito do Display ...................................................................................20 Figura 12 - Reflexão do sinal para cabo em curto circuito............................................23 Figura 13 - Reflexão do sinal para cabo em circuito aberto..........................................23 Figura 14 – Diagrama de Tempo .................................................................................27 Figura 15 - Reflexão do sinal sem amplificação...........................................................28 Figura 16 - Reflexão do sinal após amplificação..........................................................28 Figura 17 – Relação de erro em função da distância ....................................................29 Figura 18 – Protótipo inicial do sistema localização de defeitos...................................30 Figura 19 – Protótipo final do sistema localização de defeitos .....................................31 LISTA DE TABELAS Tabela 1 – Onda Refletida X Tipo da Descontinuidade..................................................9 Tabela 2 – Relação de Pulso........................................................................................21 Tabela 3 – Comprimento x Tempo de Reflexão...........................................................22 Tabela 4 – Descrição de materiais e custo do projeto ...................................................25 LISTA DE SÍMBOLOS/ABREVIATURAS/SIGLAS A/D - DsPIC Analógico/Digital - Digital Signal Processing Integrated Circuits (Circuitos Integrados de Processamento Digital de Sinais). ƒ - Frequência da Onda em Hz. fc1 - Frequência de Corte 1. fc2 - Frequência de Corte 2. L - Comprimento do cabo. LCD - Liquid Crystal Display (Display de Cristal Líquido). MFB - Multiple Feedback. MIPS - Millions of Instructions Per Second MSPS - Millions of Sample Per Second PA - Passa - Alta. PB - Passa-baixo. RAM S - Random Access Memory ( Memória de Acesso Randômico). Condutância. STP - Shielded Twisted Pair (Par Trançado Blindado) TDR Tempo). TEM Tp - Time Domain Reflectometer (Reflectômetro no Domínio do UTP - Unshielded Twisted Pair (Par Trançado Não-Blindado). Vp Ondas Transversais Eletromagnéticas. Tempo da reflexão do sinal. - Velocidade de propagação do cabo. - Constante de Propagação. - Impedância Intrínseca. - Impedância Característica. - Indutância. - Capacitância. Constante de Atenuação. Constante de Fase. ∧ γ ∧ η ∧ ZC ∧ L ∧ C α β µ ε ω υ - Permeabilidade magnética. Permissividade elétrica. Frequência Angular. Velocidade de Propagação. λ - Comprimento de Onda. σ Ω - Condutividade. Ohm. 1 1 INTRODUÇÃO A Refletometria no Domínio do Tempo (TDR) é uma técnica fundamental na área de manutenção elétrica. Apresenta grandes possibilidades de uso para localização de defeitos (circuito aberto ou curto-circuito) em cabos de telefonia e redes. Dependendo do sinal a ser avaliado o (TDR) poderá ser acústico, eletromagnético ou óptico e sua aplicabilidade variada. Como exemplo, o radar utilizado em aeroportos (TDR Eletromagnético), o sonar utilizado nos navios (TDR Acústico) e o óptico aplicado em fibras ópticas (TDR Óptico). O estudo realizado referente ao TDR pode ser encontrado no artigo (CONCEIÇÃO, 2008) e na dissertação de mestrado de (SILVA, 2009), no qual os mesmos empregaram a teoria de ondas viajantes. 1.1 PROBLEMA O grande desafio está em identificar e localizar o defeito apresentado em cabos seja pelo motivo de estar soterrado ou pela complexidade do caminho percorrido. Equipamentos como uma mesa de teste não determinam a exata localização do defeito e também não identificam quando há uma alteração na impedância característica do cabo. 2 1.2 JUSTIFICATIVA O projeto tem como objetivo possibilitar ao usuário a real localização do defeito, seja ele um rompimento parcial, ou um circuito aberto, mostrando em um display qual a distância em metros onde se encontra o defeito. Esta ferramenta terá aplicabilidade para manutenção preventiva das linhas de telecomunicações, onde se poderá identificar problemas de alta impedância nas conexões e até mesmo casos de isolação comprometida. 1.3 OBJETIVOS ESPECÍFICOS Construir um TDR para localizar falhas em cabos de telefonia e rede, cuja principal vantagem é mostrar a localização precisa do problema existente, diferente da mesa de teste. Conhecendo-se a amplitude e duração do sinal elétrico enviado a extremidade do cabo, e havendo qualquer mudança na impedância característica do cabo, haverá reflexões do pulso transmitido, onde a diferença de tempo do sinal enviado e a do sinal refletido dará a real localização do defeito. Para isso torna-se necessário conhecer as características do cabo em análise. 3 2 FUNDAMENTAÇÃO TEÓRICA 2.1 PROPAGAÇÃO DE ONDA UNIFORME EM MEIO COM PERDAS Uniforme e plana são importantes termos empregado na caracterização de ondas eletromagnéticas. Quando ambos os vetores intensidades de campos elétrico e magnético estão localizados em um plano e todos esses planos são paralelos, entende-se como uma onda plana. Quando os vetores são constantes em magnitude e fase sobre os planos, entende-se como uma onda uniforme. Pode-se dizer também que as ondas planas são muitas vezes conhecidas como ondas transversais eletromagnéticas (TEM), devido aos vetores campos elétrico e magnético serem perpendiculares ou transversais à direção de propagação da onda. O estudo do campo elétrico no domínio do tempo envolve dois tipos de ondas propagantes: a progressiva e a retrógrada, que ocorrem em meios com impedâncias diferentes. As formas das soluções para os meios com perdas são basicamente idênticas àquelas para os meios sem perdas, porém existem algumas diferenças importantes. As amplitudes nas ondas progressiva e retrógrada e as perdas no meio introduzidas por uma impedância não-nula, fazem com que as amplitudes das ondas progressiva e retrógrada decaiam à medida que elas se propagam através do meio, isso é conhecido como atenuação da onda. Uma segunda diferença é que o cálculo da constante de propagação não deve ser desprezado. Com relação à impedância intrínseca ela não é mais real e sim complexa em um meio com perdas, dada na equação (2.1). (PAUL, 2006). 4 ∧ ( jωµ ) , (σ + jωε ) η= equação (2.1) onde: ∧ η = impedância intrínseca; µ = permeabilidade magnética; ε = permissividade elétrica; σ = condutividade; ω = frequência angular = 2πf. Em um meio com perdas, a velocidade de propagação é dada por: υ= ω , β equação (2.2) onde: υ = velocidade de propagação; ω = frequência angular = 2πf; β = constante de fase. Define-se como comprimento de onda a distância que a onda deve percorrer para sofrer uma mudança de fase de 2π radianos ou 360°. É calculado por: λ= υ f , equação (2.3) onde: λ = comprimento de onda de uma onda sonora ou onda eletromagnética; υ = velocidade da luz no vácuo ≈ 300.000 km/s = 300.000.000 m/s; ƒ = frequência da onda em Hz. 5 2.2 LINHAS DE TRANSMISSÃO Linhas de transmissão são usadas para transmitir energia e sinais de um ponto a outro. Na figura 1 é apresentado a modelagem de uma linha de transmissão contendo uma sequência de indutores, capacitores e resistores. Dessa forma as linhas de transmissão têm em adição à capacitância e à indutância, perdas. Figura 1 - Circuito a parâmetros distribuídos [GETCHELL – 2005] A partir de um circuito equivalente, se um pulso for aplicado na extremidade da linha, irá carregar as capacitâncias e energizar às indutância, à medida que o pulso se propaga ao longo da linha, as ondas de tensão e corrente irão se propagar pela linha com certa velocidade. Claro, leva certo tempo para energizar e desenergizar o capacitor e o indutor, levando um tempo finito e nãonulo para que as ondas transitem pela linha, devido a isso, irá ocorrer um atraso de tempo. Em uma linha com perdas, a impedância característica é complexa e é dada por: ∧ ∧ ZC = L ∧ C ∧ ZC = (r + jωl ) jωc , equação (2.4) 6 onde: ∧ Z C = impedância característica (Ω); ∧ L = Indutância (Ω/m); ∧ C = Capacitância (F/m), r é a parte real, jωl e jωc parte imaginária, e a constante de propagação é dada pela equação (2.5). ∧ γ = α + jβ , equação (2.5) onde: ∧ γ = constante de propagação; α = constante de atenuação; β = constante de fase. A constante de propagação é apresentada como um número complexo e possuindo uma parte real, representada por α, e uma parte imaginária, representada por β. As principais diferenças entre a linha sem perdas e a linha com perdas é que a amplitude da onda é atenuada com o aumento da distância por todo o comprimento da linha e a corrente se atrasa em relação à tensão devido ao ângulo de fase da impedância característica, que no caso de uma linha com perdas não é zero. (PAUL, 2006). Na carga, caso haja descasamento de impedâncias uma parte da onda incidente será refletida. Esta é determinada pelo coeficiente de reflexão na carga, e é dada por: ΓL = Z L − ZC , ZL + ZC onde: ΓL = coeficiente de reflexão (de tensão) na carga; Z L = resistência da carga; Z C = impedância característica da linha. equação (2.6) 7 Para a determinação do coeficiente de reflexão, devem existir ambas as ondas progressiva e retrógrada satisfazendo a Lei de Ohm. Se Z L = Z C , dizemos que a linha está casada com a carga. No caso de uma linha descasada, Z L ≠ Z C , definimos um coeficiente de reflexão na carga como a razão entre a onda retrógrada refletida e a onda progressiva incidente. Assim, obtemos o coeficiente de reflexão na carga. (PAUL, 2006). ΓL = 2 × ZC , ZL + ZC onde: ΓL = coeficiente de reflexão (de tensão) na carga; Z L = resistência da carga; Z C = impedância característica da linha. equação (2.7) 8 2.3 ONDAS VIAJANTES EM SISTEMAS DE TRANSMISSÃO Quando se fala em ondas viajantes, está-se referindo à propagação de energia elétrica sobre uma linha de transmissão. Caso ocorra qualquer variação de corrente ou de tensão em um terminal de uma linha de transmissão, o outro terminal só irá sentir tal variação quando a onda percorrer todo o comprimento da linha. Assim, os sinais elétricos se propagam ao longo da linha, como ondas viajantes, dissipando energia devido às perdas na linha. Qualquer alteração da impedância característica (Zc) em uma linha de transmissão (como os provocados por curto-circuito, ou rompimentos) geram ondas viajantes que se deslocam através das extremidades da linha de acordo com a velocidade de propagação na linha. Caso ocorra alguma descontinuidade física do sistema, isto irá provocar a sua reflexão ou refração, dependendo da característica dessa descontinuidade. Isso continuará ocorrendo até que as ondas sejam extintas devido às atenuações causadas pelas perdas na linha, alcançando assim, o regime permanente da alteração da impedância característica. Quando uma onda atinge qualquer descontinuidade, uma parte da onda é refletida de volta, e uma outra parte da onda é transmitida para outra sessão do circuito. A onda que chega à descontinuidade é chamada de onda incidente e as outras duas ondas geradas da descontinuidade são chamadas de refletida e refratada. As ondas viajantes em uma linha de transmissão podem sofrer diferentes alterações: - O valor de crista da onda é atenuado; - As ondas tornam-se mais longas, suas irregularidades são lisas, e sua inclinação se reduz (distorções); - Os términos das ondas de tensão e corrente tornam-se parecidas (distorções) (SILVA, 2009). Estas distorções e atenuações das ondas por toda a linha são causadas por perdas de energia e está ligada a resistência da linha, às perdas dielétricas etc. 9 Na Tabela 1, apresenta-se os tipos de descontinuidade e o formato a onda refletida. Tipo da Onda Tipo da Tipo da Onda Tipo da Refletida Descontinuidade Refletida Descontinuidade Circuito em Aberto Transceptor Curto Circuito Tap/Lateral Emenda Entrada de Água Emenda Úmida Rompimento parcial Emenda com Alta Impedância Cruzamento Tabela 1 – Onda Refletida X Tipo da Descontinuidade [FONTE PRÓPRIA – 2009] O tempo levado para retornar o pulso enviado, ou seja, a reflexão do sinal é dada por: L= Vp × Tp , 2 onde: L = comprimento do cabo; Vp = velocidade de propagação do cabo; Tp = tempo da reflexão do sinal. equação (2.8) 10 3 3.1 ESPECIFICAÇÃO TÉCNICA ESPECIFICAÇÃO GERAL No diagrama em blocos apresentado na figura 2 está apresentada a visão geral do projeto. Podem ser observados os blocos: gerador de pulso, sistema de aquisição e tratamento do sinal, interface com o usuário (display e botões), microcontrolador e o cabo. Maiores detalhes dos blocos e suas especificidades serão abordados nos itens subsequentes. Figura 2 - Diagrama em Blocos do Projeto [FONTE PRÓPRIA – 2009] 11 3.2 ESPECIFICAÇÃO FIRMWARE Na figura 3 é apresentado o fluxograma principal do programa a ser executado pelo microcontrolador. Figura 3 – Fluxograma do Programa do Microcontrolador [FONTE PRÓPRIA – 2009] 12 3.3 PLACA DE DESENVOLVIMENTO Será utilizada a placa de desenvolvimento EASY dsPIC4 para a utilização do microcontrolador dsPIC30F4013 da Microchip®. Esta placa de desenvolvimento foi projetada para facilitar a exploração de microcontroladores dsPIC, permitindo conectar diversos tipos de circuitos externos. Na figura 4 é apresentado a placa de desenvolvimento. Figura 4 - Placa de desenvolvimento EASYdsPIC4 [MIKRO ELETRONICA – 2009] 13 3.4 ESPECIFICAÇÃO DE HARDWARE Com a finalidade de construir um equipamento que possibilite a localização de defeito em cabos de telefonia e rede, alguns blocos serão de extrema importância para o desenvolvimento deste projeto. O detalhamento de cada bloco será descrito a seguir. O circuito gerador de pulso tem como função principal enviar ao cabo o sinal a ser gerado, este sinal deverá ser ajustado a cada análise diferente de cabo, no qual será realizado o ajuste de amplitude e largura de pulso, através da interface com o usuário. Os cabos analisados serão de telefonia e rede, estes deverão ser conhecidos seus dados característicos como: resistência ôhmica por kilometro, indutância por kilometro, capacitância por kilometro e sua velocidade de propagação. Esses tipos de cabos geralmente são de par trançado, onde cada fio é um condutor, sendo entrelaçados para isolar os ruídos. Existem dois tipos de cabo de par trançado, o STP – Shielded Twisted Pair (Par Trançado Blindado) e o UTP – Unshielded Twisted Pair (Par Trançado não-blindado). Dentre esses dois tipos de cabos, o UTP é o cabo mais adequado para ser usado neste projeto, devido a possuir uma camada condutora envolvendo os fios trançados, provendo assim uma camada de proteção contra as interferências. O circuito de aquisição e tratamento do sinal será de fundamental importância, pois este circuito é responsável pela aquisição da reflexão do sinal enviado ao cabo. Este bloco conterá o circuito amplificador, para amplificar o sinal refletido analógico que será enviado ao microcontrolador. O sinal refletido será de baixa potência e sua amplitude reduzida, por este motivo o mesmo deverá ser condicionado e sua aquisição terá de ser obtida em tempo hábil a ser transmitida ao microcontrolador. O circuito de teste de loop será o complemento a este bloco, objetivo deste é identificar se a terminação do cabo em análise encontra-se em curto circuito ou circuito aberto, consequentemente oferece maior confiabilidade ao sistema. 14 Definimos microcontrolador como componente eletrônico, podendo ser programado para diferentes processos lógicos a serem executadas. Este dispositivo terá uma de suas entradas conectada diretamente ao módulo de aquisição e tratamento do sinal, será configurado a função capture, através desta será possível receber os sinais enviados ao cabo, após o recebimento será processado o cálculo, o resultado em metros e o tipo da descontinuidade será enviada ao display. A velocidade de propagação do cabo será inserida ao firmware. A interface com o usuário conterá botões para teste de loop, inicialização da análise e reset do sistema, também serão amostrados no display o tipo da descontinuidade e o valor em metros da localização do mesmo. Objetivo deste bloco é a facilitar o manuseio simplificando o entendimento. 15 3.5 DIMENSIONAMENTO E MEMORIAL DE CÁLCULO 3.5.1 Gerador de Pulso A geração do pulso será realizada através do circuito integrado DM74121, que é um multivibrador monoestável. A escolha deste componente foi devido à sua de largura de pulso que varia de 30ns à 28 segundos, dependendo dos valores escolhidos para os componentes de temporização. Na figura 5 é apresentado o diagrama de funcionamento do circuito integrado. Figura 5 - Diagrama de Funcionamento do DM74121 [FAIRCHILD – 1989] Para que o DM74121 dispare, deve-se criar um sinal positivo. Assim, ele pode ser disparado quando uma ou ambas as entradas (A1 e A2) estão em fase e a entrada B esteja recebendo um sinal positivo, ou também quando a entrada B permanece em nível alto e uma das entradas A recebe um sinal negativo enquanto a outra entrada A permanece em nível alto, ou ambas as entradas A recebem um sinal negativo, simultaneamente. Após os cálculos, deve-se testar e ajustar o tempo dos pulsos de saída, devido a variações entre os circuitos integrados e à tolerância de resistores e capacitores. A entrada B do DM74121 é a entrada de um Schmitt Trigger (responde até1V/S) e, caso as formas de ondas lentas sejam requeridas para disparar um monoestável, elas devem ser aplicadas à entrada B. 16 Devido ao DM74121 ser um multivibrador monoestável não regatilhável ele apresenta limitações de ciclo de trabalho, sendo seu ciclo de trabalho máximo de 90% e de 67% para resistores de 40KΩ e 2 KΩ, respectivamente. A largura do pulso de saída para o DM74121 é determinada pelo resistor e pelo capacitor. Sendo essa duração do pulso de saída podendo ser determinada por: T = 0,7 x CT x RT , equação (2.9) onde: T = largura de pulso; CT = capacitância de temporização; RT = resistência de temporização. Na figura 6 é apresentado o circuito esquemático do gerador de pulso com o DM74121. Figura 6 – Circuito Gerador de Pulso com DM74121 [FONTE PRÓPRIA – 2009] 17 3.5.2 Amplificador O estágio de amplificação do sinal de reflexão utilizará um amplificador operacional da Texas Instruments, modelo TL084, configurado no modo amplificador não inversor, com ganho variável, possibilitando o ajuste do nível do sinal da reflexão, de forma a manter um comportamento dentro da faixa de interesse, desta forma será possível acionar a função capture do microcontrolador. A pinagem do amplificador pode ser observada na figura 7. Figura 7 – Pinagem do TL084 [TEXAS INSTRUMENTS – 2009] A escolha do amplificador TL084 foi devida suas características, baixo consumo, baixo off-set, alta impedância de entrada, alto slew-rate (13 V/us), consequentemente o sinal que terá a sua saída não será distorcido pela não eficiência do amplificador operacional de acompanhar a velocidade de variação do sinal refletido. Na figura 8 é apresentado o circuito esquemático da amplificação com o TL084. 18 Figura 8 - Circuito Amplificador com TL084 [FONTE PRÓPRIA – 2009] 3.5.3 Circuito de loop O sistema realizará um teste de loop para a verificação da continuidade do cabo, oferecendo confiabilidade ao sistema, optou-se por aplicar em uma das extremidades do cabo uma tensão, caso apareça alguma tensão na outra extremidade o cabo estará em curto circuito e o não aparecimento de tensão será entendido como circuito aberto. A comutação para enviar o sinal de teste de loop e o sinal do pulso será através de reles. Figura 9 – Circuito de Loop [FONTE PRÓPRIA – 2009] 19 3.5.4 Microcontrolador Dentre os microcontroladores existentes no mercado, optou-se por um que possibilita a amostragem de sinais e o controle e atuação em circuitos externos. Por este motivo o microcontrolador utilizado será o dsPIC30F4013 da Microchip®, algumas características deste microcontrolador são: Periféricos e interrupções de fontes externa; 8 níveis selecionáveis de prioridade; 48 kB de memória de programa; 2,048 Bytes de memória RAM; memória Flash; Processamento de até 30 MIPS. A pinagem do microcontrolador pode ser observada na figura 9. Figura 10 - Pinagem do dsPIC30F4013 [MIKRO ELETRONICA – 2009] 20 3.5.5 Interface com o Usuário Na composição da interface com o usuário será utilizado um display LCD com 2 linhas e 16 colunas de 5x8 pixels, e push-button para inicialização e ajustes de parâmetros. Na figura 10 é apresentado o circuito para utilização do display. Figura 11 - Circuito do Display [MICROCHIP – 2009] Descrição dos pinos: GND = Terra Vcc = Alimentação Vee = Ajuste de Corrente Rs = “0”Entrada de Código de Instrução. “1”Ler Dados do LCD R/W = “0” Escreve Dados no LCD. “1” Ler Dados do LCD E = Habilita LCD D0-D7 = Dados A = Backlight + K = Backlight - 21 4 4.1 IMPLEMENTAÇÃO DESCRIÇÃO DA MONTAGEM A montagem foi iniciada pelo gerador de pulso com a intenção de ajustar a correta largura de pulso para o cabo em análise. Para isto, utilizou-se a associação de resistor e capacitor para cada largura de pulso, Tabela 2. Seleção Resistência (Ω) Capacitância (nF) Pulso (s) Cabo(m) CH_1 330 8,2 1,49u 305 CH_2 330 8,2 2,23u 455 CH_3 330 8,2 2,99u 610 CH_4 1,8k 8,2 3,72u 760 CH_5 470 8,2 5,98u 1220 CH_6 2k 8,2 6,71u 1370 Tabela 2 – Relação de Pulso [FONTE PRÓPRIA – 2009] Na sequência, iniciou-se a programação do dsPIC30F4013 com o objetivo de realizar-se a leitura do pulso gerado. Para isto foi utilizada a função capture, a qual captura toda borda do sinal a ser analisado. Para a calibração do programa utilizou-se o gerador de sinais, após a calibração inseriu-se no microcontrolador o sinal da reflexão, devido este sinal ser de baixa amplitude utilizou-se o amplificador operacional TL084 com objetivo de amplificar o sinal da reflexão, pois a função capture não opera corretamente com sinais de baixa amplitude. A montagem do circuito amplificador foi realizada inicialmente em matriz de contatos. 22 4.2 TESTES, MEDIÇÕES E CONFIGURAÇÕES Durante a implementação do projeto, foram realizados vários testes, medições e configurações para a verificação do correto funcionamento dos circuitos. Após a montagem do circuito gerador de pulso o sinal foi enviado ao cabo de rede, o sinal da reflexão foi analisado por meio de um osciloscópio. Tabela 3 apresenta a largura de pulso utilizada para cada distância de cabo em análise e o tempo da reflexão correspondente. Na sequência apresenta-se a reflexão medida no osciloscópio. Comprimento do Cabo (m) 150 300 305 450 600 610 915 1220 Largura do Pulso Enviado (s) 735 n 1,47 u 1,49 u 2,2 u 2,94 u 2,99 u 4,48 u 5,98 u Tempo da Reflexão do Sinal (µs) 1,47 2,94 2,99 4,41 5,88 5,98 8,98 11,97 Tabela 3 – Comprimento x Tempo de Reflexão [FONTE PRÓPRIA – 2009] A figura 11 e figura 12 mostra a reflexão do sinal, o gerador de pulso é ligado ao cabo de 305 metros, a largura do pulso enviada é de 1,49 µs, o sinal enviado ao chegar ao final da linha é refletido de volta ao gerador, o tempo de volta é de 2,99 µs (“Tp” tempo da reflexão). Colocando-se na sua terminação um curto circuito ou em aberto observa-se que o sinal da reflexão terá sua amplitude reduzida, porém, quando o cabo está com o seu final em curto circuito a reflexão será com a amplitude invertida (figura 11), já o cabo com o seu final em aberto o sinal de volta tem a mesma fase (figura 12) do sinal original. 23 Figura 12 - Reflexão do sinal para cabo em curto circuito [FONTE PRÓPRIA – 2009] Figura 13 - Reflexão do sinal para cabo em circuito aberto [FONTE PRÓPRIA – 2009] 24 4.3 CÓDIGO FONTE FIRMWARE Para o desenvolvimento dos códigos utilizou-se o compilador PCWHD versão 4.057 desenvolvida pela CCS. A seguir, apresenta-se a função principal, onde utilizou-se a função capture para iniciar e parar o timer interno do microcontrolador. A versão completa do código está disponível no Apêndice A. # Diretivas de compilações //Informações para o funcionamento do código # Declarações de variáveis //Variáveis utilizadas durante a execução do firmware # Função principal { // configura o timer2 para clock interno // seta ADC na porta AN8 // seta função capture em toda a transição // inicia o display // se for curto circuito // ir para função curto // se não, ir para função aberto. } # Função Aberto { //Setar Timer2 em zero //Capturar primeira transição do sinal //Capturar a segunda transição do sinal (descontinuidade) //Realizar o calculo para o comprimento do cabo //Enviar ao display } # Função Curto { //Setar Timer2 em zero //Capturar primeira transição do sinal //Capturar a segunda transição do sinal (descontinuidade) //Realizar o calculo para o comprimento do cabo //Enviar ao display } 25 4.4 COMPONENTES, MATERIAIS E CUSTO DO PROJETO Relação de componentes e materiais utilizados no projeto. Módulo Interface com o Usuário Componente Quantidade Unid. Valor/Unit. Display LCD 16x2 1 Pç R$ 15,00 Resistor 10Ω 1 Pç R$ 0,10 Potenciômetro 10KΩ 1 Pç R$ 1,50 push-button Microcontrolador Aquisição/Tratamento Sinal Gerador de Pulso dsPIC30F4013 2 1 Pç Pç R$ 0,20 R$ 30,00 R$ 0,40 R$ 30,00 Base p/ CI 40 pinos Capacitor 22pF Capacitor 100nF Cristal 10MHz Resistor 10KΩ CI TL084 Base p/ CI 14 pinos Resistor 1KΩ Potenciômetro 20KΩ Transistor BC548 Diodo Zener 5,1V Led auto brilho Relay 5v Conector KRE DM74121 Base p/ CI 14 pinos Base p/ CI 24 pinos Chave 6posições 2P Resistor 330Ω Resistor 470Ω Resistor 1,8KΩ Resistor 2KΩ Capacitor 8,2nF 1 2 1 1 1 1 1 3 1 1 1 1 2 1 1 1 1 1 3 1 1 1 6 Pç Pç Pç Pç Pç Pç Pç Pç Pç Pç Pç Pç Pç Pç Pç Pç Pç Pç Pç Pç Pç Pç Pç R$1,80 R$ 0,25 R$ 0,25 R$ 2,00 R$ 0,10 R$ 2,00 R$1,80 R$ 0,10 R$ 1,50 R$ 0,40 R$ 0,30 R$ 1,20 R$ 2,10 R$ 0,80 R$ 2,00 R$1,80 R$1,80 R$ 8,50 R$ 0,10 R$ 0,10 R$ 0,10 R$ 0,10 R$ 0,50 R$1,80 R$ 0,50 R$ 0,25 R$ 2,00 R$ 0,10 R$ 2,00 R$1,80 R$ 0,30 R$ 1,50 R$ 0,40 R$ 0,30 R$ 1,20 R$ 4,20 R$ 0,80 R$ 2,00 R$1,80 R$1,80 R$ 8,50 R$ 0,30 R$ 0,10 R$ 0,10 R$ 0,10 R$ 3,00 push-button 1 1 1 1 Pç Pç Pç Pç R$ 0,20 R$ 0,80 R$ 0,80 R$ 0,10 R$ 0,20 R$ 0,80 R$ 0,80 R$ 0,10 1 1 3 3 4 1 1 1 1 1 1 455 Pç Pç Pç Pç Pç Pç Pç Pç Pç Pç Pç m R$ 1,00 R$ 4,50 R$ 0,50 R$ 0,50 R$ 0,30 R$ 0,10 R$ 0,50 R$ 1,40 R$ 1,40 R$ 1,40 R$ 395,00 R$ 0,75 R$ 1,00 R$ 4,50 R$ 1,50 R$ 1,50 R$ 1,20 R$ 0,10 R$ 0,50 R$ 1,40 R$ 1,40 R$ 1,40 R$ 395,00 R$ 341,25 R$ 827,30 Conector KRE Porta fusível Fusível vidro1A Chave HH Fonte Simétrica Trafo 127-220/12+12V Capacitor 10uF Capacitor 1000uF Diodo 1N4007 Resistor 1KΩ Led Verde Regulador LM7812 Regulador LM7912 Regulador LM7805 Kit para Desenvolvimento Cabo Total R$ 15,00 R$ 0,10 R$ 1,50 Placa EASYdsPIC-4 Cabo UTP-Cat5e TOTAL Tabela 4 – Descrição de materiais e custo do projeto [FONTE PRÓPRIA – 2009] 26 5 RESULTADOS O desafio para o desenvolvimento do projeto foi relacionado à aquisição do sinal de reflexão, pois a maior dificuldade foi na velocidade em que este sinal retorna tornando a escolha correta dos componentes de fundamental importância, pois os mesmos deveram ser de alta velocidade e capacidade de processamento. No início do projeto optou-se por utilizar um conversor A/D externo ADC08200, devido sua taxa de conversão ser de até 230 MSPS. Porém, não foi possível utilizá-lo, pois ao se enviar os dados ao microcontrolador ocorreram vários erros na transmissão. Por isto, optou-se pela utilização do A/D interno do dsPIC30F4013 da Microchip®, apesar de sua taxa de conversão ser limitada em 100 Ksps. O passo seguinte foi configurar o A/D interno para obtenção do sinal da reflexão, optou-se ler o sinal refletido por nível de tensão. Foram feitos muitos testes e alterações para o correto funcionamento do sistema, porém, o sistema apresentou muita instabilidade e não confiabilidade na leitura do sinal, devido manipular-se sinais de baixa amplitude muitas interferências são adicionadas ao sinal desejado. Devido aos problemas obtidos com a utilização do A/D, optou-se por utilizar a função capture do próprio microcontrolador. Configurou-se esta função para capturar toda borda de subida dos pulsos refletidos, onde utilizou-se o primeiro evento da subida de borda (do pulso enviado) para ativar o timer2 interno do microcontrolador, e o segundo evento da borda (sinal da reflexão) utilizado para parar o timer2. Na figura 13 é apresentado o diagrama de tempo para um melhor entendimento da função capture. 27 Figura 14 – Diagrama de Tempo [FONTE PRÓPRIA – 2009] O pulso enviado ao cabo tem maior duração em relação ao pulso necessário a atingir sua terminação, ao chegar ao final da linha ocorre a reflexão, esse sinal volta na mesma fase do pulso enviado caso a linha esteja em aberto e volta com a fase invertida se sua terminação for de curto circuito. Portanto a função capture é configurada para ser ativada em toda borda, ou seja, na borda de início do envio do sinal e na reflexão do mesmo. Utilizado o gerador de funções para a calibração do sistema, esta de fundamental importância para o correto funcionamento da função, durante a execução da calibração foi constatada que a limitação física do microcontrolador é de 2,8 µs, por este motivo a análise em cabos ficou limitada em aproximadamente 300 metros de cabo. Na calibração foi identificado que para a correta operação da função capture, o nível do sinal deverá ser acima de 2 volts, e com a utilização do circuito integrado DM74121 obteve-se uma tensão inferior, por este motivo optou-se pela utilização de um circuito amplificador com objetivo de amplificar o sinal refletido a ser enviado ao microcontrolador. O sinal é enviado ao cabo em 28 análise e a reflexão do sinal será enviado ao circuito amplificador. Na figura 14 e figura 15 é apresentado o nível de tensão adquirido antes e depois da amplificação. Figura 15 - Reflexão do sinal sem amplificação [FONTE PRÓPRIA – 2009] Figura 16 - Reflexão do sinal após amplificação [FONTE PRÓPRIA – 2009] 29 A amplificação do sinal foi realizada pelo circuito integrado TL084, devido suas características, o mesmo sendo empregado na configuração de amplificador não inversor. Para a montagem do circuito de loop optou-se por uma lógica de relês, sendo realizados vários testes com lógicas digitais, porém, o resultado não foi satisfatório devido a baixa confiabilidade do sistema. Outra dificuldade encontrada na medição da tensão de loop foi devido à queda de tensão, pois, aplicando-se 5,0 volts na extremidade do cabo obtivemos em sua outra extremidade aproximadamente 1,8 volts, está tensão não foi suficiente para acionar o rele. A solução encontrada foi a instalação de um transistor NPN, desta forma, aplicando-se a tensão de 1,8 volts a sua base chaveará os 5,0 volts acionando-se o relê normalmente. A figura 5 apresenta o gráfico levantado com base nas medições realizadas em bancada. 1,80 1,60 1,40 Erro (%) 1,20 1,00 0,80 0,60 0,40 0,20 0,00 0,00 300,00 600,00 900,00 Distância (m) Figura 17 – Relação de erro em função da distância [FONTE PRÓPRIA – 2009] 1200,00 1500,00 30 Após os testes realizados, o equipamento encontra-se com o firmware do microcontrolador, sistema de aquisição do sinal, gerador de pulso e interface com o usuário funcionando de acordo com o proposto. Como mostrado na figura 18, os circuitos foram montados na matriz de contatos. Ainda, pode-se observar que o microcontrolador dsPIC30F4013 encontra-se montado no kit de desenvolvimento. Figura 18 – Protótipo inicial do sistema localização de defeitos [FONTE PRÓPRIA – 2009] A tensão de alimentação para o protótipo foi fornecida pela fonte simétrica de bancada, para a montagem final optou-se pela montagem de uma fonte simétrica na própria placa de circuito impresso do sistema. A fonte fornecerá tensões de 12 volts negativo e positivo para alimentação do circuito integrado responsável pela amplificação e tensão de 5,0 volts positivos para alimentação dos demais componentes. 31 A figura 19 apresenta a montagem final do sistema de localização de defeitos em cabo. Figura 19 – Protótipo final do sistema localização de defeitos [FONTE PRÓPRIA – 2009] 32 6 CONSIDERAÇÕES FINAIS A proposta inicial do projeto foi a obtenção da localização da descontinuidade em cabos de telefonia e rede, seja sua terminação em curtocircuito ou circuito aberto. A teoria de ondas viajantes foi utilizada, aplicando-se um sinal em uma das extremidades, havendo alteração da impedância característica ocorrerá uma reflexão do sinal aplicado. O tempo da reflexão é essencial para o cálculo da localização da descontinuidade, este tempo sendo a diferença entre o tempo que foi aplicado o pulso e a reflexão do mesmo. Devido o sinal refletido ser de baixa amplitude a montagem do circuito amplificador torna-se fundamental, pois caso contrário tem-se dificuldade para trabalhar com o microcontrolador. Quanto maior for o comprimento do cabo a ser analisado maior será a perda de potência do sinal inserido. A grande dificuldade encontrada foi na aquisição dos sinais, optou-se inicialmente em trabalhar com níveis de tensão, porém ocorreram muitas instabilidades ocasionando uma não confiabilidade ao sistema. A solução encontrada foi trabalhar com nível de transição do pulso, desta forma, o tempo de reflexão é conhecido toda vez que ocorre uma transição do nível do sinal, neste caso, em específico, será ativada quando pulso for enviado ao cabo e quando ocorrer a reflexão do mesmo. A limitação do dsPIC30F4013 foi identificada durante a calibração, pois para ativação da função específica foram necessários valores de tensão, ou seja, 2,0 volts a 5,0 volts; também foi necessário trabalhar com a base de tempo pois sinais com intervalo de tempo inferior a 2,8 µs não foram identificados pelo microcontrolador. Outra grande dificuldade encontrada foi a utilização do compilador fornecido pelo fabricante do microcontrolador (mikroC compiler for dsPIC 30/33 versão V4.0), foram seguidos as recomendações do datasheet e documentos do fabricante para o kit de desenvolvimento porém, não foi possível configurar e trabalhar com funções desejadas. A solução encontrada foi a utilização do compilador PCWHD versão 4.057 desenvolvida pela CCS. 33 Como sugestão para trabalhos futuros e melhoria deste projeto, poderia-se utilizar componentes com velocidade de processamento mais rápido, objetivando capturar pulsos na faixa de nano segundos, desta forma seria possível realizar medições em cabos de menor comprimento. Ainda sugere-se aprofundar em testes laboratoriais e aplicar o mesmo método do TDR (Reflexão no Domínio do Tempo) em outros modelos, seja cabos de comando e controle ou alimentação. 34 REFERÊNCIAS PAUL, CLAYTON R. Eletromagnetismo para Engenheiros. LTC Editora, 2006. Pág. (187 a 321). CONCEIÇÃO, CLÁUDIO A. Eletricidade Moderna. Aranda Editora, ANO XXXVI Nº411, JUNHO 2008. Pág. (152 a 158). SILVA, MURILO. Localização de Faltas em Linhas de Transmissão Utilizando a Teoria de Ondas Viajantes e Transformada de Wavelet. Disponível em < http://www.teses.usp.br/teses/disponiveis/18/18133/tde14012005-094447/>, Acesso em: 20 de Abril de 2009. HAYT, WILLIAM H. Eletromagnetismo. LTC Editora, 4º Edição, 2000. GETCHELL, WAYNE. Time Domain Reflectometry for Ham Radio. Disponível em <http://www.oarc.net/monthly/TDR2.pdf>, Acesso em: 23 de Maio de 2009. dsPIC30F4013dsPIC. Disponível em < MICROCHIP, http://ww1.microchip.com/downloads/en/DeviceDoc/70138F.pdf>, Acesso em: 21 de Maio de 2009. MIKRO, ELEKTRONIKA. EASYdsPIC4 User’s Manual. Disponível em: < http://www.mikroe.com/pdf/easydspic4_manual.pdf>. Acesso em: 24 de Maio de 2009. PERTENCE JUNIOR, Antonio. Amplificadores operacionais e filtros ativos. 6º ed. Editora ARTMED S.A., 2007. datasheet DM74121. Disponível em < FAIRCHILD, http://pdf1.alldatasheet.com/datasheet-pdf/view/177142/FAIRCHILD/DM74121. html>, Acesso em: 24 de Maio de 2009. TEXAS INSTRUMENTS, datasheet TL084. Disponível em < http://www.datasheetcatalog.net/pt/datasheets_pdf/T/L/0/8/TL084.shtml>, Acesso em: 25 de Setembro de 2009. 35 APÊNDICE A – CÓDIGO DO DSPIC 30F4013 #include <30F4013.h> #fuses XT_PLL4,NOWDT,NOPROTECT,NODEBUG,NOCKSFSM,EC #use delay(clock=10000000) #include <mod_lcd.c> #include <math.h> long p,q,ad; float z,t,l; /////////////////////////////////FUNÇÔES////////////////////////////// ////////// void circuito_aberto(void); void curto_circuito(void); ////////////////////////////////////////////////////////////////////// ////////// void main() { SETUP_ADC_PORTS(sAN8); setup_adc(ADC_CLOCK); SETUP_TIMER2(TMR_INTERNAL | TMR_DIV_BY_1); setup_capture(2, CAPTURE_EE | CAPTURE_TIMER2); lcd_ini(); lcd_escreve('\f'); lcd_pos_xy(1,1); lcd_escreve("Localizador de"); lcd_pos_xy(1,2); lcd_escreve("defeito em cabos"); delay_ms(5000); lcd_escreve('\f'); lcd_pos_xy(1,1); lcd_escreve("Para enviar o"); lcd_pos_xy(1,2); lcd_escreve("sinal ao cabo"); delay_ms(5000); lcd_escreve('\f'); lcd_pos_xy(1,1); lcd_escreve("Aperte o botao"); delay_ms(1000); while(true) { set_adc_channel(8); ad=read_adc(); if(ad<20000) { circuito_aberto(); } else curto_circuito(); } } 36 ////////////////////////////////CIRCUITO_ABERTO/////////////////////// ////////// void circuito_aberto() { set_timer2(0); p = get_capture(2, TRUE); q = get_capture(2, TRUE); z=(q-p)/2; t=(-0.0000006*(z*z*z) - 0.0007*(z*z) + 0.2084*z + 0.0042); l = ((t*(204))/2); lcd_escreve('\f'); printf(lcd_escreve,"%Lf metros",l); delay_ms(100); lcd_pos_xy(1,2); lcd_escreve("Circuito aberto"); delay_ms(1000); output_high(pin_b12); delay_ms(100); output_low(pin_b12); } ////////////////////////////////CURTO_CIRCUITO//////////////////////// ////////// void curto_circuito() { set_timer2(0); p = get_capture(2, TRUE); q = get_capture(2, TRUE); z=q-p; t=(-0.0000052*(z*z*z) + 0.0003*(z*z) + 0.1634*z + 0.4883); l = ((t*(204))/2); lcd_escreve('\f'); printf(lcd_escreve,"%Lf metros",l); delay_ms(100); lcd_pos_xy(1,2); lcd_escreve("Curto circuito"); delay_ms(300); output_high(pin_b11); delay_ms(100); output_low(pin_b11); } ////////////////////////////////////////////////////////////////////// ////////// ANEXO A – 30F4013.H //////// Standard Header file for the DSPIC30F4013 device //////////////// #device DSPIC30F4013 #nolist //////// Program memory: 16384x24 Data RAM: 2048 Stack: 31 //////// I/O: 38 Analog Pins: 13 //////// Data EEPROM: 1024 //////// Fuses: XTL,HS,XT,XT_PLL4,XT_PLL8,XT_PLL16,ER_IO,ER,EC,EC_IO,EC_PLL4 37 //////// Fuses: EC_PLL8,EC_PLL16,LP,FRC,LPRC,PR,NOCKSFSM,CKSNOFSM,CKSFSM,WDT //////// Fuses: NOWDT,WPSB1,WPSB2,WPSB3,WPSB4,WPSB5,WPSB6,WPSB7,WPSB8, WPSB9 //////// Fuses: WPSB10,WPSB11,WPSB12,WPSB13,WPSB14,WPSB15,WPSB16,WPSA1, WPSA8 //////// Fuses: WPSA64,WPSA512,NOPUT,PUT4,PUT16,PUT64,BROWNOUT,NOBROWNOUT //////// Fuses: BORV20,BORV27,BORV42,BORV47,LPOL_HIGH,LPOL_LOW,HPOL_HIGH //////// Fuses: HPOL_LOW,PWMPIN,NOPWMPIN,MCLR,NOMCLR,PROTECT,NOPROTECT, WRT //////// Fuses: NOWRT,DEBUG,NODEBUG,COE,NOCOE,ICS0,ICS1,ICS2,ICS3 //////// ////////////////////////////////////////////////////////////////// I/O // Discrete I/O Functions: SET_TRIS_x(), OUTPUT_x(), INPUT_x(), // PORT_x_PULLUPS(), INPUT(), // OUTPUT_LOW(), OUTPUT_HIGH(), // OUTPUT_FLOAT(), OUTPUT_BIT() // Constants used to identify pins in the above are: #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define PIN_A11 PIN_B0 PIN_B1 PIN_B2 PIN_B3 PIN_B4 PIN_B5 PIN_B6 PIN_B7 PIN_B8 PIN_B9 PIN_B10 PIN_B11 PIN_B12 PIN_C13 PIN_C14 PIN_C15 PIN_D0 PIN_D1 PIN_D2 PIN_D3 PIN_D7 PIN_D8 PIN_F0 PIN_F1 PIN_F2 PIN_F3 PIN_F4 PIN_F5 PIN_F6 5659 5696 5697 5698 5699 5700 5701 5702 5703 5704 5705 5706 5707 5708 5757 5758 5759 5792 5793 5794 5795 5799 5800 5888 5889 5890 5891 5892 5893 5894 ////////////////////////////////////////////////////////////////// Useful defines #define FALSE 0 #define TRUE 1 #define BYTE unsigned int8 #define BOOLEAN int1 #define getc getch 38 #define #define #define #define #define #define fgetc getch getchar getch putc putchar fputc putchar fgets gets fputs puts ////////////////////////////////////////////////////////////////// UART // Constants used in setup_uart() are: // FALSE - Turn UART off // TRUE - Turn UART on #define UART_ADDRESS 2 #define UART_DATA 4 #define UART_AUTODETECT 8 #define UART_AUTODETECT_NOWAIT 9 #define UART_WAKEUP_ON_RDA 10 #define UART_SEND_BREAK 13 ////////////////////////////////////////////////////////////////// WDT // Watch Dog Timer Functions: SETUP_WDT() and RESTART_WDT() // // Constants used for SETUP_WDT() are: #define WDT_ON 1 #define WDT_OFF 0 ////////////////////////////////////////////////////////////////// Control // Control Functions: RESET_CPU(), SLEEP(), RESTART_CAUSE() // Constants passed into RESTART_CAUSE() are: #define RESTART_POWER_UP 0x0003 #define RESTART_BROWNOUT 0x0001 #define RESTART_WATCHDOG 0x0010 #define RESTART_SOFTWARE 0x0040 #define RESTART_MCLR 0x0080 #define RESTART_ILLEGAL_OP 0x4000 #define RESTART_TRAP_CONFLICT 0x8000 // // Constants passed into SLEEP() are: #define SLEEP_FULL 0 // Default #define SLEEP_IDLE 1 // Clock and peripherals don't stop ////////////////////////////////////////////////////////////////// INTERNAL RC // Constants used in setup_oscillator() are: #define OSC_INTERNAL 32 #define OSC_CRYSTAL 1 #define OSC_CLOCK 2 #define OSC_RC 3 #define OSC_SECONDARY 16 ////////////////////////////////////////////////////////////////// Timer // Timer Functions: SETUP_TIMERx, GET_TIMERx, GET_TIMERxy, // SET_TIMERx, SET_TIMERxy // Constants used for SETUP_TIMERx() are: // (or (via |) together constants from each group) #define TMR_DISABLED 0x0000 #define TMR_INTERNAL 0xA000 #define TMR_EXTERNAL 0xA002 #define T1_EXTERNAL_SYNC 0xA006 //This only applies to Timer1 39 #define T1_EXTERNAL_RTC #define #define #define #define #define TMR_DIV_BY_1 TMR_DIV_BY_8 TMR_DIV_BY_64 TMR_DIV_BY_256 TMR_32_BIT 0xC002 //This only applies to Timer1 0x0000 0x0010 0x0020 0x0030 0x0008 // Only for even numbered timers /////////////////////////////////////////////////////////// INPUT CAPTURE // Functions: SETUP_CAPTURE, GET_CAPTURE, // // Constants used for SETUP_CAPTURE() are: #define CAPTURE_OFF 0x0000 // Capture OFF #define CAPTURE_EE 0x0001 // Capture Every Edge #define CAPTURE_FE 0x0002 // Capture Falling Edge #define CAPTURE_RE 0x0003 // Capture Rising Edge #define CAPTURE_DIV_4 0x0004 // Capture Every 4th Rising Edge #define CAPTURE_DIV_16 0x0005 // Capture Every 16th Rising Edge #define CAPTURE_INTERRUPT_ONLY 0x0007 // Interrupt on Rising Edge when in Sleep or Idle // The following defines can be ORed | with above to configure interrupts #define INTERRUPT_EVERY_CAPTURE 0x0000 // Interrupt on every capture event #define INTERRUPT_SECOND_CAPTURE 0x0020 // Interrupt on every second capture event #define INTERRUPT_THIRD_CAPTURE 0x0040 // Interrupt on every third capture event #define INTERRUPT_FOURTH_CAPTURE 0x0060 // Interrupt on every fourth capture event // The following defines can be ORed | with above to select timer #define CAPTURE_TIMER2 0x0080 // On capture event Timer 2 is captured #define CAPTURE_TIMER3 0x0000 // On capture event Timer 3 is captured // The following defines can be ORed | with above to select idle operation mode #define CAPTURE_HALT_IDLE 0x2000 // Capture module halts during idle mode #define CAPTURE_CONTINUE_IDLE 0x0000 // Capture module continues during idle mode /////////////////////////////////////////////////////////// OUTPUT COMPARE // Functions: SETUP_COMPARE, SET_PWM_DUTY, SET_COMPARE_TIME // // Constants used for SETUP_COMPARE() are: #define COMPARE_OFF 0x0000 // Compare OFF #define COMPARE_SET_ON_MATCH 0x0001 // Pin from low to high on match #define COMPARE_CLR_ON_MATCH 0x0002 // Pin from high to low on match #define COMPARE_TOGGEL 0x0003 // Pin will toggle on every match occurrence 40 #define COMPARE_SINGLE_PULSE pulse on first match #define COMPARE_CONT_PULSE match #define COMPARE_PWM with fault pin disabled #define COMPARE_PWM_FAULT with fault pin enabled 0x0004 // Pin will generate single 0x0005 // Pin will pulse for every 0x0006 // Compare operates as PWM 0x0007 // Compare operates as PWM // The following defines can be ORed | with above to select timer #define COMPARE_TIMER2 0x0000 // Timer 2 is the base timer #define COMPARE_TIMER3 0x0008 // Timer 3 is the base timer // The following defines can be ORed | with above to select idle operation mode #define COMPARE_HALT_IDLE 0x2000 // Compare module halts during idle mode #define COMPARE_CONTINUE_IDLE 0x0000 // Compare module continues during idle mode ////////////////////////////////////////////////////////////////// SPI // SPI Functions: SETUP_SPI, SPI_WRITE, SPI_READ, SPI_DATA_IN // Constants used in SETUP_SPI() are: #define SPI_MASTER 0x0020 #define SPI_SLAVE 0x1000 #define SPI_L_TO_H 0 #define SPI_H_TO_L 0x0100 #define SPI_CLK_DIV_1 0x001F #define SPI_CLK_DIV_4 0x001E #define SPI_CLK_DIV_16 0x001D #define SPI_CLK_DIV_64 0x001C #define SPI_SS_DISABLED 0x8000 ////////////////////////////////////////////////////////////////// ADC // ADC Functions: SETUP_ADC(), SETUP_ADC_PORTS() // SET_ADC_CHANNEL(), READ_ADC() // // Constants used for SETUP_ADC() are: // Clock is at ADCS<5:0> of ADCON3 Reg. (0x02A4) // Tad = (Tcy/2)*(ADCS<5:0>+1) #define ADC_CLOCK 0x0000 // External #define ADC_CLOCK_DIV_2 0x0001 #define ADC_CLOCK_DIV_4 0x0003 #define ADC_CLOCK_DIV_8 0x0007 #define ADC_CLOCK_DIV_16 0x000F #define ADC_CLOCK_DIV_32 0x001F #define ADC_CLOCK_DIV_64 0x003F #define ADC_CLOCK_INTERNAL 0x0080 // Internal // The following may be OR'ed in with the above using | // Auto-Sample Time bits #define ADC_TAD_MUL_0 0x0000 #define ADC_TAD_MUL_2 0x0200 #define ADC_TAD_MUL_4 0x0400 #define ADC_TAD_MUL_8 0x0800 #define ADC_TAD_MUL_16 0x1000 #define ADC_TAD_MUL_31 0x1F00 // Constants used in READ_ADC() are: #define ADC_START_AND_READ 0x07 41 #define ADC_START_ONLY #define ADC_READ_ONLY 0x01 0x06 // Constants used in SETUP_ADC_PORTS() // First argument: // OR together desired pins #define sAN0 0x0001 //| #define sAN1 0x0002 //| #define sAN2 0x0004 //| #define sAN3 0x0008 //| #define sAN4 0x0010 //| #define sAN5 0x0020 //| #define sAN6 0x0040 //| #define sAN7 0x0080 //| #define sAN8 0x0100 //| #define sAN9 0x0200 //| #define sAN10 0x0400 //| #define sAN11 0x0800 //| #define sAN12 0x1000 //| #define NO_ANALOGS 0 // #define ALL_ANALOG 0xFFFFFFFF // // Optional Second argument: #define VSS_VDD 0x0000 #define VREF_VREF 0x3000 #define VREF_VDD 0x2000 #define VSS_VREF 0x1000 // // // // are: B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 B12 None Range Range Range Range 0-Vdd VrefL-VrefH VrefL-Vdd 0-VrefH ////////////////////////////////////////////////////////////////// INT // Interrupt Functions: ENABLE_INTERRUPTS(), DISABLE_INTERRUPTS(), // CLEAR_INTERRUPT(), INTERRUPT_ACTIVE(), // EXT_INT_EDGE() // // Constants used in EXT_INT_EDGE() are: #define L_TO_H 0x40 #define H_TO_L 0 // // Constants used in other interrupt functions are: #define INTR_GLOBAL 0x400 #define INTR_NORMAL 0x100 #define INTR_ALTERNATE 0x200 #define INTR_NESTING 0x300 #define INTR_LEVEL0 0x500 #define INTR_LEVEL1 0x501 #define INTR_LEVEL2 0x502 #define INTR_LEVEL3 0x503 #define INTR_LEVEL4 0x504 #define INTR_LEVEL5 0x505 #define INTR_LEVEL6 0x506 #define INTR_LEVEL7 0x507 #define #define #define #define #define #define #define #define #define INT_OSCFAIL INT_ADDRERR INT_STACKERR INT_MATHERR INT_DMAERR INT_EXT0 INT_IC1 INT_OC1 INT_TIMER1 1 2 3 4 5 6 7 8 9 42 #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #list INT_IC2 INT_OC2 INT_TIMER2 INT_TIMER3 INT_SPI1 INT_RDA INT_TBE INT_ADC1 INT_EEPROM INT_SI2C INT_MI2C INT_CN1 INT_IC7 INT_IC8 INT_OC3 INT_OC4 INT_EXT2 INT_RDA2 INT_TBE2 INT_DCI INT_LOWVOLT 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 28 29 30 46 47