Вы находитесь на странице: 1из 179

Eletrnica Aplicada e Microcontroladores Apostila de Laboratrio

Verso 2.4 1 semestre 2010


Revisada em 23/02/2010

Prof. Marcelo do C.C. Gaiotto.

Aluno: ________________________________________________ Turno: __________ Turma: ______

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

EXPERINCIA 1 Circuitos de Proteo de entradas e Sadas Digitais


Objetivos:
Utilizar os conceitos de Eletricidade Bsica, Eletrnica Analgica e Eletrnica Digital na construo e teste de circuito; Calcular circuitos com resistores, diodos, transistores e acopladores ptico;

REGRA de APRESENTAO/DEFESA: Os alunos devem desenvolver os esquemas eltricos caso solicitados, clculos e funcionamento para que seja validada a defesa. Cpias de quaisquer itens implicaro em nota 0 para a experincia; Tempo de Execuo: 8 Aulas Incio: ____/___/_____ - Trmino: ____/___/_____

Desenvolvimento
Equipamentos e materiais necessrios: 1 Protoboard; 1 Multmetro; 1 Conjunto de chaves digitais; 1 Fonte de alimentao; 1 Chave tipo boto micro tctil; 1 Rel 12V/10A 2 Led; 2 Diodo retificador 1N4007; 2 Diodo de sinal 1N4148; 2 Diodo Zener 4V7/500mW 2 Transistor BC548 ou BC337 1 Acoplador ptico 4N25 1 LED Emissor IR 1 LED Receptor IR Resistores de valores variados; Fios para montagens;

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Projeto 1 Entradas no isoladas com Circuito Divisor Resistivo


Aplique os conceitos da teoria e dimensione o circuito para que na sada Vout apresente uma tenso de 5V, para uma entrada de 18V. Pede-se: Medir as correntes e tenses dos resistores; Variar a tenso de entrada Vin: 14V 30V (em passos de 0,5V) e verificar o comportamento da tenso de sada; Anote o comportamento do circuito

Divisor Resistivo.

Clculos do Projeto 1

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Projeto 2 Entradas no isoladas Proteo com diodo de sinal


Aplique os conceitos da teoria e dimensione o circuito para uma Tenso Vadp de 5V, a partir dos dados: Utilize um diodo de sinal 1N4148; Com uma tenso Vin de 24V, verificar a tenso Vout; Com a fonte de tenso conectada a entrada Vin, variar o ajuste de tenso de 1 30V (passos de 0,5V), verificando a tenso de sada Vout; Desconecte a fonte de alimentao da entrada Vin. Conecte agora a entrada Vin em curtocircuito com o gnd, para verificar a tenso Vout; Anote o comportamento do circuito

Circuito com diodo de sinal.

Clculos do Projeto 2

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Projeto 3 Entradas no isoladas Proteo com diodo zener


Aplique os conceitos da teoria e dimensione o circuito a partir dos dados a seguir: Utilizando um Zener de 4V7/500mW ou de 5V1/500mW; Aplicar uma tenso Vin de 30V, verificar a tenso Vout; Com a fonte de tenso conectada a entrada Vin, variar o ajuste de tenso de 1 30V (passos de 0,5V), verificando a tenso de sada Vout; Desconecte a fonte de alimentao da entrada Vin. Conecte agora a entrada Vin em curtocircuito com o gnd, para verificar a tenso Vout; Anote o comportamento do circuito

Circuito com entrada protegida por diodo zener.

Clculos do Projeto 3

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Projeto 4 Acopladores pticos - Desenvolvimento


Aplique os conceitos da teoria sobre acopladores pticos e dimensione o circuito a partir dos dados a seguir: Utilizar um Led emissor de infravermelho e um Foto-transistor e construa um acoplador ptico; Calcular os resistores R1 e R2; Anote o comportamento do circuito.

Clculos do Projeto 4

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Projeto 5 Entradas isoladas Sensor NPN e acoplamento tico com sada e resistor de pull-up
Aplique os conceitos da teoria e dimensione os circuitos a partir dos dados a seguir:

Pinos do acoplador ptico 4N25 Simular um sensor NPN utilizando uma chave ou boto; Calcular os resistores; Anote o comportamento do circuito

Sensor NPN e acoplamento ptico com sada e resistor de pull up.

Clculos do Projeto 5

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Projeto 6 Entradas isoladas Sensor PNP e acoplamento ptico com sada e resistor de pull-up
Simular um sensor PNP utilizando uma chave ou boto; Calcular os resistores; Anote o comportamento do circuito

Sensor PNP e acoplamento ptico com sada e resistor de pull up.

Clculos do Projeto 6

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Projeto 7 Entradas isoladas Sensor PNP e acoplamento ptico com sada e resistor de pull-down
Simular um sensor PNP utilizando uma chave ou boto; Calcular os resistores; Anote o comportamento do circuito

Sensor PNP e acoplador ptico com sada e resistor de pull down.

Clculos do Projeto 7

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Projeto 8 Entradas isoladas Sensor NPN e acoplamento ptico com sada e resistor de pull-down
Simular um sensor NPN utilizando uma chave ou boto; Calcular os resistores; Anote o comportamento do circuito

Sensor NPN e acoplador ptico com sada e resistor de pull down.

Clculos do Projeto 8

10

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Projeto 9 Sada Digital no isolada Sem Proteo


Aplique os conceitos da teoria e dimensione o circuito a partir dos dados a seguir: Calcular os resistores de polarizao; Utilize uma tenso Vcc=12V; Vbe=0,7V; um rel de 12V; A simulao do circuito lgico ser atravs de uma porta lgica inversora do tipo TTL 74LS04; Como sinal de acionamento da porta lgica inversora, utilizar um boto em configurao pullup; **** lembre que a famlia TTL opera com tenso de 5V ******* Anote o comportamento do circuito.

Sada no isolada e sem proteo.

Clculos do Projeto 9

11

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Projeto 10 Sada Digital no isolada Proteo com Diodo de Sinal


Aplique os conceitos da teoria e dimensione o circuito a partir dos dados a seguir: Utilizar o diodo de sinal 1N4148; Calcular os resistores de polarizao; Utilize uma tenso Vcc=12V, Vbe=0,7V, um rel de 12V; A simulao do circuito lgico ser atravs de uma porta lgica inversora do tipo TTL 74LS04; Como sinal de acionamento da porta lgica inversora, utilizar um boto em configurao pullup; **** lembre que a famlia TTL opera com tenso de 5V ******* Anote o comportamento do circuito.

Sada no isolada protegida por diodo de sinal.

Clculos do Projeto 10

12

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Projeto 11 Sadas isoladas Com acopladores pticos

Pinos do acoplador ptico 4N25 Aplique os conceitos da teoria e dimensione o circuito a partir dos dados a seguir: Utilizar um diodo 1N4148; Calcular os resistores de polarizao; Utilize uma tenso Vcc=12V, Vbe=0,7V, um rel de 12V no lugar de L1; A simulao do circuito lgico ser atravs de uma porta lgica inversora do tipo TTL 74LS04; Como sinal de acionamento da porta lgica inversora, utilizar um boto em configurao pullup; **** lembre que a famlia TTL opera com tenso de 5V ******* Medir as tenses indicadas, Vbe, VR2, VCEsat, VCE. Anote o comportamento do circuito.

Circuito com opto acoplador com acionamento da carga com nvel lgico 0.

13

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Clculos do Projeto 11

14

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Projeto 12 Sadas isoladas Com acopladores pticos


Aplique os conceitos da teoria e dimensione o circuito a partir dos dados a seguir: Utilizar um diodo 1N4148; Calcular os resistores de polarizao; Utilize uma tenso Vcc=12V, Vbe=0,7V, um rel de 12V no lugar de L1; A simulao do circuito lgico ser atravs de uma porta lgica inversora do tipo TTL 74LS04; **** lembre que a famlia TTL opera com tenso de 5V ******* Medir as tenses indicadas, Vbe, VR2, VCEsat, VCE. Anote o comportamento do circuito.

Circuito com opto acoplador com acionamento da carga com nvel lgico 1.

Clculos do Projeto 12

15

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Projeto 13 Sadas isoladas Com acopladores pticos


Aplique os conceitos da teoria e dimensione o circuito a partir dos dados a seguir: Calcular o resistor de polarizao; A simulao do circuito lgico ser atravs de uma porta lgica inversora do tipo TTL 74LS04; **** lembre que a famlia TTL opera com tenso de 5V ******* Medir as tenses indicadas, VCEopto. Anote o comportamento do circuito.

Circuito com opto acoplador com acionamento direto da carga

Clculos do Projeto 13

16

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

EXPERINCIA 2 Display LCD 2 linhas x 16 colunas e Display LCD 4 linhas x 20 colunas


Objetivos:
Conhecer o procedimento de configurao e utilizao do mdulo LCD; Realizar a inicializao manual do LCD atravs de conjunto de chaves;

Tempo de Execuo: 2 Aulas Incio: ____/___/_____ - Trmino: ____/___/_____

Desenvolvimento
Informaes necessrias: O display de cristal lquido alfanumrico possui um controlador interno que permite realizar vrias funes, como por exemplo, ajustar a linha que se pretende escrever, determinar em qual coluna ser escrito o caractere, ou at mesmo a construo de caracteres especiais em sua memria interna (CGRAM). Para habilitar/configurar este mdulo devem ser realizados diversos procedimentos de inicializao, que para melhor entendimento deve ser feito em um primeiro estudo de forma manual, onde as seqncias de comandos e de dados so fornecidas atravs de um conjunto de chaves e botes. Este display um dos modelos mais utilizados, e de simples acesso, seja em termos financeiros quanto em termos tcnicos. A faixa de tenso de operao para este modelo de 4,75V 5,25V. Para ajustar o contraste utiliza-se um potencimetro de 5K a 10K para variar a tenso do pino Vo do display. Normalmente opera com um barramento de dados de 8 bits paralelo (D0 D7), mas pode operar, quando configurado, com apenas 4 bits de dados (D4 D7) o que diminui a quantidade de conexes a serem utilizadas do microcontrolador. Quando em funcionamento podem ser escritas informaes sejam comandos ou dados, mas tambm permite que algumas destas informaes ou flags internos de funcionamento sejam lidos. Para controlar o modo de operao do registrador interno utilizado o sinal R/W, ou seja, READY ou WRITE (leitura ou escrita). Se o sinal R/W estiver em nvel lgico 0o registrador do display estar apenas em modo de escrita, ou seja, somente so enviados dados para o display. Caso o R/W estiver em nvel lgico 1, o display estar habilitado a enviar para seus pinos de dados informaes dos seus registradores internos, ou seja, o display passa a colocar para fora informaes atravs do barramento de dados. Em nossas experincias, somente sero realizadas escritas no display e sendo assim o pino referente ao sinal R/W ser conectado diretamente o GND. O sinal RS (REGISTER SELECT) define o modo de operao do display. Se o RS estiver em nvel lgico 0, a informao colocada nos pinos de dados sero vistas pelo controlador do display como COMANDOS. Colocando o pino RS em nvel lgico 1, as informaes que forem dispostas nos pinos de entrada de dados sero interpretadas como DADOS (caracteres em ASCII). J o sinal E (ENABLE) possui a funo de habilitar os registradores internos do controlador do display a capturar a informao presente nos pinos de dados. A captura sempre ocorrer quando um pulso de 0 para 1, com durao de 15s 20s pelo menos, e voltando novamente para 0 for realizado neste pino. Ento, o procedimento de inicializao e para escrita de dados deve sempre seguir esta ordem: 1. 2. 3. 4. Coloca-se a informao no barramento de dados; Define se esta informao COMANDO (RS = 0) ou DADO (RS = 1) Aguarda alguns mili segundos (20 40ms pelo menos); Aciona o sinal E com um pulso, como descrito anteriormente.

17

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto A tabela 2.1 apresenta diversas informaes referentes aos comandos, instrues e tempos para configurao/utilizao do display. Tabela 2.1. Informaes referentes aos comandos, instrues e tempos para configurao/utilizao do display.

Ao ser utilizando um microcontrolador, o procedimento torna-se basicamente o mesmo, diferindo apenas que a seqncia binria a ser fornecida ao display assim como os sinais de controle sero agora providos pelo microcontrolador.

18

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Figura 2.1. Texto de exemplo no display de LCD 16x2.

Figura 2.2. Endereo dos caracteres e das linhas no display de LCD 16x2.

Figura 2.3. Endereo dos caracteres e das linhas no display de LCD 20x4. A seguir so apresentadas as seqncias dos os comandos e dos sinais de controle, assim como os tempos de atuao de cada um para realizao da inicializao. 1. Ao ligar a alimentao do circuito com o display, aguardar de 15 20 ms; 2. Enviar o comando 0x30 para o display duas a trs vezes, com intervalo mnimo de 10ms; 19

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto 3. Definir o numero de vias de comunicao, numero de linhas e a matriz (8 vias, duas linhas e matriz 7x5) com o comando 0x38; 4. Limpar o display, e posicionar o cursor para a primeira posio, primeira linha e primeira coluna, com o comando 0x01; 5. Definir o modo de funcionamento, deslocamento do cursor para a direita com o comando 0x0C; Com este procedimento o display dever estar inicializado, e sendo assim, poder receber os caracteres das mensagens. Aps realizada a inicializao, o aluno deve escrever na primeira e na segunda linha do display o texto como apresentado na figura 2.1.

Figura 2.3. Circuito eltrico para o exerccio com Display de cristal lquido com controle por chaves.

20

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto Tabela 2.2. Tabela ASCII. Livro Microcontroladores PIC Programao em C Fbio Pereira pg. 329

21

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

EXPERINCIA 3 Programao em C Funes Lgicas


Objetivos:
Conhecer os softwares utilizados para efetuar as prticas; Aplicar os conhecimentos de fluxogramas;

REGRA de APRESENTAO/DEFESA: Os alunos devem desenvolver os diagramas em bloco, esquemas eltricos (projetos de hardware), o fluxograma, a programao, a simulao do programa no ambiente MPLAB IDE e o funcionamento para que seja validada a defesa. Cpias de quaisquer itens implicaro em nota 0 para a experincia. Tempo de Execuo: 8 Aulas Incio: ____/___/_____ - Trmino: ____/___/_____

Desenvolvimento
Equipamentos e materiais necessrios: 1 protoboard; 1 conjunto de chaves digitais; 1 fonte de alimentao de 5V; 1 microcontrolador PIC 16F877A; 4 Leds; 4 Resistores de 330; 1 Resistores de 10K; 1 Cristal de 4MHz Fios para montagens; 1 gravador para microcontrolador PIC (ICD2BR do laboratrio).

22

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Resumo bsico de funes do Compilador C da CCS para PIC


* - Ler um pino do microcontrolador
Sintaxe: Exemplo: boolean Sensor; // declarao prvia da varivel que neste caso de 1 bit Sensor =

input(pino)

input(pin_b0);

// leitura do pino rb0 do microcontrolador

obs: as mesmas dicas de se criar apelidos (#define) para os pinos so vlidas aqui
Exemplo: #define SensorA pin_b0 // definio prvia do pino rb0 como sendo SensorA boolean FimCurso_A; // declarao prvia da varivel que neste caso de 1 bit FimCurso_A =

input(SensorA);

// leitura do pino rb0 do microcontrolador

* - Ler um PORT inteiro do microcontrolador


X a identificao do PORT.... A, B, C, lembrando que Sintaxe: alguns dos microcontroladores no possuem os PORTS D, E, por isso verifique no datasheet. Exemplo: int Chaves; // declarao prvia da varivel que neste caso de 8 bits Chaves =

input_X()

input_D();

// leitura do PORTD inteiro do microcontrolador

* - Colocar um PINO do microcontrolador em nvel Alto - 1 HIGH


Sintaxe:

output_high(pino)

obs: as mesmas dicas de se criar apelidos (#define) para os pinos so vlidas aqui Exemplo:

output_high(pin_b7);
#define Buzzer pin_b7

// coloca o pino especificado em alto 1

Exemplo utilizando um apelido comando #define:

output_high(Buzzer);

// coloca o pino especificado em alto 1

23

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

* - Colocar um PINO do microcontrolador em nvel baixo - 0 LOW


Sintaxe:

output_low(pino)

obs: as mesmas dicas de se criar apelidos (#define) para os pinos so vlidas aqui Exemplo:

output_low(pin_b7);
#define Buzzer pin_b7

// coloca o pino especificado em alto 0

Exemplo utilizando um apelido comando #define:

output_low(Buzzer);

// coloca o pino especificado em baixo 0

* - Escreve um PORT inteiro do microcontrolador


X a identificao do PORT.... A, B, C, lembrando que Sintaxe: alguns dos microcontroladores no possuem os PORTS D, E, por isso verifique no datasheet. Exemplo: int Atuadores; // declarao prvia da varivel que neste caso de 8 bits

output_X()

output_D(Atuadores); // Escreve o contedo da varivel no PORTD


// do microcontrolador

Constantes Binrias, Octais e Hexadecimais


99 decimal 099 octal 0x99 hexadecimal 0b10011001 - binria

Operadores Aritmticos
+ Adio Subtrao * Multiplicao / Diviso % Resto da Diviso ++ Incremento -- Decremento

Operadores Lgicos Relacionais


= Atribuio > Maior < Menor == Igual != Diferente 24

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Operadores Lgicos e Booleanos


&& - AND operao AND entre variveis || - OR operao OR entre variveis ! NOT negao ou inverso

Operadores Lgicos Bit a Bit


& - AND | - OR ^ - XOR ~ - NOT

Operadores de deslocamento
>> - Deslocamento a direita << - Deslocamento a esquerda

Operadores de Memria Ponteiros


& - endereo do operando * - Contedo do endereo apontado pelo operando

Tipos de dados, Tamanhos em bits e intervalo de valores do compilador CCS

1) Utilizando os conceitos de eletrnica digital desenvolver um programa em linguagem C para microcontrolador PIC que implemente as funes lgicas: AND OR NOT XOR O microcontrolador que dever ser utilizado o PIC16F877A, e o hardware deve ser desenvolvido pelo aluno seguindo as seguintes especificaes: Alimentao de 5V; Cristal de 4MHz; Boto de reset em configurao pull-up pino MCLR/; Chaves do conjunto de chaves ligadas ao PORT B do microcontrolador, seguindo a seguinte distribuio: AND RB0 e RB1 25

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto OR RB2 e RB3 NOT RB4 XOR RB6 e RB7 Para apresentar as respostas devem utilizar Leds e resistores sendo apresentadas no PORT D, seguindo a seguinte distribuio: AND RD0 OR RD2 NOT RD4 XOR RD6 Desenvolver o diagrama em Blocos, o fluxograma do programa e a simulao do programa no ambiente MPLAB IDE. 2) Utilizando os conceitos de eletrnica digital desenvolver um programa em linguagem C para microcontrolador PIC que implemente a expresso lgica resultante do circuito a seguir:

O microcontrolador que dever ser utilizado o PIC16F877A, e o hardware deve ser desenvolvido pelo aluno seguindo as seguintes especificaes: Alimentao de 5V; Cristal de 4MHz; Boto de reset em configurao pull-up; Chaves do conjunto de chaves ligadas aos PORTs do microcontrolador, seguindo a seguinte distribuio para os sinais lgicos: A RA0 B RB0 C RC0 Os probes de entrada devero ser conectados aos pinos: A RB5 B RB6 C RB7 Lembre que sempre que uma entrada recebe nvel lgico 1 ela dela deve acender o probe correspondente A resposta Y deve ser apresentada ao pino indicado atravs de um probe: Y RD7 Desenvolver o diagrama em Blocos, o fluxograma do programa e a simulao do programa no ambiente MPLAB IDE.

26

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Diagrama em Blocos do item 1:

Projeto de Hardware (diagrama eltrico) do item 1:

27

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Fluxograma do item 1:

28

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Diagrama em Blocos do item 2:

Projeto de Hardware (diagrama eltrico) do item 2:

29

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Fluxograma do item 2:

30

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

EXPERINCIA 4 Programao em C
de operao, monitorao e controle.

Conceitos bsicos

Objetivos:
Conhecer os softwares utilizados para efetuar as prticas; Aplicar os conhecimentos de fluxogramas;

REGRA de APRESENTAO/DEFESA: Os alunos devem desenvolver os diagramas em bloco, esquemas eltricos (projetos de hardware), o fluxograma, a programao, a simulao do programa no ambiente MPLAB IDE e o funcionamento para que seja validada a defesa. Cpias de quaisquer itens implicaro em nota 0 para a experincia. Tempo de Execuo: 16 Aulas Incio: ____/___/_____ - Trmino: ____/___/_____

Desenvolvimento
Equipamentos e materiais necessrios: 1 protoboard; 1 Placa de montagens de ponte de terminais ou placas de circuito impresso 1 conjunto de chaves digitais; 1 fonte de alimentao; 1 microcontrolador PIC 16F877A; 1 microcontrolador PIC 12F675; 8 Leds; 8 Resistores de 330; 3 Resistores de 10K; 3 rels de 12V/10A; 3 Leds emissores de Infravermelho; 3 fototransistores; 3 transistores BC548 ou BC337; 3 Diodos 1N4007; Resistores de valores variados; Fios para montagens; 1 gravador para microcontrolador PIC (ICD2BR do laboratrio). Dicas de Projeto: Capacitores de filtragem de rudos de comutao de circuitos integrados Uma prtica muito boa a ser utilizada em projetos de circuitos eletrnicos em geral, e principalmente em sistemas digitais, a adio de um capacitor cermico entre os pinos de alimentao de cada circuito integrado que ser utilizado no projeto. O valor utilizado no interfere muito, mas costuma-se a utilizar valores desde 33pF a at 100nF (C1 = 100nF cermico e C2 = 100uF/25V eletroltico). A presena deste capacitor reduz a propagao de rudos de comutao (chaveamento) dos transistores internos do circuito integrado, para a linha de alimentao, e por sua vez melhora a filtragem do Ripple da fonte de alimentao. Este capacitor deve ser colocado no momento da

31

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto montagem do protoboard ou do lay-out da placa de circuito impresso, o mais prximo possvel do circuito integrado e de suas linhas de alimentao.

Exerccio 1 FioDigital.c
aulas)

Manipulao de um PORT inteiro do microcontrolador (2

Informaes necessrias: Neste exerccio com o microcontrolador, sero realizadas apenas instrues (funes) de leitura e escrita, ou seja, as informaes presentes em um dos PORT (PORTB) sero transferidas para outro (PORTD). Esta transferncia se dar maneira paralela, sendo assim, todos os bits sero transferidos ao mesmo tempo de um PORT para outro, de maneira transparente, sou seja, bit0 (RB0) de um do PORTB para o bit0 do PORTD (RD0), e assim por diante. A Figura 1 apresenta um esquema eltrico para este exerccio.

Figura 1. Circuito eltrico para o projeto do FIO DIGITAL. // ****** Cdigo fonte para o exerccio do FioDigital.C ******** #include <16f877A.h> #use delay(clock = 4000000) #fuses HS,NOWDT,PUT,NOBROWNOUT,NOPROTECT, NOLVP void main() { int dados; dados = 0; output_D(0); while(true) 32

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto { dados = input_B(); output_D(dados); } }

Exerccio 2 OnOff.c Controle de operaes com o PIC12F675 (2 aulas)


Informaes necessrias: Neste exerccio ser abordado o controle de operaes, onde o programa fica travado aguardando que um boto seja acionado para que um evento ou acionamento seja realizado, ficando novamente travado esperando agora que outro boto seja acionado, disparando uma nova tarefa. Lembre que o sinal gerado por S1 esta em 0 e quando pressionado vai a 1, e o sinal gerado por S2 esta em 1 e quando pressionado vai a 0. A Figura 2 apresenta um esquema eltrico para este exerccio.

Figura 2. Circuito eltrico para o projeto do ON OFF. // ****** Cdigo fonte para o exerccio do OnOff.C ******** #include <12F675.h> #use delay(clock=4000000) #fuses HS,NOWDT,PUT,NOBROWNOUT,NOPROTECT void main() { boolean S1; boolean S2; S1 = 0; S2 = 0; while(true) { output_low(pin_a0); 33

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto S1 = input(pin_a1); while(S1==0) { S1 = input(pin_a1); } output_high(pin_a0); S2 = input(pin_a2); while(S2==1) { S2 = input(pin_a2); } }// while }//main

Cdigo do OnOff_2.c alterado


// ****** Cdigo fonte para o exerccio do OnOff_2.C ******** #include <12F675.h> #use delay(clock=4000000) #fuses HS,NOWDT,PUT,NOBROWNOUT,NOPROTECT void main() { while(true) { output_low(pin_a0); while(!input(pin_a1)); output_high(pin_a0); while(input(pin_a2)); }// while }//main

34

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Exerccio 3A Decodificador.c Decodificador de 4 para 16 (2 aulas)


Informaes necessrias: Neste exerccio ser abordada a decodificao de entradas para acionamento de sadas levando em considerao operaes com mascara para leitura de um nmero de bits determinado. Aps os testes com a estrutura de programao apresentada no cdigo de exemplo, implementar o mesmo decodificador utilizando apenas estruturas de comando do tipo IF/ELSE. A Figura 3.a apresenta o esquema eltrico deste exerccio, que dever ser completado para contemplar as 4 entradas e 16 sadas solicitadas. // ****** Cdigo fonte para o exerccio do Decodificador.c ********
#include <16F877A.h> #use delay(clock=4000000) #fuses HS,NOWDT,PUT,NOBROWNOUT,NOPROTECT, NOLVP void main() { int select; PORT_B_PULLUPS(true); output_D(0); while(true) { select = input_B() switch(select) { case 0: //commandos de saida break; case 1: //commandos de saida break; case 2: //commandos de saida break; case 3: //commandos de saida break; case 4: //commandos de saida break; . . . . } }// while }// void main ***MASCARA***** ;//

35

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Figura 3.a. Circuito eltrico para o projeto do Decodificador 4 para 16. Completar o projeto!!!

Como a sintaxe (escrita) de Constantes (valores) Decimais, Binrias, Octais e Hexadecimais


99 decimal 099 octal 0x99 hexadecimal 0b10011001 binria

36

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Exerccio 3B BinHexa.c
segmentos (2 aulas)

Decodificador Binrio Hexadecimal para Display de 7

Informaes necessrias: Neste exerccio dever ser desenvolvido um decodificador de binrio para display de 7 segmentos que represente os smbolos HEXADECIMAIS. A Figura 3.b apresenta um esquema eltrico para este exerccio.

Figura 3.b. Circuito eltrico para o projeto do Decodificador Binrio Hexadecimal para 7 segmentos.

Figura 3.c. Pinos do display de 7 segmentos catodo comum.

37

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Exerccio 4 PiscaPisca.c Funo para realizar um gasto de tempo


PIC12F675 (2 aulas)

e pisca-pisca com

Informaes necessrias: Neste exerccio sero abordadas a criao e utilizao de funes que tornam o programa mais eficiente, modular e o cdigo pode ser reaproveitado em diversas outras aplicaes. A primeira funo void MeuDelay( long tempo) responsvel em prover um gasto de tempo, e pode ser ajustada simplesmente pela passagem de um parmetro (tempo), que possui uma faixa de 0 at 65536ms aproximadamente. J a segunda funo neste primeiro teste void PiscaPisca(int piscadas); responsvel pelo numero de piscadas do led de sada, e a quantidade pode ser ajustada atravs da passagem de um parmetro (piscadas), uma faixa de 0 at 255 aproximadamente. A Figura 3 apresenta o esquema eltrico deste exerccio. Lembre que S1 est em pull down e S2 pull up A Figura 4 apresenta um esquema eltrico para este exerccio.

Figura 4. Circuito eltrico para o projeto do PISCA-PISCA.

// ****** Cdigo fonte para o exerccio do PiscaPisca1.C ******** #include <12F675.h> #use delay(clock=4000000) #fuses HS,NOWDT,PUT,NOBROWNOUT,NOPROTECT //********************* Definies de apelidos para as sadas *************** #define Led1 pin_a0 //********************* Definies de apelidos para as entradas *************** #define PB0 pin_a2 #define PB1 pin_a1 //********************* Definies de prottipos de funes ******************* void MeuDelay(long tempo); void PiscaPisca(int piscadas); //****************************** Funo Main*********************************** void main() 38

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto { output_low(Led1); while(true) { if(input(PB0) & input(PB1)) PiscaPisca(15);// piscar 15 vezes if(input(PB0) & input(PB1)) PiscaPisca(10);// piscar 10 vezes if(input(PB0) & input(PB1)) PiscaPisca(5);// piscar 5 vezes }// while } //****************************** Funo MeuDelay ****************************** void MeuDelay(long tempo) { while(tempo >0) { delay_ms(1); tempo--; } } //****************************** Funo PiscaPisca **************************** void PiscaPisca(int piscadas) { while(piscadas >0) { output_high(Led1); MeuDelay(200); output_low(Led1); MeuDelay(200); Piscadas--; } }

39

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto // ****** Cdigo fonte para o exerccio do PiscaPisca2.C ***************** #include <12F675.h> #use delay(clock=4000000) #fuses HS,NOWDT,PUT,NOBROWNOUT,NOPROTECT //********************* Definies de apelidos para as sadas *************** #define Led1 pin_a0 //********************* Definies de apelidos para as entradas ************ #define PB0 pin_a2 #define PB1 pin_a1 //********************* Definies de prottipos de funes ***************** void MeuDelay(long tempo); void PiscaPisca(int piscadas, long Delay); //****************************** Funo Main************************************** void main() { output_low(Led1); while(true) { if(input(PB0) & input(PB1)) PiscaPisca(15,300);// piscar 15 vezes em intervalos de 300ms if(input(PB0) & input(PB1)) PiscaPisca(10,600); // piscar 10 vezes em intervalos de 600ms if(input(PB0) & input(PB1)) PiscaPisca(5,900); // piscar 5 vezes em intervalos de 900ms }// while } //****************************** Funo MeuDelay ****************************** void MeuDelay(long tempo) { while(tempo >0) { delay_ms(1); tempo--; } }

40

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto //****************************** Funo PiscaPisca **************************** void PiscaPisca(int piscadas, long Delay) { while(piscadas >0) { output_high(Led1); MeuDelay(Delay); output_low(Led1); MeuDelay(Delay); Piscadas--; } }

Observaes: ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________
41

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Projeto Sequencial.c Seqencial de vrias funes com o PIC 16F877A

(2 aulas)

Informaes necessrias: Projetar um seqenciador de LEDS que possa ser ajustado atravs de botes de seleo apresentando vrias seqncias. Definies de hardware e funcionamento: Ao ser ligado os LEDS de sada devem ser apagados; Os botes de seleo para os modos devem ser conectadas ao PORT C (4 botes) e os LEDS de sada PORT D (8 bits 8 leds);

Criar 8 funes: 1. Funo 1: seqencial de Deslocamento: Ao apertar o boto PB0, limpar as sadas e acender seqencialmente de maneira crescente os leds mantendo os anteriores acesos, com um tempo de delay de 200ms entre os acionamentos, terminando com todos acesos;
2.

Funo 2: seqencial em Anel: Ao apertar o boto PB1, limpar as sadas e fazer um led aceso se deslocar de uma sada para outra fazendo dois ciclos completos mantendo o ultimo led aceso quando terminar o segundo ciclo; Funo 3: seqencial Cruzador: Ao apertar o boto PB2, limpar as sadas e acionar o led menos significativo e o mais significativo, contar um tempo, desligar e acionar o prximo led, fazendo com que o led menos significativo caminhe em sentido crescente e o led mais significativo em sentido decrescente, aps realizar o cruzamento manter os ltimos leds acesos quando terminar; Funo 4: seqencial Bola Quicando: Ao apertar o boto PB3, limpar as sadas e acionar o led mais significativo contar um tempo e deslocar apagando o anterior com intervalos de tempos em sentido ao led menos significativo. Ao chegar no led menos significativo, seguir em sentido crescente at um led abaixo do mais significativo apagando o anterior com intervalos de tempo. Quando chegar ao led especificado, deve se deslocar novamente em sentido ao led menos significativo apagando o anterior. E assim por diante, seguindo este raciocnio, como se o led fosse uma bola de que solta de uma certa altura e fica quicando at perder a energia armazenada e para no cho, que neste caso ser o bit menos significativo.

3.

4.

Lembre que os sinais PB0 e PB1 do conjunto de chaves esto em PULL UP; Se apertar novamente o boto de mesmo modo, executar novamente este modo.

Observaes: ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________


42

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Diagrama em Blocos do Seqenciador:

43

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Projeto de Hardware (diagrama eltrico) Seqenciador:

44

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Fluxograma do Seqenciador:

45

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Exerccio 6 BoEv.c Modelagem da Bomba e Eletrovlvula com controle de erro, utilizando


o PIC12F675 (2 aulas)

A 0 0 0 0 1 1 1 1

B 0 0 1 1 0 0 1 1

C 0 1 0 1 0 1 0 1

EV 1 1 1 1 X X 0 0

BO 0 0 1 0 X 0 1 0

Figura 5. Esboo do sistema de Bombeamento.

Sensores :
com gua = 1 Sem gua = 0 Atuadores : Ligado = 1 desligado = 0

BO C 0 1

A B 0 0 0 0

EV
0 1 1 0 1 1 1 0 1 0 X 0

0 1

A B 0 0 1 1 E =A V /

01 1 1

1 1 0 0

10 X X

B =B / O C

Figura 6. Esquema do sensor de barreira ptica. Pede-se:

Para cada combinao dos Sensores deve-se ter exatamente o comportamento do controle de bombeamento apresentado na tabela verdade; Confirmar a leitura dos sensores A, B e C para proteger os atuadores das operaes de liga/desliga causado pela oscilao da gua nos sensores (ler o sensor, contar um tempo e realizar novamente a mesma leitura, s ento acionar);
46

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Implementar uma sada para Sinalizao de Problemas que dever ficar piscando nos casos irrelevantes. Na tabela verdade, no esto apresentados a coluna com a sada para este caso, nem to pouco o mapa de Karnaugh;

Pede-se:
1. Diagrama 2. A

em Blocos, fluxograma e esquema eltrico;

montagem deve ser exemplar, ou seja, com qualidade e perfeio (fios curtos e os sensores e as etapas de rels em placa de circuito impresso ou em

bem distribudos);
3. Implementar

ponte de terminais;
4. Acionar

trs rels, um para a Bomba, um para a Eletrovlvula e outro para a

Lmpada de Sinalizao de Problemas;


5. Cada

Rel deve acionar uma carga (lmpadas e motor) em rede alternada

127V/60Hz;
6. O

acionamento dos rels deve ser de maneira protegida com diodo de sinal. os teste finais para obter o visto no hardware montado.

7. Realizar

Observaes: ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________
47

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Diagrama em Blocos do sistema de Controle de Bombeamento:

48

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Projeto de Hardware (diagrama eltrico) do sistema de Controle de Bombeamento:

49

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Fluxograma do sistema de Controle de Bombeamento:

50

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

EXPERINCIA 5 INTERRUPO EXTERNA


Objetivos:
Conhecer o procedimento de configurao e utilizao da interrupo externa em dois modelos de microcontroladores PIC16F877A e PIC12F675

REGRA de APRESENTAO/DEFESA: Os alunos devem desenvolver os diagramas em bloco, esquemas eltricos (projetos de hardware), o fluxograma, a programao, a simulao do programa no ambiente MPLAB IDE e o funcionamento para que seja validada a defesa. Cpias de quaisquer itens implicaro em nota 0 para a experincia.

Tempo de Execuo: 2 aulas


Incio: ____/___/_____ - Trmino: ____/___/_____

Desenvolvimento
Informaes necessrias: Interrupo um procedimento que permite a mudana do fluxo normal de execuo do programa principal que est rodando no microcontrolador, direcionado a execuo para outra rea de memria, onde um cdigo de tratamento ser ento executado. Assim que este cdigo de tratamento for terminado o microcontrolador retorna a execuo ao cdigo principal que estava rodando do ponto onde foi interrompido, seguindo sua execuo normalmente. O microcontrolador PIC16F877A, possui uma interrupo externa e esta direcionada ao pino RB0, no caso do PIC12F675 esta interrupo est direcionada ao pino GP2. Para habilitar esta interrupo utilizando linguagem C do compilador da CCS tem-se algumas funes que devem ser utilizadas: enable_interrupts(int_ext); ext_int_edge(H_TO_L); enable_interrupts(global); // habilita as interrupo externa // RB0 para o PIC16F877 // A2 para o 12F675 // configura a borda de sensibilidade // da interrupo: neste caso de alto para // baixo // habilita as chave geral de interrupes

51

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Figura - Flags e chaves de interrupo Livro Conectando o PIC 16F877A Recursos Avanados Aps realizar os testes com o microcontrolador PIC16F877A, alterar a programao para utilizar agora o PIC 12F675. O exerccio que ser realizado dever: 1. Ao acionar um boto PB1 deve ligar o led conectado ao RD1; 2. Ao acionar um boto PB2 deve desligar o led conectado ao RD1; 3. Ao acionar o boto PB0 entra na interrupo fazendo piscar um led conectado ao RD0. //********************************************************************************************************** // Programa exemplo para INTERRUPO EXTERNA //********************************************************************************************************** #include <16F877A.h>// configurar para o controlador a ser usado e o seu caminho #use delay(clock=4000000) // informa qual e a freq do cristal que esta sendo utilizado #fuses HS, NOWDT,PUT,NOBROWNOUT,NOLVP //********************************************************************************************************** // rea de definies de pinos de Sada //********************************************************************************************************** #define LED0 pin_d0 #define LED1 pin_d1 //********************************************************************************************************** // rea de definies de pinos de Entrada //********************************************************************************************************** #define PB1 pin_b1 #define PB2 pin_b2 //********************************************************************************************************** // // Interrupo externa por borda de descida em rb0 52

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto // //********************************************************************************************************** #int_ext // indica interrupcao por borda de descida de rb0 void Trata_RB0(void) { output_high(LED0); //liga o led em RD0 delay_ms(1000); output_low(LED0); delay_ms(1000); output_high(LED0); delay_ms(1000); output_low(LED0); delay_ms(1000); //liga o led em RD0 //liga o led em RD0 //liga o led em RD0

}// fim do tratamento da interrupo //********************************************************************************************************** // // Programa principal // //********************************************************************************************************** void main() { port_b_pullups(true); // hativa os resistores internos de pullup // no port B enable_interrupts(int_ext); // habilita as interrupo externa // RB0 ext_int_edge(H_TO_L); // configura a borda de sensibilidade // da interrupo: neste caso de alto // para baixo enable_interrupts(global); // habilita as chave geral de interrupes while (true) { if(input(PB1)) output_high(LED1); if(input(PB2)) output_low(LED1); }// while }// void main A Figura 7 apresenta um esquema eltrico para este exerccio.

53

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Figura 7.a. Circuito eltrico do exerccio de interrupo Externa com o PIC16F877A.

Figura 7.b. Circuito eltrico do exerccio de interrupo Externa com o PIC12F675.

Observaes: ______________________________________________________ ______________________________________________________ ______________________________________________________


54

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

EXPERINCIA 6 Comunicao Serial Assncrona


Objetivos:
Conhecer o procedimento de configurao e utilizao do mdulo de comunicao Assncrona; Estudar o Padro Eltrico RS232; Aplicar o conhecimento de interrupo externa.

REGRA de APRESENTAO/DEFESA: Os alunos devem desenvolver os diagramas em bloco, esquemas eltricos (projetos de hardware), o fluxograma, a programao, a simulao do programa no ambiente MPLAB IDE e o funcionamento para que seja validada a defesa. Cpias de quaisquer itens implicaro em nota 0 para a experincia.

Tempo de Execuo: 2 aulas


Incio: ____/___/_____ - Trmino: ____/___/_____

Desenvolvimento
Informaes necessrias: A troca de informaes entre dispositivos, equipamentos e sistemas permite que um volume de dados seja transferido para tratamento, armazenagem ou ainda monitoramento remoto. Alguns exemplos de aplicaes so a USB, Ethernet, PS2 (comunicao de teclados e mouses de um microcomputador), entre outros. A comunicao entre dispositivos pode ser realizada de duas formas, Serial e Paralela. Na comunicao Serial, cada bit transmitido separadamente um aps o outro, podendo ter ainda dois tipos de transmisso: sncrona e assncrona Sncrona: Possui uma via de dados que pode ser bidirecional ou no e outra de sincronismo, clock (tipos: SPI e I2C); Assncrona (sem sincronismo): possui basicamente duas vias para dados, uma transmite e outra recebe, e o sinal de sincronismo vem embutido nos sinais de dados (RS232, RS422 e RS485). O microcontrolador PIC16F877A, possui dois mdulos internos para comunicao serial, um para comunicao sncrona e outro para comunicao assncrona. Nesta atividade ser abordado o mdulo de comunicao assncrono. Para ativar o mdulo de comunicao, deve-se utilizar algumas diretivas e funes do compilador. A comunicao serial pode ser implementada de duas formas: Por software: onde um cdigo desenvolvido permite a serializao e controle dos tempos de envio e recebimento dos bits; Por hardware: quando uma estrutura de hardware interna do microcontrolador responsvel pela serializao de 8 bits paralelos para transmisso e recebimento de dados serializados agrupando-os em grupos de 8 bits e disponibilizando-os de maneira paralela. Esta diretiva permite que sejam utilizadas as funes de comunicao seja para uma interface serial criada no software ou por hardware. Para habilitar o mdulo de USART UNIVERSAL SYNCHRONOUS ASSYNCHRONOUS RECEIVER TRANSMITTER: #use rs232(opes) As opes a serem utilizadas so os apresentados na tabela 2:

55

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto Tabela 2. Opes da diretiva #use rs232(opes).

Obs1: tabela do livro Microcontroladores PIC Programao em C Fbio Pereira pg. 173. Editora rica Os pinos que implementam a interface serial por hardware so: Bit 7 do port C: RC7 RX, pino de entrada de dados da serial; Bit 6 do port C: RC6 TX, pino de sada de dados da serial; O exemplo a seguir apresenta uma configurao para comunicao serial: // configurao para serial RS232 #use rs232(baud=19200, xmit=pin_c6, rcv=pin_c7, bits=8) Nesta configurao de exemplo, tem-se a seguinte parametrizao: BAUD Velocidade de comunicao: 19200 bps, bits por segundo; XMIT Pino de transmisso utilizado; RCV Pino de recepo utilizado; Para configurar um software de comunicao serial, por exemplo o Hyper Terminal, do Windows apresentado na figura 4, deve-se utilizar as informaes como sendo: Bits por segundo 19200; Bits de dados: 8; Paridade: Nenhum Bits de parada: 1; Controle de fluxo: Nenhum 56

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Figura 4. Tela de configurao das portas de comunicao do Hyper Terminal. Existem vrias funes que podem ser utilizadas em um projeto com comunicao serial, portanto sero abordadas algumas delas. Para transmitir apenas um byte ou um caractere: putc(dado); Exemplo: considere uma varivel declarada anteriormente do tipo: char valor; e inicializada com: valor = A; // ser transmitido um byte, ou seja, o contedo da varivel valor, que o caractere A putc(valor); Para transmitir uma seqncia de bytes (string) podemos utilizar: printf(opes); Esta funo possui uma variedade de opes de parametrizao. Para a simples transmisso de uma frase (string), fica: // transmite a frase pela interface serial definida anteriormente printf(Estou vivo e falante!!); Para utilizar um dado recebido pela interface serial, pode-se utilizar a seguinte funo: getc(); Exemplo: considere uma varivel declarada anteriormente do tipo: char valor; (8 bits) // quando for recebido um byte, ele ser transferido para a varivel valor valor = getc(); Verifique as pginas 230 239 do livro Microcontroladores PIC Programao em C Fbio Pereira da Editora rica, existem diversas outras funes e parametrizaes para cada uma delas. O exemplo que ser utilizado para se trabalhar com a interface serial ser uma evoluo do projeto anterior de interrupo. Quando ocorrer a interrupo realizar o esmo procedimento anterior porm com algumas alteraes: 1. Ser enviada uma mensagem para o computador avisando do evento de interrupo; 2. O acionamento do LED1 que era realizado pelo boto, ser realizados agora pelo computador, atravs das teclas 1, para ligar o led 1 e 0 para desligar o led1; O cabo de conexo entre a aplicao e o computador deve ser montado pino a pino, ou seja, pino 2 com pino 2, pino 3 com pino 3, pino 5 com pino 5. O circuito a ser utilizado para esta experincia apresentado na figura 5. 57

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Figura 5. Circuito eltrico para o exerccio de comunicao serial utilizando o CI MAX232. //********************************************************************************************************** // Programa exemplo para Comunicao Serial e INTERRUPO EXTERNA Serial.c //********************************************************************************************************** #include <16F877A.h>// configurar para o controlador a ser usado e o seu caminho #use delay(clock=4000000) // informa qual e a freq do cristal que esta sendo utilizado #use rs232(baud=19200, xmit=PIN_C6,rcv=PIN_C7)// diretivas de config da serial #fuses HS, NOWDT,PUT,NOBROWNOUT,NOLVP //********************************************************************************************************** // rea de definies de pinos de Sada //********************************************************************************************************** #define LED0 pin_d0 #define LED1 pin_d1 //********************************************************************************************************** // rea de definies de pinos de Entrada //********************************************************************************************************** #define PB1 pin_b1 #define PB2 pin_b2 //********************************************************************************************************** // // Interrupo externa por borda de descida em rb0 // //********************************************************************************************************** #int_ext // indica interrupcao por borda de descida de rb0 58

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto void Trata_RB0(void) { printf(\n\r Evento de Interrupcao ocorreu!!!\n\r); output_high(LED0); //liga o led em RD0 printf(\n\r Led 0 Acionado!!!\n\r); delay_ms(1000); output_low(LED0); //liga o led em RD0 printf(\n\r Led 0 Desacionado!!!\n\r); delay_ms(1000); output_high(LED0); //liga o led em RD0 printf(\n\r Led 0 Acionado!!!\n\r); delay_ms(1000); output_low(LED0); //liga o led em RD0 printf(\n\r Led 0 Desacionado!!!\n\r); delay_ms(1000); printf(\n\r Saindo do tratamento da Interrupcao!!!\n\r); delay_ms(200); }// fim do tratamento da interrupo //********************************************************************************************************** // // Programa principal // //********************************************************************************************************** void main() { char Tecla; port_b_pullups(true); // hativa os resistores internos de pullup // no port B enable_interrupts(int_ext); // habilita as interrupo externa // RB0 ext_int_edge(H_TO_L); // configura a borda de sensibilidade // da interrupo: neste caso de alto // para baixo

enable_interrupts(global); // habilita as chave geral de interrupes printf(\n\r Tecnico em Mecatronica 2 perodo!!!\n\r); delay_ms(1000); printf(\n\r Microcontrolador conectado e rodando!!!\n\r); delay_ms(1000); while (true) { if(kbhit()// testa se chegou um carcater vlido no buffer da serial { Tecla = getc(); if(Tecla == 1) { output_high(LED1); printf(\n\r Sada %c Acionada!!!\n\r, Tecla); 59

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto delay_ms(200); } if(Tecla == 0) { output_low(LED1); printf(\n\r Sada %c Desacionada!!!\n\r, Tecla); delay_ms(200); } } }// while }// void main

Observaes: ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________ ______________________________________________________
60

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

EXPERINCIA 7 Encoder Rotativo


Objetivos:
Conhecer o procedimento de configurao e utilizao do mdulo LCD; Utilizar de biblioteca de funes para controlar o LCD a 4 bits com o microcontrolador; Utilizar a interrupo externa para realizar a leitura de um Encoder Rotativo Digital; Conhecer e utilizar Encoder Rotativo Digital.

Tempo de Execuo: 2 aulas


Incio: ____/___/_____ - Trmino: ____/___/_____

Desenvolvimento
Informaes necessrias: O encoder um dispositivo que permite realizar a transformao de movimentos mecnicos em equivalentes posicionais, ou seja, por exemplo, a rotao em uma seqncia de pulsos, ou ainda em posio absoluta, podendo ser tambm em nveis de tenso proporcionais, podendo ser encontrado e criado para as mais variadas aplicaes. Seu emprego mais conhecido nos mouses de computadores. O encoder que ser utilizado nesta experincia ser o rotativo incremental, ou como tambm conhecido encoder de quadratura. O princpio bsico de funcionamento deste dispositivo consiste em um disco impresso como o do exemplo da figura x. As marcas em preto esto defasadas em 90, o que permite que sejam geradas as sadas apresentadas na figura xa no caso de ser girado em sentido horrio, e a figura xb para a rotao em sentido anti-horrio.

Figura 5. Formas de onda das sadas do encoder: (a) Sentido horrio (b) sentido anti-horrio.

(a) (b) Figura 6. Formas de onda das sadas do encoder: (a) Sentido horrio (b) sentido anti-horrio. Para testar o encoder e a programao, deve-se montar o hardware proposto na figura x. O projeto apresenta uma conexo simples com isolao ptica do encoder ao microcontrolador, juntamente com o adaptador para comunicao com o computador. A contagem dos pulsos ser apresentada no computador, e a indicao do sentido ser atravs do sinal + para o sentido horrio de contagem e para o sentido anti-horrio.

61

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Figura 6. Circuito eltrico para o exerccio com encoder e comunicao serial. //****************************************************************************** // Programa exemplo para leitura de encoder de quadratura // e Comunicao Serial Encoder.c //****************************************************************************** #include <16F877A.h>// microcontrolador usado #use delay(clock=4000000) // freq do cristal que esta sendo utilizado #use rs232(baud=19200, xmit=PIN_C6,rcv=PIN_C7)// diretivas de config da serial #fuses HS, NOWDT,PUT,NOBROWNOUT,NOLVP //****************************************************************************** // rea de definies de pinos de entradas //****************************************************************************** #define EncB pin_b1 //****************************************************************************** // Definio da varivel global POSICAO //****************************************************************************** signed long Posicao; //****************************************************************************** // // Interrupo externa por borda de descida em rb0 // //****************************************************************************** #int_ext // Tratamento da interrupcao externa void Trata_RB0(void) 62

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto { if(input(EncB)) { Posicao++; } else { Posicao--; } }// fim do tratamento da interrupo //****************************************************************************** // // Programa principal // //****************************************************************************** void main() { port_b_pullups(true); // hativa os resistores internos de pullup // no port B enable_interrupts(int_ext); // habilita as interrupo externa // RB0 ext_int_edge(H_TO_L); // configura a borda de sensibilidade // da interrupo: neste caso de alto // para baixo clear_interrupts(int_ext); // limpa o flag de interrupo externa printf("\n\r Tecnico em Mecatronica 2 perodo!!!\n\r"); delay_ms(1000); printf("\n\r Microcontrolador conectado e rodando!!!\n\r"); delay_ms(1000); printf("\n\r Experiencia de Leitura de Encoder de Quadratura!!!\n\r"); delay_ms(1000); enable_interrupts(global); // habilita as chave geral de interrupes while (true) { printf("Posicao: %lu }// while }// void main

\r", Posicao);

63

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

EXPERINCIA 8 Conversor AD 8 Bits


Objetivos:
Conhecer o procedimento de configurao e utilizao do conversor AD em configurao de 8 bits Conhecer amplificador operacional em configurao no inversora Aplicar o conhecimento do conversor AD em um termmetro digital configurvel

Tempo de Execuo: 4 aulas Desenvolvimento


Informaes necessrias: Informaes Analgicas so de grande importncia em sistemas de automao, pois o mundo analgico, as grandezas fsicas so analgicas e sendo assim, para poder realizar o controle de determinados processos industriais necessrio que valores analgicos sejam lidos pelos sistemas de controle. Um exemplo bastante simples seria o de um termostato eletrnico que controla a temperatura de um ambiente ou de um lquido. Para controlar a temperatura de aquecimento o sistema deve ter um sensor que realizara a converso da grandeza fsica temperatura em outra grandeza, a eltrica, que por sua vez ser convertida em uma seqncia binria. Existem diversos modelos de circuitos conversores AD, o microcontrolador PIC16F877A, possui um conversor AD interno de aproximaes sucessivas de 8 ou 10 bits configurvel, e 8 canais de entrada analgicos multiplexados. Como o PIC16F877A possui apenas um conversor AD, isto significa que apenas um canal analgico pode ser convertido (lido) por vez, ento a multiplexao dos canais de entrada permite que esta tarefa de seleo seja realizada. Por uma definio do fabricante MICROCHIP, o microcontrolador PIC no pode configurar a gosto do usurio uma seqncia personalizada de canais que sero definidos como entradas analgicas, deve-se utilizar uma das definies que o fabricante expe no datasheet do componente. A tabela 1 apresenta as combinaes possveis de utilizao das entradas: Para habilitar/configurar este mdulo utilizando linguagem C do compilador da CCS tem-se algumas informaes que devem ser observadas e algumas funes que devem ser utilizadas:

64

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto Tabela 1:Combinao das entradas para utilizao do mdulo AD.

Obs1: tabela do livro Microcontroladores PIC Programao em C Fbio Pereira pg. 209. Editora rica Obs2: A analgico D Digital A funo de configurao para os canais : setup_adc_ports(opes); Exemplo: setup_adc_ports (RA0_ANALOG);// somente o canal 0 analgico Outro ponto importante na configurao do mdulo analgico a freqncia do clock que ser entregue para o conversor AD. As opes disponveis para esta configurao so: ADC_OFF ADC_CLOCK_DIV_2 ADC_CLOCK_DIV_4 ADC_CLOCK_DIV_8 ADC_CLOCK_DIV_16 ADC_CLOCK_DIV_32 ADC_CLOCK_DIV_64 ADC_CLOCK_DIV_INTERNAL A funo de configurao para a freqncia : setup_adc(opes); Exemplo: setup_adc(ADC_CLOCK_DIV_INTERNAL); A seleo do canal que ser lido realizada atravs da funo: set_adc_channel(canal); Exemplo: set_adc_channel(0); // selecionado o canal 0 para leitura observao importante: quando houver a seleo de um canal para entrada analgica, deve-se aguardar em torno de 15 a 20us antes de se realizar a leitura efetiva do canal. Isso necessrio para que o capacitor interno seja carregado com a tenso que ser amostrada (lida). Exemplo: set_adc_channel(0); // selecionado o canal 0 para leitura delay_us(20); // tempo para carregamento do capacitor interno de amostragem

65

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto A converso efetiva do valor de tenso analgica presente na entrada selecionada ser realizada atravs da funo: read_adc( ); Esta funo retornar o valor convertido que pode ser apresentado em dois tamanhos(tipos): 1. 8 bits valores de 0 a 255 2. 10 bits valores de 0 a 1023 Sendo assim, a varivel que receber o valor convertido deve ser compatvel com o tamanho de bits que ser devolvido pela funo de leitura: Exemplo: para uma varivel de 8 bits int valor; valor = read_adc( ); // varivel recebe o valor convertido em 8 bits Exemplo: para uma varivel de 10 bits long valor; valor = read_adc( ); // varivel recebe o valor convertido em 10 bits O exerccio que ser realizado dever: 1. Ao acionar o boto PB0 deve entrar na interrupo e realizar a leitura do canal 0 analgico que estar recebendo o valor de tenso do potencimetro medir com o multmetro e realizar o calculo para confirmar o valor de converso que ser apresentado no port D; //********************************************************************************************************** // Programa exemplo para CONVERSOR AD //********************************************************************************************************** #include <16F877A.h>// configurar para o controlador a ser usado e o seu caminho #device ADC=8 // numero de bits do conversor AD - 8 bits ou 10 bits #use delay(clock=4000000) // informa qual e a freq do cristal que esta sendo utilizado #fuses HS, NOWDT,PUT,NOBROWNOUT,NOLVP //********************************************************************************************************** // Interrupo externa por borda de descida em rb0 //********************************************************************************************************** #int_ext // indica interrupcao por borda de descida de rb0 void Trata_RB0(void) { int valor; set_adc_channel(0); // indica qual canal ad sera lido delay_us(20); // aguarda o circuito interno do pic se preparar para // realizar a conversao valor = read_adc(); // realiza a conversao do sinal analogico // presente no canal selecionado output_D(valor); // apresenta o valor convertido no port D delay_ms(10); } //********************************************************************************************************** // Programa principal //********************************************************************************************************** void main() { setup_adc_ports(RA0_ANALOG); // PORT A0 Analogica setup_adc(ADC_CLOCK_INTERNAL); // seleciona o clock interno para o // conversor AD

port_b_pullups(true); // ativa os resistores internos de pullup // no port B 66

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto enable_interrupts(int_ext); // habilita as interrupo externa // RB0 ext_int_edge(H_TO_L); // configura a borda de sensibilidade // da interrupo: neste caso de alto para // baixo // habilita as chave geral de // interrupes

enable_interrupts(global); while (true) { }//while }//void main

A Figura 8 apresenta um esquema eltrico para este exerccio.

Figura 8. Circuito eltrico para o exerccio com o AD. O projeto a seguir ser o de um termostato que dever apresentar trs indicadores de temperatura: ALTA, BAIXA e NORMAL, utilizando um sensor de temperatura LM35, que devolve um tenso de 10mV/. Informaes: 1. A faixa de temperatura dever ser de 0 a 50C; 2. Os Ajustes de mnimo e mximo devero ter ao quando o boto PB0 for pressionado, ou seja, os ajustes sero realizados dentro do tratamento da interrupo externa; 3. Quando entrar na interrupo externa, deve apagar os 3 leds de limites; 67

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto 4. Dentro da interrupo, para ajustar o valor mnimo deve-se proceder da seguinte maneira: pressionar PB2 uma vez e aguardar o LED de indicao de Temperatura Baixa acender, ajustar o valor mnimo atravs do potencimetro de mnimo, podendo visualizar o ajuste nos leds do port D. Com a temperatura ajustada, acionar o boto PB2 novamente e aguardar o Led de indicao de Temperatura Baixa Apagar; Em seguida deve-se ajustar o valor de Temperatura Mximo, realizando o mesmo procedimento porm utilizando agora o boto PB1 e o potencimetro de ajuste de Mximo. Pressionando uma vez o boto PB1 o LED de Temperatura Mxima acender depois de um pequeno tempo, e s ento possvel realizar o ajuste do valor para o Mximo, que tambm pode ser visualizado nos Leds do portD. Com a temperatura ajustada, acionar o boto PB1 novamente e aguardar o Led de indicao de Temperatura Alta Apagar; 5. Quando sair da interrupo externa, os leds de Temperatura Baixa e de Temperatura devem se apagar, piscando duas vezes o led Indicador de temperatura Normal; 6. Se a temperatura medida for maior que a temperatura ajustada para o valor mximo, deve acender unicamente o indicador de Temperatura Alta e ficar assim enquanto a temperatura for acima do ajustado. 7. Se a temperatura medida for menor que a temperatura ajustada para o valor mnimo, deve acender unicamente o indicador de Temperatura Baixa e ficar assim enquanto a temperatura for abaixo do ajustado. 8. Se a temperatura medida estiver entre o valor mximo e o valor mnimo, deve acender unicamente o indicador de Temperatura Normal e ficar assim enquanto a temperatura estiver entre os valores mnimo e mximo. 9. A temperatura medida pelo sensor LM35 ser apresentada nos leds do port D durante a operao normal do sistema. 10. Calcular os resistores do amplificador operacional.

Figura 9. Circuito eltrico para o exerccio do termostato com o LM35 e o PIC16F877A. 68

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto //******************************************************************************************************************* // Programa exemplo para o Termmetro com termostato // usando o CONVERSOR AD em 8 bits //******************************************************************************************************************* #include <16F877A.h>// configurar para o controlador a ser usado e o seu caminho #device ADC=8 // numero de bits do conversor AD - max de 10 bits e min de 8 bits #use delay(clock=4000000) // informa qual e a freqncia do cristal que esta sendo utilizado #fuses HS, NOWDT,PUT,NOBROWNOUT,NOLVP //******************************************************************************************************************* // rea de definies de pinos de Sada //******************************************************************************************************************* #define LED_Alta pin_B7 #define LED_Normal pin_B6 #define LED_Baixa pin_B5 //******************************************************************************************************************* // rea de definies de parmetros // canais de entrada usados: 0, 1 e 3 //******************************************************************************************************************* #define Sensor_Temperatura 0 #define Ajuste_Alta 1 #define Ajuste_Baixa 3 //******************************************************************************************************************* // rea de definies de pinos de Entrada Digitais //******************************************************************************************************************* #define Bt_Ajuste_Alta pin_b1 #define Bt_Ajuste_Baixa pin_b2 //******************************************************************************************************************* // rea de variveis globais //******************************************************************************************************************* int Temperatura; int LimiteTempAlta; int LimiteTempBaixa; //******************************************************************************************************************* // rea com a funo de tratamento da interrupo externa // Interrupo externa por borda de descida em rb0 //******************************************************************************************************************* #int_ext // esta diretiva indica ao compilador que a prxima funo // ser chamada quando houver uma interrupo externa em RB0 void Trata_RB0(void) { output_low(LED_Alta); output_low(LED_Normal); output_low(LED_Baixa); output_D(0); while(input(Bt_Ajuste_Baixa)); delay_ms(1000); output_high(LED_Baixa); 69

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto set_adc_channel(Ajuste_Baixa); // Seleciona o potencimetro de ajuste Mninmo delay_us(20);// aguarda o circuito interno do PIC se preparar para realizar a converso while(input(Bt_Ajuste_Baixa)) { LimiteTempBaixa = read_adc(); // realiza a leitura output_D(LimiteTempBaixa );// apresenta o valor Lido no port D delay_ms(10); } output_low(LED_Baixa); delay_ms(500); output_D(0); while(input(Bt_Ajuste_Alta)); delay_ms(1000); output_high(LED_Alta); set_adc_channel(Ajuste_Alta); // Seleciona o Potencimetro de ajuste de Mximo delay_us(20);// aguarda o circuito interno do PIC se preparar para realizar a converso while(input(Bt_Ajuste_Alta)) { LimiteTempAlta = read_adc();//Le o valor do Potencimetro de Mximo output_D(LimiteTempAlta );// apresenta o valor Lido no port D delay_ms(10); } output_low(LED_Alta); output_D(0); delay_ms(500); output_high(LED_Normal); delay_ms(500); output_low(LED_Normal); delay_ms(500); output_high(LED_Normal); delay_ms(500); output_low(LED_Normal); delay_ms(500); } //******************************************************************************************************************* // Programa principal //******************************************************************************************************************* void main() { Temperatura = 0; LimiteTempAlta = 0; LimiteTempBaixa = 0; setup_adc_ports(RA0_RA1_RA3_ANALOG); // PORT A0, A1e A3 Analgicas setup_adc(ADC_CLOCK_INTERNAL); // seleciona o clock interno para o conversor AD port_b_pullups(true); // ativa os resistores internos de pullup // no port B enable_interrupts(int_ext); ext_int_edge(H_TO_L); // habilita as interrupo externa // RB0 // configura a borda de sensibilidade // da interrupo: neste caso de alto para 70

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto // baixo enable_interrupts(global); // habilita as chave geral de // interrupes

while (true) { // seleciona a entrada analgica para o circuito do sensor de temperatura set_adc_channel(Sensor_Temperatura); // aguarda o circuito interno do PIC se preparar para realizar a converso delay_us(20); Temperatura = read_adc(); // realiza a leitura delay_ms(20); output_D(Temperatura); delay_ms(20); if(Temperatura<LimiteTempBaixa) { output_high(LED_Baixa); output_low(LED_Alta); output_low(LED_Normal); delay_ms(20); } else if((Temperatura>=LimiteTempBaixa)&(Temperatura<=LimiteTempAlta)) { output_high(LED_Normal); output_low(LED_Alta); output_low(LED_Baixa); delay_ms(20); } else if(Temperatura>LimiteTempAlta) { output_high(LED_Alta); output_low(LED_Baixa); output_low(LED_Normal); delay_ms(20); } }//while(true) }

71

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Projeto SOLUCATA
Sustentabilidade Oriunda do Lixo Utilizando Criatividade, Arte e Tecnologia Avanada Objetivos:
Aperfeioar a interpretao e o desenvolvimento de projetos; Desenvolver tcnicas para soluo de problemas de maneira simples e criativa; Implementao de dispositivos de hardware para leitura de sensores e acionamento de cargas: Motores, Cilindros, Vlvulas, etc...

Data final para apresentao da Proposta: 22/03/2010 Data final para Apresentao/Defesa: ___/___/_____ Desenvolvimento
Informaes necessrias: A ONG PENSE VERDE - REAPROVEITAR VIVER, solicitou a sua equipe o projeto de uma soluo com microcontroladores e sucata visando demonstrar que possvel desenvolver solues empregando o re-uso de recursos, materiais e equipamentos, o que caracteriza uma iniciativa de sustentabilidade, tendo em vista que o lixo tecnolgico vem crescendo assustadoramente. Durante a conversa com o cliente foram determinadas as informaes para o projeto: 1. As Equipes devero encontrar um problema e, por conseguinte sua soluo, realizando-a por intermdio de um dispositivo projetado (eletrnica, eltrica, mecnica, etc...); 2. Os materiais para montagem das maquetes dever ser atravs de sucatas; 3. A aquisio ser de responsabilidade de cada equipe, que poder ser composta por at 4 alunos; 4. Requisitos mnimos para cada projeto: 4 entradas em tenses diferentes de 5V; 2 sadas para acionamento de cargas em diferentes tenses; A sada pode ser o acionamento de um motor DC, em uma configurao de ponte H; Comunicao serial Informar os eventos ou permitir o controle em um microcomputador remoto;

5. As equipes devero apresentar suas propostas por escrito at a data: 22/03/2010; 6. A proposta dever conter uma breve descrio do problema e a soluo proposta por sua equipe, juntamente com o diagrama em bloco do sistema de controle; 7. Este projeto pode ser montado utilizando placa de circuito impresso, neste caso podero receber 20% como bnus. Fazer relatrio, um por equipe, em arquivo .pdf postado at a data limite estabelecida, com as seguintes caractersticas: 1 capa 2 Breve descrio do Problema. 3 Breve descrio da Soluo. 4 Diagrama em blocos. 5 Esquemtico no EAGLE. 6 fluxograma. 7 Desenhos mecnicos 8 - Concluso 72

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto 9 cdigo fonte comentado linha a linha. 10 Projeto completo gerado no MPLAB com as simulaes, postado no Eureka at data limite estabelecida.

73

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

AQUI SERO INSERIDOS OS NOVOS CAPTULOS DESTE SEMESTRE 1 SEMESTRE DE 2010

74

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

MATERIAIS DE APOIO

75

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Linguagem C para microcontroladores PIC


Comandos de Controles de Fluxo Grupo de comandos Seleo Iterao Desvio Expresses Blocos Comandos SELEO: If e switch (comando condicional) ITERAO: while,for, do while, (comandos de lao) SALTO ou DESVIO: Break, continue, goto, return RTULO: Case, default, label BLOCO: Simplesmente um bloco de cdigo geralmente compreendido por { e }

76

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto Comandos de Seleo: if else: Forma geral da sentena Exemplo: if(expresso) ; teste a ser realizado { // executa estes comandos se o teste resultar verdadeiro comando 1; comando 2; comando 3; } else { // executa estes comandos se o teste resultar falso comando A; comando B; comando C; } Cdigo de exemplo de uso para do comando if-else Comando K; if(A>B) { Comando 1; Comando 2; Comando 3; } else { Comando J; Comando T; Comando R; }

Fluxograma do cdigo de exemplo de uso do if-else 77

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto Comandos if else aninhados: Exemplo: if(i) { if(j) { comando 1; } if(k) { comando 2; } else { comando A; } } else { comando L; } Cdigo de exemplo de uso para do comando if-else-if-else Comando K; if(A>B) { Comando 1; Comando 2; Comando 3; } else { if(B>C) { Comando J; Comando R; } else Comando T; }

78

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto


Comando K

A>B? sim Comando 1 Comando 2 Comando 3

no

B>C? sim Comando J

no Comando T

Comando R

Fluxograma do cdigo de exemplo de uso do if-else-if-else Escada if-else-if Exemplo: if(expresso) { comando T; comando E; } else if(expresso) comando 2; else if(expresso) comando 8; else if(expresso) comando 2; Cdigo de exemplo de uso para do comando if-else-if-else Comando K; if(A>B) { Comando 1; Comando 2; Comando 3; } else { if(B>C) { Comando J; 79

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto Comando R; } else if(C>D) Comando T; }
Comando K

A>B? sim Comando 1 Comando 2 Comando 3

no

B>C? sim Comando J

no

no C>D? sim

Comando R

Comando T

Fluxograma do cdigo de exemplo de uso do if-else-if-else-if

80

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto Comandos de Seleo SWITCH Forma Geral da sentena Exemplo: switch(expresso) { case constante 1: seqncia de comandos; break; case constante 2: seqncia de comandos; break; case constante 3: seqncia de comandos; break; default: seqncia de comandos; break; } Cdigo de exemplo de uso para do comando switch switch(A) { case 1: Comando 1; Comando 2; Comando 3; break; case 2: Comando J; Comando R; break; case 3: Comando T; break; default: Comando default; break; }

81

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Fluxograma do cdigo de exemplo de uso do switch

Comandos de Iterao (Laos) Lao for forma geral da sentena for(inicializao; condio; incremento ou decremento) { seqncia de comandos; seqncia de comandos; seqncia de comandos; } Cdigo de exemplo de uso para do comando for for(Conta = 0; Conta<10; Conta++) { Comando 1; Comando 2; } Comando J; Comando R; Comando T;

82

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Fluxograma do cdigo de exemplo de uso do for Lao for infinito roda indefinidamente for( ; ; ) { executa os comandos indefinidamente; } Lao while forma geral da sentena while(condio) {//executa comandos enquanto condio verdadeira comandos; } Cdigo de exemplo de uso para do comando while Comando K; while(A>B) { Comando 1; Comando 2; } Comando J; Comando R; Comando T;

83

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Fluxograma do cdigo de exemplo de uso do while Lao while forma geral da sentena para lao infinito while(true)// ou pode ser while(1) {//executa comandos indefinidamente comandos; }

84

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto Comandos de Iterao (Laos) Lao do while forma geral da sentena do {//executa comandos enquanto condio verdadeira comandos; } while(condio); Cdigo de exemplo de uso para do comando do-while Comando K; do { Comando 1; Comando 2; }while(A>B); Comando J; Comando R; Comando T;

Fluxograma do cdigo de exemplo de uso do do-while

85

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto Comandos de Desvios return forma geral da sentena return(expresso); obs: pode existir a expresso ou no; Exemplo de possibilidades deste comando: return ; // no retorna nada return x; // retorna o contedo da varivel x return &x; //retorna o endereo da varivel x na memria Comandos de Desvios goto forma geral da sentena goto RTOLO; obs: RTULO: apelido para posio de retorno; Exemplo deste comando: cdigo; cdigo; ROTULO: cdigo; goto ROTULO; Comandos de Desvios break forma geral da sentena break; obs: caso o comando break seja encontrado dentro de um lao, o lao ser imediatamente terminado e o controle do programa retorna no comando seguinte ao lao; Exemplo deste comando: for( T = 0; T<100; T++) { printf(%d; T);// imprime em decimal o contedo de T if( T== 10) break; } comando 1; comando 2;

86

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto Comandos de Desvios continue forma geral da sentena continue; obs: fora que ocorra a prxima iterao, pulando qualquer cdigo intermedirio: Para laos while e do-while, o controle do programa passa imediatamente para o teste condicional; Para laos for, o comando continue, faz com que o teste condicional e a poro de teste do lao sejam realizados novamente. Palavras Reservadas auto, break, case, char const, continue, default do, double, else, enum, extern, float, for, goto if, int, long, register, return, return, short, signed struct, switch, typedef, union, unsigned, void volatile, while Tipos de Dados padro do Compilador CCS-C

Inicializando uma varivel no momento da declarao TIPO Nome da varivel = Valor da varivel; Tipo = (int, char, float, etc...) Nome = apelido da varivel sem acento Valor da varivel = valor de incio da varivel EXEMPLO: int Resultado = 0; // valor numrico 0 char Saida = 2; // caracter 2 87

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto Constantes Binrias, Octais e Hexadecimais 99 decimal 099 octal 0x99 hexadecimal 0b10011001 binria Operadores Aritmticos + Adio Subtrao * Multiplicao / Diviso % Resto da Diviso ++ Incremento -- Decremento Operadores Lgicos Relacionais = Atribuio > Maior < Menor == Igual != Diferente Operadores Lgicos e Booleanos && - AND operao AND entre variveis || - OR operao OR entre variveis ! NOT negao ou inverso Operadores Lgicos Bit a Bit & - AND | - OR ^ - XOR ~ - NOT Operadores de deslocamento >> - Deslocamento a direita << - Deslocamento a esquerda Operadores de Memria - Ponteiros & - endereo do operando * - Contedo do endereo apontado pelo operando

88

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto Funes Forma Geral TIPO_da_funo NOME _da_funo (parmetros) { Blocos de Comandos; } TIPO_da_funo: especifica o tipo de dado do resultado que ser devolvido para o local de chamada; NOME _da_funo: Apelido pelo qual ser conhecida a funo dentro do programa; Parmetros: Valores que sero passados para a funo. Passagem de Parmetros para a Funo long SOMA_A_e_B(int A,int B) { long Resultado; Resultado = A + B; return Resultado } Prottipos de Funo Declarao prvia - Informao prvia passada ao compilador antes de compor explicitamente a funo Exemplo: long SOMA_A_e_B(int A,int B); // prottipo - declarao prvia .void main() { . programa } // fim do programa long SOMA_A_e_B(int A,int B) // funo declarada { long Resultado; Resultado = A + B; return Resultado }

89

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Introduo a Microcontroladores
Microprocessador Necessita de outros componentes externos para operar (memria, elementos de entrada/sada...) Microcontrolador Possui diversos recursos residentes (memria de programa, de dados, conversores AD, mdulos de comunicao...)

Arquitetura CISC - Von-Neumann


CISC Conjunto Complexo de Instrues mais de 80 (por exemplo, os microcontroladores da Intel e da Motorola tm mais de cem instrues) Arquitetura Von-Neumann Barramento de Programa, dados e de endereos multiplexados

Arquitetura RISC Harvard


RISC Conjunto Reduzido de Instrues geralmente 35 Arquitetura Harvard Barramento de endereos e de dados separados PIC Arquitetura RISC - palavras de14 bits para cada instruo As Instrues so executadas em um nico ciclo, exceto no caso de saltos

Microcontroladores PIC 16F877A


Recursos Disponveis: 40 de pinos 14 bits no barramento de Instrues (programa) 35 Instrues 33 pinos de I/O 15 Interrupes Memria de Programa Tipo E2prom (EEprom) Flash Memria de Programa com capacidade de 8K words (pode ser escrita e lida pelo prprio cdigo interno) Memria EEprom (no voltil) de 256 bytes (256 posies de 8 bits cada) Memria RAM (voltil) de 368 bytes (368 posies de 8 bits cada) 3 TIMERS 2 x 8 bits e 1 16 bits Canais de Comunicaes seriais SPI, I2C e USART Conversor Analgico Digital (interno) de 8 bits ou 10 bits configurvel 8 entradas (canais) multiplexadas para o conversor AD interno 2 Mdulos de Capture/Compare (16 Bits) e PWM (10 bits) Programao In-Circuit (alta e baixa tenso) POWER-UP TIMER (POR) interno 90

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto BROWN-OUT-RESET (BOR) Interno WATCH DOG TIMER Co de Guarda Aplicao em Operao sob temperaturas Industriais e comerciais Baixo Consumo: < 2mA em 5V em 4 MHz 20A em 3,2V em 32KHz < 1 A em stand by

Microcontrolador PIC 16F877 - Microchip


Pinagem do Microcontrolador 16F876 verso de 28 pinos

Microcontrolador PIC 16F877 - Microchip


Pinagem do Microcontrolador 16F87x verso de 40 pinos

91

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Registradores
Registradores so conjuntos de flip-flops (posies de memria) operando de maneira sincronizada, que possuem a funo de armazenar e ou transferir um conjunto de bits, podendo estes ser de dados ou de configuraes das funes especiais do microcontrolador. Os registradores responsveis em conduzir os bits do barramento interno de dados aos pinos do microcontrolador e vice versa so conhecidos como PORT, ou seja, cada bit deste registrador recebe a designao de seu nome, por exemplo, PORT A bit 3 ser representado como sendo RA3. Em termos de sentido de operao (entrada ou sada), cada pino do microcontrolador pode ser configurado separadamente como sendo de entrada ou sada. Sempre que o microcontrolador energizado, todos os pinos assumem a configurao de pinos de entrada e sendo assim, o programa deve ajustar quais sero entradas e sadas em tempo de execuo. O registrador responsvel em definir se os pinos de um determinado PORT sero configurados com entrada ou sada conhecido como TRIS, e cada PORT possui seu o TRIS. Assim, para configurar o PORT B inteiro como sada, o registrador TRIS B deve ser ajustado. Para definir se um pino como entrada, basta colocar o bit do registrador TRIS do PORT onde este pino ser alocado em nvel lgico 1. Desta mesma forma, para defini-lo como sada o bit do registrador TRIS dever ser colocado em nvel lgico 0. Deve-se estar atento, pois alguns microcontroladores no permitem que alguns dos pinos sejam configurados como entrada ou sada, sendo que a melhor opo a pesquisa nas tabelas de dados do fabricante que informam o sentido dos pinos.

92

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Estrutura do Microcontrolador PIC16F876


Mdulos internos do PIC16F876

93

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Estrutura do Microcontrolador PIC16F877


Mdulos internos do PIC16F877

Oscilador
O oscilador responsvel em gerar a cadncia de execuo das instrues do microcontrolador. O sinal gerado pelo circuito gerador de clock entregue aos blocos internos como sendo: Fosc/4. Podemos ter 4 tipos de modos de oscilador no PIC16F877: LP cristal de baixo consumo XT cristal ou ressonador HS Cristal ou ressonador de alta velocidade alta freqncia RC resistor e capacitor

94

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Mapa da Memria de Programa e Pilha


13 bits para PC Contador de Programa Capacidade de endereamento de 8K Words de 14 bits de memria de programa 8 nveis de Pilha Vetor de Reset 0000H Vetor de Interrupo 0004H Organizao da memria em forma de pginas 4 Bancos

95

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Mapa de Registradores e Memria


Registradores e suas posies de memria

96

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Vetores - Reset e Interrupo


Vetor de Reset: Posio da memria onde se inicia a execuo do programa de operao do microcontrolador. Vetor de Interrupo: Posio da memria para onde desviada a execuo do programa do microcontrolador.

Interrupo e Pilha
Interrupo: Evento que desvia o fluxo normal de execuo do programa para outra rea de memria de programa onde ir executar outro cdigo. Pilha: Posies de memria onde se pode armazenar o endereo de retorno de uma interrupo ou dado utilizado durante um procedimento. Exemplo: uso da Pilha em uma interrupo 1 Ao existir um pedido de interrupo vlido, armazenado o endereo da prxima instruo contido no PC na pilha 2 O PC recebe o endereo do vetor de interrupo, e ento o fluxo de programa desviado para o tratamento deste pedido 3 Ao trmino da execuo do cdigo de tratamento da interrupo, o PC retira o valor armazenado na Pilha retornando ao ponto onde parou antes da chamada de interrupo.

Funes Especiais da CPU


Watchdog WDT Co de Guarda Permite a superviso da execuo do programa Oscillator Start-up Timer OST Timer implementado em hardware que mantm a CPU resetada at a estabilizao do oscilador Power On Reset POR aguarda 72 ms (fixo) com a CPU resetada antes de liberar o reset para auxiliar no momento da estabilizao da alimentao Brown-out Reset BOR Reseta a CPU se a tenso de alimentao cair a baixo da Tenso VBOR durante um tempo maior que TBOR

97

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Microcontrolador PIC 12F675 Microchip CPU RISC de alta performance


Introduo ao Microcontrolador PIC 12F675 Recursos Disponveis: 8 pinos 14 bits no barramento de Instrues(programa) 35 Instrues 6 pinos de I/O 7 Interrupes Memria de Programa Tipo E2prom (EEprom) Flash Memria de Programa com capacidade de 1024 words (pode ser escrita e lida pelo prprio cdigo interno) Memria EEprom (no voltil) de 128 bytes (128 posies de 8 bits cada) Memria RAM (voltil) de 64 bytes (64 posies de 8 bits cada) 2 - TIMERS 1 x 8 bits e 1 16 bits 1 - Comparador analgico Conversor Analgico Digital (interno) de 8 bits ou 10 bits configurvel 4 entradas (canais) multiplexadas para o conversor AD interno Programao In-Circuit (alta e baixa tenso) Habilitao de Pull ups individuais Pino de MCLR multiplexado input ou reset Oscilador Interno de 4MHz 8 Nveis de Pilha POWER-UP TIMER (PWRT) OSCILATOR START-UP TIMER (OST) LOW POWER-ON-RESET (POR) BROWN-OUT-DETECT (BOD) WATCHDOG TIMER Co de Guarda Proteo de cdigo Programvel Baixo Consumo: Tenso de operao: 2,0V 5,0V Execuo de instrues a 200ns com cristal de 20MHz Aplicao em Operao sob temperaturas Industriais e comerciais 1 nA em standby 8,5uA em 32KHz e 2,0V 100uA em 1MHz e 2,0V Watchdog timer: 300nA em 2,0V Timer 1: 4 uA em 32KHz e 2,0V

Pinagem do Microcontrolador PIC 12F675: GPIO General Purpose I/O pinos de uso geral I/O GP0, GP1, GP2,GP4 e GP5 (pinos bidirecionais) podem ser utilizados como entradas e ou sadas digitais I GP3 pode ser usado como entrada ou como pino de reset externo GP0 (AN0), GP1 (AN1), GP2 (AN2) e GP4 (AN3) podem ser configurados para funcionar como entradas analgicas

Pinagem do microcontrolador PIC12F675 98

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto Acessar os pinos utilizando o compilador da CCS: Os GPIOs so acessados como pin_ax ou seja: GP0 pin_a0 GP1 pin_a1 GP2 pin_a2 interrupo externa GP3 pin_a3 entrada de sinal de reset MCLR/ Mster Clear Reset ativado quando em 0 GP4 pin_a4 clkin conexo com o cristal externo GP5 pin_a5 clkout conexo com o cristal externo Configurao dos FUSES para utilizar todos os pinos do microcontrolador para I/O: O PIC12F675 pode operar com os pinos de entrada de clock GP4 e GP5 como pinos de entrada ou de sada, e o pino de entrada de reset GP3 (MCLR/) como entrada, maximizando assim sua capacidade de acionamento e leitura. Porm, essas funcionalidades extras devem ser habilitadas atravs do ajuste de alguns modos no registrador SFR registrador de funes especiais do microcontrolador que no caso da utilizao do compilador da CCS realizado atravs da diretiva #FUSES. Modos e funes: INTRC_IO: Habilita o oscilador interno de 4MHz e os pinos usados pelo cristal como entrada ou sada. NOMCLR: Habilita o pino GP3 a operar como entrada, e coloca o sinal de reset sempre em nvel lgico 1; Exemplo de configurao dos fuses para as seguintes opes: - Oscilador interno, Sinal de reset interno, temporizador de energizao ativo, supervisor co-deguarda desligado, reset por nvel de tenso desligado, proteo de cdigo desligada;

#fuses INTRC_IO,NOMCLR,NOWDT,PUT,NOBROWNOUT,NOPROTECT
Dicas de utilizao do microcontrolador PIC12F675: 1. Se estiver utilizando este microcontrolador pela primeira vez, realize uma explorao bsica em seu datasheet; 2. Crie projetos simples para explorar os recursos de entrada e sada digitais, como por exemplo, um boto de entrada e um led de sada realizando uma funo liga desliga com o led; 3. Realize um projeto avaliando agora as entradas analgicas, onde ao variar o potencimetro, trs leds acendam conforme o nvel de tenso convertido (alta, normal e baixa); 4. Acione o oscilador interno e procure utilizar todos os pinos do microcontrolador em um projeto simples, onde ao apertar um boto conectado ao pino GPIO3 os leds ligados aos pinos restantes sejam ligados em seqncia.

99

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Circuito da Ponte H com Rels

Teste da ponte H sem motor: A ponte H pode ser testada em qualquer tenso (VCC), desde que no se utilize o motor. Para simular o funcionamento do motor e testar o sentido da corrente eltrica alimente a ponte com uma tenso VCC de 5V ou 12V e conecte o circuito com os dois leds da figura a seguir no lugar do motor. Acionando somente o rel K1, o led D1 dever acender o que simularia o motor Rdano em um dos sentidos. Ao acionar somente o rel K2, o led D2 dever acender, o que representa o giro do motor para o sentido contrrio. No caso dos dois rels estarem desligados ou ligados ao mesmo tempo, nenhum led dever acender. Este procedimento ira fazer o motor ser freado, pois suas bobinas ficaro em curto. OBS: Lembre de dimensionar o resistor R1 para uma corrente de no mximo 15mA para os leds, independente da tenso.

Circuito de teste da Ponte H com Rels sem motor somente com Leds

Conector do sensor SADA PNP dos sensores para conexo no protoboard Obs1: lembre que este tipo de sada fornece s nvel lgico 1 ou seja VCC

100

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Configurando o TIMER 2 para gerar o Perodo do PWM no PIC 16F877A


O Microcontrolador PIC possui 2 canais de PWM que podem operar com resoluo mxima de 1024 pontos, ou seja, o ciclo ativo pode ser configurado com at 10 bits, e possibilitar de 0 100% de variao. Conforme a freqncia escolhida para a operao, esta resoluo pode ser alterada para menos de 10 bits. Para definir o perodo do PWM, devemos ajustar o TIMER 2, que um contador de 8 bits, ou seja, pode realizar uma contagem de 0 at 255. A figura 1 apresenta o diagrama em blocos do TIMER 2.

Figura 1. Diagrama interno do TIMER 2. Este TIMER possui uma diferena bastante interessante, sua contagem no segue de 0 at o valor de 255, e sim de 0 at o valor que estiver armazenado no registrador PR2, ou seja, o limite de contagem ser exatamente o que estiver armazenado no registrador PR2.

Toda vez que o valor do registrador TMR2 for igual ao valor do PR2, o contador ser resetado e o registrador POSTSCALER incrementado.
O sinal de incremento do TMR2 entregue pelo PRESCALER. Este registrador/contador nada mais que um divisor de CLOCK (freqncias) que pode ser configurado como sendo: 1:1 divide o sinal de clock por 1, ou seja, o sinal (Fosc/4) responsvel pelo incremento do TMR2 1:4 divide o sinal de clock por 4, ou seja, so necessrios 4 ciclos completos do sinal (Fosc/4) para que ocorra um incremento do TMR2; 1:16 divide o sinal de clock por 16, ou seja, so necessrios 16 ciclos completos do sinal (Fosc/4) para que ocorra um incremento do TMR2. O POSTSCALER um contador de estouros do TIMER 2, ou seja, toda vez que a contagem do TIMER 2 chegar ao fim, ocorrer o incremento do POSTSCALER. O valor do POSTSCALER pode ser escolhido entre 1 e 16. A interrupo ser gerada sempre que o valor escolhido para o POSTSCALER for alcanado. Tanto o POSTSCALER quanto o PRESCALER so zerados quando ocorre uma das seguintes operaes: Operaes de escrita envolvendo o TMR2; Operao de escrita envolvendo o T2CON; Qualquer tipo de reset do PIC; O TIMER 2 zerado somente em algum tipo de reset, o que o difere dos outros TIMERS. Para calcular os valores de configurao do MDULO PWM, deve-se determinar os valores do PRESCALER e do POSTSCALER. Utilizando o Exemplo a seguir:

101

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto Calcular um PWM com freqncia de 78,125KHz, com um PIC rodando com um cristal de 20 MHz e o PRESCALER em 1:1. PERIODO = (PR2+1)*4*(1/xtal)*PRESCALER (1/78,125KHz) = (PR2+1)*4*(1/20MHz)*1 12,8us = (PR2+1)*4*50ns*1 PR2 = 63. Utilizando agora a diretiva (funo) em C para configurar o TIMER 2: SINTAXE: setup_timer2(modo,per,ps) MODO: varivel ou constante de 8 bits; Opes para o MODO: T2_DISABLE: desliga o TIMER 2; T2_DIV_BY_1: TIMER 2 habilitado com o PRESCALER 1:1; T2_DIV_BY_4: TIMER 2 habilitado com o PRESCALER 1:4; T2_DIV_BY_16: TIMER 2 habilitado com o PRESCALER 1:16; Parmetro: PER: corresponde ao registrador PR2, especifica o mximo valor de contagem do TIMER 2. Parmetro: PS: corresponde ao registrador POSTSCALER, e seu valor pode variar de 1 at 16. A resoluo define qual o valor mximo em bits que pode ser utlizado para uma configurao de TIMER. Para calcular os valores de configurao do PWM utilizamos o seguinte calculo: TPWM = (2PWM RESOLUO )*(1/xtal)*PRESCALER (1/78,125KHz) = (2PWM RESOLUO )*(1/20MHz)*1 12,8us = (2PWM RESOLUO)*50ns*1 (2PWM RESOLUO) = 256 PWM RESOLUO * LOG(2) = LOG(256) PWM RESOLUO = 8 bits *** todo este contedo desta pequena descrio do mdulo do TIMER 2 foi resumido a partir de duas bibliografias: CONECATANDO O PIC RECURSOS AVANADOS Autor: David de Souza - 1 edio Editora rica PROGRAMAO EM C MICROCONTROLADOR PIC Autor Fbio Pereira - 1 edio Editora rica

102

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Fluxogramas elementos bsicos

Exemplo de elementos de Fluxogramas SIMBOLOGIA DA CADA CHAVE DIGITAL

103

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto CONJUNTO DE CHAVES DIGITAIS COM 4 BOTES

DIAGRAMA ELTRICO DOS BOTES

Equipamentos: PROTOBOARD Conexes eltricas internas da Matriz de contatos, PROTOBOARD.

104

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Sadas Totem-Pole de circuitos integrados TTL


Atua normalmente como uma fornecedora de corrente, fornece os nveis Lgicos 1 e 0

Sadas Open Coletor


So recomendadas para acionamento de cargas em tenses diferentes das de controle TTL, e somente fornece o nvel lgico 0.

105

Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto

Tabela de valores de resistores comerciais: 1.0 1.5 2.2 3.3 4.7 6.8 1.1 1.6 2.4 3.6 5.1 7.5 1.2 1.8 2.7 3.9 5.6 8.2 1.3 2.0 3.0 4.3 6.2 9.1

Outros valores podem se encontrados a partir da multiplicao destes valores base por 10, 100, 1000, 10000, 100000 e 1000000 (com resultado mximo para 10 M)

106

ELETRNICA APLICADA
Tcnicas de Interfaceamento & Sistemas Microcontrolados
Captulo de Entradas Digitais Reviso 1 semestre 2010

Marcelo do C.C. Gaiotto

Eletrnica Aplicada Sistemas Microcontrolados Verso 1 Marcelo do C.C. Gaiotto

Tcnicas de Interfaceamento Digital Entradas no isoladas

Eletrnica Aplicada Sistemas Microcontrolados Verso 1 Marcelo do C.C. Gaiotto

Entradas no isoladas com Circuito Divisor Resistivo


Sistemas Digitais so muito suscetveis a rudos, interferncias eletromagnticas, faiscamento de contatos eltricos, e at mesmo a comutao de outros circuitos eletrnicos digitais interligados a uma mesma fonte de alimentao. A conexo de dispositivos a entradas digitais de portas lgicas, microcontroladores, microprocessadores, FPGAs, deve ser realizada com a mxima ateno e cuidado, pois estes componentes so muito sensveis. O ideal nestes casos sempre proteger ou isolar as etapas ou mdulos de entrada. Uma forma bastante simples de se proteger uma entrada utilizando um divisor resistivo, como o apresentado na figura 1.

Figura 1. Divisor Resistivo. Para calcular o divisor resistivo necessita-se de algumas informaes que so muito importantes: Tenso de entrada (Vin) mxima e mnima do circuito divisor resistivo; Tenso de sada (Vout) mxima e mnima do circuito divisor; Corrente mxima (Iin) que pode ser fornecida pelo sinal Vin para a malha de entrada do circuito divisor Para facilitar o entendimento deste mtodo, considere o seguinte exemplo: Um sensor indutivo alimentado em 24V, com sada PNP, fornece em sua sada uma tenso mnima de 21V e mxima de 23,3V, com corrente de sada de at 100mA, e deve ser conectado a um circuito com entrada TTL padro. Desenvolver um circuito utilizando um divisor resistivo para realizar o condicionamento dos nveis de tenso, considerando uma corrente fornecida pelo sensor de 10mA como Iin. Com os dados do sensor e do circuito ao qual ser conectado, pode se dar incio a construo da frmula para calcula os valores dos componentes 3

Eletrnica Aplicada Sistemas Microcontrolados Verso 1 Marcelo do C.C. Gaiotto que sero utilizados. Lembrando que a lei de Kirchhoff para as malhas diz que a soma das tenses em uma malha fechada igual zero, ento temos:

Iin * R1+ Iin * R2 Vin = 0


Para facilitar ainda mais os clculos, a corrente drenada pela carga TTL (circuito que ser conectado a sada do divisor) seja desprezvel. Com isso o procedimento de calculo fica bastante simples, j que a tenso de sada Vout ser igual tenso sobre o resistor R2:

Vout = Iin * R2
O calculo do resistor R1 deve ser realizado considerando o valor mximo de entrada e o mximo de sada e a corrente escolhida para a malha de entrada.

R1 =

(VinMax VoutMax) Iin


(23,3 5) = 1,83K -3 10 * 10

R1 =

Repare que o valor encontrado para R1 no comercial, ento devemos considerar um novo clculo de corrente com valores mais prximos dos comerciais, como por exemplo, para um resistor de 1,8K. Para este novo valor de resistncia, teremos uma corrente para R1 de 10,17mA. Levando em considerao esta nova informao, pode-se calcular agora o valor do resistor R2:

R2 =

VoutMax IR1calc

R2 =

5 10,17 * 10- 3

= 491,64

Mais uma vez foi encontrado um valor de resistncia que no comercial, o que acarreta em uma nova avaliao dos clculos, a fim de melhorar a relao entre as resistncias. Um valor mais prximo para a resistncia R2 seria de 470, mas este provocar uma mudana na resistncia total da malha, que alterar a corrente e as tenses do divisor. Refazendo ento os clculos para estes novos resistores e corrente temos:

Iin =

VinMax 23,3 = = 10,26mA R1+ R2 1,8K + 470

VR1 = 10,26 * 10-3 * 1,8K = 18,47V


4

Eletrnica Aplicada Sistemas Microcontrolados Verso 1 Marcelo do C.C. Gaiotto

VR2 = 10,26 * 10-3 * 470 = 4,82V


Repetindo os clculos anteriores para os valores mnimos de entrada, pode-se prever o comportamento do circuito.

Iin =

VinMin 21 = = 9,25mA R1+ R2 1,8K + 470

VR1 = 9,25 * 10-3 * 1,8K = 16,65V VR2 = 9,25 * 10-3 * 470 = 4,35V
Pode-se perceber que as tenses no se alteraram muito para as adaptaes para valores comerciais de resistncia, mas deve-se ficar atento s variaes da tenso de entrada, pois este mtodo no protege o circuito conectado na sada, somente abaixa o nvel de tenso. Outro ponto importante que para os valores mnimos de entrada, o novo valor de corrente para o conjunto no altera significativamente a tenso de sada, podendo garantir um valor mnimo de acima de 2V, o que permite a deteco dos nveis lgicos TTL. Esta tcnica resolve a adaptao de nvel, mas encontramos outros problemas, como por exemplo, uma variao grande da tenso entregue pelo sensor que est sendo utilizado ser propagada pelo circuito, o que provocaria uma alterao proporcional na tenso de sada.

Eletrnica Aplicada Sistemas Microcontrolados Verso 1 Marcelo do C.C. Gaiotto

Entradas no isoladas Proteo com diodo de sinal


Nesta opo de circuito de interfaceamento, oferecemos uma proteo muito melhor para o circuito de controle (lgica combinacional, FPGAs, microcontroladores, entre outros) que ser conectado ao sensor em questo. O funcionamento deste circuito adaptador que apresentado na figura 2 muito simples, partindo do princpio de operao dos diodos semicondutores.

Figura 2. Circuito com diodo de sinal. Quando o sinal de entrada Vin for maior ou igual a tenso de alimentao do circuito adaptador Vadp, o diodo D1 reversamente polarizado, ou seja, opera como chave aberta, impedindo que a tenso entregue pelo sensor seja enviada ao circuito de controle. A funo do resistor R1 de levantar (pull up) o nvel de tenso da sada do adaptador, fazendo com que o sinal Vout seja aproximadamente Vadp, que representa o nvel lgico 1. Quando houver uma comutao do sinal de entrada Vin para 0V, o diodo D1 entrar em conduo operando como se fosse uma chave fechada, deixando a tenso de sada Vout em aproximadamente Vj (tenso de joelho do diodo utilizado), que normalmente 0,7V, que representa o nvel lgico 0. Para exemplificar melhor a aplicao desta tcnica, considere o seguinte exemplo: Um sensor de nvel do tipo bia alimentado em 24V, com sada que fornece 24V e pode comutar uma corrente de at 500mA em sua sada. Um circuito de controle lgico baseado em FPGA foi projetado para controlar o acionamento do sistema de bombas ligadas a este reservatrio, onde ser instalado este sensor. Desenvolver um circuito utilizando a tcnica de adaptador com diodo de proteo para condicionar os nveis lgicos de tenso, considerando que todo o circuito de controle ser alimentado em 5V.

Eletrnica Aplicada Sistemas Microcontrolados Verso 1 Marcelo do C.C. Gaiotto O clculo deste circuito adaptador muito simples, podemos seguir uma seqncia bem direta para os mesmos. Primeiro definimos qual ser a corrente Iadp que ser utilizada quando o diodo D1 estiver polarizado diretamente (neste nosso exemplo 1mA), em seguida realizaremos o clculo para a malha apresentada na figura 3 na situao de comutao do sensor:

Figura 3. Sinal de entrada em 0.

R1 =

Vadp - Vj 5 - 0,7 = = 4K7 -3 Iadp 1* 10

O problema que este tipo de soluo apresenta quanto aos valores de tenso entregues pelos dispositivos sensores utilizados. Se o sinal Vin for muito menor que Vadp, o circuito poder no funcionar de maneira correta, pois o diodo estar sempre polarizado diretamente, e Vout pode no representar um nvel lgico 1, mas poder apresentar o nvel lgico 0. Em casos de dvida, isso facilmente detectado se for realizado o mesmo clculo previamente.

Eletrnica Aplicada Sistemas Microcontrolados Verso 1 Marcelo do C.C. Gaiotto

Entradas no isoladas Proteo com diodo zener


Da mesma maneira que o circuito com o diodo de sinal, a inteno proteger a etapa de controle que estiver conectado a sua sada. Este circuito permite que os sistemas de controle possam se conectados a sinais de diferentes tenses de uma maneira mais correta e mais segura. A figura 4 apresenta o diagrama eltrico do circuito adaptador de nvel.

Figura 4. Circuito com entrada protegida por diodo zener. Assim como o circuito com o diodo de sinal, este tambm se baseia em um dispositivo semicondutor, o diodo zener. Sua operao muito similar ao diodo retificador, diferindo apenas quando polarizado reversamente, quando apresenta sobre seus terminais a tenso zener. Para calcular o valor dos componentes necessitamos de algumas informaes importantes: Tenso e corrente que sero fornecidos pelo dispositivo sensor; Tenso mxima de entrada possvel; Tenso de sada mxima para a tenso mxima de entrada; Tenso nominal de operao para a entrada e sada; Corrente nominal de operao do diodo zener;

Antes de iniciar os clculos dos componentes do circuito adaptador, de grande importncia que se entenda sua operao no conjunto. A resistncia R1 possui a finalidade de limitar a corrente que ser fornecida ao resto do circuito, e a tenso sobre R1 ser diferena da tenso de entrada e a tenso zener. Assim dependendo da corrente de operao deve-se procurar utilizar resistores de potncia. No caso do diodo zener, sua finalidade de realizar a regulao da tenso entregue pelo sensor. Ento, se um sensor entrega 24V e a tenso zener for de 4,7V, a sada dever permanecer em aproximadamente neste

Eletrnica Aplicada Sistemas Microcontrolados Verso 1 Marcelo do C.C. Gaiotto valor para uma grande faixa de tenso de entrada. Assim uma variao pode ser permitida no sinal de entrada deste circuito adaptador. J o resistor R2, resistncia de carga, possui a nica finalidade de fornecer o nvel lgico 0 para a sada Vout quando no houver sinal de entrada (tambm conhecido como resistor de pull down). Considere o seguinte exemplo: Um sensor capacitivo alimentado em 24V, utilizado em uma mquina que envasamento de gua sanitria, onde identifica garrafas. As especificaes do sensor a ser utilizado so: Faixa de tenso de alimentao do sensor: 9V 36V/20mA Tenso de sada: Tenso de alimentao 5% = 34,2V Sada PNP; Corrente de sada para carga: at 500mA o nvel de produto colocado no recipiente. Um sistema microcontrolado gerencia a abertura da vlvula que libera o produto para as

O procedimento para o projeto deste adaptador pode ser simplificado minimizando assim os clculos, simplesmente avaliando bem as informaes disponveis. Como o circuito de controle opera em nveis TTL, ento nosso adaptador deve apresentar como tenso de sada Vout mxima, 5V. Ento, a escolha do diodo zener deve ser amarrada justamente a este valor, a tenso mxima de sada Vout. Nos valores comerciais de diodos zener encontra-se tenses de 4,7V e 5,1V, ou seja, para que o circuito adaptador opere com segurana ser utilizado o de menor valor, pois o de maior ira operar acima do limite permitido. Com o diodo escolhido, a prxima etapa determinar a corrente que ser utilizada para a malha de entrada, que de maneira simplificada poder ser a prpria corrente do zener. A figura 5 apresenta a malha de entrada.

Figura 5. Corrente de polarizao reversa do diodo zener.

Eletrnica Aplicada Sistemas Microcontrolados Verso 1 Marcelo do C.C. Gaiotto Este valor pode ser encontrado de algumas maneiras, como por exemplo, determinado atravs das informaes encontradas nas folhas de dados dos fabricantes para a corrente nominal de operao, ou ainda levando em considerao a potncia dissipada pelos componentes desta malha.

Iin = IDz + IR2 Vout = VDz = 4,7V


Como a funo do resistor R2 de simplesmente fornecer o nvel lgico 0 quando no houver sinal na entrada deste circuito adaptador, pode-se escolher um valor razoavelmente alto, para este exemplo ser considerando um valor de 10K, e ento:

IR2 =

VDz 4,7 = = 470uA R2 10 * 103

Assim, podemos tornar como uma regra de simplificao de projeto que a corrente que circular sobre este resistor R2 seja de 10 a 20 vezes menor que a corrente do diodo zener. Mas por outro lado, pode-se facilitar ainda mais este procedimento, simplesmente escolhendo valores comerciais de resistncia de 4K7 15K. Continuando com os clculos, a prxima etapa avaliar a resistncia R1. Como a corrente do zener IDz que ser utilizada para estes clculos ser de 10mA, tem-se:

R1 =

Vsensor - VDz 36V 5% - 4,7V 29,5 = = = 2,95K 3 3 IDz 10 * 10 10 * 10

Como a resistncia encontrada no comercial, devem ser avaliados ento os dois valores, superior e inferior mais prximo. Neste caso sero resistores de 2K7 e 3K3. Clculo com resistor de 2k7:

IR1 =

Vsensor - VDz 29,5V = = 10,09mA R1 2K7 Vsensor - VDz 29,5V = = 8,85mA R1 3K3

Clculo com o resistor de 3K3:

IR1 =

10

Eletrnica Aplicada Sistemas Microcontrolados Verso 1 Marcelo do C.C. Gaiotto Com a resistncia de 3K3, tem-se uma reduo da tenso de polarizao do diodo zener em 1,15mA, o que pode interferir no funcionamento do circuito. J com a utilizao da resistncia de 2K7, o aumento da corrente em 90A provocar uma alterao muito pequena na polarizao do diodo zener, fazendo com que sua tenso nominal aumente um pouco, mas no significativamente, pois o valor do zener escolhido de 4,7V, 0,3V menor que a tenso do nvel lgico 1.

11

Eletrnica Aplicada Sistemas Microcontrolados Verso 1 Marcelo do C.C. Gaiotto

Tcnicas de Interfaceamento Digital Entradas isoladas

12

Eletrnica Aplicada Sistemas Microcontrolados Verso 1 Marcelo do C.C. Gaiotto As entradas dos sistemas digitais podem ser isoladas de diversas formas, a fim de aumentar a imunidade a rudos, operao em ambientes com alto campo eltrico e ou magntico, sobre tudo a integridade dos dispositivos eletrnicos e dos seres humanos envolvidos. Algumas tcnicas de isolao podem ser relacionadas: Isolao ptica: acopladores pticos, LDR, Foto diodos, foto transistores; Isolao Magntica: transformadores; Magnetomecnicos: rel, reed switch, bobinas;

Cada opo possui suas caractersticas, tais como: Isolao eltrica; Velocidade de comutao; Imunidade a rudos eletromagnticos; Tenses de operaes; Aplicaes;

Entradas Digitais Isoladas Isolao ptica


Um dispositivo dito acoplador ptico consiste em um elemento emissor de luz e outro fotossensvel, podendo estar em mesmo invlucro ou no. O princpio bsico de funcionamento a alterao das caractersticas condutivas do elemento receptor quando este bombardeado por um feixe de ftons (iluminado). Quando isso ocorre, sua conduo na maioria das vezes aumenta, fazendo com que circule mais corrente pelo seu corpo. No caso deste feixe ser interrompido, as caractersticas construtivas faro com que a condutividade diminua, reduzindo a corrente que estava circulando a valores praticamente nulos. Em termos de velocidade de comutao, possui uma resposta que varia muito conforme o modelo e a aplicao, mas em geral muito rpido. Considerando-se a isolao eltrica, uma das melhores maneiras de se acoplar etapas, seja de medidas, dados ou de potncia.

13

Eletrnica Aplicada Sistemas Microcontrolados Verso 1 Marcelo do C.C. Gaiotto J em termos de aplicaes, podem ser encontradas em diversos campos da eletrnica e eletricidade, desde a construo de sensores industriais at a utilizao em sistemas de udio. O primeiro circuito que ser analisado consiste em acionar o led emissor do acoplador ptico atravs de um sinal de comutao de um sensor de sada NPN. Toda vez que o sensor colocar sua sada em 0, tem-se uma corrente circulando pelo resistor R1 polarizando o led emissor do acoplador. Os ftons emitidos pelo led emissor excitam a base do foto-transistor que polarizada, fazendo com que entre em saturao. No exemplo da figura 6, cada vez que foto-transistor polarizado, a tenso entre coletor e emissor aproximadamente 0, ou seja, toda vez que o sinal do sensor for 0 a sada TTL ser 0 tambm, tendo uma relao direta dos nveis lgicos.

Figura 6. Sensor NPN e acoplamento tico com sada e resistor de pull up. Quando o sinal do sensor deixa de ser aplicado, a corrente de polarizao do led emissor se extingue, fazendo com que ele deixe de emitir os ftons e por conseguinte, a excitao da base do foto-transistor. No instante que o transistor deixa de ser polarizado ele entra em corte, fazendo com que a corrente de coletor seja aproximadamente 0 e a tenso entre coletor e emissor seja a tenso aplicada em sua malha de sada, que na figura 6 de 5V. Na figura 7, o sinal que ir polarizar o emissor ser enviado de um sensor com sada PNP, ou seja, o princpio de funcionamento ser o mesmo, diferindo que desta vez enviar um nvel de tenso, fazendo com que circule uma corrente de polarizao no led emissor do acoplador ptico. Pode-se dizer

14

Eletrnica Aplicada Sistemas Microcontrolados Verso 1 Marcelo do C.C. Gaiotto de maneira simplificada que ser fornecido um nvel lgico alto a entrada do circuito de acoplamento e em sua sada tem-se um nvel baixo no padro TTL. Nesta configurao tem-se uma inverso dos nveis lgicos.

Figura 7. Sensor PNP e acoplamento tico com sada e resistor de pull up. Dependendo da aplicao pode-se alterar a forma construtiva da malha de sada do foto-transistor, fazendo com que quando for polarizado (saturado), aplique a tenso que est presente no coletor em seu emissor. No exemplo da figura 8, a tenso de 5V ser disponibilizada em seu emissor assim que o sinal do sensor for aplicado ao led emissor, caracterizando um nvel lgico 1 TTL. Assim que o sinal for retirado, o foto-transistor entrar em corte, e o resistor R2 se encarregar de colocar o sinal TTL de sada em nvel lgico 0. Neste exemplo, o sinal do sensor ter seu equivalente lgico na sada, ou seja, nvel lgico 1.

Figura 8. Sensor PNP e acoplador ptico com sada e resistor de pull down. No exemplo da figura 9, o princpio de funcionamento do circuito basicamente o mesmo, porm no caso de se utilizar um sinal de sensor NPN para acionamento do led emissor, a resposta lgica do circuito de acoplamento ser invertida, ou seja, quando o sensor enviar um nvel lgico 0, a sada do 15

Eletrnica Aplicada Sistemas Microcontrolados Verso 1 Marcelo do C.C. Gaiotto acoplador ser 1, e quando a entrada receber um sinal 1 do sensor, sua sada apresentar o nvel lgico 0.

Figura 9. Sensor NPN e acoplador ptico com sada e resistor de pull

down.

16

Eletrnica Aplicada Sistemas Microcontrolados Verso 1 Marcelo do C.C. Gaiotto

Tcnicas de Interfaceamento Digital Sadas no isoladas

17

Eletrnica Aplicada Sistemas Microcontrolados Verso 1 Marcelo do C.C. Gaiotto Normalmente, todo sistema de controle eletrnico no possui uma corrente de sada suficiente para acionar uma carga de grande potncia, onde geralmente fica em torno de 25mA a corrente mxima que consegue fornecer a carga conectada diretamente a ela. Na grande maioria das vezes, acionar elementos atuadores como vlvulas, contatores, solenides, motores, rels entre outros, necessita que sejam controladas grandes correntes. Nos exemplos que sero avaliados a seguir, pretende-se desenvolver e avaliar algumas tcnicas de interface entre blocos de controle e seus drivers de acionamento, levando-se em considerao a facilidade de compreenso de seus funcionamentos, utilizando o mnimo de clculos possvel.

Sadas no isoladas Sem Proteo


O primeiro circuito que ser avaliado apresentado na figura 10, onde um transistor deve funcionar como chave (corte e saturao) acionando um rel alimentado em 12V e com corrente mxima de acionamento de 30mA. O transistor conectado diretamente a um microcontrolador utilizando apenas um resistor limitador de corrente na base. Este circuito dito como no isolado pelo fato de que o microcontrolador est conectado diretamente ao driver (transistor) de acionamento e com a mesma referncia de GND. Outro ponto bastante importante a ser considerado que este tipo de circuito no possui proteo da sada do dispositivo de controle (microcontrolador ou circuito lgico), ou seja, caso o transistor apresente problema, pode afetar diretamente o dispositivo.

Figura 10. Sada no isolada e sem proteo.

18

Eletrnica Aplicada Sistemas Microcontrolados Verso 1 Marcelo do C.C. Gaiotto Para iniciar o procedimento de clculo, necessitasse de dados bsicos: Tenso do rel = 12V; Corrente de acionamento do rel = 30mA; Tenso de sada do microcontrolador = 5V; Corrente mxima de sada do microcontrolador = 20mA; Ganho do transistor = 90 900 (Exemplo: BC548, BC337...NPN de uso geral). Para se calcular o resistor limitador de corrente da base do transistor, basta avaliar o circuito considerando como duas malhas, uma de entrada e outra de sada. Na figura 11, est apresentada a malha de entrada do circuito de acionamento.

Figura 11. Sada no isolada e sem proteo Malha de entrada.

Aplicando a lei de Kirchhoff para as malhas, onde diz, que a soma das tenses em uma malha de fechada igual a zero, tem-se:

VBE + Rb * IB - VBB = 0Rb =

VBB - VBE 5 0,7 = IB IB

Equao (1). Como nesta equao existem duas incgnitas, deve-se aplicar um conceito para resolver o impasse. Levando em considerao o ganho HFe 200 do transistor e a corrente de coletor temos:

IC IC 30 * 10- 3 IB = 150A = IB = IB = IB 200


Equao (2). Com o valor encontrado para a corrente de base (equao 2), pode-se calcular o resistor Rb utilizando a equao 1.

Rb =

VBB - VBE 5 - 0,7 4,3 = = = 28,67 K IB 150 A 150 A

19

Eletrnica Aplicada Sistemas Microcontrolados Verso 1 Marcelo do C.C. Gaiotto Caso este resistor seja utilizado teremos o acionamento correto do rel para estas condies. Porm, se houver uma variao do parmetro HFe (ganho) do transistor pela ao da temperatura, ocorrer uma alterao nas correntes de base e conseqentemente na corrente de coletor o que pode comprometer o funcionamento do sistema. Para garantir o corte e saturao do transistor, utiliza-se um critrio prtico:

IBsat = 3 * IB = 3 * 150 A = 450A


Sendo assim, calculando novamente o valor de Rb para este novo valor de corrente de base, tem-se:

Rb =

VBB - VBE 5 - 0,7 4,3 = = = 9,55K 10K IBsat 450 A 450 A

Sadas no isoladas Proteo com Diodo de Sinal


O prximo circuito que ser avaliado tambm no isolado, porm j possui uma proteo entre a etapa de potncia (driver) e a de controle, seja ele um dispositivo de lgica programvel, discreto ou microcontrolado. Para realizar esta proteo, utiliza-se um diodo de sinal que permitir que a corrente proveniente do circuito de controle alcance a base do transistor. No caso de ocorrer um problema com o transistor e a tenso no catodo do diodo seja maior que a tenso no anodo, o diodo se comportar como uma chave aberta fazendo com que a etapa de controle no receba essa corrente reversa proveniente do driver transistorizado. A figura 12 apresenta o circuito com o diodo de proteo.

Figura 12. Sada no isolada protegida por diodo de sinal.

20

Eletrnica Aplicada Sistemas Microcontrolados Verso 1 Marcelo do C.C. Gaiotto O resistor R1 possui a funo de aterrar a base do transistor quando o sinal de controle for colocado em nvel 0. Para realizar o clculo do valor deste resistor, deve-se fazer algumas analises importantes. A primeira diz respeito a corrente que ser utilizada pela base do transistor, que ser utilizada a mesma encontrada para o circuito da figura 9. A figura 13 apresenta a malha de entrada para o circuito com o diodo de proteo.

IBsat = 3 * IB = 3 * 150 A = 450A

Figura 13. Malha de entrada do transistor para o circuito com diodo de proteo.

Considerando agora um circuito de controle com sada mxima de 5V, a malha composta por D1 e R1, apresentada na figura 11, ser definida por:

Vcontrole = Vj + VR1VR1 = Vcontrole Vj VR1 = 5 0,7 = 4,3V


A corrente do resistor R1 pode ser estimada, utilizando parmetros prticos como sendo de 5 a 10 vezes menor que a corrente IBsat encontrada anteriormente, ou seja:

IR1 =
Logo o valor de R1 ser:

IBsat = 90A 5

IR1 =

VR1 VR1 4,3 R1 = R1 = = 47,78K 47 K 6 R1 IR1 90 *10

Para finalizar o calculo deste circuito basta recalcular o valor do resistor da base do transistor com os valores encontrados anteriormente, aplicando a equao(1), porm com valores pertinentes a esta nova malha:

VBE + Rb * IBsat - VR1 = 0Rb =

VR1- VBE 4,3 - 0,7 = = 8K 8,2K -6 IBsat 450 * 10

21

Eletrnica Aplicada Sistemas Microcontrolados Verso 1 Marcelo do C.C. Gaiotto

Tcnicas de Interfaceamento Digital Sadas isoladas

22

Eletrnica Aplicada Sistemas Microcontrolados Verso 1 Marcelo do C.C. Gaiotto

Sadas isoladas Com acopladores pticos


Circuitos utilizando acopladores pticos possuem uma excelente imunidade a rudos, protegendo de maneira muito eficiente as etapas de controle da etapa de potncia (driver). Considere os seguintes valores para um modelo de acoplador ptico comercial - 4N25: Corrente mxima de polarizao do LED emissor: 60mA; Tenso de Coletor Emissor do fototransistor quando em saturao: 0,15V a 0,5V; Corrente mxima de Coletor do fototransistor: 150mA; Tenso mxima de Coletor Emissor do fototransistor quando em corte: 30V Para facilitar o raciocnio em questo dos clculos, sero definidos alguns parmetros limitantes do acoplador ptico para o projeto, como: Corrente do LED emissor: 15mA; Tenso de Coletor Emissor do fototransistor quando em saturao: 0,5V; Corrente de Coletor do corrente fototransistor deve ser

ICopto = IEopto = *IBsat + IR2 ,esta

menor que 150mA, que o limite mximo deste componente; Tenso mxima de Coletor Emissor do fototransistor quando em corte: 24V, esta tenso deve ser menor que o limite mximo deste componente.

Figura 14. Circuito com opto acoplador com acionamento da carga com nvel lgico 0.

23

Eletrnica Aplicada Sistemas Microcontrolados Verso 1 Marcelo do C.C. Gaiotto A partir das informaes apresentadas na figura 14, podem ser iniciados os clculos dos resistores de polarizao do transistor T1. Na figura 15, apresentada a primeira malha de entrada.

Figura 15. Circuito com opto acoplador 1 malha de entrada.

Calculando as tenses para a malha 1 tem-se:

VCEopto + VBE + RB * IBsat - 24 = 0


Isolando a resistncia de Base RB, fica:

RB =

24 VCEopto VBE IBsat


Equao(3).

Avaliando agora a 2 malha de entrada apresentada na figura 16, temse:

Figura 16. Circuito com opto acoplador 2 malha de entrada.

Calculando as tenses para a 2 malha de entrada tem-se:

VBE + RB * IBsat - VR2 = 0


Isolando a resistncia R2, fica:

R2 =

RB * IBsat + VBE IR2


Equao(4). 24

Eletrnica Aplicada Sistemas Microcontrolados Verso 1 Marcelo do C.C. Gaiotto Considerando a figura 17 que apresenta a malha de sada, tem-se as seguintes frmulas:

Figura 17. Circuito com opto acoplador malha de sada.

Calculando as tenses para a malha de sada tem-se:

VCE + L1* IL 24 = 0
Isolando a resistncia da lmpada L1, fica:

L1=

24 VCE IL

Equao(5). Para exemplificar melhor a aplicao destes clculos, torna-se necessrias algumas informaes sobre a carga L1 e o transistor T1. Considere ento os seguintes dados: Tenso de alimentao da Lmpada: 24V; Corrente da Lmpada L1 IL: 2A; Corrente de Coletor do corrente fototransistor deve ser

ICopto = IEopto = *IBsat + IR2 ,esta


menor que 150mA, que o limite mximo deste componente; Corrente de coletor mxima do transistor T1: 6A; Ganho HFe do transistor T1: 100; Tenso VBE do transistor T1: 0,7V Tenso VCE do transistor T1: 80V

Primeiro passo tomado calcular a corrente de base necessria para o acionamento desta carga. Ento aplica-se a frmula do ganho (Beta) do transistor: 25

Eletrnica Aplicada Sistemas Microcontrolados Verso 1 Marcelo do C.C. Gaiotto

=
Onde:

IC IL 2 IB = IB = IB = 10mA IB 200

Corrente de coletor IC igual a IL, corrente da carga (lmpada). Lembrando do critrio prtico apresentado sobre a garantia de saturao do transistor, recalculamos a corrente de base para saturao:

IBsat = 3 * IB = 3 * 10mA = 30mA


Com o valor da corrente de base, pode-se calcular o resistor Rb utilizando a equao 3, encontrada para a 1 malha:

RB =

24 0,5 0,7 24 VCEsat VBE RB = IBsat 30 * 10- 3

RB =

22,8 RB = 760 -3 30 * 10

Com o valor da resistncia de base calculado e a corrente necessria para a 2 malha de entrada, pode-se aplicar o conceito prtico onde a corrente do resistor IR2 pode ser de 5 a 10 vezes menor que a corrente IBsat, para encontrar a corrente IR2.

IR2 =

IBsat 30mA = = 6mA 5 5

Este critrio de calculo pode ser aplicado pois a nica funo do resistor R2 aterrar a base do transistor quando o opto acoplador no estiver conduzindo, portanto seu valor de resistncia pode ser relativamente alto. Avaliando agora a tenso sobre o resistor R2 quando o opto acoplador estiver conduzindo, tem-se:

VR2 = R2 * IR2
Equao(6).

VR2 = 24 VCEopto
Equao(7) Substituindo a equao 6 na equao 7, fica:

R2 =

24 VCEsat 23,58 R2 = = 3,9K -3 IR2 6 * 10

26

Eletrnica Aplicada Sistemas Microcontrolados Verso 1 Marcelo do C.C. Gaiotto No circuito apresentado na figura 16, pode-se verificar que o acionamento da carga ser invertido em relao ao sinal de controle, ou seja, toda vez que a lgica de controle colocar nvel lgico 0, o transistor T1 ser cortado. Assim que a sada do controle for para nvel lgico 1 o transistor T1 ser saturado, funcionando assim como uma chave fechada, permitindo que a carga seja acionada.

Figura 18. Circuito com opto acoplador com acionamento da carga com nvel lgico 1.

Com a idia do funcionamento do circuito j explicada, resta agora realizar o calculo dos resistores de polarizao. O procedimento de anlise ser bem parecido com os princpios aplicados anteriormente no circuito da figura 12, porm com umas pequenas alteraes de raciocnio. Visualizando o circuito da figura 19, considere agora que a 1 malha de entrada desse circuito seja dada por:

Figura 19. Circuito com opto acoplador com acionamento invertido de carga 1 malha de entrada.

Nesta condio est sendo considerado que o sinal lgico de controle est em nvel 1, ou seja, o opto acoplador est cortado. Este procedimento far com que o transistor T1 seja polarizado, seguindo as equaes: 27

Eletrnica Aplicada Sistemas Microcontrolados Verso 1 Marcelo do C.C. Gaiotto Calculando as tenses para a malha 1 tem-se:

VR2 + VBE + RB * IBsat - 24 = 0


Isolando a resistncia de Base RB, fica:

RB =

24 VR2 VBE IBsat


Equao(8).

Avaliando esta condio de acionamento, pode-se perceber que a corrente IBsat e IR2 esto em mesmo sentido, ou seja:

IBsat = IR2
Desta forma, percebe-se ainda que os resistores R2 e RB esto em srie, pode-se calcular um circuito equivalente para estes resistores:

R2 + RB = Requ
Reescrevendo a equao 8 para estas novas analises e utilizando os valores calculados anteriormente, tem-se:

Requ =

24 0,7 24 VBE Requ = = 776,67 820 -3 IBsat 30 * 10

Como o valor do Requ igual a R2+RB, precisa-se definir, distribuir de maneira correta as resistncias para os resistores. Para realizar esta tarefa, analise as seguintes condies: 1. Se a resistncia R2 for muito pequena, a corrente IR2 ser muito grande e no momento em que o circuito de controle tentar colocar o opto acoplador em saturao pode no conseguir satur-lo de maneira correta; 2. Se a resistncia RB for muito pequena, poder ocorrer um aquecimento exagerado no transistor quando o sinal lgico de controle tentar saturar o opto acoplador, devido ao fato de que a base do transistor est praticamente sendo conectada diretamente ao terra, o que pode fazer com que o transistor entre em ruptura; Com base nestas duas informaes a distribuio correta dos valores das resistncias de R2 e RB, pode ser aplicar um conceito bem simples:

28

Eletrnica Aplicada Sistemas Microcontrolados Verso 1 Marcelo do C.C. Gaiotto

2 2 R2 = *Requ = *820 = 546,67 3 3 R2 560


Assim calculando RB a partir desta informao, tem-se:

RB = Requ - R2 = 820 560 = 260 RB 270


Considerando o circuito apresentado na figura 20, pode-se verificar que o acionamento da carga, (neste caso um rel de 12V/10A com corrente da bobina de 30mA) de maneira direta, sem a adio de um driver de corrente. Isto possvel tendo em vista que o acoplador ptico 4N25 consegue controlar uma corrente mxima de coletor de at 150mA.

Figura 20. Circuito com opto acoplador acionando diretamente um rel.

29

ELETRNICA APLICADA
Tcnicas de Interfaceamento & Sistemas Microcontrolados
Captulo do MPLAB IDE verso 8.20a Reviso 1 semestre 2010

Marcelo do C.C. Gaiotto

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

Ambiente Integrado de Desenvolvimento MPLAB IDE verso 8.20a

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

Ambiente Integrado de Desenvolvimento MPLAB IDE


Antes de iniciar a criao de um projeto, o estudante deve criar uma pasta (diretrio) com seu nome, sem pontos ou acentos, em um diretrio temporrio da raiz. Neste diretrio sero criados os projetos e arquivos relacionados ao projeto criado.

Criando um projeto no MPLAB IDE verso 8.20a


Aps abrir o programa MPLAB IDE verso 8.20a, visualize as barras de ferramentas. Estas barras devero apresentar os seguintes itens, conforme a figura 1: File Edit View Project Debugger Programmer Tools Configure Window Help

Figura 1. Tela Inicial.

Para criar um projeto utilizando a linguagem C da CCS, o compilador j deve estar instalado. Em PROJECT, podem ser escolhidos dois modos de criao de projetos, o manual atravs do item NEW ou o auxiliado pelo ambiente, o item PROJECT WIZARD.

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

O processo que ser descrito aqui ser o com auxilio do ambiente. Para iniciar a criao de um projeto novo, deve-se acionar o item PROJECT na barra de ferramentas e o sub-item PROJECT WIZARD, como exemplificado na figura 2.

Figura 2.Iniciando a criao de um projeto com auxilio do ambiente.

Aps o acionamento deste item, aparecer a janela que indica que ser criado um novo projeto no MPLAB IDE. Para continuar na criao do novo projeto, deve-se acionar o boto AVANAR, ou em cancelar para encerrar a criao. A figura 3 apresenta esta tela de criao.

Figura 3. Tela de Inicio de criao de Projetos.

Aps a acionar o boto AVANAR na tela representada na figura 3, deve-se definir qual o DEVICE (microcontrolador) que ser utilizado no projeto. Esta escolha realizada atravs de uma grande variedade de dispositivos disponveis. No exemplo a seguir apresentado na figura 4, foi escolhido o modelo PIC 16F877A.

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

Figura 4. Escolha do microcontrolador que ser utilizado no projeto.

Depois de escolhido o DEVICE (microcontrolador) que ser utilizado no projeto, e acionado o boto AVANAR, deve-se escolher qual a ferramenta de compilao ser usada, neste caso o ACTIVE TOOLSUITE da CCS C COMPILER, e fornecer o caminho a onde est instalada a ferramenta (Location), como mostrado na figura 5.

Figura 5. Seleo do compilador e do caminho do executvel CCSC.exe.

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

Com a conferncia do caminho da ferramenta de compilao realizada, acionar o boto BROWSE da tela apresentada na figura 6 (3 passo - CRIAR OU RECONFIGURAR UM PROJETO ATIVO).

Figura 6. Tela de Criao ou re-configurar um projeto ativo.

Caso ainda no tenha criado uma pasta no diretrio temporrio do computador que est utilizando, este procedimento poder ser realizado clicando sobre o boto no canto direito indicado pelo circulo vermelho (Criar nova pasta), apresentado na figura 7.

Figura 7. Tela para salvar o projeto e criar a pasta.

Re-nomear a NOVA PASTA para -- ELN APLICADA e a DATA (exemplo: ELN APLICADA 31-03-2009), conforme a figura 8.

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

Figura 8. Re-nomeando a pasta.

Clicar sobre a pasta criada para ter acesso ao seu contedo e salvar o projeto, dando um nome significativo para o mesmo. Na figura 9, como exemplo, foi dado o nome ao projeto como sendo PROJETO 1 (sem nenhuma extenso) . Para dar prosseguimento, acionar o boto salvar.

Figura 9. Nomeando o projeto que est sendo criado.

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

As informaes do caminho a onde sero gravados os arquivos do projeto, so ento apresentadas na tela do 3 passo, que est apresentada na figura 10. Acione o boto avanar para continuar.

Figura 10. Caminho completo do projeto a ser salvo.

Caso j exista um cdigo com extenso .C que o usurio queira adicion-lo ao projeto poder realizar este procedimento escolhendo o ARQUIVO.C que deseja inserir no campo do lado esquerdo e acionar o boto ADD>>. Se ainda no foi digitado nenhum cdigo.C, pode-se continuar a criao do projeto acionando o boto avanar. A figura 11 apresenta a tela com estas opes.

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

Figura 11. Adicionar um cdigo .C ao projeto atravs da tecla Add.

Com todos os passos realizados corretamente, ao final, ser apresentada uma tela de resumo do projeto, apresentando qual o DEVICE (microcontrolador) escolhido, juntamente com as ferramentas de compilao e o local (caminho) onde sero gravados os arquivos do projeto. A figura 12 apresenta a tela de sumrio do projeto criado como exemplo.

Figura 12. Tela de resumo do projeto criado como exemplo.

A tela do programa deve apresentar as informaes contidas na figura 13, onde so visualizadas as identificaes do projeto. Caso no aparea esta

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

janela, o usurio pode habilit-la na barra de ferramentas, em VIEWPROJETC.

Figura 13. Tela do programa MPLAB IDE com o projeto criado e rodando.

Com o projeto criado o momento de adicionar ou criar um cdigo .c, para ele. Acione a barra de ferramentas FILE e em seguida o sub item NEW, conforme a figura 14.

Figura 14. Criao de um cdigo .C.

Uma rea de edio de texto (UNTITLED sem ttulo) aberta como a apresentada na figura 15.

Figura 15. rea de edio de texto.

Repare na figura 16, quando inserimos um cdigo na rea de edio de texto e ainda no salvamos como um arquivo .C, ou seja com extenso .C, no temos um realce de cores para as diretivas ou palavras reservadas do da linguagem C para o microcontrolador PIC, ou ainda do ambiente MPLAB IDE. 10

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

Figura 6. Arquivo texto ainda no salvo.

Sendo assim, realize o procedimento para salvar o arquivo da seguinte forma. Novamente na barra de ferramentas, acione o item FILE, em seguida o item SAVE AS.... A figura 17 apresenta o procedimento.

Figura 17. Procedimento para salvar o arquivo de cdigo criado.

Crie um nome que seja de preferncia curto, sem acentuao, pontos ou espaos em branco, se for necessrio, utilize sempre um maisculas, para separar os itens do nome. Alguns exemplos de nomes para seus arquivos motor_dc.c, AcionaLeds.c, FioDigital.c . A figura 18, apresenta a janela para salvar o arquivo. LEMBRE: o CDIGO fonte deve ser salvo com extenso .C

ou letras

11

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

Figura 18. Janela para salvar o cdigo fonte em extenso .C.

Com o arquivo j salvo com a extenso .C, verifique que as palavras reservadas so realadas, ou seja, so atribudas cores diferentes para cada uma. Pode-se realizar esta verificao na figura 19.

Figura 19. Cdigo com as palavras reservadas realadas.

12

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

O projeto est criado, mas no possui um cdigo fonte que pertena a ele, sendo assim o prximo passo ser adicionar o cdigo fonte criado, e salvo com extenso .C. Este procedimento pode ser realizado de duas formas: 1. Na janela principal do projeto (gerencia de projeto), clicando com o boto direito do mouse sobre o item SOURCE FILES ARQUIVOS DE CDIGO (figura 20);

Figura 20. Tela de gerncia de projeto.

Em seguida clicar sobre o item - ADD FILES ADICIONAR ARQUIVOS (figura 21);

Figura 21. Adicionando arquivos pelo mtodo 1.

Localize o arquivo que deseja inserir no projeto e em seguida clique sobre ele. Para confirmar sua adio ao projeto, utilize o boto abrir na janela de ADD FILES to PROJECT apresentado na figura 22.

13

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

Figura 227. Janela de incluso de arquivos ao projeto.

A figura 23 apresenta o resultado desta operao de incluso de um arquivo de cdigo ao projeto. Na tela do gerenciador de projeto, dever aparecer o cdigo fonte que ser compilado em SOURCE FILES .

Figura 23. Tela do gerenciador de projeto com o arquivo cdigo includo.

A segunda forma de realizar este mesmo procedimento de incluso de um cdigo fonte criado, e salvo com extenso .C, apresentado a seguir: 2. Na janela principal do MPLAB IDE, procure o item PROJECT, em seguida acione o subitem ADD FILES to PROJECT, conforme a figura 24;

14

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

Figura 24. Mtodo 2 de incluso de um arquivo de cdigo ao projeto.

Repare que ser aberta a mesma janela apresentada na figura 22. Assim ser s repetir o procedimento de incluso descrito anteriormente.

15

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

Compilando um projeto criado


A extenso .C do arquivo criado, no a mesma que ser gravada na memria do microcontrolador, mas sim um arquivo compilado e Link editado, ou seja, os cdigos digitados, as funes e as diretivas do compilador utilizadas durante a programao, sero transformadas em cdigos binrios que a linguagem que a mquina entende. Aps o projeto compilado e correto, ser gerado um arquivo com extenso .HEX, que a codificao em hexadecimal (uma representao mais compacta que a binria) do programa criado em linguagem C, e este sim ser o programa que ser gravado dentro da memria do microcontrolador. Para compilar um projeto pode-se proceder de duas formas. A primeira utilizando o item PROJECT sub item BUILD ALL ou COMPILE dependendo da verso do MPLAB, sendo indicados na figura 25.

Figura 25. Compilando um arquivo.

A outra seria utilizando o atalho na barra de ferramentas do MPLAB IDE, apresentadas na figura 26.

Figura 26. Atalho para compilar.

16

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

Ao final da compilao do cdigo .C pertencente ao projeto, ser apresentado um resumo da operao, informando se houve erros ou se a gerao do cdigo .HEX ocorreu perfeitamente. A figura 27 apresenta a tela com o resumo da operao de compilao.

Figura 27. Resumo da Operao de Compilao.

17

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

Criando uma tela de verificao de registradores WATCH


Uma das melhores maneiras de se entender o funcionamento de um microcontrolador explorar e visualizar os registradores internos, podendo observar a escrita ou leitura de valores em seus interiores durante a execuo do programa. Este recurso poderoso de verificao ou DEBUGGER pode ser realizado utilizando uma ferramenta chamada WATCH, que permite que os contedos dos registradores, ou ainda das variveis possam ser visualizados. Para configurar o WATCH, selecione o item VIEW sub item WATCH. A figura 28, apresenta estes passos, j a figura 29 a tela do WATCH aberta.

Figura 28. Acionando o WATCH para verificao de registradores.

Figura 29. Tela do WATCH aberta.

18

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

Com a tela do WATCH aberta, a adio dos registradores que se deseja acompanhar bastante simples, e para realizar este procedimento basta se seguir alguns passos bsicos: 1. Aps escolher o registrador que se deseja visualizar, sua seleo poder ser realizada atravs da lista apresentada ao acionar o item indicado pela figura 30. 2. A maneira de inserir o registrador escolhido acionando o boto ADD SFR, (adio de registradores de funes especiais) que fica no canto superior esquerdo da tela do WATCH. 3. Ao clicar sobre este boto, repare que o registrador escolhido passa a fazer parte do conjunto do WATCH 1, conforme a figura 31.

Figura 30. Lista de registradores disponveis para visualizao.

Figura 31. Registrador escolhido.

19

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

Nesta tela do WATCH, podem ser visualizadas vrias informaes importantes, como por exemplo, o endereo (ADDRESS) deste registrador (SYMBOL NAME) na memria do microcontrolador e o seu contedo (VALUE). Estes indicadores podem ser inseridos ou retirados, conforme a necessidade do usurio. Para alterar forma da apresentao numrica que utilizada para mostrar os valores do contedo do registrador, como por exemplo, de hexadecimal para decimal, binrio, ASCII, alterar o nmero de bits, e vrias outras opes que podem ser interessantes no momento de verificao. Ao clicar com o boto direito do mouse sobre o campo VALUE, sero apresentadas vrias opes, conforme a figura 32.

Figura 32. Acessando as propriedades do registrador inserido no WATCH.

Para simplificar o processo, verifique as possibilidades deste item descritas nos passos abaixo: 1. Com o campo de configurao aberto, acione o item PROPERTIES propriedades. Ao acionar este elemento ser apresentada a tela da figura 33;

20

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

Figura 33. Tela de propriedades do registrador apresentado no WATCH.

2. Ao acionar os campos, como por exemplo, o FORMAT, pode-se alterar o formato que ser apresentado o valor do contedo do registrador. A figura 34 apresenta as opes disponveis para este item.

Figura 34. Opes de formato para apresentar o resultado do contedo do registrador.

3. A figura 35 apresenta as opes do campo SIZE, tamanho em bits do valor que ser apresentado na rea de VALUE.

21

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

Figura 35. Seleo de tamanho em bits do campo VALUE.

4. Caso necessite alterar este item para mais de 8 bits, repare que um outro campo para escolha torna-se visvel (BYTE ORDER ordem de apresentao dos bytes) juntamente com opes disponveis. A figura 36 apresenta este novo item, e na figura 37 o efeito desta escolha no WATCH.

Figura 36. Campo para escolha da ordem de apresentao dos bytes.

22

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

Figura 37. WATCH com o numero de bits do campo VALUE alterado para 24 bits.

5. Novas informaes podem ser inseridas a barra de ferramentas do WATCH. Para isso, basta clicar com o boto direito sobre a barra de ferramentas e escolher uma das opes disponveis de formatos visualizao. A figura 38 apresenta as possibilidades deste item, e a figura 39 um exemplo com mais itens inseridos na barra de ferramentas.

Figura 38. Outras opes de visualizao para a barra de ferramenta.

Figura 39. Exemplo com outros itens de visualizao de valores na barra de ferramenta

23

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

Assim como importante poder visualizar o contedo de um registrador, tambm interessante visualizar alguns bits de maneira especial. Ao clicar com o boto direito do mouse sobre o item apresentado na figura 40. A insero destes bits no WATCH pode ser realizada atravs do acionamento do boto SFR SYMBOL.

Figura 40. Opes de bits disponveis para visualizao .

24

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

Habilitando o Mdulo de simulao MPLAB SIM


Uma maneira de testar seu programa sem a gravao do dispositivo (microcontrolador) pode ser realizada atravs de uma simulao dentro do prprio ambiente de projeto. Para habilitar o modo de simulao siga os seguintes procedimentos: 1. Na barra de ferramentas do MPLAB IDE, procure o item DEBUGGER, em seguida a opo SELECT TOOL (seleo de ferramenta), e por ultimo o subitem MPLAB SIM. A figura 41 apresenta a seqncia dos itens que devem ser selecionados para iniciar o mdulo de simulao do MPLAB.

Figura 41. Acionamento do mdulo do MPLAB SIM.

2. Quando for acionado o modo de simulao, devero aparecer na barra de ferramentas os itens referentes a este mdulo. Na figura 42 esto indicados os novos atalhos inseridos na barra de ferramentas para realizao da simulao.

Figura 42. Atalhos para execuo da simulao.

25

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

Os novos atalhos que foram inseridos possuem funes especficas no controle da simulao do programa. A figura 43 apresenta todos os atalhos, suas identificaes.

Figura 43. Atalhos para simular o programa e suas identificaes.

Para facilitar o entendimento, cada item possui as seguintes funes: 1. RUN: rodar o programa de maneira rpida, sem mostrar por quais linhas ou partes do cdigo est passando; 2. HALT: parar a simulao; 3. ANIMATE: acionamento automtico de execuo. Realiza a execuo do programa de forma automtica e em uma velocidade de acionamento das instrues que pode ser configurada, podendo ser acompanhado pelo instruo a instruo que executa. A figura 44 apresenta o ponteiro que representa a posio atual de execuo do programa; 4. STEP INTO: realiza uma instruo a cada acionamento deste item; 5. STEP OVER: volta uma instruo a cada acionamento deste item; 6. STEP OUT: 7. RESET: causa um reset no programa. Equivale a resetar o controlador.

Figura 44. Ponteiro indicador da posio atual de execuo do programa.

26

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

Criando entradas para simulao - STIMULUS


Normalmente um programa necessita de informaes provenientes de sensores, chaves ou outros dispositivos externos ao microcontrolador que o alimentam com informaes. A criao deste item auxiliar para se realizar estes testes onde serviro para excitar, estimular as entradas em seu programa. Para criar botes para fornecer os estmulos s entradas, siga os seguintes passos: 1. Na barra de ferramentas do MPLAB IDE, procure o item DEBUGGER, em seguida a opo STIMULUS, e por ultimo o subitem NEW WORKBOOK. A figura 45 apresenta estes passos para ativao deste.

Figura 45. Ativando o mdulo STIMULUS.

2. Verifique que existem diversos itens disponveis que podero ser utilizados para auxiliar no processo de simulao de seu programa. Nas abas desta nova janela acione o item ASYNCH. A figura 46 apresenta uma nova janela aberta, e a figura 47 a seleo do item.

27

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

Figura 47. Janela do mdulo STIMULUS e pasta selecionada ASYNCH.

3. Clicando sobre o campo abaixo do item PIN/SFR, conforme a figura 48, podem-se verificar que todos os pinos/(registros especiais) do microcontrolador esto disponveis para serem utilizados.

Figura 48. Pinos disponveis para serem utilizados na simulao.

4. Para um exemplo ser utilizado o pino RB0, novas opes de ao se tornam disponveis para configurar. As opes disponveis so apresentadas na figura 49. 28

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

Figura 49. Opes de tipo de acionamento para o pino RB0.

Escolhendo a opo TOOGLE para o pino RB0, este sinal se comportar da seguinte maneira: ao ser acionado, muda o estado do pino e fica neste estado at que seja novamente acionado, trocando seu estado, ou seja, s muda de estado lgico se for acionado. A figura 50 apresenta esta seleo.

Figura 50. Opo TOOGLE.

Outras opes de ao como PULSE HIGH e PULSE LOW, dois novos itens de configurao tornam-se disponveis, WIDTH (tamanho ou durao do pulso) e UNITS (unidades). Na figura 51 possvel se visualizar os dois novos campos.

Figura 51. Novas opes - PULSE HIGH e PULSE LOW.

O campo WIDTH (tamanho ou durao do pulso) define qual ser o tempo de durao do pulso, e o UNITS (unidades) qual ser a unidade de tempo que ser utilizada para o acionamento, podendo ser em ciclos de

29

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

mquina, nano segundos, micro segundos, mili segundos ou ainda segundos. A figura 52 apresenta estas opes.

Figura 52. Opes de unidades de tempo para durao do PULSE HIGH ou PULSE LOW.

Para o exemplo apresentado, todos os bits do port B so definidos como entrada e com acionamento do tipo TOGGLE, ou seja, quando for acionada a tecla FIRE com o mouse, o pino do microcontrolador mudar de estado lgico (de 1 para 0 ou de 0 para 1) e permanecer assim at um novo acionamento, o que representa virtualmente uma mudana de estado lgico em um pino do microcontrolador. A figura 53 apresenta a tela completa antes de salvar estas opes.

Figura 53. Tela completa com todos os bits do portB como entradas e com acionamento Toggle.

30

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

Para salvar as configuraes feitas e os acionamentos criados basta clicar sobre o boto SAVE, ai s nomear este conjunto de simulao. A figura 54 apresenta um exemplo de salvamento.

Figura 54. Salvando a configuraes da pasta STIMULUS.

31

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

Compilando e Gravando o Microcontrolador com o ICD2 BR


Com o cdigo fonte pronto, chega o momento de realizar a compilao e gerar o arquivo .HEX que ser gravado no microcontrolador. O procedimento bastante simples, conforme ilustrado na figura 55 localize na barra de ferramentas a aba PROJECT, em seguida clique no item BUILD. Este mesmo procedimento pode ser realizado atravs do atalho apresentado na figura 56.

Figura 55. Compilando um cdigo fonte.

Figura 56. Atalho para compilar um cdigo fonte.

Aps o acionamento do cone de compilao, dever ser apresentada uma tela que devolve as informaes referentes execuo desta etapa. A figura 57 apresenta um exemplo de resposta.

Figura 57. Tela com as informaes da Compilao.

32

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

Se a compilao resultou em sucesso, a gravao do microcontrolador pode ser realizada seguindo alguns passos bem simples. Primeiro deve-se habilitar o gravador que ser utilizado, neste caso ser o ICD2 BR (equivalente nacional licenciado do ICD2 da Microchip), sendo que o acionamento deste dispositivo pode ser feito atravs da barra de ferramentas, clicando sobre o item PROGRAMMER, em seguida SELECT PROGRAMMER, onde ser apresentada uma lista de dispositivos para gravao. Nesta nova tela, deve-se selecionar o item MPLAB ICD2, conforme a ilustrao da figura 58.

Figura 58. Tela de seleo do gravador a ser utilizado.

Aps a realizao dos passos anteriores, sero apresentadas algumas informaes e inseridos alguns atalhos na barra de ferramentas, conforme pode-se visualizar nas figuras 59 e 60.

Figura 59. Informaes da habilitao do gravador MPLAB ICD2.

Figura 60. Atalhos para o gravador MPLAB ICD2.

Para conectar o gravador, ativ-lo, devem-se realizar os seguintes passos: na barra de ferramentas, acione o item PROGRAMMER, em seguida clique em CONNECT, conforme apresentado na figura 61.

33

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

Caso esteja realizando uma configurao inicial do gravador, em vez de clicar sobre o item CONNECT, basta acionar o item MPLAB SETUP ICD2 WIZARD, e seguir as seqncias de criao da conexo do gravador.

Figura 62. Procedimento para ativar, conectar o gravador ICD2.

Este procedimento far com que os atalhos presentes na barra de ferramentas do software MPLAB IDE sejam ativados como pode ser visualizado na figura 63. Caso um microcontrolador, por exemplo, PIC 16F877A, estiver colocado na placa de gravao, sero apresentadas as informaes de resumo de operaes, presentes na figura 64.

Figura 63. Ativao dos atalhos para o gravador.

Figura 64. Resumo de operaes de ativao do gravador.

1.

PROGRAM

TARGET

DEVICE:

gravar

um

dispositivo, microcontrolador colocado na placa de gravao;

34

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

2. gravao.

READ TARGET DEVICE: ler a memria de programa de um dispositivo, microcontrolador colocado na placa de Se o microcontrolador no estiver protegido contra cpia (dependendo se o microcontrolador, possui os bits de proteo), este procedimento pode ler, copiar o programa gravado em sua memria de programa;

3.

READ DEVICE EEPROM: ler a memria de EEPROM interna de um dispositivo, microcontrolador colocado na placa de gravao, caso este no esteja protegido contra gravao;

4. uma verificao da

VERIFY TARGET DEVICE MEMORY: realiza memria de programa do dispositivo, microcontrolador, se o que foi gravado dentro de sua memria de programa, condiz com o que est no buffer de gravao;

5. na placa de gravao; 6.

ERASE TARGET DEVICE: apaga o contedo da memria de programa de um dispositivo, microcontrolador colocado

VERIFY TARGET DEVICE IS ERASED: verifica se o dispositivo, microcontrolador colocado na placa de gravao est com a memria de programa limpa, apagada;

7.

RELEASE FROM RESET: realiza o reset do dispositivo, microcontrolador conectado na placa de gravao;

8.

HOLD IN RESET: aguarda o reset do dispositivo, microcontrolador conectado na placa de gravao;

35

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

9.

RESET AND CONNECT ICD: realiza um reset e conecta novamente o gravador. Para alterar as configuraes do gravador ICD2 conectado, basta

acessar

barra

de

ferramentas

do

MPLAB

IDE,

procurando

por

PROGRAMMER, e clicando em seguida no item SETTINGS. A figura 65 apresenta esta seqncia.

Figura 65. Acessando as configuraes do gravador ICD2.

A tela visualizada na figura 66 apresentada logo que o item SETTINGS acionado. Na aba STATUS pode-se supervisionar o funcionamento do gravador ICD2, onde so apresentadas informaes referentes conexo e sobre os sinais utilizados esto presentes ou no.

Figura 66. Tela de STATUS do gravador ICD2.

36

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

J na aba de COMMUNICATION apresentada na figura 67, pode-se configurar a porta e a velocidade de comunicao entre o microcomputador e o gravador, podendo ser uma comunicao serial ou USB.

Figura 67. Tela de configurao de porta de comunicao entre micorocmputador e gravador

Um ponto bastante importante verificar as limitaes impostas pelo fabricante quando se necessita utilizar o DEBUGGING, pois algumas funcionalidades podem no serem implementadas, ou seja, no podem ser testadas neste modo. Estas informaes, entre outras so apresentadas a aba LIMITATIONS, que pode ser visualizada na figura 68.

Figura 68. Informaes das limitaes.

Na aba POWER so apresentadas informaes sobre as tenses de operao que podem ser atualizadas para uma verificao, utilizando o boto UPDATE. J o item, POWER TARGET CIRCUIT FROM MPLAB ICD2 (5V Vdd), define se ser utilizada a tenso de 5V interna presente no gravador para fazer a gravao do dispositivo, microcontrolador conectado a placa de gravao, ou se esta alimentao ser externa, como por exemplo no caso de uma gravao IN-CIRCUIT. Estas opes podem ser visualizadas na figura 69.

37

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

Figura 69. Informaes sobre a alimentao do dispositivo a ser gravado.

Esta aba PROGRAM, possui diversas informaes referentes a gravao do dispositivo, que podem ser exploradas pelo usurio. Neste tpico sero apenas detalhados os passos bsicos para configurao, levando em considerao os itens apresentados na figura 70. Caso o usurio no necessite gerenciar o endereo de incio ou endereo final da memria de programa, no qual o programa ser gravado, a seleo deste mdulo pode ficar como o apresentado na figura 70.

Figura 70. Configuraes de aes de gravao nas memrias de programa e EEPROM interna do dispositivo.

38

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

Se for necessrio proteger o contedo da memria interna EEPROM, para que em uma nova gravao os dados armazenados no sejam sobrepostos, o usurio dever acionar o item PRESERVE EEPROM ON PROGRAM. Lembre que toda vez que conectar o gravador, este procedimento deve ser realizado se os dados armazenados so importantes e no podem ser perdidos. Informaes sobre a verso do software MPLAB IDE, assim como do gravador ICD2 entre outras, podem ser visualizadas na aba, VERSIONS, conforme a figura 71.

Figura 71. Informaes sobre verses do software MPLAB IDE e do gravador ICD2.

Vrias mensagens de alerta WARNINGS so apresentadas para orientar o usurio/programador no momento da compilao e posterior gravao do dispositivo. Estas informaes podem ser habilitadas a serem apresentas ou no, e o usurio pode configurar quais delas sero visveis. A figura 72 apresenta a tela com algumas destas mensagens de alerta que j vem acionadas por definio do fabricante.

39

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

Figura 72. Mensagens de alerta sobre as aes e operaes do software MPLAB IDE, do compilador e do gravador ICD2.

Com o cdigo compilado e pronto para gravar e realizada uma confirmao das configuraes do gravador, o processo de gravao bastante simples e pode ser efetuado de duas maneiras: atravs do atalho apresentado na figura 63 ou acionando na barra de ferramentas do software MPLAB IDE, o item PROGRAMMER, em seguida clicar sobre o subitem PROGRAM. Esta segunda forma apresentada na figura 73.

Figura 73. Gravando o programa compilado no dispositivo.

40

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

Durante a gravao sero apresentadas vrias informaes sobre os passos que o gravador est executando, assim, fica mais fcil para acompanhar o processo de gravao do dispositivo. Ao final, o software MPLAB IDE apresentar a mensagem ...PROGRAMMING SUCCEEDED... ou seja, programao do dispositivo foi bem sucedida. A tela apresentada na figura 74 demonstra estas informaes.

Figura 74. Tela de informaes sobre o processo de gravao.

41

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

Definindo os bits de configurao das funes especiais da CPU CONFIGURATION BITS (FUSES)
Ao se criar um projeto novo, todos os bits de configurao do microcontrolador (FUSES) que definem o funcionamento de alguns mdulos internos como, tipo de elemento oscilador que ser utilizado (resistor e capacitor, ressonador cermico, oscilador interno ou cristal), mdulos de superviso de tenso, operao, proteo de cdigo e gravao em baixa tenso devem ser configurados dependendo das necessidades do projeto, e estes podem ser configurados dentro do cdigo do programa ou externamente utilizando o ambiente. Para acessar a configurao atravs do ambiente, acesse a barra de ferramentas do MPLAB IDE procurando o item CONFIGURE, em seguida a opo CONFIGURATION BITS...(bits de configurao). A figura 75 apresenta a tela para acessar os bits e suas opes de configurao para o modelo de microcontrolador escolhido.

Figura 75. Opo para acessar os CONFIGURATION BITS - bits de configurao.

O MPLAB IDE verso 8.20a, possui uma opo de proteo da configurao dos bits que deve ser habilitada, acionada, toda vez que este a configurao destes bits for executada dentro do cdigo fonte. Em caso de se realizar a configurao manualmente atravs da tela de configuraes, qualquer alterao s ser possvel se este item for desabilitado. A figura 76 apresenta a localizao deste item.

42

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

Figura 76. Acionamento de configurao dos bits via cdigo fonte.

Ao se desabilitar o controle de configurao dos bits via cdigo fonte, aparecer uma mensagem informativa avisando que estes bits passaram a ser controlados de forma manual e que aps a alterao ou configurao, deve-se compilar o programa para que estas novas configuraes tenham efeito. Esta mensagem informativa pode ser visualizada na figura 77.

Figura 77. Mensagem informativa de mudana de controle de configurao.

Aps confirmar, todos os campos de configuraes dos bits ficaram disponveis para edio. A figura 78 apresenta a tela com as opes de configuraes possveis para o oscilador.

Figura 78. Tela para configurao dos bits.

Os itens, WATCHDOG TIMER, POWER UP TIMER, BROWN OUT DETECT, DATA EE READ PROTECT e CODE PROTECT, possuem apenas

43

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDE


Marcelo do C.C. Gaiotto

duas opes ON ou OFF, j a opo LOW VOLTAGE PROGRAM, ENABLE e DISABLE. O item FLASH PROGRAM WRITE possui vrias opes, as quais so apresentadas na figura 79.

Figura 79. Opes para reas de escrita na memria de programa.

Para realizar uma configurao dentro do cdigo fonte deve-se seguir as informaes do compilador C da CCS especficas para este fim. Como exemplo, para o microcontrolador PIC 16F877A, pode-se realizar a configurao de seus bits escrevendo os seguintes comandos:
#fuses HS, NOWDT, PUT, NOBROWNOUT, NOPROTECT, NOLVP

44

Вам также может понравиться