Baixe o app para aproveitar ainda mais
Prévia do material em texto
Instituto Federal de Educação Ciência e Tecnologia Campus Palmeira dos Índios Sistemas Elétricos Microcontroladores Relatório de Estudo Pratico Semáforos Alunos: Edgar Azevedo dos Santos João Paulo Ferreira dos Santos Professor: Dr. Leonaldo José Lyra do Nascimento Palmeira dos índios 12 de Setembro de 2017 Instituto Federal de Educação Ciência e Tecnologia Campus Palmeira dos Índios Sistemas Elétricos Microcontroladores Relatório de Estudo Pratico Semáforos Relatório de Estudo pratico utilizando Kit educacional XM118 e Software MPLAB. Reprodução de alguns projetos utilizando a plataforma do Kit. Estudo realizado sob orientação do Dr. Leonaldo para Auxiliar na aprendizagem direcionada a disciplina de Microcontroladores. Palmeira dos índios 12 de Setembro de 2017 SUMARIO CONTRACAPA ----------------------------------------------------------------- 1 SUMARIO ------------------------------------------------------------------------ 2 OBJETIVOS ---------------------------------------------------------------------- 3 MATERIAS UTILIZADOS ---------------------------------------------------- 4 INTRODUÇÃO TEORICA ----------------------------------------------------- 5 PROCEDIMENTO EXPERIMENTAL--------------------------------------- 6 CONCLUSÕES ------------------------------------------------------------------ 32 REFERÊNCIAS BIBLIOGRÁFICAS ---------------------------------------- 33 OBJETIVO O estudo Prático teve como objetivos técnicos, aproximar a teoria a pratica, utilizando o Kit Educacional XM118 que é dotado de um microcontrolador PIC18f4550 e o software MPLAB IDE para desenvolvimento Teórico. No Kit o objetivo é identificar e conhecer as partes que o compõem, identificar os pinos do microcontrolador PIC 18f4550 assim como conhecer e utilizar alguns comandos do mesmo utilizando suas portas de comunicação. Utilizando exemplos de projetos repassados pelo Professor o objetivo foi desenvolver a programação utilizando linguagem C e de forma pratica utilizando o kit educacional e seus componentes reproduzir e solucionar problemas repassados no material didático. MATERIAIS UTILIZADOS No dia 6 de Setembro, em horário aula da disciplina de Microcontroladores no laboratório de automação industrial foi iniciado o procedimento pratico, que teve como principais equipamentos: Kit Educacional XM118 com Chip PIC18f4550. Software de desenvolvimento MPLAB IDE. Cabo de alimentação três pinos (2P+T). Cabo de comunicação USB. Computador Pessoal 26 Resistores de 220Ω. 26 Led’s nas cores: verde, amarelo e vermelho. Software PROTEUS v8.6. INTRODUÇÃO TEORICA O conteúdo abordado na pratica realizada esta relacionado ao estudo das ferramentas e softwares utilizados para o desenvolvimento, criação e depuração de projetos destacando a importância dos mesmos para o ambiente dos microcontroladores. Ter boas ferramentas de desenvolvimento e tão importante quanto ter um bom microcontrolador para o sucesso de um projeto. De inicio alguns comandos são essências a configuração do Chip PIC 18f4550 dentre eles podemos destacar os seguintes: //Incluindo Bibliotecas #include<P18F4550.h> #include<delays.h> # include.... //Configurando Chip #pragma config PLLDIV = 5 // PLL para 20MHz #pragma config CPUDIV = OSC1_PLL2 // PLL desligado #pragma config FOSC = HS // Fosc = 20MHz -> Tcy = 200ns #pragma config WDT = OFF // Watchdog desativado #pragma config LVP = OFF // Sem gravação em baixa tensão #pragma config DEBUG = ON // Habilita debug Vale ressaltar que a configuração e a inserção de bibliotecas varia de acordo o Projeto, mais essa configuração sempre será necessária. Dentre os comando básicos utilizados em um projeto que utiliza o PIC18f4550 podemos destacar os seguintes: #include<P18F4550.h> #include<delays.h> Define BOTAO PORTDbits.RD0 TRISB = 0b00001111 ; TRISB = 0x0F DDRB = 0b00001111 ; DDRB = 0x0F TRISBbits.TRISB0 = 1 DDRBbits.RB0 = 1 PORTAA = 0x0A LATA = 0x0A PORTCbits.RC0 = 0 LATCbits.LATC0 = 0 Delay10KTCYx(50) Estes são alguns comandos básicos de suma importância em um projeto. PROCEDIMENTO EXPERIMENTAL Semáforos 1° Passo – Sinalizador de Garagem Neste primeiro projeto foi desenvolvida a linguagem de programação que de acordo o problema deve atender a o funcionamento de um sinalizador de garagem. Estes sinalizadores são muito comuns em entradas de garagens ou para sinalização de entrada e saída de veículos. O seu funcionamento é bem básico onde duas lâmpadas desse sinalizador deveram acender de forma intermitente alternando entre si, com um tempo de intervalo correspondente a meio segundo. Em mente dessas condições, e com conhecimento das ferramentas do MPLAB IDE assim como etapas para criar um novo projeto, foi criado o seguinte código em linguagem C para realizar o funcionamento do projeto. #include<P18F4550.h> #include<delays.h> //Configurando PIC18F4550 #pragma config PLLDIV = 5 #pragma config CPUDIV = OSC1_PLL2 #pragma config FOSC = HS #pragma config WDT = OFF #pragma config PBADEN = OFF #pragma config LVP = OFF #pragma config DEBUG = ON int tempo=100; void main(void){ TRISA = 0x00; TRISE = 0x00; while(1){ PORTAbits.RA5 = 1; // liga led 1 Delay10KTCYx (tempo); PORTEbits.RE0 = 1; //liga led 2 PORTAbits.RA5 = 0; // desliga led 1 Delay10KTCYx (tempo); PORTEbits.RE0 = 0; //desliga led 2 } } Após digitado o código realizamos sua compilação e podemos confirmar a correta digitação e desenvolvimento do mesmo. Para representar o funcionamento desta prática foi utilizado o Kit educacional XM118. O ideal neste exemplo é utilizar lâmpadas de cores diferentes, utilizando da plataforma do Kit podemos representar esse funcionamento em sua própria parte de hardware. No bloco de ferramentas Bicolor LED’S, localizado no próprio Kit, é possível acender dois LED’S com cores diferentes entre si, dependendo da configuração realizada na programação estes LED’S podem acender nas cores verde e vermelho para LED 1 e as mesmas cores para LED 2. Utilizando do conhecimento adquirido em praticas anteriores o projeto foi transferido para o Kit e logo em seguida executado, o resultado podemos ver a seguir nas imagens 1.1, 1.2 e 1.3. Imagem 1.1 Imagem 1.2 Imagem 1.3 A imagem 1.1 representa o inicio da sequencia, quando o LED 1 está acesso com tonalidade na cor verde, após passar um tempo de meio segundo o LED 2 acende com tonalidade vermelha como vemos na imagem 1.2 e ao mesmo tempo apaga o LED 1 que estava acesso. Essa repetição acontece intermitentemente até que o funcionamento seja interrompido. A imagem 1.3 mostra o exato momento da transição de acionamento de LED 1 para LED 2. 2° Passo – Cruzamento de duas Ruas Esta segunda prática foi desenvolvida a linguagem de programação que de acordo a necessidade do problema, deve comandar um semáforo que é responsável pelo controle de trafego num cruzamento de duas vias. O semáforo conta com lâmpadas verdes, amarelas e vermelhas, uma de cada cor em cada sentido da via. Para o funcionamento deve-se adotar o seguinte padrão de tempo de acionamento das lâmpadas: lâmpadas verdes e vermelhas 10 segundos e lâmpadas amarelas, 3 segundos Em mente dessas condições, e com conhecimento das ferramentas do MPLAB IDE assim como etapas para criar um novo projeto, foi criado o seguinte código em linguagem C para realizar o funcionamento do projeto. #include<P18F4550.h> #include<delays.h> //Configurando PIC18F4550 #pragma config PLLDIV = 5 #pragma config CPUDIV = OSC1_PLL2 #pragma config FOSC = HS#pragma config WDT = OFF #pragma config PBADEN = OFF #pragma config LVP = OFF #pragma config DEBUG = ON void main(void){ TRISD = 0x00; PORTD =0x00; while(1){ PORTDbits.RD5 = 1; // liga vermelho 2 Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); PORTDbits.RD4 = 1; //liga verde 1 PORTDbits.RD0 = 0; // desliga vermelho 1 Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); PORTDbits.RD4 = 0; //desliga verde 1 PORTDbits.RD2 = 1; //liga amarelo 1 Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); PORTDbits.RD2 = 0; //desliga amarelo 1 PORTDbits.RD0 = 1; //liga vermelho 1 Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); PORTDbits.RD5 = 0; //desliga vermelho 2 PORTDbits.RD1 = 1; //liga verde 2 Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); PORTDbits.RD1 = 0;//desliga verde 2 PORTDbits.RD3 = 1; //liga amarelo 2 Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); PORTDbits.RD3 = 0; //desliga amarelo 2 } } Após digitado o código realizamos sua compilação e podemos confirmar a correta digitação e desenvolvimento do mesmo. Para representar o funcionamento desta prática foi utilizado o Kit educacional XM118, em especial o seu protoboard, Applications. Neste espaço foi realizada a montagem de um circuito que utiliza 6 LED’S, dois na cor verde, dois na cor vermelha e dois na cor amarela, essa configuração representa o funcionamento de um semáforo no cruzamento de duas ruas. Utilizando do conhecimento adquirido em praticas anteriores o projeto foi transferido para o Kit e logo em seguida executado, o resultado podemos ver a seguir nas imagens a seguir: Imagem 1.4 Imagem 1.5 Rua 2 Imagem 1.6 Imagem 1.7 Rua 2 Rua 2 Rua 1 Rua 1 Rua 1 Rua 1 Rua 1 Rua 2 Rua 2 Imagem 1.6 Rua 2 Rua 2 Rua 1 Imagem 1.9 Rua 1 Imagem 1.8 Imagem 1.8 Rua 2 Imagem 1.9 Imagem 1.8 Imagem 2.0 Rua 2 Rua 1 Rua 2 Rua 2 Imagem 1.9 Nas imagens é possível visualizar todos estágios de funcionamento desde o primeiro na imagem 1.4 até o ultimo na imagem 1.9, já que na imagem 2.0 o ciclo se repete. Em alguns momentos percebe-se que as lâmpadas vermelhas ficam acessas em ambas ruas, como podemos ver nas imagens 1.6 e 1.9, este pequeno espaço de tempo é necessário para garantir a segurança e evitar acidentes no cruzamento, ela certifica dando um tempo de segurança que os condutores de uma das vias realmente parou. 3° Passo – Semáforo com contador de tempo para carros e pedestres Foi desenvolvida a linguagem de programação para atender as necessidades do problema repassado onde deve ser construído um semáforo dotado de contadores de tempo para os carros e os pedestres, que ira fazer o controle do cruzamento de duas avenidas. Este semáforo além de possuir as lâmpadas comuns verde, amarela e vermelha para os carros, possui também contadores que mostram o tempo em ordem decrescente de cada estagio do semáforo, além de mostrar para os pedestres que desejam cruzar a via luzes de sinalização nas cores verde e vermelha assim como contadores que mostra quanto tempo lhe resta para atravessar a avenida.Imagem 2.0 Imagem 2.0 Em mente do funcionamento do programa, e com conhecimento das ferramentas do MPLAB IDE assim como etapas para criar um novo projeto, foi criado o seguinte código em linguagem C para realizar o funcionamento do projeto. #include<P18F4550.h> #include<delays.h> //Configurando PIC18F4550 #pragma config PLLDIV = 5 #pragma config CPUDIV = OSC1_PLL2 #pragma config FOSC = HS #pragma config WDT = OFF #pragma config PBADEN = OFF #pragma config LVP = OFF #pragma config DEBUG = ON int w=1,r=-1, d, tempo1 = 5,tempob=1,i=10,a,a1,z=0,p=1,r1=60,r2=-1,i1=3,i2=10,i3=3; int const numero[] = { 0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F,}; void main(void){ TRISD = 0x00; TRISB = 0x00; TRISA = 0x00; TRISC = 0x00; TRISE = 0x00; PORTA = 0x00; PORTB = 0x00; PORTE = 0x00; PORTC = 0x00; while(1){ PORTBbits.RB5 = 1; // liga vermelho 2 PORTBbits.RB4 = 1; //liga verde 1 PORTCbits.RC6 = 1; // liga verde para pedrestes rua 2 PORTCbits.RC0 = 1; // liga vermelho para pedrestes rua 1 PORTBbits.RB0 = 0; // desliga vermelho 1 w=1; while(w==1){ a = (i/10); a1 = (i%10); i--; while(p==1){ PORTD = numero [a]; PORTAbits.RA5 = 1 ; Delay10KTCYx(tempo1); PORTAbits.RA5 = 0 ; PORTD = numero [a1]; PORTAbits.RA2 = 1 ; Delay10KTCYx(tempo1); PORTAbits.RA2 = 0 ; z++; if(z==r1){ p=0; z=0; } } p=1; if(i==r){ i=10; w=0; } } a1=0; a=0; p=1; z=0; PORTBbits.RB4 = 0; //desliga verde 1 PORTBbits.RB2 = 1; //liga amarelo 1 w=1; while(w==1){ a = (i1/10); a1 = (i1%10); i1--; while(p==1){ //Repetição para funcionamento da buzina durante sinal amarelo PORTD = numero [a]; PORTEbits.RE0 = 1 ; PORTCbits.RC2 = 1; // liga buzina Delay10KTCYx(tempob); PORTCbits.RC2 = 0; // desliga buzina Delay10KTCYx(tempob); PORTCbits.RC2 = 1; // liga buzina Delay10KTCYx(tempob); PORTCbits.RC2 = 0; // desliga buzina Delay10KTCYx(tempob); PORTCbits.RC2 = 1; // liga buzina Delay10KTCYx(tempob); PORTCbits.RC2 = 0; // desliga buzina PORTEbits.RE0 = 0 ; PORTD = numero [a1]; PORTEbits.RE2 = 1 ; PORTCbits.RC2 = 1; // liga buzina Delay10KTCYx(tempob); PORTCbits.RC2 = 0; // desliga buzina Delay10KTCYx(tempob); PORTCbits.RC2 = 1; // liga buzina Delay10KTCYx(tempob); PORTCbits.RC2 = 0; // desliga buzina Delay10KTCYx(tempob); PORTCbits.RC2 = 1; // liga buzina Delay10KTCYx(tempob); PORTCbits.RC2 = 0; // desliga buzina PORTEbits.RE2 = 0 ; z++; if(z==r1){ p=0; z=0; } } p=1; if(i1==r2){ i1=3; w=0; } } a1=0; a=0; p=1; z=0; PORTBbits.RB2 = 0; //desliga amarelo 1 PORTBbits.RB0 = 1; //liga vermelho 1 PORTBbits.RB5 = 0; //desliga vermelho 2 PORTCbits.RC6 = 0; // desliga verde para pedrestes rua 2 PORTCbits.RC0 = 0; // desliga vermelho para pedrestes rua 1 PORTCbits.RC1 = 1; // liga vermelho para pedrestes rua 2 PORTCbits.RC7 = 1; // liga verde para pedrestes rua 1 PORTBbits.RB1 = 1; //liga verde 2 w=1; while(w==1){ a = (i2/10); a1 = (i2%10); i2--; while(p==1){ PORTD = numero [a]; PORTAbits.RA5 = 1 ; Delay10KTCYx(tempo1); PORTAbits.RA5 = 0 ; PORTD = numero [a1]; PORTAbits.RA2 = 1 ; Delay10KTCYx(tempo1); PORTAbits.RA2 = 0 ; z++; if(z==r1){ p=0; z=0; } } p=1; if(i2==r){ i2=10; w=0; }} a1=0; a=0; p=1; z=0; PORTBbits.RB1 = 0;//desliga verde 2 PORTBbits.RB3 = 1; //liga amarelo 2 w=1; while(w==1){ a = (i3/10); a1 = (i3%10); i3--; while(p==1){ PORTD = numero [a]; PORTEbits.RE0 = 1 ; PORTCbits.RC2 = 1; // liga buzina Delay10KTCYx(tempob); PORTCbits.RC2 = 0; // desliga buzina Delay10KTCYx(tempob); PORTCbits.RC2 = 1; // liga buzina Delay10KTCYx(tempob); PORTCbits.RC2 = 0; // desliga buzina Delay10KTCYx(tempob); PORTCbits.RC2 = 1; // liga buzina Delay10KTCYx(tempob); PORTCbits.RC2 = 0; // desliga buzina PORTEbits.RE0 = 0 ; PORTD = numero [a1]; PORTEbits.RE2 = 1 ; PORTCbits.RC2 = 1; // liga buzina Delay10KTCYx(tempob); PORTCbits.RC2 = 0; // desliga buzina Delay10KTCYx(tempob); PORTCbits.RC2 = 1; // liga buzina Delay10KTCYx(tempob); PORTCbits.RC2 = 0; // desliga buzina Delay10KTCYx(tempob); PORTCbits.RC2 = 1; // liga buzina Delay10KTCYx(tempob); PORTCbits.RC2 = 0; // desliga buzina PORTEbits.RE2 = 0 ; z++; if(z==r1){ p=0; z=0; } } p=1; if(i3==r2){ i3=3; w=0; } } a1=0; a=0; p=1; z=0; PORTBbits.RB3 = 0; //desliga amarelo 2 PORTCbits.RC1 = 0; // desliga vermelho para pedrestes rua 2 PORTCbits.RC7 = 0; // desliga verde para pedrestes rua 1 PORTCbits.RC2 = 0; // desliga buzina } } Após digitado o código realizamos sua compilação e podemos confirmar a correta digitação e desenvolvimento do mesmo. Para representar o funcionamento desta prática foi utilizado o Kit educacional XM118, em especial o seu protoboard, Applications. Neste espaço foi realizada a montagem de um circuito que utiliza, 10 LED’S, 4 de cor vermelha, 2 de cor amarela e 4 de cor verde, onde para os carros serão utilizados verde, amarelo e vermelho, e para os pedestres verde e vermelho, essa configuração pode ser vista na imagem 2.1. Utilizando o conhecimento a respeito de display de sete segmentos que foi abordada em praticas anteriores, neste exemplo será empregada uma contagem que será representada nestes displays disponíveis no próprio Kit, os tempos a serem contados são tempos de estagio de funcionamento do semáforo para os carros e o tempo para os pedestres. Mais uma ferramenta disponível no Kit será utilizada neste exemplo, uma buzina avisara aos pedestres quando o semáforo estiver perto de fechar ou seja quando este estiver no estagio de cor amarela para os veículos. Utilizando do conhecimento adquirido em praticas anteriores o projeto foi transferido para o Kit e logo em seguida executado, o resultado podemos ver a seguir nas imagens. Imagem 2.1 P 2 Rua 2 P 1 Rua 1 Na imagem 2.1 podemos compreender que P1 é a sinalização para os pedestres relacionados à Rua 1, por outro lado P2 também é a sinalização para pedestres mais dessa vez para Rua 2. Os displays de sete segmentos funcionaram da seguinte forma os dois primeiros U5 e U6 mostraram o tempo de funcionamento para os estágios de sinal fechado e aberto, ou seja, quando o transito estiver livre para carros e bloqueado para pedestres ou o inverso, este tempo foi definido em 10 segundos a imagem 2.2 representa. Os displays U7 e U8 mostraram o tempo em que o semáforo ficara com a luz amarela acessa, ou seja, quando o sinal esta próximo de fechar, e justamente neste tempo soara uma buzina informando aos pedestres, este período terá duração de 3 segundos, a imagem 2.3 demostra. U5 Imagem 2.2 U6 U5 Imagem 2.3 U8 U7 Neste momento da imagem 2.3 a buzina emite um som que pode ser controlado através da frequência de acionamentos, ou seja quanto mais acionamentos num dado espaço de tempo o som fica mais agudo ou quanto menos acionamentos mais o som fica grave, esses acionamentos são a quantidade de vezes que a buzina varia do estado ligado ao desligado. 4° Passo – Semáforo moderno Foi desenvolvida a linguagem de programação para atender as necessidades do problema repassado onde deve ser construído um semáforo para o cruzamento de duas avenidas. Este semáforo possui 26 lâmpadas nas cores vermelho, amarelo e verde. Seu funcionamento é básico, comum de todos semáforos o diferencial esta na sua composição física e sequencia de funcionamento. É um semáforo animado, sua sequencia de funcionamento consiste no acionamento de duas lâmpadas por vez isso ajuda a reduzir o estresse dos motoristas, pois diverte a espera pela mudança de estado do semáforo. Em mente do funcionamento do programa, e com conhecimento das ferramentas do MPLAB IDE assim como etapas para criar um novo projeto, foi criado o seguinte código em linguagem C para realizar o funcionamento do projeto. #include<P18F4550.h> #include<delays.h> //Configurando PIC18F4550 #pragma config PLLDIV = 5 #pragma config CPUDIV = OSC1_PLL2 #pragma config FOSC = HS #pragma config WDT = OFF #pragma config PBADEN = OFF #pragma config LVP = OFF #pragma config DEBUG = ON void main(void){ TRISD = 0x00; TRISB = 0x00; TRISA = 0x00; TRISC = 0x00; TRISE = 0x00; PORTA = 0x00; PORTB = 0x00; PORTE = 0x00; PORTC = 0x00; while(1){ PORTDbits.RD6 = 1; // liga 1 PORTAbits.RA5 = 1; //liga 6 PORTDbits.RD5 = 1; // liga 21 PORTDbits.RD0 = 1; // liga 26 Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); PORTDbits.RD6 = 0; // desliga 1 PORTDbits.RD0 = 0; // desliga 26 PORTCbits.RC6 = 1; // liga 2 PORTDbits.RD1 = 1; // liga 25 Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); PORTCbits.RC6 = 0; // desliga 2 PORTDbits.RD1 = 0; // desliga 25 PORTCbits.RC2 = 1; // liga 3 PORTDbits.RD4 = 1; // liga 24 Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); PORTCbits.RC2 = 0; // desliga 3 PORTDbits.RD4 = 0; // desliga 24 PORTCbits.RC7 = 1; // liga 4 PORTDbits.RD3 = 1; // liga 23 Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); PORTCbits.RC7 = 0; // desliga 4 PORTDbits.RD3 = 0; // desliga 23 PORTCbits.RC1 = 1; // liga 5 PORTCbits.RC0 = 1; // liga 22 Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); PORTCbits.RC1 = 0; // desliga 5 PORTCbits.RC0 = 0; // desliga 22 Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); PORTAbits.RA5 = 0; //desliga 6 PORTBbits.RB0 = 1; // liga 7 Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); PORTDbits.RD5 = 0; // deslia 21 PORTBbits.RB0 = 0; // desliga 7 Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); PORTBbits.RB2 = 1; // liga 8 PORTBbits.RB5 = 1; //liga 13 PORTBbits.RB6 = 1; // liga 14 PORTBbits.RB1 = 1; // liga 19 Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0);Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); PORTBbits.RB5 = 0; //deslia 13 PORTBbits.RB6 = 0; // desliga 14 PORTBbits.RB3 = 1; //liga 12 PORTBbits.RB4 = 1; // liga 15 Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); PORTBbits.RB3 = 0; //desliga 12 PORTBbits.RB4 = 0; // desliga 15 PORTBbits.RB7 = 1; //liga 11 PORTAbits.RA0 = 1; // liga 16 Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); PORTBbits.RB7 = 0; //desliga 11 PORTAbits.RA0 = 0; // desliga 16 PORTAbits.RA4 = 1; //liga 10 PORTAbits.RA2 = 1; // liga 17 Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); PORTAbits.RA4 = 0; // desliga 10 PORTAbits.RA2 = 0; // desliga 17 PORTAbits.RA1 = 1; // liga 9 PORTAbits.RA3 = 1; // liga 18 Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); PORTAbits.RA1 = 0; // desliga 9 PORTAbits.RA3 = 0; // desliga 18 Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); PORTBbits.RB1 = 0; // desliga 19 PORTDbits.RD2 = 1; // liga 20 Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); PORTDbits.RD2 = 0; // desliga 20 PORTBbits.RB2 = 0; // desliga 8 Delay10KTCYx (0); Delay10KTCYx (0); Delay10KTCYx (0); } } Após digitado o código realizamos sua compilação e podemos confirmar a correta digitação e desenvolvimento do mesmo. Para representar o funcionamento desta prática foi utilizado o software PROTEUS, devido às limitações físicas do Kit XM118. Para realizar o funcionamento no PROTEUS foram utilizados como componentes os seguintes: dois capacitores de 15pF, um Crystal de 20Mhz, Chip PIC18F4550, doze LED’s verdes, doze LED’s vermelhos, 2 LED’s amarelos e 26 resistores de 220Ω. A montagem pode ser vista na imagem 2.4. Imagem 2.4 Já nas imagens 2.5, 2.6, 2.7 e 2.8 podemos ver a simulação de funcionamento do circuito nas suas principais etapas. O semáforo conta com quatorze etapas de funcionamento. Com tempos de 10 segundos para sinal vermelho em uma rua e verde em outra, imagens 2.5 e 2.7, 2 segundos para sequencia de contagem, imagem 2.8 e 3 segundos para lâmpadas amarelas acessas, imagem 2.6. Imagem 2.5 Imagem 2.6 Imagem 2.8 Imagem 2.7 5° Passo – Semáforo Formula 1 Foi desenvolvida a linguagem de programação para atender as necessidades da situação seguinte onde onde deve ser construído um semáforo tradicional utilizado na largada das corridas de formula 1. Este semáforo possui 12 lâmpadas na cor vermelha, seu funcionamento é básico, comum de todos semáforos desta característica, as lampadas devem serem acionadas em sequencia de maneira ate todas ficarem acessas, essa sequencia acontece com um intervalo de tempo de 3 segundos entre si, o que torna a largada dos carros emocionante. Em mente do funcionamento do programa, e com conhecimento das ferramentas do MPLAB IDE assim como etapas para criar um novo projeto, foi criado o seguinte código em linguagem C para realizar o funcionamento do projeto. #include<P18F4550.h> #include<delays.h> //Configurando PIC18F4550 #pragma config PLLDIV = 5 #pragma config CPUDIV = OSC1_PLL2 #pragma config FOSC = HS #pragma config WDT = OFF #pragma config PBADEN = OFF #pragma config LVP = OFF #pragma config DEBUG = ON void main(void){ TRISD = 0x00; TRISB = 0x00; TRISC = 0x00; PORTB = 0x00; PORTC = 0x00; PORTD = 0x00; PORTCbits.RC6 = 1; // liga 1 PORTDbits.RD0 = 1; // liga 12 Delay10KTCYx(0); Delay10KTCYx(0); Delay10KTCYx(0); Delay10KTCYx(0); Delay10KTCYx(0); Delay10KTCYx(0); PORTDbits.RD1 = 1; // liga 2 PORTDbits.RD5 = 1; // liga 11 Delay10KTCYx(0); Delay10KTCYx(0); Delay10KTCYx(0); Delay10KTCYx(0); Delay10KTCYx(0); Delay10KTCYx(0); PORTDbits.RD2 = 1; // liga 3 PORTBbits.RB0 = 1; // liga 10 Delay10KTCYx(0); Delay10KTCYx(0); Delay10KTCYx(0); Delay10KTCYx(0); Delay10KTCYx(0); Delay10KTCYx(0); PORTDbits.RD3 = 1; // liga 4 PORTCbits.RC7 = 1; // liga 9 Delay10KTCYx(0); Delay10KTCYx(0); Delay10KTCYx(0); Delay10KTCYx(0); Delay10KTCYx(0); Delay10KTCYx(0); PORTDbits.RD4 = 1; // liga 5 PORTCbits.RC1 = 1; // liga 8 Delay10KTCYx(0); Delay10KTCYx(0); Delay10KTCYx(0); Delay10KTCYx(0); Delay10KTCYx(0); Delay10KTCYx(0); PORTDbits.RD6 = 1; // liga 6 PORTDbits.RD7 = 1; // liga 7 Delay10KTCYx(0); Delay10KTCYx(0); Delay10KTCYx(0); Delay10KTCYx(0); Delay10KTCYx(0); Delay10KTCYx(0); PORTCbits.RC6 = 0; // desliga 1 PORTDbits.RD1 = 0; // desliga 2 PORTDbits.RD2 = 0; // desliga 3 PORTDbits.RD3 = 0; // desliga 4 PORTDbits.RD4 = 0; // desliga 5 PORTDbits.RD6 = 0; // desliga 6 PORTDbits.RD5 = 0; // desliga 11 PORTDbits.RD0 = 0; // desliga 12 PORTBbits.RB0 = 0; // desliga 10 PORTCbits.RC7 = 0; // desliga 9 PORTCbits.RC1 = 0; // desliga 8 PORTDbits.RD7 = 0; // desliga 7 Delay10KTCYx(0); Delay10KTCYx(0); Delay10KTCYx(0); Delay10KTCYx(0); Delay10KTCYx(0); Delay10KTCYx(0); } Após digitado o código realizamos sua compilação e podemos confirmar a correta digitação e desenvolvimento do mesmo. Para representar o funcionamento desta prática foi utilizado o software PROTEUS, devido às limitações físicas do Kit XM118. Para realizar o funcionamento no PROTEUS foram utilizados como componentes os seguintes: dois capacitores de 15pF, um Crystal de 20Mhz, Chip PIC18F4550, doze LED’s vermelhos, 12 resistores de 220Ω. A montagem pode ser vista na imagem 2.9. Imagem 2.9 Já as imagens 3.0 e 3.1 mostram a simulação de funcionamento do circuito, na imagem 3.0 o estado inicial do circuito com dois LED’s ligado, ou seja, quando se inicia a contagem de tempo, na imagem 3.1 o funcionamento está em seu penúltimo estado quando todos LED’s estão acessos, ou seja, na largada. O ultimo estagio são todos LED’s desligados. Imagem 3.0 Imagem 3.1 Com está pratica finalizamos o Processo experimental, de desenvolvimento e aperfeiçoamento de semáforos. Todo o equipamento utilizado foi recolhido e direcionado para seus respectivos lugares. Conclusões Esta ultima etapa de praticas teve seus objetivos parcialmente alcançados e um saldo positivo onde possibilitou aprimorar ferramentas já utilizadas assim como adstringir novos conhecimentos, entretanto tivemos dificuldades em alguns passos devido as limitações do KIT XM118 e de funcionamento de seus componentes. Nessa terceira a ênfase foi em programas que envolveram o desenvolvimento e aprimoramento de semáforos de transito, o que tornou o estudo bastante pratico trazendo como exemplos situações a quais estamos habituados enfrentar no transito, desta forma além de reforçar o desenvolvimento da logica na área de programação nos aproxima daquilo que estamos habituados a encontrar no dia a dia. O material repassado pelo Professor facilitou e ajudou na elaboração dos programas nos repassando dados importantes como sequencias de funcionamento. A execução desse estudo nos possibilitou entender os problemas através da teoria, executa-los através da pratica observando seu funcionamento assim como aperfeiçoa-lo de acordo a necessidade.Aluno Responsável: EDGAR AZEVEDO DOS SANTOS FILHO Referências Datasheet Kit XM118 Datashet PIC18f4550 Material Repassado em sala de Aula
Compartilhar