Baixe o app para aproveitar ainda mais
Prévia do material em texto
Universidade Tecnológica Federal do Paraná Departamento de Engenharia Elétrica Engenharia Elétrica GERSON KERECTH MARCOS ROGÉRIO FERNANDES Relatório apresentado na disciplina de microcontrolados do curso de Engenharia Elétrica. Professor: Marcos José da Silva Curitiba 2015 Introdução 2 O objetivo do projeto é utilizar os conhecimentos adquiridos na disciplina de microcontrolados e aplica-lo de forma pratica, para isto iremos criar um gerador de ondas que é um instrumento fundamental na área da Engenharia Elétrica. Trata-se de um gerador de três sinais básicos, que são usados frequentemente. Sendo, o de uso mais comum na engenharia o sinal senoidal, que é utilizado na rede elétrica. Podendo também ser representado por sinais quadrados, sendo sua aplicação na área da eletrônica digital. Outra aplicação é a onda triangular, sendo usada na resposta de circuitos que necessitem de excitação de sinais lineares. Proposta de projeto (Gerador de Funções) A proposta é a montagem de um gerador de funções usando o PIC 16F873A para gerar 3 tipos de sinais, que são onda senoidal, onda quadrada e onda triangular. Sendo possível variar a amplitude, a frequência e o duty clycle (no caso da onda quadrada). Para o projeto, serão utilizados: modulo PWM, Timer, EEPROM e display LCD. Abaixo segue a descrição do uso de cada modulo: - Modulo PWM: Será utilizado junto com um filtro RC para gerar uma saída de tensão variável correspondendo à amplitude do sinal gerado. - EEPROM: Será utilizado para guardar as ultimas configurações do gerador de funções. - Display LCD: Será utilizado para mostrar os parâmetros atuais do gerador de sinal como a frequência, amplitude e tipo de sinal. Para alterar os parâmetros do sistema, será utilizado botões do tipo push button. Diagrama de Blocos Figura 1 – Diagrama em blocos Diagrama em blocos: Todos os parâmetros ficaram salvos na EEPROM. Através do controle implementado usando push button, será possível alterar a 3 frequência, amplitude e o tipo de onda na saída. Os valores salvos na EEPROM serão exibidos no display LCD. Circuito Simulação: Figura 2 – Circuito para simulação no PROTEUS®. Circuito elétrico: Figura 3 – Circuito elétrico feito no EAGLE® 4 PCB: Figura 4 - PCB feito no EAGLE® ETAPAS DO PROJETO O projeto foi implementado em duas etapas, sendo a primeira a prototipagem, ou seja, a montagem em uma protoboard para testes e ensaios de todos as funções do gerador. 5 MONTAGEM EM PROTOBOARD Figura 5 – Montagem na protoboard. PROCEDIMENTOS Com o circuito montado na protoboard, foi ligado a uma fonte CC de 9V e com o auxílio de um osciloscópio digital foi verificado as formas de ondas e seus devidos parâmetros. ONDA SENOIDAL Figura 6 – Onda senoidal gerada 6 ONDA QUADRADA ONDA DENTE DE SERRA Figura 7 – Onda quadrada gerada. Figura 8 – Onda dente de serra gerada. 7 CONFECÇÃO DO PCB: Na segunda parte do projeto, foi confeccionada a placa PCB para soldagem dos componentes. Segue lista de componentes utilizados no circuito: *1 PIC 16F873A * 3 capacitores cerâmicos 22pF 25V * 1 capacitor cerâmico 100 nF 50V * 1 Cristais de 20MHz * 1 diodo 1n4004 * 1 LED verde 5mm. * 4 chaves push button * 1 chave três posições * 6 resistores 10KΩ 1/4W * 1 resistor 330Ω * 1 Placa de fenolite 10x10cm * 1 Soquete para CI de 28 pinos Resultado final da corrosão PCB: Figura 9 – PCB corroído. 8 Placa com os componentes soldados: Figura 10 – Placa soldada Resultado final, placa pronta: Figura 11 – Placa pronta. 9 Testando a placa: Com o circuito já confeccionado, foi ligado a uma fonte CC de 9 V e com o auxílio de um osciloscópio digital foi as formas de ondas e seus parâmetros novamente. ONDA SENOIDAL Figura 12 – Onda senoidal gerador final. 10 ONDA QUADRADA Figura 13 – Onda quadrada gerador final. 11 ONDA DENTE DE SERRA Figura 14 – Onda dente de serra gerador final. Código fonte do projeto (usando MikroC): /// LCD module connections sbit LCD_RS at RB1_bit; sbit LCD_EN at RB2_bit; sbit LCD_D4 at RC2_bit; sbit LCD_D5 at RC3_bit; sbit LCD_D6 at RC4_bit; sbit LCD_D7 at RC5_bit; sbit LCD_RS_Direction at TRISB1_bit; sbit LCD_EN_Direction at TRISB2_bit; sbit LCD_D4_Direction at TRISC2_bit; sbit LCD_D5_Direction at TRISC3_bit; sbit LCD_D6_Direction at TRISC4_bit; sbit LCD_D7_Direction at TRISC5_bit; char setFreq = 0; char flagDisplay=1; char flagFreq=1; char type=1; char duty=127; char temp; char poweron=0; char str[]=" "; char amp=255; void updateDisplay() { Lcd_Cmd(_LCD_CLEAR); // Limpa display switch(flagFreq) { case 0: str[0]=(setFreq+1)+'0'; str[1]=' '; str[2]=' '; 12 str[3]=' '; str[4]=' '; Lcd_Out(2, 1,"Freq=mod"); Lcd_Out(2, 9,str); break; case 1: temp = (256-duty)*100/256; str[0]=temp/10+'0'; str[1]=temp%10+'0'; str[2]='%'; str[3]=' '; str[4]=' '; Lcd_Out(2, 1,"Duty="); Lcd_Out(2, 6,str); break; case 2: temp = amp*100/256; str[0]=temp/10+'0'; str[1]=temp%10+'0'; str[2]='%'; str[3]=' '; str[4]=' '; Lcd_Out(2, 1,"Amp="); Lcd_Out(2, 6,str); break; } switch(type) { case 0: Lcd_Out(1, 1, "SINE WAVE"); // Imprime text no display iniciando na linha 1, coluna break; case 1: Lcd_Out(1, 1, "DENTE SERRA"); // Imprime text no display iniciando na linha 1, coluna break; case 2: Lcd_Out(1, 1, "SQUARE WAVE"); // Imprime text no display iniciando na linha 1, coluna } flagDisplay=0; } void main() { int i=0; char j=0; double SIN[]={2.5000,3.4567,4.2678,4.8097,5.0000,4.8097,4.2678,3.4567,2.5000,1.5433,0.7322,0.1903,0,0.1903,0.7322,1.5433,2.5000}; TRISB=0xFFF; ///PORT B COMO ENTRADA Pwm2_Init(5000); Pwm2_Start(); Pwm2_Set_Duty(0); Lcd_Init(); // Inicializa display segundo conexoes acima Lcd_Cmd(_LCD_CURSOR_OFF); // Desliga cursor INTCON.GIE=1; ///ATIVA INTERRUPCAO INTCON.INTE=1; ///ATIVA INTERRUPCAO EXTERNA NO PINO RB0 INTCON.INTF=0; ///SET FLAG INTERRUPCAO EXTERNA COMO ZERO INTCON.RBIE=1; INTCON.RBIF=0; TRISC=0; ///SET PORTA C COMO SAIDA TMR2=0; ///ZERA TIMER DO PWM setFreq = EEPROM_read(0x00); duty = EEPROM_read(0x01); type = EEPROM_read(0x02); flagFreq = EEPROM_read(0x03); amp = EEPROM_read(0x04); while(1) { if (flagDisplay) updateDisplay(); if (type==0){////gera seno Pwm2_Set_Duty(SIN[i]*amp/5); i++; if (i==16) i=0; }else if (type==1) { ////gera onda dente de serra j=j+16; Pwm2_Set_Duty(j); TMR2=0; if(j>amp) j=0; }else if (type==2){ ///gera onda quadrada j=j+16; if (j<duty) Pwm2_Set_Duty(0); else Pwm2_Set_Duty(amp); TMR2=0; } switch(setFreq) { case 0: delay_us(500); break; case 1: delay_ms(1); break; case 2: delay_ms(5); break; case 3: delay_ms(10); break; case 4: delay_ms(15); break; } } } void interrupt(void){ if (INTCON.RBIF){ if (RB5_bit) if (flagFreq==0) { setFreq++;if (setFreq > 4) setFreq=0; EEPROM_write(0x00,setFreq); } else if (flagFreq==1){ duty=duty-5; 13 EEPROM_write(0x01,duty); }else if (flagFreq==2){ amp=amp+5; EEPROM_write(0x04,amp); } if (RB4_bit) if (flagFreq==0) { setFreq--; if (setFreq<0) setFreq=2; EEPROM_write(0x00,setFreq); } else if (flagFreq==1){ duty=duty+5; EEPROM_write(0x01,duty); }else if (flagFreq==2) { amp=amp-5; EEPROM_write(0x04,amp); } if (RB7_bit) { type++; if (type<0) type=2; if (type>2) type=0; EEPROM_write(0x02,type); } if (RB6_bit) { flagFreq++; if(flagFreq>2) flagFreq=0; EEPROM_write(0x03,flagFreq); } flagDisplay=1; INTCON.RBIF=0; } } Conclusão Com o desenvolvimento do projeto proposto, foi adquirido grande experiência com o microcontrolador PIC. Concluímos que com o uso de microcontroladores podemos realizar diversas tarefas com um custo baixo e alta precisão, uma vez que com o microcontrolador temos todos os recursos necessários já integrados em um único componente. Não necessitando portanto de circuitos grandes, ou de vários componentes externos para execução de tarefas como geração de ondas, relógios, teclados, controladores etc. Além disso verificamos a facilidade pela qual é possível armazenar informações de forma permanente na memória do microcontrolador. Referências Bibliográficas Datasheet PIC 16F873A. Microchip Technology Inc. disponível em: <http://ww1.microchip.com/downloads/en/devicedoc/39582b.pdf> acesso em: 03 fev.2015. LIMA, J. A. de. Modulador e Demodulador por Largura de Pulsos PWM. Faculdade de Engenharia Elétrica Guaratinguetá – UNESP , disponível em <http://www.feg.unesp.br/~lvdi/data/PWM.pdf> acesso em 03 fev 2015. PEREIRA, Fábio. Microcontroladores Pic Técnicas Avançadas. 7 Ed. São Paulo:Érica,2002. PEREIRA, Fábio. PIC Programação em C. 7 Ed. São Paulo: Érica,2007. SOUZA, David J. de. Desbravando o PIC. 12. Ed. São Paulo: Érica, 2010. SOUZA, David J.;LAVINIA, Nicolas C. Conectando o PIC. 3 Ed. São Paulo: Érica,2007. TOCCI, R. J.; WIDMER, N. S.; MOSS, G. L. Sistemas Digitais: Princípios e Aplicações. 10. ed. São Paulo: Prentice Hall, 2007.
Compartilhar