CAMPUS ALEGRETE CURSO DE ENGENHARIA DE TELECOMUNICAÇÕES AL0105 – MICROCONTROL M ICROCONTROLADORES ADORES Professor: Paulo César C. de Aguirre
RELATÓRIO N° 1 Polarização do microcontrolador PIC16877A Trabalhando com entradas e saída em um microcontrolador PIC
Componente: Melissa Bilher
Alegrete, 17 de Setembro de 2016.
SUMÁRIO 1. INTRODUÇÃO ........................................................................................................................ 3 2. OBJETIVOS ............................................................................................................................. 3 3. DESENVOLVIMENTO ........................................................................................................... 4 4. CONCLUSÕES ....................................................................................................................... 11 5. BIBLIOGRAFIA ..................................................................................................................... 11
2
1. INTRODUÇÃO Um microcontrolador pode ser definido como um computador simplificado em um único circuito integrado, o qual é utilizado no controle de processos lógicos. Esses circuitos são compostos internamente de um ULA (unidade lógica e aritmética), uma unidade de controle e conjunto de periféricos. Esse tipo de computador tem a capacidade de armazenar centenas de milhares de transístores num único chip. O microcontrolador que é utilizado em aulas práticas é o PIC16F877A. Fabricado pela Microchip, esta enquadrado na família 8 bits, programação com 14 bits, possui arquitetura Harvard e tecnologia RISC com 35 instruções. Esse modelo de microcontrolador possui 40 pinos onde 7 são usados para alimentação e controle como pode-se ver na figura abaixo.
Figura 1 - Pinagem do microcontrolador PIC16F877A.
2. OBJETIVOS Esta aula prática teve como objetivos: entender o funcionamento e o circuito de polarização do PIC e compreender a utilização dos pinos de entrada e saída do microcontrolador PIC.
3. DESENVOLVIMENTO 3.1 Aula prática 1 3
3.1.1 Lista de Equipamentos - Microcontrolador PIC16F877A - Protoboard - 2 Capacitores de 15pF - 1 cristal oscilador de 4Mhz - 4 leds - 4 resistores de 100Ω - 1 resistor de 1kΩ - 1 resistor de 40kΩ - Fonte de alimentação de 5V
3.1.2 Resolução do experimento De acordo com o roteiro da aula prática os leds foram conectados em quatro pinos da porta B do microcontrolador PIC. De acordo com a pinagem do microcontrolador PIC16F877A da Figura 1, montou-se sobre um protoboard um circuito utilizando o microcontrolador configurado com um programa compilado no software MPLAB. O programa foi configurado para ligar os leds conectados a porta B. O microcontrolador foi polarizado com um sinal de clock de acordo com a Figura 2.
Figura 2 – Circuito de polarização do sinal de clock no PIC. Os capacitores C1 e C2 são de 15pF e a frequência de oscilação do cristal é 4MHz. No caso utilizado em aula prática de um oscilador convencional não foi necessário o resistor RF. 4
O sinal de reset (MCLR) foi polarizado de acordo com a Figura 3.
Figura 3 – Circuito de polarização do sinal de reset.
Utilizasse um R1<40kΩ para garantir que a queda de tensão sobre R não viole as especificações elétricas do PIC e R2>1kΩ para limitar qualquer corrente em MCLR
causada pelo capacitor no caso de uma descarga eletrostática. Foi considerado VDD=5V e VSS=0V. Os resistores foram utilizados em série com os leds para limitar corrente. O programa elaborado para essa prática está descrito abaixo, o qual foi feito no software MPLAB e gravado no microcontrolador. PROCESSOR 16F877A #include
;tipo do processador ;inclui arquivo
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC org 0x00 goto Main
;vetor de reset ;ir para o inicio do programa
org 0x04 goto Main
;vetor de interrupção ;não há rotina de interrupção
Main bsf STATUS, 5 movlw 0x00 movwf TRISB bcf STATUS,5 movlw 0xFF movwf PORTB
;inicio do programa principal ;seleciona o banco 1 da memória ;move o literal "0" para W ;configura pinos de PORTB como saída ;seleciona o banco 0 da memória ;move o literal "255" para W ;coloca "1" em todos os bits de PORTB
goto Loop
;o programa permanece no loop
Loop end
5
Após o teste do programa anterior, alterou-se o código foi para que apenas um led fosse ligado. O código alterado abaixo: PROCESSOR 16F877A #include
;tipo do processador ;inclui arquivo
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC org 0x00 goto Main
;vetor de reset ;ir para o inicio do programa
org 0x04 goto Main
;vetor de interrupção ;não há rotina de interrupção
Main bsf STATUS, 5 movlw 0x00 movwf TRISB bcf STATUS,5 movlw b'00000100' movwf PORTB
;inicio do programa principal ;seleciona o banco 1 da memória ;move o literal "0" para W ;configura pinos de PORTB como saída ;seleciona o banco 0 da memória ;liga apenas o bit 4 ;coloca "1" em todos os bits de PORTB
goto Loop
;o programa permanece no loop
Loop end
O circuito foi simulado no simulador Proteus para testar o código implementado em aula prática. A montagem do circuito pode ser vista abaixo:
Figura 4 – Circuito da aula prática 1 implementado no simulador Proteus.
6
Os comando "org 0x00" é o endereço inicial de reset e o comando "org 0x04" o endereço inicial de interrupção. No circuito montado na protoboard foram inseridos resistores em série com os leds, para limitar a corrente. Caso esses resistores não fossem inseridos ao alimentar o circuito a resistência dos leds tenderiam a zero e a corrente tederia ao infinito causando dano ao equipamento utilizado. A corrente máxima dos pinos de saída do microcontrolador PIC é 200mA. Como pedido no roteiro da aula prática foi transformado os seguintes valores pedidos para a representação hexadecimal: 53 127 e 204. 53 =
53 16
= 3 5
Então 53 em decimal = 35 em hexadecimal 127 =
127 16
= 7 15
De acordo com a tabela de números em hexadecimal o número 15 é representado pela letra F, então 127 em decimal = 7F em hexadecimal. 204 =
204 16
= 12 12
Consultando a tabela de números em hexadecimal o número 12 é representado pela letra C, então 204 em decimal = CC em hexadecimal.
3.2 Aula Prática 2 3.2.1 Lista de Equipamentos -Microcontrolador PIC16F877A -Protoboard - 2 Capacitores de 15pF - 1 cristal oscilador de 4Mhz - 1 leds - 1 resistores de 100Ω 7
- 1 resistor de 1kΩ - 2 resistor de 40kΩ - Uma chave interruptora - Fonte de alimentação de 5V
3.2.2 Resolução do Experimento Em uma protoboard montou-se um circuito utilizando o microcontrolador PIC16F877A onde programou-se um código que ao pressionar a chave interruptora na porta RB3, o led que esta conectado na porta RB0 acenderá. Quando a chave é solta o led deve apagar. A chave interruptora foi polarizada para que a entrada RB3 sempre receba um valor de 1 lógico (VDD).
Figura 5 - Exemplos de conexões de leds e chave interruptora.
A conexão utilizada em aula prática foi a do LED2 que ligará quando a entrada RB3 recebe um valor lógico 1. O programa utilizado foi elabora o programa no software MPLAB e gravado no microcontrolador. O código esta descrito abaixo:
8
PROCESSOR 16F877A ;tipo do processador #include ;inclui arquivo __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC org 0x00 goto Main
;vetor de reset ;ir para o inicio do programa
org 0x04 goto Main
;vetor de interrupção ;não há rotina de interrupção
Main ;inicio do programa principal bsf STATUS, 5 ;seleciona o banco 1 da memória, 5 movlw b'00010000' ;configura a porta RB5 como entrada movwf TRISB ;configura pinos de PORTB como saída bcf STATUS,5 ;seleciona o banco 0 da memória goto Teste Teste btfss PORTB,4 goto Liga goto Desliga
; testa o bit 4 da porta B
Liga movlw 0xFF movwf PORTB goto Teste
;move o literal "255" para W
Desliga movlw 0x00 movwf PORTB goto Teste end
O circuito da aula prática 2 foi simulado no simulador Proteus para testar o funcionamento do código elaborado, a montagem do circuito pode ser vista abaixo:
9
Figura 6 – Circuito da aula prática 2 implementado no simulador Proteus.
Como pedido no roteiro foi calculado os valores dos resistores
e da
Figura 5. Assumiu-se VDD=5V e VSS=0V, o valor de corrente de um led de 10 e tensão direta
= 1,6 .
Levando em conta que de acordo com o datasheet do PIC,
quando uma porta de saída esta em nível lógico baixo, sua tensão esta em em nível lógico alto, sua tensão esta em
= 4,3 .
= 0,35e
O cálculo do resistor é feito a
partir da equação abaixo: =
−
Onde é a tensão de alimentação e =
=
(Eq. 1)
é a tensão do led.
5,35 1,6 10 9,3 1,6 10
= 375 Ω
= 770 Ω
Ao se trabalhar com interruptores e chaves mecânicas pode ocorrer um problema chamado “bouncing”, esse efeito pode ser caracterizado por idas e vidas de nível lógico,
mudando rapidamente e seguidas vezes do nível lógico baixo para o alto até haver uma estabilidade. Para resolver esse possível problema existem algumas técnicas, conhecidas como Debouncing.
10
No caso do Debouncing por software, precisamos determinar um tempo até que a chave estabilize. No código podemos colocar um delay do tempo necessário, nada poderá acontecer durante esse tempo determinado no delay, o que funcionará bem no caso do efeito de bouncing, pois quando o tempo acabar o efeito já terá acabado e a chave estabilizado. Outra solução para esse problema seria adicionar um capacitor ao circuito. O capacitor serviria para atenuar o sinal, onde a malha composta pelo capacitor e o resistor irá gerar um tempo de atraso no circuito, tempo suficiente para que as oscilações indesejadas sejam atenuadas.
4. CONCLUSÕES A partir dos resultados observados em aula prática pode certificar-se de que os códigos programados estavam corretos, entendendo-se melhor a funcionalidade do que foi programado. Foi possível também aprender a utilizar corretamente a pinagem do PIC, realizar a montagem do circuito de polarização do microcontrolador, bem como gravar o código no PIC perfeitamente.
5. BIBLIOGRAFIA [1] SOUZA, D. J.; Lavinia, N. C. Conectando o PIC 16F877A: Recursos Avançados. 4. ed. Érica, 2003.edição. – 2004.
11