relatório de microcontroladores
Short Description
Download relatório de microcontroladores...
Description
CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS TECNOLOGIA EM AUTOMAÇÃO INDÚSTRIAL JEAN FERNANDO DOS SANTOS VIEIRA
MICROCONTROLADORES Relatório de utilização
Londrina 2009
JEAN FERNANDO DOS SANTOS VIEIRA
MICROCONTROLADORES Relatório de utilização
Trabalho Trabalho apresentado à Universidade Universidade Norte do Paraná UNOPAR, como requisito parcial para a obtenção de média bimestral na disciplina de Microcontroladores Orientador: Prof. Miguel Angel Chincaro Bernuy
Londrina 2009
SUMÁRIO 1 INTRODUÇÃO...........................................................................................................3 2 Básico.........................................................................................................................4 3 Intermediário...............................................................................................................9 4 Avançado..................................................................................................................13 5 CONCLUSÃO...........................................................................................................19 6 REFERÊNCIAS BIBLIOGRÁFICAS.........................................................................20
3
1 INTRODUÇÃO o microcontrolador é um circuito integrado de custo baixo que contém na sua síntese: memória programável somente para leitura, que armazena permanentemente as instruções programadas; memória RAM, que trabalha armazenando “variáveis” utilizadas pelo programa; CPU, que interpreta e executa comandos desse programa. Existem também dispositivos de entradas e saídas, que tem a finalidade de controle de dispositivos externos ou de receber sinais pulsados de chaves e sensores. Esses componentes se encontram num mesmo circuito integrado. Este relatório tem como finalidade expor os recursos discretos, o uso de periféricos intermediários, e alguns recursos relacionados à conversão Analógica para digital em microcontroladores.
4
2 BÁSICO Nesta aplicação foi desenvolvido um programa que utiliza um botão e um Led, sendo que quando o botão estiver pressionado o led ficará acesso. Caso contrário, o Led ficará apagado. Utiliza-se neste programa a linguagem C, e as funções bit_test(), output_high(), output_low(), input_a(), SET_TRIS_A(); alem das estruturas condicionais e de loop, if e while. Inicialmente o programa fará o teste se existe um sinal digital vindo no pino do microcontrolador, caso esteja ele acenderá o Led, pelo contrário ele manterá o estado de repouso do Led (desligado), figura 1.
INÍCIO
CONFIGURAR
BOTÃO APERTAD O?
NÃO
DESLIGA LED
S I M LIGA LED
Figura 1 – Fluxograma da aplicação do Led
2.1 MATERIAIS UTILIZADOS PARA O EXPERIMENTO PIC 16F628A Resistor 1k Ohm Botão Normalmente Aberto (NA) LED Resistor 330 Ohm Cristal 4Mhz
5
Compilador C CCS Simulador Proteus
2.2 CÓDIGO FONTE Foi configurado o compilador, os fusíveis de programação ativando o
PowerUP Timer e Reset Whem Brownout Detect .(que aparecem na tela inicial do assistente de configuração do programa C CCS). O seguinte código fonte foi utilizado: Biblioteca do arquivo modulobasico.h #include
#FUSES NOWDT
//No Watch Dog Timer
#FUSES RC
//Resistor/Capacitor Osc with CLKOUT
#FUSES PUT
//Power Up Timer
#FUSES NOPROTECT
//Code not protected from reading
#FUSES BROWNOUT
//Reset when brownout detected
#FUSES MCLR #FUSES LVP
//Master Clear pin enabled //Low Voltage Programming on B3(PIC16) or B5(PIC18)
#FUSES NOCPD
//No EE protection
#use delay(clock=10000000)
Arquivo modulobasico.c
#include "C:\TEMP\modulobasico.h"
void main() {
6
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); setup_oscillator(False); SET_TRIS_A(0xF1); while(true) { if(bit_test(input_a(),0)) { output_high(PIN_A1); while(input_a(),0); } else { output_low(PIN_A1); while(!input_a(),0); } } } 2.3 RESULTADOS OBTIDOS Simulando-se no programa Proteus, verificou-se que com o experimento realizado obteve-se o resultado esperado, a aplicação do Led foi realizada com sucesso. Ao fechar o contato NA ligou-se o Led (figura 2), ao abri-lo o Led se apaga (figura 3)
7
Figura 2 – Led ligado com chave fechada
Figura 3 – Led desligado com chave aberta
Essa aplicação poderia ser trabalhada utilizando-se dois botões um para ligar e o outro para desligar o Led, figura 4.
8 INÍCIO
CONFIGURAR
BOTÃO APERTAD O2?
NÃO
BOTÃO APERTAD O1?
SIM
N Ã O O Ã N
DESLIGA LED
Figura 4 – Fluxograma da nova aplicação para acender o Led
LIGA LED
9
3 INTERMEDIÁRIO Nesta aplicação foi desenvolvido um programa que utiliza um botão, um Led e um LCD, sendo que quando o botão estiver pressionado o led ficará acesso e no LCD aparecerá a seguinte informação Saída Ativada. Caso contrário, o Led ficará apagado e no LCD ficará escrito Saída Desativada. Utiliza-se neste programa a linguagem C, e as funções bit_test(), output_high(), output_low(), input_a(), SET_TRIS_B(), lcd_gotoxy(), lcd_putc; alem das estruturas condicionais e de loop, if e while. Inicialmente o programa fará o teste se existe um sinal digital vindo no pino do microcontrolador, caso esteja ele acenderá o Led e escrever no LCD Saída Ativada, pelo contrário ele manterá o estado de repouso do Led (desligado) e No LCD a Mensagem Saída Desativada, figura 5. INÍCIO
CONFIGURAR
BOTÃO APERTADO ?
NÃO
MENSAGEM: SAÍDA DESATIVADA Desliga Led
S I M MENSAGEM: SAÍDA ATIVADA Liga Led
Figura 5 – Fluxograma da aplicação para acender o Led e escrever no LCD
3.1 MATERIAIS PIC 16F877A LCD 16X2 (Display de Cristal Líquido) Resistor 1k Ohm
10
Botão Normalmente Aberto (NA) LED Resistor 330 Ohm Cristal 4Mhz Compilador C CCS Simulador Proteus
3.2 CÓDIGO FONTE Foi utilizado os mesmos recursos de configuração da aplicação anterior. Biblioteca do arquivo modulointermediario.h
#include #device adc=8 #FUSES NOWDT
//No Watch Dog Timer
#FUSES RC
//Resistor/Capacitor Osc with CLKOUT
#FUSES PUT
//Power Up Timer
#FUSES NOPROTECT #FUSES NODEBUG
//Code not protected from reading //No Debug mode for ICD
#FUSES BROWNOUT
//Reset when brownout detected
#FUSES NOLVP
//No low voltage prgming, B3(PIC16) or B5(PIC18)
used for I/O #FUSES NOCPD
//No EE protection
#FUSES NOWRT
//Program memory not write protected
#use delay(clock=10000000) #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
Arquivo modulointermediario.c
11
#include "C:\TEMP\modulointermediario.h" #include
void main() { setup_adc_ports(NO_ANALOGS); setup_adc(ADC_OFF); setup_psp(PSP_DISABLED); setup_spi(FALSE); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); SET_TRIS_B(0x02); lcd_init(); while(true) { if(bit_test(input_b(),0)) { lcd_gotoxy(1,1); printf(lcd_putc,"Saida Ativada "); output_high(PIN_B1); } else { lcd_gotoxy(1,1); printf(lcd_putc,"Saida Desativada"); output_low(PIN_B1); } } }
12
3.3 RESULTADOS OBTIDOS Simulando-se no programa Proteus, verificou-se que com o experimento realizado não obteve o resultado desejado, a aplicação do Led com recurso de intermediação do LCD, a partir do código fonte especificado não trouxe sucesso. Ao fechar o contato NA ligou-se o Led não ligou, entretanto a mensagem do LCD foi mostrada (figura 6), ao abrir o contato, observou-se que o Led manteu-se apagado, com a mensagem Saída Desativada (figura 7).
Figura 6 – Posição ligada
Figura 7 – Posição desligada
13
4 AVANÇADO Nesta aplicação foi desenvolvido um programa que utiliza um reostato e um LCD, sendo que quando o reostato estiver na posição máxima, no LCD aparecerá a informação do valor máximo referenciado, que na experiência é de 255, quando o reostato estiver no valor mínimo o resultado deve ser 0 (zero) a ser mostrado no LCD, no meio do reostato deve ser a referência 127 que será visível no LCD e nos valores restantes a variação será de acordo com os valores máximo (255) e mínimo (0). Utiliza-se neste programa a linguagem C, e as funções bit_test(), output_high(), output_low(), input_a(), SET_TRIS_B(), lcd_gotoxy(), lcd_putc, setup_adc_ports (), set_adc_channel(), read adc(); alem das estruturas condicionais e de loop, if e while. Inicialmente o programa fará o teste se existe um sinal analógico vindo do reostato no pino do microcontrolador, em seguida o microcontrolador fará a conversão analógico/digital para mostrar os valores em decimal no LCD (figura 8).
INÍCIO
CONFIGURAR
Leitura Analógico/Digital
Escreve na linha 2 do LCD a leitura
Figura 8 – Fluxograma da aplicação para analisar o valor analógico e converte-lo em digital
14
4.1 MATERIAIS PIC 16F877A LCD 16X2 (Display de Cristal Líquido) Potenciômetro Resistor 1k Ohm Cristal 4Mhz Compilador C CCS Simulador Proteus
4.2 CÓDIGO FONTE Arquivo moduloavancado.h
#include #device adc=8 #FUSES NOWDT
//No Watch Dog Timer
#FUSES RC
//Resistor/Capacitor Osc with CLKOUT
#FUSES PUT
//Power Up Timer
#FUSES NOPROTECT #FUSES NODEBUG
//Code not protected from reading //No Debug mode for ICD
#FUSES BROWNOUT
//Reset when brownout detected
#FUSES NOLVP
//No low voltage prgming, B3(PIC16) or B5(PIC18)
used for I/O #FUSES NOCPD
//No EE protection
#FUSES NOWRT
//Program memory not write protected
#use delay(clock=4000000) #use rs232(baud=9600,parity=N,xmit=PIN_B0,rcv=PIN_B0,bits=8)
#include "C:\TEMP\moduloavancado.h"
15
#include
Arquivo moduloavancado.c
void main() {int analo, refmin, refmax; refmin=0; refmax=255;
setup_adc_ports(AN0); setup_adc(ADC_CLOCK_INTERNAL); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); lcd_init(); while(true) { set_adc_channel(0); analo=read_adc(); lcd_gotoxy(1,2); if(analorefmax) { analo=refmax; printf(lcd_putc,"Valor= %u", analo);
16
} else printf(lcd_putc,"Valor= %u",analo); } } 4.3 RESULTADOS OBTIDOS Ao ligar o experimento, verificou-se que os dados foram obtidos com sucesso, na posição máxima do reostato o valor que é demonstrado no LCD é de 255 (figura 9), nas posições mínima e central são apresentados os valores de 0 e 127 respectivamente na leitura do LCD (figura 10 e 11), entretanto notou-se que nos valores em que estivessem entre essas duas posições no reostato apresentaram valores inesperados à este experimento o que é demonstrado na figura 12.
Figura 9 – Posição do reostato no máximo
17
Figura 10 – Posição do reostato no mínimo
Figura 11 – Posição do reostato no centro
18
Figura 12 – Posição do reostato no qual existe um erro de leitura
19
5 CONCLUSÃO Por meio deste trabalho, podem-se perceber as características de alguns circuitos utilizando microcontroladores mais conhecidos. Acima de tudo, julga-se necessário um melhor aprimoramento nos comandos relacionados aos recursos de manipulação de dados analógicos e interação com outros dispositivos.
20
6 REFERÊNCIAS BIBLIOGRÁFICAS PEREIRA, Fábio. Microcontroladores PIC: técnicas avançadas . São Paulo: Érica, 2002. SOUZA, David José de. Desbravando o PIC . São Paulo: Érica, 2000.
View more...
Comments