mÓdulo i -...
Post on 13-Dec-2018
215 Views
Preview:
TRANSCRIPT
MÓDULO I
Capítulo I: Introdução à Família PIC.
Capítulo II: Registradores.
Capítulo III: Canal de I/O Digital.
Capítulo IV: Oscilador.
Capítulo V: Funções Básicas de Programação.
Capítulo VI: Função Delay.
Capítulo VII: Software MPLAB e Compilador C18.
Capítulo VIII: Software de simulação Proteus.
Referências Bibliográficas.
2
3
CONCEITO:
Controlador é um dispositivo que gerencia um ou mais processos. Por exemplo, o controlador
que regula a temperatura de um forno tem um sensor que mede constantemente a temperatura interna e
quando ela ultrapassa um limite pré determinado gera sinais para atuadores que tentam manter a
temperatura dentro do valor estipulado.
Um microcontrolador é um circuito integrado, com integração de alto nível, que incorpora a
maior parte dos elementos que configuram um controlador.
4
FORNOFORNO
SENSORSENSOR
CIRCUITO CONDICIONADOR
CIRCUITO CONDICIONADOR
CIRCUITO DE CONTROLE
CIRCUITO DE CONTROLE
CIRCUITO DE POTÊNCIA
CIRCUITO DE POTÊNCIA
ATUADORATUADOR
MICROCONTROLADOR X MICROPROCESSADOR:
Um microcontrolador difere de um microprocessador em vários aspectos sendo o mais
importante a funcionalidade. Para o uso de um microprocessador é preciso adicionar outros
componentes para receber e enviar dados. O microcontrolador tem tudo em um só elemento, todos os
periféricos estão contidos nele. O custo do microcontrolador é bem menor e o tempo de desenvolvimento
do projeto eletrônico diminuiu consideravelmente.
O microcontrolador é um sistema fechado. Todas as partes do processador estão contidas
interior e só saem para o exterior através das linhas que governam os periféricos.
5
ARQUITETURA: GENÉRICA6
A estrutura genérica de um microcontrolador é constituída por uma Unidade Lógica de
Processamento (ULA); Unidade de Armazenamento e Unidade de Entrada e Saída.
7
ARQUITETURA: VON NEUMANN
(CISC – Complex Instruction Set Computers) Conjunto de instruções complexo.
O barramento que acessa a memória de dados e de programa é comum,
impedindo o acesso simultâneo das duas memórias.
8
ARQUITETURA: HARVARD
(RISC – Reduced Instruction Set Computers) Conjunto de instruções reduzido.
O barramento que acessa a memória de programa é independente do barramento que
acessa a memória de dados, permitindo o acesso simultâneo das duas memórias.
CONCEITO:
A família de microcontroladores PIC 18f4431 é caracterizada pela alta performance
computacional a um custo relativamente baixo comparado a outros projetos utilizando microcontroladores
possibilitando então uma boa relação custo-benefício no desenvolvimento de um sistema de automação.
ALGUMAS CARACTERÍSTICAS:
Módulo de controle de Modulação por Largura de pulso com inserção de tempo de banda morta (Dead
Time) programável.
Módulo de realimentação de movimento com capacidade para medição de posicionamento e velocidade
através de Encoder incremental, captura de borda para medição de largura de pulso.
Conversor Analógico – Digital de 10 bits de alta velocidade.
Múltiplas opções de fonte de clock.
Controle de otimização de consumo de energia.
Canais de comunicação serial.
9
APLICAÇÕES:
INDUSTRIAL: Aplicações em módulos de controle dedicados à cada tipo de equipamento, ou seja,
hardware e software específicos para cada aplicação. Exemplo: Misturadores, Tanques, Fornos, Válvulas
inteligentes, etc;
BIOMÉDICA: Aquisição e controle de sinais neurais para controle de próteses automatizadas, sendo
aplicado na área de tecnologia assistiva.
AUTOMOTIVA: Em sistemas embarcados para controle de elementos eletromecânicos de automóveis,
como por exemplo, módulo de controle de injeção eletrônica, módulo de alarme, etc;
DOMÓTICA: Aplicações em automação residencial para controle de periféricos como eletrodomésticos,
portas eletrônicas, controle de acesso biométrico, controle de acionamento por voz, etc;
10
11
Conexões Básicas
MCLR 5 V
AVDD 5V
AVSS 0V
VDD 5V
VSS 0V
12
CIRCUITO BÁSICO:
RESET
FILTRO
13
14
CONCEITO:
São posições de memória no qual é carregado um valor, determinando a configuração de alguma
propriedade ou ação a ser realizada pelo microcontrolador, ou apenas indicar algum parâmetro de
funcionamento.
Os registradores possuem um número especifico de bits, de acordo com cada aplicação, geralmente
possuem 8 bits, mas podemos encontrar registradores de 16 bits.
Cada bit do registrador é setado se carregado o valor lógico 1, caso o valor a ser carregado for 0,
o bit correspondente é resetado.
EXEMPLO DE APLICAÇÃO:
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
1 0 0 0 0 1 0 0
Neste caso somente os bits 7 e 2 são setados.
15
CARREGANDO VALORES NOS REGISTRADORES:
Para carregar um valor em qualquer registrador, deve-se executar esta ação na linha de
programação.
Na linguagem C executamos essa tarefa da seguinte maneira:
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
2³ 2¹2² 2³2º 2¹2² 2º
1 0 0 0 0 1 0 0
8 + 0 + 0 + 0 0 + 4 + 0 + 084
84 é o valor em Hexadecimal a ser carregador no registrador para esta situação.
16
DIGITANDO O VALOR A SER CARREGADO:
Depois de calcular o valor que deve ser inserido no registrador, devemos digitar no programa a
linha de comando responsável pela execução desta ação:
NOME DO REGISTRADOR = 0X84;
Então temos o nome do registrador digitado em maiúsculo, em seguida o sinal de atribuição,
pois estamos atribuindo um valor a esse registrador, logo após vem o comando “0X” indicando que o valor
a ser carregado esta na base hexadecimal, depois o valor calculado, que neste exemplo é “84”, e por último o
sinal “;” que indica fim da linha de comando.
17
18
DEFINIÇÃO:
Como em todos os microcontroladores, com o objetivo de reduzir tamanho e quantidade de pinos
em um chip, os microcontroladores da família PIC se utilizam do compartilhamento de funções de seus pinos.
Sendo assim um mesmo pino pode ser utilizado como entrada analógica ou Entrada/Saída Digital, ou ainda
um pino pode ser usado como tensão de referência de um conversor Analógico – Digital ou como pino de
Entrada/Saída Digital.
CARACTERÍSTICAS:
Dependendo do dispositivo selecionado e as características disponíveis, existem até 5 PORT’s
disponíveis nos microcontroladores da família PIC. Alguns pinos de E/S são multiplexados com funções
alternativas dependendo dos periféricos disponíveis. Em geral, quando um periférico é habilitado, o
respectivo pino não deve ser utilizado como E/S de uso geral.
Cada PORT possui dois registradores :
REGISTRADOR TRISx Registrador de Direção do pino;
REGISTRADOR PORTx Registrador que lê ou escreve dados no pino;
19
REGISTRADOR TRISx:
Este registrador é responsável por configurar os pinos como entrada ou saída digital, são
constituídos de 8 bits, sendo que cada bit corresponde a um pino do PORT. Para isso devemos carregar um
valor neste registrador como a seguir:
0 Pino é configurado como saída;
1 Pino é configurado como entrada;
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 02³ 2¹2² 2³2º 2¹2² 2º
Rx7 Rx6 Rx5 Rx4 Rx3 Rx2 Rx1 Rx0
x Indica que pode ser os bits do TRISA, TRISB, TRISC, TRISD, TRISE.
20
EXEMPLO DE APLICAÇÃO:
Para configurar os pinos RB1, RB3 e RB6 como entrada, deve-se proceder da seguinte maneira:
RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0
2³ 2¹2² 2³2º 2¹2² 2º
0 1 0 0 1 0 1 0
0 + 4 + 0 + 0 8 + 0 + 2 + 0
4 10 A
TRISB = 0x4A;
21
REGISTRADOR PORTx:
Este registrador tem a função de ler e escrever um valor no pino correspondente, ou seja, é um
registrador de acesso, pois podemos ler um valor enviado a um pino, ou gerar um sinal de saída no PORT
correspondente.
TRISx
PORTx
EXEMPLO DE APLICAÇÃO:
SE (PORTAbits.RA1==1)
FAÇA
PORTBbits.RB3=1;
FIM
Neste exemplo caso o pino 1 do PORTA for setado, o pino 3 do PORTB deve ser setado também.
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Rx7 Rx6 Rx5 Rx4 Rx3 Rx2 Rx1 Rx0}
22
23
INTRODUÇÃO:
Os microcontroladores PIC podem trabalhar basicamente com três fontes de clock tendo
cada uma delas características próprias de funcionamento. Os blocos osciladores dividem-se
em osciladores primários, secundários e bloco oscilador interno. Os osciladores primários são aqueles
conectados aos pinos OSC1 e OSC2 que podem ser malhas de circuito RC, bloco oscilador interno, cristais
e ressonadores.
Os osciladores secundários são aqueles que não são conectados aos pinos OSC1 e OSC2.
Estes osciladores podem continuar funcionando mesmo quando o microcontrolador estiver
trabalhando em modo de gerenciamento de energia.
O tipo de oscilador a ser utilizado pode ser programado no registrador de configuração do
dispositivo durante o momento de gravação do chip.
As características de utilização e operação do oscilador interno devem ser configuradas no
registrador OSCCON .
24
Bit 6-4 : IRCF2:IRCF0: (Internal Oscillator Frequency Select Bits) – Bits de seleção de
frequência do oscilador interno.
25
Valor Binário Frequência
1 1 1 8 MHz 1 1 0 4 MHz 1 0 1 2 MHz 1 0 0 1 MHz 0 1 1 500 kHz0 1 0 250 kHz0 0 1 125 kHz0 0 0 31 kHz
26
Bit 1-0 SCS1:SCS0: System Clock Select bits – Bits de seleção do clock do sistema.
1x = Bloco oscilador interno selecionado
01 = Oscilador do Timer 1
00 = Oscilador primário (externo).
CIRCUITO x TABELA DE CONFIGURAÇÃO:
27
TipoOsc
Freq.Cristal
Valores dos Capacitores
C1 C2
LPLow power
32 kHz 33 pF 33 pF
200 kHz 15 pF 15 pF
XTCrystal/
Resonator
1 MHz 33 pF 33 pF
4 MHz 27 pF 27 pF
HSHigh Speed/ Resonator
4 MHz 27 pF 27 pF
8 MHz 22 pF 22 pF
20 MHz 15 pF 15 pFUtilizar pinos OSC1 e OSC2 e configurar na telaconfiguration bits o tipo do oscilador.
28
INTRODUÇÃO:
Para que o microcontrolador execute as ações desejadas, primeiro temos de programá-lo,
indicando como o mesmo deve se comportar em uma determinada situação. Existem algumas linguagens de
programação no qual pode-se programar o microcontrolador, como por exemplo, Assembly, C, entre outras.
Neste capítulo vamos trabalhar com a linguagem C.
MÉTODOS DE PROGRAMAÇÃO:
Para a construção de programas simples, devemos entender algumas funções básicas de
programação em linguagem C. A seguir observamos algumas funções em C.
FUNÇÕES DE CONTROLE EM C:
As declarações ou comandos de controle são uma parte muito importante de uma linguagem de
programação, e a linguagem C dispõe de um excelente conjunto de comandos.
29
CATEGORIAS DE DECLARAÇÕES DE CONTROLE:
Podemos classificar as declarações de controle em duas categorias básicas:
Declarações de teste condicional: São utilizadas para testar determinadas condições/variáveis e
Executar um código para cada caso. A linguagem C dispõe de dois tipos de declarações condicionais: O
comando “if” e o comando “switch”.
Declarações de estrutura de repetição: São utilizadas para provocar a execução de um bloco de
comandos enquanto uma determinada condição for verdadeira. Em C dispomos de três declarações de
repetição, os comandos “for”, “while”, “do-while”.
30
COMANDO IF:
De maneira geral, o comando “if” (se) é utilizado para executar um comando ou bloco de comandos
no caso de uma determinada condição ser avaliada como verdadeira. Opcionalmente, é também possível
executar outro comando ou bloco de comandos no caso da condição ser avaliada como falsa.
Estrutura:
if ( condição)
{
comando;
}
Onde:
If comando condicional;
Condição situação a ser analisada;
{ ; } abre e fecha comando;
Comando ação a ser executada;
31
COMANDO ELSE:
O comando else (senão) é um complemento do comando if. Esta função “encerra” o comando if,
pois indica a última condição a ser analisada.
Estrutura:
if (condição)
{
comando;
}
else
{
comando;
}
Onde:
else comando senão que complementa o comando if.
32
COMANDO SWITCH:
A declaração switch permite a realização de comparações sucessivas como a anterior, de uma
forma mais elegante, clara e eficiente.
Estrutura:
switch (variável)
{
case constante 1:
comando a;
break;
case constante 2:
comando b;
break;
default:
comando c;
}
33
COMANDO FOR:
O laço for é uma das mais comuns estruturas de repetição, sendo a versão C considerada uma
das mais poderosas e flexíveis dentre todas as linguagens de programação.
Estrutura:
for ( inicialização; condição; incremento)
{
comando;
}
Onde:
Inicialização Valor inicial;
Condição situação a ser analisada;
Incremento valor a ser incrementado no valor inicial.
34
COMANDO WHILE:
Neste comando a condição é avaliada, caso seja verdadeira, então o comando ou bloco de
comandos executado e a condição é novamente avaliada, reiniciando o laço. Caso a condição seja falsa, o
comando ou bloco de comandos não é executado e o programa tem sequência a partir da declaração
seguinte ao bloco while.
Estrutura:
while ( condição)
{
comandos;
}
LAÇO INFINITO:
Para criarmos um laço infinito, devemos atribuir o valor de 1 a condição:
while (1)
{
programa
}
35
FUNÇÃO MAIN:
A declaração main( ) especifica o nome de uma função, no caso a função principal ou o corpo
principal do programa. Nesta função as chaves devem ser utilizadas para abrir e fechar a função:
Estrutura:
main ( )
{
programa
}
FUNÇÃO INCLUDE:
O comando include é uma diretiva do compilador. Neste caso está determinado ao compilador
C18. Os arquivos com extensão .h são chamados de arquivos de cabeçalho e são utilizados em C para
definir variáveis, tipos, símbolos, e funções úteis ao programa. Estes arquivos contém as informações
específicas de cada microcontrolador.
Estrutura:
#include <p18f4431.h>
#include<stdlib.h>
36
FUNÇÃO DEFINE:
Com esta função é possível definir um indicador à um pino, tornando mais fácil a compreensão
do código fonte do microcontrolador.
Exemplo:
#define S1 PORTAbits.RA0
#define M1 PORTBbits.RB0
...if(S1==1)
{
M1=1;
}
Neste caso, S1 é o indicador do pino RA0 (sensor) e M1 é o indicador do pino RB0 (motor).
37
CRIANDO SUB-ROTINAS:
Sub-rotinas são pequenos programas que são executados dentro do programa inicial no momento
em que são chamados. Geralmente contém rotinas de configuração de canais de entrada e saída, módulo de
PWM, módulo de encoder, canal analógico, comunicação serial, etc.
Estrutura:
void nome da sub-rotina( )
{
configuração ou comandos;
}
void main( )
{
nome da sub-rotina( );
programa principal
}
38
CRIANDO UM PROGRAMA COMPLETO EM C:
Abaixo observamos um programa completo para ser descarregado no PIC 18F4431:
Problema: Se o pino RA2 for verdadeiro, o pino RB0 deve permanecer em nivel lógico baixo, se o pino RA2
for falso, o pino RB0 deve permanecer em nivel lógico alto:
#include<p18f4431.h>
void config_io()
{
TRISA=0X04;
TRISB=0X00;
ANSEL0=0X00;
}
void main ()
{
OSCCON=0X72;
config_io();
while(1)
{if (PORTAbits. RA2==1)
{PORTBbits.RB0=0;}
else{PORTBbits.RB0=1;}
}}
39
40
INTRODUÇÃO:
Esta função é utilizada para criar atrasos na execução do programa, contabilizados em ciclos
de máquina. Para a trabalhar com esta função, inicialmente deve-se inserir no cabeçalho do programa
o arquivo correspondente que está localizado na pasta “h” do compilador.
Exemplo:
#include<delays.h>
Com este comando, o programa insere este arquivo no projeto de controle.
ESTRUTURA:
Pode-se encontrar algumas possibilidades de utilização da função Delay:
Delay1TCY( ci ); Múltiplos de 1
Delay10TCYx( ci ); Múltiplos de 10
Delay100TCYx( ci ); Múltiplos de 100 ci ciclos de instrução
Delay1KTCYx( ci ); Múltiplos de 1000
Delay10KTCYx( ci ); Múltiplos de 10000
41
CÁLCULO DO TEMPO DE ATRASO:
Para determinar o tempo de atraso do programa, deve-se adotar a seguinte equação:
Exemplo:
Para criar um atraso de 1 segundo, têm-se:
if(PORTAbits.RA0==1)
{
Delay10KTCYx(200); // (2000000 /(múltiplos -> 10k)) = 200
PORTBbits.RB0=1;
}
Nesta aplicação, se o pino RA0 for acionado; o pino RB0 acionará após 1 segundo;
42
EXEMPLO:
Após 800mseg do acionamento do pino RA0, o pino RB0 deverá acionar:
#include<p18f4431.h>#include<delays.h>
void config_io(){
TRISA=0X01;ANSEL0=0X00;
}
void main(){
OSCCON=0X72;config_io();
while(1){
if(PORTAbits.RA0==1){
Delay10KTCYx(160);PORTB=0X01;
}else
{PORTB=0X00;
}}
}
43
44
INTRODUÇÃO:
Para criar programas em C para microcontroladores pode-se utilizar o software MPLAB
licenciado pela própria Microchip. Indica-se a utilização de versões acima da 8.30 (ideal 8.83). Para efetuar
a transformação do arquivo em C para Hexadecimal, pode-se utilizar o compilador C18, v3.40 ou superior.
Estes softwares devem trabalhar em conjunto para realizarmos os projetos de controle para
qualquer família de microcontroladores, pois o método de programação é o mesmo, apresentando apenas
diferenças nas configurações no software.
Para realizar as simulações dos programas, pode-se utilizar o software Proteus, da Labcenter.
45
CRIANDO UM PROJETO NO MPLAB:
Para criar um projeto, deve-se abrir a opção “Project” item “Project Wizard”
Clicando da opção “Avançar” passamos para a segunda tela.
46
Na tela a seguir, pode-se selecionar o PIC para o projeto, em seguida opção “Avançar”.
47
Nesta tela, pode-se selecionar o compilador à ser utilizado no projeto, neste caso, “MPLAB C18
Compiler” ,em seguida opção “Avançar”.
48
Aqui deve-se selecionar onde será salvo o projeto de controle. Antes de iniciar o project wizard
é recomendável criar uma pasta para armazenar os arquivos de projeto. No botão “BROWSE” pode-se
escolher a pasta no qual será salvo o projeto.
IMPORTANTE: Todos os arquivos deverão estar organizados na mesma pasta de projeto.
OBS: A tela à seguir pode ser desconsiderada.
49
Por fim, tem-se a tela à seguir com a as informações de projeto criadas.
Clicando em “CONCLUIR” encerra-se o gerenciador de projeto.
50
Ao terminar o Project Wizard, deve-se abrir um novo
arquivo, salvá-lo com a extensão “.c” e inseri-lo na pasta SOURCE
FILES, para isso, clicar com botão direito do mouse nesta pasta,
opção “ADD FILE” e buscar o arquivo em C salvo na pasta do
projeto.
Se houver necessidade outros arquivos de bibliotecas
poderão ser inseridos na árvore de projeto.
Após terminado o projeto, deve-se compilar o projeto
para criar o arquivo “.hex”
51
AJUSTANDO A TELA “CONFIGURATION BITS”:
Chega-se a esta tela pelo caminho: “configure” – “configuration bits”. A opção “Configuration
bits set in code” deverá ser desabilitada para modificarmos as opções vistas acima.
52
BARRA DE FERRAMENTAS DO MPLAB:
Novo Arquivo de ProgramaNovo Projeto
Compilar ProgramaAbrir ArquivoSalvar Arquivo
Salvar Projeto
Abrir Projeto
Quando o programa é compilado (Build All) um arquivo “.hex” é gerado, e é este arquivo que é
utilizado para efetuar a simulação no Proteus, ou quando deseja-se gravar o microcontrolador.
53
GRAVAÇÃO DO PIC 18F4431:
Para selecionar o Kit de gravação deve-se iniciar a função “Programmer” na barra de menus
do MPLAB, e em seguida opção “Select Programmer”, e assim escolher o kit à ser utilizado.
Nesta tela é possível efetuar a escolha do kit de
gravação suportado pelo MPLAB.
Deve-se atentar que cada gravador possui suas
peculiaridades no funcionamento e gravação. Após selecionado
o gravador, deve-se compilar o arquivo novamente e inseri-lo no
microcontrolador.
54
FERRAMENTAS DE GRAVAÇÃO:
Para gravar o microcontrolador PIC, deve-se utilizar as ferramentas específicas de gravação
de cada kit. Na grande maioria dos casos segue:
Transfere arquivo.hex para o PIC Apaga conteúdo do PIC
Lê programa do PIC
Verifica se o programafoi gravado corretamente
Verifica se há um programano PIC
Verifica MemóriaEEPROM
Habilita MCLR
Desabilita MCLR
55
56
INTRODUÇÃO:
Com o software proteus da labcenter é possível simular os circuitos eletrônicos a base de
microcontrolador, sendo esta simulação mais próxima possóvel da realidade. Nesta apostila utilizaremos a
versão 8.0
57
CRIANDO UM PROJETO:
Com a versão 8.0 é possível criarmos um projeto de desenvolvimento eletrônico contendo
Sketch de montagem, ambiente para desenvolvimento PCB e firmware. Utilizaremos apenas o Sketch.
58
Clicar em “New Project” para iniciar um novo projeto.
CRIANDO UM PROJETO:
59
Definir o nome do projeto e o local onde o mesmo será salvo.
CRIANDO UM PROJETO:
60
No próximo passo deve-se definir o tamanho da área de trabalho.
CRIANDO UM PROJETO:61
As opções para criação de Placa e firmware podem ser desconsideradas, ao término
aparecerá a tela “Summary”.
ÁREA DE TRABALHO62
Barra de ferramentas do software
Ferramentas de simulação
Selection Mode: Seleciona componentes Grafic Mode: Ferramenta de gráficos 2D Grafics Closed Path Mode: Criar formas
Component Mode: Acesso à biblioteca Active Popup Mode: Ativar Janelas de mens. 2D Grafics Text Mode: Criar Textos
Junction Dot Mode: Criar Junções Generator Mode: Fontes Geradoras 2D Grafics Symbols Mode: Criar Simbolos
Wire Label Mode: Etiqueta de Linha Probe Mode: Pontas de Prova 2D Grafics Marker Mode: Criar Marcações
Text Script Mode: Editar textos de comando Virtual Instruments: Instrum. de Medição
Buses Mode: Criar sobreposição de linhas 2D Grafics Line Mode: Criar linha 2D
Subcircuit Mode: Criar circuitos secundários 2D Grafics Box Mode: Criar caixa 2D
Terminals Mode: Alimentação padrão (5V , 0V) 2D Grafics Cicle Mode: Criar Circulos 2D
Device Pins Mode: Criar pinos para componentes 2D Grafics Arc Mode: Criar arco 2D
BARRA DE FERRAMENTAS63
BIBLIOTECA64
Para acessar a biblioteca, é necessário clicar na opção “Component
Mode” e em seguida na letra “P” na janela “DEVICE”
Ferramenta “Component Mode”
BIBLIOTECA65
Na janela “Keywords” é possível encontrar os componentes digitando o nome, ou navegando
pelas janelas “Category” , “Sub-category” , “Manufacture”.
MONTAGEM DO CIRCUITO66
Com os componentes inseridos na barra de ferramentas, é possivel colocá-los na área de
trabalho para iniciar a montagem do circuito. Para mudar os valores dos componentes, deve-se dar
duplo click em cada componente, ou clicar com o botão direito do mouse e acionar a opção “Edit
Properties”.
SIMULANDO PROGRAMAS NO PROTEUS67
Para Simular o programa, deve-se dar duplo click no PIC e na opção “Program File” inserir o
arquivo “.hex” gerado na pasta de projeto do MPLAB. Configurar o Oscilador na opção “Processor Clock
Frequency” para a frequência desejada.
SIMULANDO PROGRAMAS NO PROTEUS68
Antes de iniciar a simulação deve-se configurar
dois parâmetros: o primeiro é desabilitar as mensagens de
erro para melhorar a velocidade da simulação. Isso é feito
na opção “Debug” – “ Configure Diagnostics”
SIMULANDO PROGRAMAS NO PROTEUS69
Na opção “ Log From” zerar as duas caixas.
SIMULANDO PROGRAMAS NO PROTEUS70
Na Ferramenta “System” acionar a opção “Set
Animation Options” para definir alguns parâmetros de
melhoria na qualidade da execução da simulação.
SIMULANDO PROGRAMAS NO PROTEUS71
Na opção “Set Animation options” pode-se aumentar a taxa de frames por secundo
“Frames per Second:”, aumento a velocidade de simulação (máximo de 50). Alem desta
configuração pode-se habilitar outro parâmetro na opção “Spice Options”.
SIMULANDO PROGRAMAS NO PROTEUS72
Após aberta a opção “SPICE Options”,
mudar o valor do campo “Default Settings” para
“Settings for Better Convergence” , clicar em
“Load” e em seguida em “OK”.
SIMULANDO PROGRAMAS NO PROTEUS
73
Para efetuar a simulação no proteus deve-se utilizar a barra de ferramentas de
simulação, localizada no canto inferior esquerdo da tela com as seguintes opções:
Play: Iniciar a simulação continua
Step Play: Iniciar simulação passo a passo
Pause: Pausar simulação
Stop: Parar simulação
SIMULANDO PROGRAMAS NO PROTEUS74
Para ver o componente simulando deve-se escolher os elementos na biblioteca com a
opção “Library” definida com “ACTIVE”. Isso é válido para qualquer componente.
LISTA DE COMPONENTES75
Segue exemplos de alguns componentes úteis e suas bibliotecas:
Pic18f4431
Res – resistor padrão
Cap – capacitor padrão
Optocoupler NPN – optoacoplador padrão
4n25 – optoacoplador
IRF540N – MOSFET
BC548 – Transistor
Button – botão pulsante
SW- SPDT – chave de 3 terminais
SW-SPST – chave de 2 terminais
SW-ROT – chave giratória
Alternator – fonte alternada
Lamp – lâmpada
Motor – motor
Motor-PWMservo – sevomotor
Relay – relé
Lm016 – Display LCD 2X16
Pot-HG – potenciômetro
741 – amplificador operacional
Lm358 – amplificador de instrumentação
Buzzer – campainha
L298 – ponte H integrada
ULN2803 – Drive para motor de passo
Battery – bateria (tensão regulável)
1N4007 – diodo retificador
76
INTRODUÇÃO:
Os temporizadores da família PIC são contadores de pulsos de clock, que podem ser ajustados
para acionar as saídas ou mesmo efetuar algum processo em um determinado tempo.
O PIC 18F4431 possui 4 módulos de timer, que podem ser configurados de maneira singular
para cada aplicação. Pode-se utilizar os registradores internos diretamente para configurar os módulos, ou
pode-se utilizar a biblioteca “timers.h” inclusa na pasta “h” do compilador C18 com algumas funções
especificas de configuração.
O conteúdo desta apostila está baseado na utilização da biblioteca especifica de timer.
77
REGISTRADOR TMRx:
Os blocos de timer do PIC utilizam o registrador TMRx para armazenar o valor da contagem de
tempo. Este registrador virtual é constituído de 2 registradores físicos TMRxL e TMRxH.
TMRxH TMRxL
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 09 Bit 08 Bit 07 Bit 06 Bit 05 Bit 04 Bit 03 Bit 02 Bit 01 Bit 00
Blocos de Timer de 16 ou 8 bits:
TMR0H : TMR0L Timer 0; (16 ou 8 bits)
TMR1H : TMR1L Timer 1; (16 ou 8 bits)
TMR5H : TMR5L Timer 5; (16 bits)
78
REGISTRADOR TMRx:
O bloco de timer 2 do PIC utiliza o registrador TMR2 para armazenar o valor da contagem de
tempo. Este registrador é físico, diferentemente dos outros módulos.
TMR2
Bit 07 Bit 06 Bit 05 Bit 04 Bit 03 Bit 02 Bit 01 Bit 00
Blocos de Timer 8 bits:
TMR2 Timer 2;
79
FUNÇÕES DA BIBLIOTECA “timers.h” :
As funções do módulo de timer à seguir estão baseadas na biblioteca “timers.h” e podem ser
utilizadas em qualquer microcontrolador da família PIC 18F, desde que possua o módulo de timer.
Função CloseTimerx( );
Esta função encerra os blocos de timer.
Exemplo:
CloseTimer0( );
CloseTimer1( );
CloseTimer2( );
CloseTimer5( );
Quando for necessário fechar o módulo de timer, utiliza-se este comando.
80
Função ReadTimerx( );
Esta função efetua a leitura do registrador TMRx. Este valor deverá ser atribuído a uma
variável do tipo inteira.
ReadTimer0( );
ReadTimer1( );
ReadTimer2( );
ReadTimer5( );
Exemplo:
unsigned int tempo;
tempo=ReadTimerx( );
A variável tempo poderá ser utilizada no programa para análises a serem realizadas.
81
Função WriteTimerx( );
Esta função efetua a escrita no registrador TMRx.
Exemplo:
WriteTimer0( 0 );
WriteTimer1( 0 );
WriteTimer2( 0 );
WriteTimer5( 0 );
Neste caso os registradores TMR0L e TMR0H são resetados.
82
Função OpenTimerx( );
Esta função inicia os blocos de timer.
OpenTimer0( configuração );
OpenTimer1( configuração );
OpenTimer2( configuração );
OpenTimer5( configuração );
Exemplo:
Observar parâmetros na tabela do timer 0 para substituição do termo “configuração”.
OpenTimer0(TIMER_INT_OFF
&T0_16BIT
&T0_SOURCE_INT
&T0_PS_1_128);
83
Função Constante Descrição
Interrupção de TIMER 0 TIMER_INT_ONTIMER_INT_OFF
Habilita.Desabilita.
Tamanho do Contador T0_8BITT0_16BIT
8 bits.16 bits.
Fonte de Clock T0_SOURCE_EXTT0_SOURCE_INT
Fonte de clock externa.Fonte de clock interna.
Borda de Incremento .Somente para fonte de clock externa
T0_EDGE_FALLT0_EDGE_RISE
Borda de subida.Borda de descida.
Prescaler
T0_PS_1_1T0_PS_1_2T0_PS_1_4T0_PS_1_8T0_PS_1_16T0_PS_1_32T0_PS_1_64T0_PS_1_128T0_PS_1_256
1:1 – Prescaler1:2 - Prescaler1:4 - Prescaler1:8 - Prescaler1:16 - Prescaler1:32 - Prescaler1:64 - Prescaler1:128 - Prescaler1:256 - Prescaler
Tabela de configuração do Timer 0 (16 ou 8 bits):84
Função Constante Descrição
Interrupção de TIMER 1 TIMER_INT_ONTIMER_INT_OFF
Habilita.Desabilita.
Tamanho do Contador T1_8BIT_RWT1_16BIT_RW
8 bits.16 bits.
Fonte de Clock T1_SOURCE_EXTT1_SOURCE_INT
Fonte de clock externa.Fonte de clock interna.
Circuito Oscilador T1_OSC1EN_ONT1_OSC1EN_OFF
Habilita.Desabilita.
Sincronismo da entrada de clockexterna
T1_SYNC_EXT_ONT1_SYNC_EXT_OFF
Habilita.Desabilita.
Prescaler
T1_PS_1_1T1_PS_1_2T1_PS_1_4T1_PS_1_8
1:1 – Prescaler1:2 - Prescaler1:4 - Prescaler1:8 - Prescaler
Tabela de configuração do Timer 1 (16 ou 8 bits):
85
Função Constante Descrição
Interrupção de TIMER 2 TIMER_INT_ONTIMER_INT_OFF
Habilita.Desabilita.
Prescaler
T2_PS_1_1T2_PS_1_4T2_PS_1_16
1:1 – Prescaler1:4 - Prescaler1:16 – Prescaler
Postscaler
T2_POST_1_1T2_POST_1_2T2_POST_1_3T2_POST_1_4...
T2_POST_1_15T2_POST_1_16
1:1 – Postscaler1:2 – Postscaler1:3– Postscaler1:4– Postscaler...
1:15 – Postscaler1:16– Postscaler
Tabela de configuração do Timer 2 (8 bits):86
Função Constante Descrição
Modo Sleep T5_SLP_EN T5_SLP_DIS
HabilitaDesabilita
Eventos Especiais T5_SP_EVNT_RENT5_SP_EVNT_RDIS
HabilitaDesabilita
Define modo do contador T5_MD_SNGL_SHOT T5_MD_CONT_COUNT
Modo Gatilho únicoModo Contínuo
Fonte de Clock T5_CLK_EXTRNT5_CLK_INT
Configura fonte de clock externaConfigura fonte de clock interna
Sincronismo da entrada de clockexterna T5_EX_CLK_SYNC
T5_EX_CLK_NOSYNCModo SíncronoModo Assíncrono
Prescaler
T5_PS_1_1T5_PS_1_2T5_PS_1_4T5_PS_1_8
1:1 – Prescaler1:2 - Prescaler1:4 - Prescaler1:8 – Prescaler
Tabela de configuração do Timer 5 (16 bits):87
CÁLCULO DO TEMPO DOS MÓDULOS DE TIMER:
Para definir o tempo de estouro do registrador TMRx, deve-se utilizar a equação a seguir:
Onde:
t: Tempo requerido;
Fosc : Frequência do oscilador;
PE : Prescaler.
88
Exemplo 1:
Acionar o pino RB0 após 1 segundo da energização do PIC:
#include<p18f4431.h>
#include<timers.h>
unsigned int timer;
void main()
{
OSCCON=0X72;
TRISB=0X00;
PORTB=0X00;
OpenTimer0(TIMER_INT_OFF
&T0_16BIT
&T0_SOURCE_INT
&T0_PS_1_128);
while(1)
{
timer=ReadTimer0( );
if(timer==15625) // TEMPO DE 1 SEGUNDO
{
PORTB=0X01;
WriteTimer0(0);
}
}
}
89
Exemplo 2:
Acionar o pino RB0 após 10 segundo da energização do PIC:
#include<p18f4431.h>#include<timers.h>unsigned int timer;int real_timer;
void main() {
OSCCON=0X72;TRISB=0X00;PORTB=0X00;OpenTimer0(TIMER_INT_OFF
&T0_16BIT&T0_SOURCE_INT&T0_PS_1_128);
while(1){
timer=ReadTimer0( );
if(timer==15625){
real_timer++;WriteTimer0(0);
}
if(real_timer==10){
PORTB=0X01;}
}}
90
ROSA. Fabiano Camargo. Apostila de Microcontroladores II. Universidade de Mogi das Cruzes. 2008.
SANCHES. João. Apostila de Microcontroladores I. Universidade de Mogi das Cruzes. 2007.
MIYADAIRA, Alberto Noboru. Microcontroladores PIC18: aprenda e programe em linguagem C. Ed Érica. 3 ed. São Paulo. 2012.
Microchip C18 Libraries. MICROCHIP.
DATASHEET. MICROCHIP PIC18F4431.
91
top related