relatório de microcontroladores

Share Embed Donate


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

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF