Академический Документы
Профессиональный Документы
Культура Документы
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;
Divisor Resistivo.
Clculos do Projeto 1
Clculos do Projeto 2
Clculos do Projeto 3
Clculos do Projeto 4
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
Clculos do Projeto 5
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
Clculos do Projeto 6
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
Clculos do Projeto 7
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
Clculos do Projeto 8
10
Clculos do Projeto 9
11
Clculos do Projeto 10
12
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
Clculos do Projeto 11
14
Circuito com opto acoplador com acionamento da carga com nvel lgico 1.
Clculos do Projeto 12
15
Clculos do Projeto 13
16
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
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
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
input(pino)
input(pin_b0);
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);
input_X()
input_D();
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
output_high(Buzzer);
23
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
output_low(Buzzer);
output_X()
Operadores Aritmticos
+ Adio Subtrao * Multiplicao / Diviso % Resto da Diviso ++ Incremento -- Decremento
Operadores de deslocamento
>> - Deslocamento a direita << - Deslocamento a esquerda
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
27
Fluxograma do item 1:
28
29
Fluxograma do item 2:
30
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)
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); } }
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
34
35
Figura 3.a. Circuito eltrico para o projeto do Decodificador 4 para 16. Completar o projeto!!!
36
Exerccio 3B BinHexa.c
segmentos (2 aulas)
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.
37
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.
// ****** 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
(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.
43
44
Fluxograma do Seqenciador:
45
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
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
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
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
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
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
48
49
50
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.
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
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
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.
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
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
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
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
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
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
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
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.
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
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
74
MATERIAIS DE APOIO
75
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; }
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
no
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
no
no
no C>D? sim
Comando R
Comando T
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
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
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
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;
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
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...)
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
91
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
93
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
95
96
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.
97
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
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
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
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
103
Curso de Microcontroladores PIC Prof. Marcelo do C.C. Gaiotto CONJUNTO DE CHAVES DIGITAIS COM 4 BOTES
104
105
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
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:
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 =
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 =
Iin =
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.
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:
R1 =
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.
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.
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.
IR2 =
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 =
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
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
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;
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.
down.
16
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.
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.
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:
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:
Rb =
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:
Rb =
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.
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:
IR1 =
Logo o valor de R1 ser:
IBsat = 90A 5
IR1 =
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:
21
22
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.
RB =
R2 =
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:
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
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
=
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:
RB =
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 =
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 =
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:
RB =
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 =
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
29
ELETRNICA APLICADA
Tcnicas de Interfaceamento & Sistemas Microcontrolados
Captulo do MPLAB IDE verso 8.20a Reviso 1 semestre 2010
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.
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.
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.
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.
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.
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).
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.
Re-nomear a NOVA PASTA para -- ELN APLICADA e a DATA (exemplo: ELN APLICADA 31-03-2009), conforme a figura 8.
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.
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.
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.
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.
A tela do programa deve apresentar as informaes contidas na figura 13, onde so visualizadas as identificaes do projeto. Caso no aparea esta
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.
Uma rea de edio de texto (UNTITLED sem ttulo) aberta como a apresentada na figura 15.
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
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.
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
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.
12
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);
Em seguida clicar sobre o item - ADD FILES ADICIONAR ARQUIVOS (figura 21);
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
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 .
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
Repare que ser aberta a mesma janela apresentada na figura 22. Assim ser s repetir o procedimento de incluso descrito anteriormente.
15
A outra seria utilizando o atalho na barra de ferramentas do MPLAB IDE, apresentadas na figura 26.
16
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.
17
18
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.
19
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.
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
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.
3. A figura 35 apresenta as opes do campo SIZE, tamanho em bits do valor que ser apresentado na rea de VALUE.
21
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.
22
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 39. Exemplo com outros itens de visualizao de valores na barra de ferramenta
23
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.
24
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.
25
Os novos atalhos que foram inseridos possuem funes especficas no controle da simulao do programa. A figura 43 apresenta todos os atalhos, 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.
26
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
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.
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
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.
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.
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
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
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.
31
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.
32
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.
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.
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
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.
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.
1.
PROGRAM
TARGET
DEVICE:
gravar
um
34
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.
35
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
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.
36
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.
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.
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
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
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
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.
40
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.
41
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.
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
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.
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.
Os itens, WATCHDOG TIMER, POWER UP TIMER, BROWN OUT DETECT, DATA EE READ PROTECT e CODE PROTECT, possuem apenas
43
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.
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