SlideShare uma empresa Scribd logo
1 de 13
Fatec Santo André – Faculdade de Tecnologia
Cód. da Disciplina SCSC Disciplina Sistema de Carga e Partida
R.A Aluno Fábio Gomes
Data 11/06/2012 Prof. Edson
DISPOSITIVO
DETECTOR DE CURTO
SANTO ANDRÉ
11 DE JUNHO DE 2012.
2
Índice
Resumo Pág 3
Introdução Pág 3
Metodologia Pág 3
Levantamentos Experimentais Pág 3
Dados de solicitação do projeto Pág 3
Compra de materiais Pág 3
Montagem do protótipo Pág 3
Programação do Microcontrolador Pág 4
Testes funcionais Pág 4
Dificuldades Pág 4
Solução Proposta Pág 4
Conclusão Pág 5
Referencias Pág 5
Anexo I – Diagrama Elétrico Pág 6
Anexo II – Lista de materiais Pág 7
Anexo III – Fluxograma Pág 8
Anexo III – Código fonte do programa do microcontrolador Pág 9
3
DESENVOLVIMENTO DE UM DISPOSITIVO ELETRÔNICO DENOMINADO
“DETECTOR DE CURTO”.
RESUMO
Este trabalho mostra detalhadamente, as etapas de desenvol-
vimento e montagem de um dispositivo eletrônico capaz de
testar um condutor denominado “Detector de Curto”.
O sistema foi desenvolvido através de um microcontrolador
da família PIC e a indicação do estado do condutor se dará
através de leds e um display de 16x2.
INTRODUÇÃO
O objetivo deste trabalho é apresentar o desenvolvimento do
dispositivo eletrônico denominado, Detector de Curto, no
qual se pode medir a faixa de resistência de um condutor.
As medidas do foram dividas em três níveis nos quais
indicam:
1º Nível: Indica que o estado do condutor se encontra em
curto ou com resistência até que 10 .ῼ
2º Nível: Indica se o condutor está rompido (com circuito
aberto) ou com resistência superior a 10k .ῼ
3º Nível: Indica que o condutor está com valor resistivo
entre 11 e 10k .ῼ ῼ
O desenvolvimento do sistema possui uma interface simples
para que a pessoa que irá utilizar, possa ter agilidade no
processo de teste, mas com precisão. A indicação do estado
do condutor se dará através de leds, indicados na cor
vermelha para o condutor em curto (1º Nível), verde para o
sistema aberto (2º Nível) e amarelo para a resistência entre
11 e 10kῼ ῼ (3º Nível), além da indicação efetuada através
do display 16x2, onde será mostrado:
- Estado do condutor (Ex.: “RES MENOR DE 10R” );
- Valor de tensão em cima do condutor;
- E o valor da resolução que se refere a cada valor de tensão
convertido pelo conversor A/D do PIC.
METODOLOGIA
Com base no trabalho realizado no inicio do primeiro
semestre de 2012, no qual, foi realizado somente a parte
escrita do projeto, não sendo efetuada a montagem do
mesmo, algumas melhorias no projeto foram acrescentadas
como:
- Uma fonte com um regulador de tensão;
- Um display que na primeira versão não tinha.
O processo de desenvolvimento se deu através das seguintes
etapas:
- Levantamentos experimentais;
- Montagem do protótipo;
- Testes funcionais.
LEVANTAMENTOS EXPERIMENTAIS
Nesta etapa foram adquiridas as especificações necessárias
para a montagem inicial do projeto, elaboração e definição
das melhorias com relação á primeira versão do projeto
citada anteriormente.
DADOS DE SOLICITAÇÃO DO PROJETO
Adquiriu-se informações técnicas sobre alguns
componentes do sistema, como os datasheets do
Microcontrolador utilizado que é PIC da família 16F877A e
construção da fonte para alimentação do mesmo, além dos
dados para o display de 16x2.
O diagrama elétrico foi feito e simulado no software ISIS
Professional versão 7.8 release SP2.
E a programação do microcontrolador feita através do
MPlab IDE V8.76.
MONTAGEM DO PROTÓTIPO
Com o material todo em mãos, ficou resolvido fazer a parte
da fonte para regulagem da tensão de 12 Volts para 5 Volts
em uma placa de circuito impresso, devido à dissipação de
calor do CI regulador de tensão LM 7805 que poderia
danificar a protoboard.
Este circuito permite que se tenha uma tensão estabilizada
de 5 Volts para alimentar todo o circuito, onde uma variação
de tensão poderia comprometer a confiabilidade do teste.
A figura 1 nos mostra o circuito de regulagem da tensão.
Figura 1- Circuito regulador de tensão
A alimentação de 12V foi provida de uma fonte externa
com entrada AC de 100-240 volts de 60/50Hz e 0,45A, com
saída DC de +12 volts e 1,25A.
O próximo passo foi definir a melhor posição para a
montagem do microcontrolador PIC 16F877A e o LCD de
16x2, na protoboard EIC-108 de 3220 pontos. Além do
circuito ligado ao MCLRVPP responsável pelo funcio-
namento e modo gravação de dados no PIC “in-circuit”, e
do circuito de clock do microcontrolador formado pelo
cristal de 4 MHz e dois capacitores de 15pF.
4
Todas as ligações entre os componentes deste projeto foram
efetuadas através de um kit de jumpers fornecido com a
própria protoboard.
As figuras 2 e 3 mostram as ligações desses componentes.
Figura 2 – Circuito do Microcontrolador PIC 16F877A.
Figura 3 – Circuito do Display de LCD 16x2.
Na seqüência partiu-se para a montagem dos circuitos de
entrada, onde será conectado o condutor a ser testado,
utilizou-se um divisor de tensão com uma resistência de
referencia de 1 k identificada na figura 4 como R5, oῼ
resistor R6 de 10 k substitui o condutor e o resistor R4 deῼ
10k serve como um limitador de corrente para aumentar o
tempo de descarga do capacitor C7.
O MCLR ilustrado na figura 5, sendo formado por um
resistor de 10 k ligado diretamente ao VDD (+5V) e umaῼ
botão ligado ao VSS(-) caso seja necessário efetuar um
reset no microcontrolador.
O circuito de saída mostrado na figura 6, são os leds,
vermelho (RED) para circuito aberto e resistência acima de
10k , amarelo (ῼ YELLOW) para resistência entre 11 eῼ
10k , verde (ῼ GREEN) para resistência até 10 .ῼ
Estes circuitos são ilustrados nas figuras 4, 5 e 6
respectivamente.
Figura 4 – Circuito de entrada formado por um divisor de
tensão.
Figura 5 – Circuito de reset ligado ao pino MCLR do
Microcontrolador.
Figura 6 – Circuito de indicação feito por leds.
PROGRAMAÇÃO DO MICROCONTROLADOR
Os programas PCWH versão 4.078 e o MPLAB IDE Versão
8.76, foram utilizados para edição e compilação e o progra-
mador e debugger USB PKburner 2 R3 da Carelle,
compatível com o software MPLAB e o PICkit2 que
contém um soquete ZIF para microcontroladores de até 40
pinos família PIC, além da opção ICSP que permite a
gravação do microcontrolador no próprio circuito.
Na estrutura de decisão do software, utilizou-se os
parâmetros que serão mostrados a seguir, baseados nos
cálculos, que resultam a queda de tensão em cima do
condutor, que será testado no divisor de tensão, que é dado
pela equação:
VR6 = R5.VDD / R5+R6
Na qual:
VR6 = Queda de tensão em cima do condutor ou resistência
a ser testada;
R5 = Resistor de referencia;
VDD = tensão de entrada do divisor;
R6 = Condutor ou resistência a ser testada.
A estratégia utiliza os valores de VR6, como faixas limites
para cada nível, no qual cada nível tem suas saídas
determinada.
Para valores de resistência de até 10 , empregou-se umaῼ
faixa de valor de 4,95 até 5 Volts, indicado no circuito de
saída pelo led verde (GREEN) e no display “RES MENOR
DE 10R”, além dos valores de tensão respectivos para cada
valor resistivo e a resolução de conversão do A/D, sendo
esse dois últimos itens, válidos para todos os níveis não
sendo mencionados nas próximas faixas.
5
É importante salientar que essa pequena faixa de valores
tensão se deve a estreita faixa de resistência para esse nível,
não apresentando durante os testes instabilidade ou erros de
leitura.
Para valores de resistência entre 11 e 10k , foi definidaῼ ῼ
uma faixa de 4,94 a 0,451 Volts, sendo mostrado no circuito
de saída através do led amarelo (YELLOW) e com a
mensagem no display RES 11 A 10k .
E para valores resistivos superiores a 10k ou circuitoῼ
aberto valores menores ou iguais a 0,45 Volts, sendo
visualizado através do led vermelho (RED) e com a
mensagem no display ACIMA DE 10K.
TESTES FUNCIONAIS
Finalizado a montagem, executou-se a verificação ponto a
ponto do circuito com um multímetro digital, certificando a
perfeita ligação entre os componentes em seguida, foi
realizado a gravação do PIC 16F877A.
Conduziu-se a placa para a bancada onde foram realizados
os testes finais com diversos resistores verificando o
funcionamento do circuito.
DIFICULDADES
A maior dificuldade encontrada foi fazer os ajustes para
retirada das oscilações dos leds e a correta amostragem do
display.
Na qual, em avaliação do circuito na bancada foi revisado o
software em busca das soluções para os problemas da
visualização dos caracteres no display e as oscilações dos
leds, onde foi acrescentado uma função para limpar o
display, corrigindo o problema da amostragem do display.
Colocou-se uma maior precisão na estrutura de decisão do
software que pode ser visualizado através do fluxograma no
Anexo III, no qual é responsáveis pela para ativação dos
leds e o capacitor C7 em paralelo na entrada da porta de
leitura do microcontrolador sendo sua descarga limitada
pelo resistor R4 de 10k , possibilitando um maior tempoῼ
para leitura.
RESULTADOS OBTIDOS
Os resultados obtidos no desenvolvimento atendeu as espe-
cificações solicitadas. Acreditamos que as etapas de mon-
tagem do projeto desenvolvido atendeu aos requisitos
propostos, ressaltando apenas as falhas ocorridas devido às
oscilações sendo estas corrigidas antes da entrega do
projeto.
Embora seja um sistema simples requeriu um tempo grande
para desenvolvimento do software e montagem do sistema.
Mas foi gratificante, pois mais uma vez podemos praticar a
arte da eletrônica e programação do microcontrolador.
CONCLUSÃO
Neste trabalho foi detalhado o desenvolvimento de um dis-
positivo capaz de medir resistência de um condutor,
possibilitando um teste rápido, fácil e preciso sem a
necessidade de equipamentos especiais para se efetuar a
medição. Com uma interface simples e fácil de montar.
Este projeto apresenta etapas da montagem com conceitos
básicos sobre eletrônica e programação de micro-
controladores além de software e equipamentos utilizados
para simulação, gravação e medição de circuitos e compo-
nentes.
Esperamos que esse projeto ajude pessoas que queiram
desenvolver um teste de condutor servindo de base para
projetos futuros com suas devidas melhorias.
REFERÊNCIAS
Antonio, Prof. Marco (2006) – Apostila de programação de
microcontroladores PIC usando linguagem C –- CEFETES.
Pereira, Fábio (2010) – Livro Microcontroladores PIC
programação em C – 7ªEd – São Paulo – Editora Érica.
Microchip, Pic16F87xA Datasheet. USA: Microchip, 2001.
Ramos, Eduardo Souza (2005) – Apostila de comunicação
de LCD em 4 vias – Fonte no site abaixo.
site:www.mecatronicadegaragem.blogspot.com – Palavra
chave: Tutorial LCD em 4 Vias.
6
ANEXO I – DIAGRAMA ELÉTRICO
7
ANEXO II – LISTA DE MATERIAIS
6 Resistors
Quantity: References Value Order Code
2 R1, R4 10k
3 R2, R8, R9 330
1 R3 1k
7 Capacitors
Quantity: References Value Order Code
2 C1, C2 15pF
2 C3, C4 1000uF
2 C5, C6 100nF
1 C7 10nF
2 Integrated Circuits
Quantity: References Value Order Code
1 U1 PIC16F877A
1 U2 7805
6 Diodes
Quantity: References Value Order Code
2 D1, D5 LED-RED
1 D2 LED-GREEN
1 D3 LED-YELLOW
2 D4, D6 1N4007
4 Miscellaneous
Quantity: References Value Order Code
1 LCD1 LM016L
1 RV1 100k
1 S1
1 X1 CRYSTAL
8
ANEXO III – FLUXOGRAMA
INICIO
INIT_HARD
INIT_LCD
FLAG >=4,95 &&
FLAG <=5
FLAG >=0.451 &&
FLAG <=4.94
FLAG <=0.45
ACENDE LED
GREEN
ESCREVE_LCD
RES MENOR DE 10R
ACENDE LED
YELLOW
ACENDE LED
RED
ESCREVE_LCD
RES 11 A 10k
ESCREVE_LCD
RES. ACIMA DE 10k
S
S
S
N
N
N
9
ANEXO IV – CÓDIGO FONTE DO PROGRAMA DO MICROCONTROLADOR
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* SOFTWARE DO PROJETO DE CARGA E PARTIDA *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include <16f877A.h>
#device adc=10
#fuses xt,nowdt,noprotect,put,brownout,nolvp,nocpd,nowrt
#use delay(clock=400000)
#zero_ram
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* DEFINIÇÃO E INICIALIZAÇÃO DE VARIÁVEIS *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
float ent, valor;
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* DEFINIÇÃO E INICIALIZAÇÃO DAS PORTAS *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#use fast_io(a)
#use fast_io(b)
#use fast_io(c)
#use fast_io(d)
#use fast_io(e)
#byte porta = 0x05
#byte portb = 0x06
#byte portc = 0x07
#byte portd = 0x08
#byte porte = 0x09
/******************** Definições Iniciais do LCD ******************************/
#define lcd_enable pin_e1 // pino enable do LCD
#define lcd_rs pin_e0 // pino rs do LCD
#define lcd_db4 pin_d4 // pino de dados d4 do LCD
#define lcd_db5 pin_d5 // pino de dados d5 do LCD
#define lcd_db6 pin_d6 // pino de dados d6 do LCD
#define lcd_db7 pin_d7 // pino de dados d7 do LCD
/****************************** Rotinas para o LCD ****************************/
/**** Esta rotina lê o "Nibble" inferior de uma variável e envia para o LCD****/
void envia_nibble_lcd(int dado)
{
/**** Carrega as vias de dados (pinos) do LCD de acordo com o nibble lido ****/
output_bit(lcd_db4, bit_test(dado,0)); //Carrega DB4 do LCD com o bit DADO<0>
output_bit(lcd_db5, bit_test(dado,1)); //Carrega DB5 do LCD com o bit DADO<1>
output_bit(lcd_db6, bit_test(dado,2)); //Carrega DB6 do LCD com o bit DADO<2>
output_bit(lcd_db7, bit_test(dado,3)); //Carrega DB7 do LCD com o bit DADO<3>
output_high(lcd_enable); //Gera um pulso de enable ENABLE = 1
delay_us(1); // Recomendado para estabilizar o LCD
output_low(lcd_enable); // ENABLE = 0
return; // Retorna ao ponto de chamada da função
}
10
/************************* Envio de Byte para o LCD **************************/
/** Esta rotina irá enviar um dado ou um comando para o LCD conforme abaixo:**/
// ENDEREÇO = 0 -> a variável DADO será uma instrução
// ENDEREÇO = 1 -> a variável DADO será um caractere
void envia_byte_lcd(boolean endereco, int dado)
{
output_bit(lcd_rs,endereco); // Seta o bit RS para instrução ou caractere
delay_us(100); // Aguarda 100 us para estabilizar o pino do LCD
output_low(lcd_enable); // Desativa a linha ENABLE
envia_nibble_lcd(dado>>4); // Envia a parte ALTA do dado/comando
envia_nibble_lcd(dado & 0x0f);// Limpa a parte ALTA e envia a parte BAIXA do dado/comando
delay_us(40); // Aguarda 40us para estabilizar o LCD
return; // Retorna ao ponto de chamada da função
}
/*********************** Envio de caractere para o LCD ************************/
/* Esta rotina serve apenas como uma forma mais fácil de escrever um caractere
no display. Ela pode ser eliminada e ao invés dela usaremos diretamente a função
envia_byte_lcd(1,"<caractere a ser mostrado no lcd>");
envia_byte_lcd(1,<codigo do caractere a ser mostrado no lcd>);*/
void escreve_lcd(char c)
{
envia_byte_lcd(2,c); // envia caractere para o display
}
/************************ Função para limpar o LCD ****************************/
/* Como esta operação pode ser muito utilizada, transformando-a em função faz com que o código compilado seja menor.*/
void limpa_lcd()
{
envia_byte_lcd(0,0x01); // Envia instrução para limpar o LCD
delay_ms(5); // Aguarda 2ms para estabilizar o LCD
return; // Retorna ao ponto de chamada da função
}
/*************************** Inicializa o LCD ********************************/
void inicializa_lcd()
{
output_low(lcd_db4); // Garante que o pino DB4 estão em 0 (low)
output_low(lcd_db5); // Garante que o pino DB5 estão em 0 (low)
output_low(lcd_db6); // Garante que o pino DB6 estão em 0 (low)
output_low(lcd_db7); // Garante que o pino DB7 estão em 0 (low)
output_low(lcd_rs); // Garante que o pino RS estão em 0 (low)
output_low(lcd_enable);// Garante que o pino ENABLE estão em 0 (low)
delay_ms(15); // Aguarda 15ms para estabilizar o LCD
envia_nibble_lcd(0x03);// Envia comando para inicializar o display
delay_ms(5); // Aguarda 5ms para estabilizar o LCD
envia_nibble_lcd(0x03);// Envia comando para inicializar o display
delay_ms(5); // Aguarda 5ms para estabilizar o LCD
envia_nibble_lcd(0x03);// Envia comando para inicializar o display
delay_ms(5); // Aguarda 5ms para estabilizar o LCD
envia_nibble_lcd(0x02);// CURSOR HOME - Envia comando para zerar o contador de caracteres e retornar à posição inicial
(0x80).
delay_ms(1); // Aguarda 1ms para estabilizar o LCD
envia_byte_lcd(0,0x28);// FUNCTION SET - Configura o LCD para 4 bits, 2 linhas, fonte 5X7.
envia_byte_lcd(0,0x0c);// DISPLAY CONTROL - Display ligado, com cursor ligado e piscando
limpa_lcd(); // Limpa o LCD
11
envia_byte_lcd(0,0x06);// ENTRY MODE SET - Desloca o cursor para a direita
return; // Retorna ao ponto de chamada da função
}
void teste_lcd()
{
envia_byte_lcd(0,0xc0);// posicionamento do cursor
printf(escreve_lcd, "F");
envia_byte_lcd(0,0xc1);// posicionamento do cursor
printf(escreve_lcd, "A");
envia_byte_lcd(0,0xc2);// posicionamento do cursor
printf(escreve_lcd, "B");
envia_byte_lcd(0,0xc3);// posicionamento do cursor
printf(escreve_lcd, "I");
envia_byte_lcd(0,0xc4);// posicionamento do cursor
printf(escreve_lcd, "O");
envia_byte_lcd(0,0xc6);// posicionamento do cursor
printf(escreve_lcd, "GOMES");
envia_byte_lcd(0,0x80);// posicionamento do cursor
printf(escreve_lcd, "FATEC 2012");
}
void tela_principal()
{
envia_byte_lcd(0,0x80);
printf(escreve_lcd,"TESTE CONDUTOR");
envia_byte_lcd(0,0xC0);
printf(escreve_lcd,"FATEC STO ANDRE");
}
void conversao()
{
setup_adc (ADC_CLOCK_INTERNAL);
set_adc_channel (0);
delay_us(100);
ent = read_adc();
valor= (ent*0.004887585);
}
void le_tensao()
{
limpa_lcd();
envia_byte_lcd(0,0xc0);
printf(escreve_lcd,"%f %f", valor,ent);
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* CONFIGURAÇÕES DO MICROCONTROLADOR *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void inicializa_micro()
{
setup_adc_ports (RA0_analog);
set_tris_a(0b11011111);
set_tris_b(0b11111000);
set_tris_c(0b11111111);
set_tris_d(0b00000000);
set_tris_e(0b00000000);
porta=0x00;
portb=0x00;
portc=0x00;
portd=0x00;
porte=0x00;
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* LOOP PRINCIPAL *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void main()
12
{
inicializa_micro();
inicializa_lcd();
limpa_lcd();
while(TRUE)
{
conversao();
le_tensao();
if (valor<=0.45)
{
output_high(pin_b0);//LED VERMELHO
output_low(pin_b1);
output_low(pin_b2);
limpa_lcd();
envia_byte_lcd(0,0x80);
printf(escreve_lcd,"RES. ACIMA DE 10k");
}
else
{
output_low(pin_b0);
delay_ms(100);
}
if ((valor<=4.94)&&(valor>=0.451))
{
output_high(pin_b1);//LED AMARELO
output_low(pin_b0);
output_low(pin_b2);
limpa_lcd();
envia_byte_lcd(0,0x80);
printf(escreve_lcd," RES 11 A 10k ");
}
else
{
output_low(pin_b1);
delay_ms(500);
}
if ((valor<=5)&&(valor>=4.95))
{
output_high(pin_b2);//LED VERDE
output_low(pin_b0);
output_low(pin_b1);
limpa_lcd();
envia_byte_lcd(0,0x80);
printf(escreve_lcd,"RES MENOR DE 10R");
}
else
{
output_low(pin_b2);
delay_ms(100);
}
}
}
13

Mais conteúdo relacionado

Mais procurados

Fantoches de palitos da branca de neve 1
Fantoches de palitos da branca de neve 1Fantoches de palitos da branca de neve 1
Fantoches de palitos da branca de neve 1SimoneHelenDrumond
 
1 pra que serve o livro- LEITURA DELEITE
1  pra que serve o livro- LEITURA DELEITE1  pra que serve o livro- LEITURA DELEITE
1 pra que serve o livro- LEITURA DELEITECris Siqueira
 
Princesa espertalhona (1)
Princesa espertalhona (1)Princesa espertalhona (1)
Princesa espertalhona (1)Teresa Ramos
 
H Q.Olimpiadas T Da Monica
H Q.Olimpiadas T Da MonicaH Q.Olimpiadas T Da Monica
H Q.Olimpiadas T Da Monicaadriana.25
 
χαμηλές πτήσεις κάνε πουλί να δείς καλό
χαμηλές πτήσεις   κάνε πουλί να δείς καλόχαμηλές πτήσεις   κάνε πουλί να δείς καλό
χαμηλές πτήσεις κάνε πουλί να δείς καλόΓιώργος Κωστορρίζος
 
Varios esquemas de fonte atx
Varios esquemas de fonte atxVarios esquemas de fonte atx
Varios esquemas de fonte atxvaluba21
 
Ôn tập Toán Cao Cấp - Đại Học Quốc Gia Hà Nội
Ôn tập Toán Cao Cấp - Đại Học Quốc Gia Hà NộiÔn tập Toán Cao Cấp - Đại Học Quốc Gia Hà Nội
Ôn tập Toán Cao Cấp - Đại Học Quốc Gia Hà NộiVuKirikou
 
A Princesa que bocejava Actividades
A Princesa que  bocejava ActividadesA Princesa que  bocejava Actividades
A Princesa que bocejava ActividadesConstantino Alves
 
TODA CRIANÇA DO MUNDO MORA EM MEU CORAÇÃO
TODA CRIANÇA DO MUNDO MORA EM MEU CORAÇÃOTODA CRIANÇA DO MUNDO MORA EM MEU CORAÇÃO
TODA CRIANÇA DO MUNDO MORA EM MEU CORAÇÃOMarisa Seara
 
Revista Tehnium 73_10
Revista Tehnium 73_10Revista Tehnium 73_10
Revista Tehnium 73_10mircea7
 
O livro da familia para colorir
O livro da familia para colorirO livro da familia para colorir
O livro da familia para colorirRita Nunes
 
Que grande abóbora mimi! valerie thomas e korky paul
Que grande abóbora mimi! valerie thomas e korky paulQue grande abóbora mimi! valerie thomas e korky paul
Que grande abóbora mimi! valerie thomas e korky paulLucia Rodrigues
 
Lilito um amor_de_caracol
Lilito um amor_de_caracolLilito um amor_de_caracol
Lilito um amor_de_caracolJairtes Lima
 
O Palhaço Tristoleto (Adaptada em SPC)
O Palhaço Tristoleto (Adaptada em SPC)O Palhaço Tristoleto (Adaptada em SPC)
O Palhaço Tristoleto (Adaptada em SPC)Madalena Charruadas
 
A verdadeira história dos 3 porquinhos
A verdadeira história dos 3 porquinhos A verdadeira história dos 3 porquinhos
A verdadeira história dos 3 porquinhos Layse Bernardo
 
A menina gigante
A menina giganteA menina gigante
A menina giganteJoanaSerrao
 
Livro dos medos
Livro dos medosLivro dos medos
Livro dos medossusanama
 

Mais procurados (20)

Fantoches de palitos da branca de neve 1
Fantoches de palitos da branca de neve 1Fantoches de palitos da branca de neve 1
Fantoches de palitos da branca de neve 1
 
Ze pinto e Ferróquio
Ze pinto e FerróquioZe pinto e Ferróquio
Ze pinto e Ferróquio
 
1 pra que serve o livro- LEITURA DELEITE
1  pra que serve o livro- LEITURA DELEITE1  pra que serve o livro- LEITURA DELEITE
1 pra que serve o livro- LEITURA DELEITE
 
Minhas férias
Minhas fériasMinhas férias
Minhas férias
 
Princesa espertalhona (1)
Princesa espertalhona (1)Princesa espertalhona (1)
Princesa espertalhona (1)
 
H Q.Olimpiadas T Da Monica
H Q.Olimpiadas T Da MonicaH Q.Olimpiadas T Da Monica
H Q.Olimpiadas T Da Monica
 
χαμηλές πτήσεις κάνε πουλί να δείς καλό
χαμηλές πτήσεις   κάνε πουλί να δείς καλόχαμηλές πτήσεις   κάνε πουλί να δείς καλό
χαμηλές πτήσεις κάνε πουλί να δείς καλό
 
Varios esquemas de fonte atx
Varios esquemas de fonte atxVarios esquemas de fonte atx
Varios esquemas de fonte atx
 
Ôn tập Toán Cao Cấp - Đại Học Quốc Gia Hà Nội
Ôn tập Toán Cao Cấp - Đại Học Quốc Gia Hà NộiÔn tập Toán Cao Cấp - Đại Học Quốc Gia Hà Nội
Ôn tập Toán Cao Cấp - Đại Học Quốc Gia Hà Nội
 
A Princesa que bocejava Actividades
A Princesa que  bocejava ActividadesA Princesa que  bocejava Actividades
A Princesa que bocejava Actividades
 
TODA CRIANÇA DO MUNDO MORA EM MEU CORAÇÃO
TODA CRIANÇA DO MUNDO MORA EM MEU CORAÇÃOTODA CRIANÇA DO MUNDO MORA EM MEU CORAÇÃO
TODA CRIANÇA DO MUNDO MORA EM MEU CORAÇÃO
 
Revista Tehnium 73_10
Revista Tehnium 73_10Revista Tehnium 73_10
Revista Tehnium 73_10
 
Rainha dos estapafúrdios
Rainha dos estapafúrdiosRainha dos estapafúrdios
Rainha dos estapafúrdios
 
O livro da familia para colorir
O livro da familia para colorirO livro da familia para colorir
O livro da familia para colorir
 
Que grande abóbora mimi! valerie thomas e korky paul
Que grande abóbora mimi! valerie thomas e korky paulQue grande abóbora mimi! valerie thomas e korky paul
Que grande abóbora mimi! valerie thomas e korky paul
 
Lilito um amor_de_caracol
Lilito um amor_de_caracolLilito um amor_de_caracol
Lilito um amor_de_caracol
 
O Palhaço Tristoleto (Adaptada em SPC)
O Palhaço Tristoleto (Adaptada em SPC)O Palhaço Tristoleto (Adaptada em SPC)
O Palhaço Tristoleto (Adaptada em SPC)
 
A verdadeira história dos 3 porquinhos
A verdadeira história dos 3 porquinhos A verdadeira história dos 3 porquinhos
A verdadeira história dos 3 porquinhos
 
A menina gigante
A menina giganteA menina gigante
A menina gigante
 
Livro dos medos
Livro dos medosLivro dos medos
Livro dos medos
 

Semelhante a Detector de curto

Projeto – Transmissão de voz digital
Projeto – Transmissão de voz digitalProjeto – Transmissão de voz digital
Projeto – Transmissão de voz digitalCiro Marcus
 
Ged2855 fornecimentoemtensaoprimaria15kv25kve345kv volume1-2
Ged2855 fornecimentoemtensaoprimaria15kv25kve345kv volume1-2Ged2855 fornecimentoemtensaoprimaria15kv25kve345kv volume1-2
Ged2855 fornecimentoemtensaoprimaria15kv25kve345kv volume1-2Danilo Lima
 
Adaptador para-medir-indutancias
Adaptador para-medir-indutanciasAdaptador para-medir-indutancias
Adaptador para-medir-indutanciasWalter Mendes
 
P01 introducao elvis-ii
P01 introducao elvis-iiP01 introducao elvis-ii
P01 introducao elvis-iiBruno Castro
 
Relatório de Projeto - Desenvolvimento de um Controlador de Rotação para Moto...
Relatório de Projeto - Desenvolvimento de um Controlador de Rotação para Moto...Relatório de Projeto - Desenvolvimento de um Controlador de Rotação para Moto...
Relatório de Projeto - Desenvolvimento de um Controlador de Rotação para Moto...Gustavo Fernandes
 
Circuitos retificadores
Circuitos retificadoresCircuitos retificadores
Circuitos retificadorespjclima
 
CONVERSOR ANALÓGICO/DIGITAL COM SAMPLE AND HOLDCONVERSOR ANALÓGICO/DIGITAL CO...
CONVERSOR ANALÓGICO/DIGITAL COM SAMPLE AND HOLDCONVERSOR ANALÓGICO/DIGITAL CO...CONVERSOR ANALÓGICO/DIGITAL COM SAMPLE AND HOLDCONVERSOR ANALÓGICO/DIGITAL CO...
CONVERSOR ANALÓGICO/DIGITAL COM SAMPLE AND HOLDCONVERSOR ANALÓGICO/DIGITAL CO...Ciro Marcus
 
Projeto da Fonte de Alimentação Regulada
Projeto da Fonte de Alimentação ReguladaProjeto da Fonte de Alimentação Regulada
Projeto da Fonte de Alimentação ReguladaCiro Marcus
 
Lcd uso por renie s. marquet
Lcd uso por renie s. marquetLcd uso por renie s. marquet
Lcd uso por renie s. marquetFlavio Galuppo
 
Física 2 relatório Circuito RC
Física 2  relatório Circuito RCFísica 2  relatório Circuito RC
Física 2 relatório Circuito RCSabrina Fermano
 
Traineeship Report
Traineeship Report Traineeship Report
Traineeship Report Paulo Duarte
 
A Necessária Integração dos Indicadores de Qualidade de Energia e Aspectos de...
A Necessária Integração dos Indicadores de Qualidade de Energia e Aspectos de...A Necessária Integração dos Indicadores de Qualidade de Energia e Aspectos de...
A Necessária Integração dos Indicadores de Qualidade de Energia e Aspectos de...slides-mci
 

Semelhante a Detector de curto (20)

Scotler a bateria controle
Scotler a bateria controleScotler a bateria controle
Scotler a bateria controle
 
Workshop de produtos Alfacomp
Workshop de produtos AlfacompWorkshop de produtos Alfacomp
Workshop de produtos Alfacomp
 
Projeto – Transmissão de voz digital
Projeto – Transmissão de voz digitalProjeto – Transmissão de voz digital
Projeto – Transmissão de voz digital
 
Ged2855 fornecimentoemtensaoprimaria15kv25kve345kv volume1-2
Ged2855 fornecimentoemtensaoprimaria15kv25kve345kv volume1-2Ged2855 fornecimentoemtensaoprimaria15kv25kve345kv volume1-2
Ged2855 fornecimentoemtensaoprimaria15kv25kve345kv volume1-2
 
Adaptador para-medir-indutancias
Adaptador para-medir-indutanciasAdaptador para-medir-indutancias
Adaptador para-medir-indutancias
 
P01 introducao elvis-ii
P01 introducao elvis-iiP01 introducao elvis-ii
P01 introducao elvis-ii
 
Relatório de Projeto - Desenvolvimento de um Controlador de Rotação para Moto...
Relatório de Projeto - Desenvolvimento de um Controlador de Rotação para Moto...Relatório de Projeto - Desenvolvimento de um Controlador de Rotação para Moto...
Relatório de Projeto - Desenvolvimento de um Controlador de Rotação para Moto...
 
Circuitos retificadores
Circuitos retificadoresCircuitos retificadores
Circuitos retificadores
 
ATmega Prática
ATmega PráticaATmega Prática
ATmega Prática
 
Analógico_Digital.pptx
Analógico_Digital.pptxAnalógico_Digital.pptx
Analógico_Digital.pptx
 
CONVERSOR ANALÓGICO/DIGITAL COM SAMPLE AND HOLDCONVERSOR ANALÓGICO/DIGITAL CO...
CONVERSOR ANALÓGICO/DIGITAL COM SAMPLE AND HOLDCONVERSOR ANALÓGICO/DIGITAL CO...CONVERSOR ANALÓGICO/DIGITAL COM SAMPLE AND HOLDCONVERSOR ANALÓGICO/DIGITAL CO...
CONVERSOR ANALÓGICO/DIGITAL COM SAMPLE AND HOLDCONVERSOR ANALÓGICO/DIGITAL CO...
 
Projeto da Fonte de Alimentação Regulada
Projeto da Fonte de Alimentação ReguladaProjeto da Fonte de Alimentação Regulada
Projeto da Fonte de Alimentação Regulada
 
Lcd uso por renie s. marquet
Lcd uso por renie s. marquetLcd uso por renie s. marquet
Lcd uso por renie s. marquet
 
Aula 4 conversor ad e pwm
Aula 4   conversor ad e pwmAula 4   conversor ad e pwm
Aula 4 conversor ad e pwm
 
Labdisp1
Labdisp1Labdisp1
Labdisp1
 
Física 2 relatório Circuito RC
Física 2  relatório Circuito RCFísica 2  relatório Circuito RC
Física 2 relatório Circuito RC
 
Ged 2855
Ged 2855Ged 2855
Ged 2855
 
Pratica ed 8
Pratica ed 8Pratica ed 8
Pratica ed 8
 
Traineeship Report
Traineeship Report Traineeship Report
Traineeship Report
 
A Necessária Integração dos Indicadores de Qualidade de Energia e Aspectos de...
A Necessária Integração dos Indicadores de Qualidade de Energia e Aspectos de...A Necessária Integração dos Indicadores de Qualidade de Energia e Aspectos de...
A Necessária Integração dos Indicadores de Qualidade de Energia e Aspectos de...
 

Detector de curto

  • 1. Fatec Santo André – Faculdade de Tecnologia Cód. da Disciplina SCSC Disciplina Sistema de Carga e Partida R.A Aluno Fábio Gomes Data 11/06/2012 Prof. Edson DISPOSITIVO DETECTOR DE CURTO SANTO ANDRÉ
  • 2. 11 DE JUNHO DE 2012. 2
  • 3. Índice Resumo Pág 3 Introdução Pág 3 Metodologia Pág 3 Levantamentos Experimentais Pág 3 Dados de solicitação do projeto Pág 3 Compra de materiais Pág 3 Montagem do protótipo Pág 3 Programação do Microcontrolador Pág 4 Testes funcionais Pág 4 Dificuldades Pág 4 Solução Proposta Pág 4 Conclusão Pág 5 Referencias Pág 5 Anexo I – Diagrama Elétrico Pág 6 Anexo II – Lista de materiais Pág 7 Anexo III – Fluxograma Pág 8 Anexo III – Código fonte do programa do microcontrolador Pág 9 3
  • 4. DESENVOLVIMENTO DE UM DISPOSITIVO ELETRÔNICO DENOMINADO “DETECTOR DE CURTO”. RESUMO Este trabalho mostra detalhadamente, as etapas de desenvol- vimento e montagem de um dispositivo eletrônico capaz de testar um condutor denominado “Detector de Curto”. O sistema foi desenvolvido através de um microcontrolador da família PIC e a indicação do estado do condutor se dará através de leds e um display de 16x2. INTRODUÇÃO O objetivo deste trabalho é apresentar o desenvolvimento do dispositivo eletrônico denominado, Detector de Curto, no qual se pode medir a faixa de resistência de um condutor. As medidas do foram dividas em três níveis nos quais indicam: 1º Nível: Indica que o estado do condutor se encontra em curto ou com resistência até que 10 .ῼ 2º Nível: Indica se o condutor está rompido (com circuito aberto) ou com resistência superior a 10k .ῼ 3º Nível: Indica que o condutor está com valor resistivo entre 11 e 10k .ῼ ῼ O desenvolvimento do sistema possui uma interface simples para que a pessoa que irá utilizar, possa ter agilidade no processo de teste, mas com precisão. A indicação do estado do condutor se dará através de leds, indicados na cor vermelha para o condutor em curto (1º Nível), verde para o sistema aberto (2º Nível) e amarelo para a resistência entre 11 e 10kῼ ῼ (3º Nível), além da indicação efetuada através do display 16x2, onde será mostrado: - Estado do condutor (Ex.: “RES MENOR DE 10R” ); - Valor de tensão em cima do condutor; - E o valor da resolução que se refere a cada valor de tensão convertido pelo conversor A/D do PIC. METODOLOGIA Com base no trabalho realizado no inicio do primeiro semestre de 2012, no qual, foi realizado somente a parte escrita do projeto, não sendo efetuada a montagem do mesmo, algumas melhorias no projeto foram acrescentadas como: - Uma fonte com um regulador de tensão; - Um display que na primeira versão não tinha. O processo de desenvolvimento se deu através das seguintes etapas: - Levantamentos experimentais; - Montagem do protótipo; - Testes funcionais. LEVANTAMENTOS EXPERIMENTAIS Nesta etapa foram adquiridas as especificações necessárias para a montagem inicial do projeto, elaboração e definição das melhorias com relação á primeira versão do projeto citada anteriormente. DADOS DE SOLICITAÇÃO DO PROJETO Adquiriu-se informações técnicas sobre alguns componentes do sistema, como os datasheets do Microcontrolador utilizado que é PIC da família 16F877A e construção da fonte para alimentação do mesmo, além dos dados para o display de 16x2. O diagrama elétrico foi feito e simulado no software ISIS Professional versão 7.8 release SP2. E a programação do microcontrolador feita através do MPlab IDE V8.76. MONTAGEM DO PROTÓTIPO Com o material todo em mãos, ficou resolvido fazer a parte da fonte para regulagem da tensão de 12 Volts para 5 Volts em uma placa de circuito impresso, devido à dissipação de calor do CI regulador de tensão LM 7805 que poderia danificar a protoboard. Este circuito permite que se tenha uma tensão estabilizada de 5 Volts para alimentar todo o circuito, onde uma variação de tensão poderia comprometer a confiabilidade do teste. A figura 1 nos mostra o circuito de regulagem da tensão. Figura 1- Circuito regulador de tensão A alimentação de 12V foi provida de uma fonte externa com entrada AC de 100-240 volts de 60/50Hz e 0,45A, com saída DC de +12 volts e 1,25A. O próximo passo foi definir a melhor posição para a montagem do microcontrolador PIC 16F877A e o LCD de 16x2, na protoboard EIC-108 de 3220 pontos. Além do circuito ligado ao MCLRVPP responsável pelo funcio- namento e modo gravação de dados no PIC “in-circuit”, e do circuito de clock do microcontrolador formado pelo cristal de 4 MHz e dois capacitores de 15pF. 4
  • 5. Todas as ligações entre os componentes deste projeto foram efetuadas através de um kit de jumpers fornecido com a própria protoboard. As figuras 2 e 3 mostram as ligações desses componentes. Figura 2 – Circuito do Microcontrolador PIC 16F877A. Figura 3 – Circuito do Display de LCD 16x2. Na seqüência partiu-se para a montagem dos circuitos de entrada, onde será conectado o condutor a ser testado, utilizou-se um divisor de tensão com uma resistência de referencia de 1 k identificada na figura 4 como R5, oῼ resistor R6 de 10 k substitui o condutor e o resistor R4 deῼ 10k serve como um limitador de corrente para aumentar o tempo de descarga do capacitor C7. O MCLR ilustrado na figura 5, sendo formado por um resistor de 10 k ligado diretamente ao VDD (+5V) e umaῼ botão ligado ao VSS(-) caso seja necessário efetuar um reset no microcontrolador. O circuito de saída mostrado na figura 6, são os leds, vermelho (RED) para circuito aberto e resistência acima de 10k , amarelo (ῼ YELLOW) para resistência entre 11 eῼ 10k , verde (ῼ GREEN) para resistência até 10 .ῼ Estes circuitos são ilustrados nas figuras 4, 5 e 6 respectivamente. Figura 4 – Circuito de entrada formado por um divisor de tensão. Figura 5 – Circuito de reset ligado ao pino MCLR do Microcontrolador. Figura 6 – Circuito de indicação feito por leds. PROGRAMAÇÃO DO MICROCONTROLADOR Os programas PCWH versão 4.078 e o MPLAB IDE Versão 8.76, foram utilizados para edição e compilação e o progra- mador e debugger USB PKburner 2 R3 da Carelle, compatível com o software MPLAB e o PICkit2 que contém um soquete ZIF para microcontroladores de até 40 pinos família PIC, além da opção ICSP que permite a gravação do microcontrolador no próprio circuito. Na estrutura de decisão do software, utilizou-se os parâmetros que serão mostrados a seguir, baseados nos cálculos, que resultam a queda de tensão em cima do condutor, que será testado no divisor de tensão, que é dado pela equação: VR6 = R5.VDD / R5+R6 Na qual: VR6 = Queda de tensão em cima do condutor ou resistência a ser testada; R5 = Resistor de referencia; VDD = tensão de entrada do divisor; R6 = Condutor ou resistência a ser testada. A estratégia utiliza os valores de VR6, como faixas limites para cada nível, no qual cada nível tem suas saídas determinada. Para valores de resistência de até 10 , empregou-se umaῼ faixa de valor de 4,95 até 5 Volts, indicado no circuito de saída pelo led verde (GREEN) e no display “RES MENOR DE 10R”, além dos valores de tensão respectivos para cada valor resistivo e a resolução de conversão do A/D, sendo esse dois últimos itens, válidos para todos os níveis não sendo mencionados nas próximas faixas. 5
  • 6. É importante salientar que essa pequena faixa de valores tensão se deve a estreita faixa de resistência para esse nível, não apresentando durante os testes instabilidade ou erros de leitura. Para valores de resistência entre 11 e 10k , foi definidaῼ ῼ uma faixa de 4,94 a 0,451 Volts, sendo mostrado no circuito de saída através do led amarelo (YELLOW) e com a mensagem no display RES 11 A 10k . E para valores resistivos superiores a 10k ou circuitoῼ aberto valores menores ou iguais a 0,45 Volts, sendo visualizado através do led vermelho (RED) e com a mensagem no display ACIMA DE 10K. TESTES FUNCIONAIS Finalizado a montagem, executou-se a verificação ponto a ponto do circuito com um multímetro digital, certificando a perfeita ligação entre os componentes em seguida, foi realizado a gravação do PIC 16F877A. Conduziu-se a placa para a bancada onde foram realizados os testes finais com diversos resistores verificando o funcionamento do circuito. DIFICULDADES A maior dificuldade encontrada foi fazer os ajustes para retirada das oscilações dos leds e a correta amostragem do display. Na qual, em avaliação do circuito na bancada foi revisado o software em busca das soluções para os problemas da visualização dos caracteres no display e as oscilações dos leds, onde foi acrescentado uma função para limpar o display, corrigindo o problema da amostragem do display. Colocou-se uma maior precisão na estrutura de decisão do software que pode ser visualizado através do fluxograma no Anexo III, no qual é responsáveis pela para ativação dos leds e o capacitor C7 em paralelo na entrada da porta de leitura do microcontrolador sendo sua descarga limitada pelo resistor R4 de 10k , possibilitando um maior tempoῼ para leitura. RESULTADOS OBTIDOS Os resultados obtidos no desenvolvimento atendeu as espe- cificações solicitadas. Acreditamos que as etapas de mon- tagem do projeto desenvolvido atendeu aos requisitos propostos, ressaltando apenas as falhas ocorridas devido às oscilações sendo estas corrigidas antes da entrega do projeto. Embora seja um sistema simples requeriu um tempo grande para desenvolvimento do software e montagem do sistema. Mas foi gratificante, pois mais uma vez podemos praticar a arte da eletrônica e programação do microcontrolador. CONCLUSÃO Neste trabalho foi detalhado o desenvolvimento de um dis- positivo capaz de medir resistência de um condutor, possibilitando um teste rápido, fácil e preciso sem a necessidade de equipamentos especiais para se efetuar a medição. Com uma interface simples e fácil de montar. Este projeto apresenta etapas da montagem com conceitos básicos sobre eletrônica e programação de micro- controladores além de software e equipamentos utilizados para simulação, gravação e medição de circuitos e compo- nentes. Esperamos que esse projeto ajude pessoas que queiram desenvolver um teste de condutor servindo de base para projetos futuros com suas devidas melhorias. REFERÊNCIAS Antonio, Prof. Marco (2006) – Apostila de programação de microcontroladores PIC usando linguagem C –- CEFETES. Pereira, Fábio (2010) – Livro Microcontroladores PIC programação em C – 7ªEd – São Paulo – Editora Érica. Microchip, Pic16F87xA Datasheet. USA: Microchip, 2001. Ramos, Eduardo Souza (2005) – Apostila de comunicação de LCD em 4 vias – Fonte no site abaixo. site:www.mecatronicadegaragem.blogspot.com – Palavra chave: Tutorial LCD em 4 Vias. 6
  • 7. ANEXO I – DIAGRAMA ELÉTRICO 7
  • 8. ANEXO II – LISTA DE MATERIAIS 6 Resistors Quantity: References Value Order Code 2 R1, R4 10k 3 R2, R8, R9 330 1 R3 1k 7 Capacitors Quantity: References Value Order Code 2 C1, C2 15pF 2 C3, C4 1000uF 2 C5, C6 100nF 1 C7 10nF 2 Integrated Circuits Quantity: References Value Order Code 1 U1 PIC16F877A 1 U2 7805 6 Diodes Quantity: References Value Order Code 2 D1, D5 LED-RED 1 D2 LED-GREEN 1 D3 LED-YELLOW 2 D4, D6 1N4007 4 Miscellaneous Quantity: References Value Order Code 1 LCD1 LM016L 1 RV1 100k 1 S1 1 X1 CRYSTAL 8
  • 9. ANEXO III – FLUXOGRAMA INICIO INIT_HARD INIT_LCD FLAG >=4,95 && FLAG <=5 FLAG >=0.451 && FLAG <=4.94 FLAG <=0.45 ACENDE LED GREEN ESCREVE_LCD RES MENOR DE 10R ACENDE LED YELLOW ACENDE LED RED ESCREVE_LCD RES 11 A 10k ESCREVE_LCD RES. ACIMA DE 10k S S S N N N 9
  • 10. ANEXO IV – CÓDIGO FONTE DO PROGRAMA DO MICROCONTROLADOR /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * SOFTWARE DO PROJETO DE CARGA E PARTIDA * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #include <16f877A.h> #device adc=10 #fuses xt,nowdt,noprotect,put,brownout,nolvp,nocpd,nowrt #use delay(clock=400000) #zero_ram /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * DEFINIÇÃO E INICIALIZAÇÃO DE VARIÁVEIS * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ float ent, valor; /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * DEFINIÇÃO E INICIALIZAÇÃO DAS PORTAS * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #use fast_io(a) #use fast_io(b) #use fast_io(c) #use fast_io(d) #use fast_io(e) #byte porta = 0x05 #byte portb = 0x06 #byte portc = 0x07 #byte portd = 0x08 #byte porte = 0x09 /******************** Definições Iniciais do LCD ******************************/ #define lcd_enable pin_e1 // pino enable do LCD #define lcd_rs pin_e0 // pino rs do LCD #define lcd_db4 pin_d4 // pino de dados d4 do LCD #define lcd_db5 pin_d5 // pino de dados d5 do LCD #define lcd_db6 pin_d6 // pino de dados d6 do LCD #define lcd_db7 pin_d7 // pino de dados d7 do LCD /****************************** Rotinas para o LCD ****************************/ /**** Esta rotina lê o "Nibble" inferior de uma variável e envia para o LCD****/ void envia_nibble_lcd(int dado) { /**** Carrega as vias de dados (pinos) do LCD de acordo com o nibble lido ****/ output_bit(lcd_db4, bit_test(dado,0)); //Carrega DB4 do LCD com o bit DADO<0> output_bit(lcd_db5, bit_test(dado,1)); //Carrega DB5 do LCD com o bit DADO<1> output_bit(lcd_db6, bit_test(dado,2)); //Carrega DB6 do LCD com o bit DADO<2> output_bit(lcd_db7, bit_test(dado,3)); //Carrega DB7 do LCD com o bit DADO<3> output_high(lcd_enable); //Gera um pulso de enable ENABLE = 1 delay_us(1); // Recomendado para estabilizar o LCD output_low(lcd_enable); // ENABLE = 0 return; // Retorna ao ponto de chamada da função } 10
  • 11. /************************* Envio de Byte para o LCD **************************/ /** Esta rotina irá enviar um dado ou um comando para o LCD conforme abaixo:**/ // ENDEREÇO = 0 -> a variável DADO será uma instrução // ENDEREÇO = 1 -> a variável DADO será um caractere void envia_byte_lcd(boolean endereco, int dado) { output_bit(lcd_rs,endereco); // Seta o bit RS para instrução ou caractere delay_us(100); // Aguarda 100 us para estabilizar o pino do LCD output_low(lcd_enable); // Desativa a linha ENABLE envia_nibble_lcd(dado>>4); // Envia a parte ALTA do dado/comando envia_nibble_lcd(dado & 0x0f);// Limpa a parte ALTA e envia a parte BAIXA do dado/comando delay_us(40); // Aguarda 40us para estabilizar o LCD return; // Retorna ao ponto de chamada da função } /*********************** Envio de caractere para o LCD ************************/ /* Esta rotina serve apenas como uma forma mais fácil de escrever um caractere no display. Ela pode ser eliminada e ao invés dela usaremos diretamente a função envia_byte_lcd(1,"<caractere a ser mostrado no lcd>"); envia_byte_lcd(1,<codigo do caractere a ser mostrado no lcd>);*/ void escreve_lcd(char c) { envia_byte_lcd(2,c); // envia caractere para o display } /************************ Função para limpar o LCD ****************************/ /* Como esta operação pode ser muito utilizada, transformando-a em função faz com que o código compilado seja menor.*/ void limpa_lcd() { envia_byte_lcd(0,0x01); // Envia instrução para limpar o LCD delay_ms(5); // Aguarda 2ms para estabilizar o LCD return; // Retorna ao ponto de chamada da função } /*************************** Inicializa o LCD ********************************/ void inicializa_lcd() { output_low(lcd_db4); // Garante que o pino DB4 estão em 0 (low) output_low(lcd_db5); // Garante que o pino DB5 estão em 0 (low) output_low(lcd_db6); // Garante que o pino DB6 estão em 0 (low) output_low(lcd_db7); // Garante que o pino DB7 estão em 0 (low) output_low(lcd_rs); // Garante que o pino RS estão em 0 (low) output_low(lcd_enable);// Garante que o pino ENABLE estão em 0 (low) delay_ms(15); // Aguarda 15ms para estabilizar o LCD envia_nibble_lcd(0x03);// Envia comando para inicializar o display delay_ms(5); // Aguarda 5ms para estabilizar o LCD envia_nibble_lcd(0x03);// Envia comando para inicializar o display delay_ms(5); // Aguarda 5ms para estabilizar o LCD envia_nibble_lcd(0x03);// Envia comando para inicializar o display delay_ms(5); // Aguarda 5ms para estabilizar o LCD envia_nibble_lcd(0x02);// CURSOR HOME - Envia comando para zerar o contador de caracteres e retornar à posição inicial (0x80). delay_ms(1); // Aguarda 1ms para estabilizar o LCD envia_byte_lcd(0,0x28);// FUNCTION SET - Configura o LCD para 4 bits, 2 linhas, fonte 5X7. envia_byte_lcd(0,0x0c);// DISPLAY CONTROL - Display ligado, com cursor ligado e piscando limpa_lcd(); // Limpa o LCD 11
  • 12. envia_byte_lcd(0,0x06);// ENTRY MODE SET - Desloca o cursor para a direita return; // Retorna ao ponto de chamada da função } void teste_lcd() { envia_byte_lcd(0,0xc0);// posicionamento do cursor printf(escreve_lcd, "F"); envia_byte_lcd(0,0xc1);// posicionamento do cursor printf(escreve_lcd, "A"); envia_byte_lcd(0,0xc2);// posicionamento do cursor printf(escreve_lcd, "B"); envia_byte_lcd(0,0xc3);// posicionamento do cursor printf(escreve_lcd, "I"); envia_byte_lcd(0,0xc4);// posicionamento do cursor printf(escreve_lcd, "O"); envia_byte_lcd(0,0xc6);// posicionamento do cursor printf(escreve_lcd, "GOMES"); envia_byte_lcd(0,0x80);// posicionamento do cursor printf(escreve_lcd, "FATEC 2012"); } void tela_principal() { envia_byte_lcd(0,0x80); printf(escreve_lcd,"TESTE CONDUTOR"); envia_byte_lcd(0,0xC0); printf(escreve_lcd,"FATEC STO ANDRE"); } void conversao() { setup_adc (ADC_CLOCK_INTERNAL); set_adc_channel (0); delay_us(100); ent = read_adc(); valor= (ent*0.004887585); } void le_tensao() { limpa_lcd(); envia_byte_lcd(0,0xc0); printf(escreve_lcd,"%f %f", valor,ent); } /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * CONFIGURAÇÕES DO MICROCONTROLADOR * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ void inicializa_micro() { setup_adc_ports (RA0_analog); set_tris_a(0b11011111); set_tris_b(0b11111000); set_tris_c(0b11111111); set_tris_d(0b00000000); set_tris_e(0b00000000); porta=0x00; portb=0x00; portc=0x00; portd=0x00; porte=0x00; } /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * LOOP PRINCIPAL * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ void main() 12
  • 13. { inicializa_micro(); inicializa_lcd(); limpa_lcd(); while(TRUE) { conversao(); le_tensao(); if (valor<=0.45) { output_high(pin_b0);//LED VERMELHO output_low(pin_b1); output_low(pin_b2); limpa_lcd(); envia_byte_lcd(0,0x80); printf(escreve_lcd,"RES. ACIMA DE 10k"); } else { output_low(pin_b0); delay_ms(100); } if ((valor<=4.94)&&(valor>=0.451)) { output_high(pin_b1);//LED AMARELO output_low(pin_b0); output_low(pin_b2); limpa_lcd(); envia_byte_lcd(0,0x80); printf(escreve_lcd," RES 11 A 10k "); } else { output_low(pin_b1); delay_ms(500); } if ((valor<=5)&&(valor>=4.95)) { output_high(pin_b2);//LED VERDE output_low(pin_b0); output_low(pin_b1); limpa_lcd(); envia_byte_lcd(0,0x80); printf(escreve_lcd,"RES MENOR DE 10R"); } else { output_low(pin_b2); delay_ms(100); } } } 13