Apostila de Lab ELN Aplicada e Micro Control Adores V2_4 - 1 Sem 2010

179
  Eletrônica Aplicada e Microcontroladores Apostila de Laboratório Versão 2.4 – 1º semestre 2010 Revisada em 23/02/2010 Prof. Marcelo do C.C. Gaiotto. Aluno: ______________ Turno: __________ Turma:

Transcript of Apostila de Lab ELN Aplicada e Micro Control Adores V2_4 - 1 Sem 2010

Eletrnica Aplicada e Microcontroladores Apostila de LaboratrioVerso 2.4 1 semestre 2010Revisada 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 DigitaisObjetivos: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: ____/___/_____

DesenvolvimentoEquipamentos 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;

2

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

Projeto 1 Entradas no isoladas com Circuito Divisor ResistivoAplique 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

3

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

Projeto 2 Entradas no isoladas Proteo com diodo de sinalAplique 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

4

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

Projeto 3 Entradas no isoladas Proteo com diodo zenerAplique 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

5

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

Projeto 4 Acopladores pticos - DesenvolvimentoAplique 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

6

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-upAplique 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

7

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

8

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

9

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 ProteoAplique 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 SinalAplique 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 pticosAplique 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 pticosAplique 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 colunasObjetivos: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: ____/___/_____

DesenvolvimentoInformaes 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 LgicasObjetivos: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: ____/___/_____

DesenvolvimentoEquipamentos 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 microcontroladorSintaxe: 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 aquiExemplo: #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 HIGHSintaxe:

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 LOWSintaxe:

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 Hexadecimais99 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 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 #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, utilizandoo 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

EV0 1 1 0 1 1 1 0 1 0 X 0

C

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 EXTERNAObjetivos: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 aulasIncio: ____/___/_____ - Trmino: ____/___/_____

DesenvolvimentoInformaes 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 // 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 AssncronaObjetivos: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 aulasIncio: ____/___/_____ - Trmino: ____/___/_____

DesenvolvimentoInformaes 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 // 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 RotativoObjetivos: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 aulasIncio: ____/___/_____ - Trmino: ____/___/_____

DesenvolvimentoInformaes 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 // 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 BitsObjetivos: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 DesenvolvimentoInformaes 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 // 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 // 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)&(TemperaturaLimiteTempAlta) { 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 SOLUCATASustentabilidade 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: ___/___/_____ DesenvolvimentoInformaes 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 PICComandos 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. GaiottoComando 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; ContaB) { 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 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 >. 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.

8

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDEMarcelo 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

9

Eletrnica Aplicada Sistemas Microcontrolados Captulo do MPLAB IDEMarcelo 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 IDEMarcelo 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 IDEMarcelo 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 IDEMarcelo 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 IDEMarcelo 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 IDEMarcelo 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 IDEMarcelo do C.C. Gaiotto

Compilando um projeto criadoA 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 IDEMarcelo 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 IDEMarcelo do C.C. Gaiotto

Criando uma tela de verificao de registradores WATCHUma 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 IDEMarcelo 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 IDEMarcelo 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 IDEMarcelo 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 IDEMarcelo 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 IDEMarcelo 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 IDEMarcelo 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 IDEMarcelo do C.C. Gaiotto

Habilitando o Mdulo de simulao MPLAB SIMUma 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 IDEMarcelo 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 IDEMarcelo do C.C. Gaiotto

Criando entradas para simulao - STIMULUSNormalmente 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 IDEMarcelo 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 IDEMarcelo 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 IDEMarcelo 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 IDEMarcelo 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 IDEMarcelo do C.C. Gaiotto

Compilando e Gravando o Microcontrolador com o ICD2 BRCom 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 IDEMarcelo 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 IDEMarcelo 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 IDEMarcelo 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 IDEMarcelo do C.C. Gaiotto

9.

RESET AND CONNECT ICD: realiza um reset e conecta no