control de velocidad

7
Microcontroladores Segunda Unidad. Práctica 2. Control de velocidad de un Motor CD Paola Díaz Castañeda Juan A Reyes Cástulo Kairos Sánchez Sánchez Diego Daniel Olmos Vázquez Samuel Sánchez Estrada INTITUTO TECNOLÓGICO DE COLIMA Departamento de Ingeniería Mecatrónica Av. Tecnológico No.1. C.P. 28976. Villa de Álvarez, Col. Tel/Fax (01 312) 3129920. 3140933 www.itcolima.edu.mx Resumen: En este reporte mostramos como logramos controlar la velocidad de un motor controlando el ancho de pulso (PWM). Introducción: El control PWM es uno de los tres posibles modos de operación del módulo CCP de los microcontroladores PIC16F88, 16F628A y 16F877A, y se describe a continuación debido a su gran importancia en el campo de la automatización. Una señal PWM es una forma de onda digital binaria de una determinada frecuencia y ciclo de trabajo (duty cycle) variable. Un ejemplo típico de aplicación es el control PWM de potencia (figura 9.1), que se suele utilizar para el control de una lámpara incandescente o un motor DC. Si se considera que el nivel 0 representa OFF y el nivel 1 representa ON, la potencia que consume la carga será directamente proporcional a la duración del pulso.

Upload: diego-daniel-olmos-vazquez

Post on 17-Dec-2015

214 views

Category:

Documents


1 download

DESCRIPTION

pwm

TRANSCRIPT

MicrocontroladoresSegunda Unidad. Prctica 2.Control de velocidad de un Motor CDPaola Daz Castaeda Juan A Reyes CstuloKairos Snchez SnchezDiego Daniel Olmos Vzquez Samuel Snchez Estrada

INTITUTO TECNOLGICO DE COLIMADepartamento de Ingeniera MecatrnicaAv. Tecnolgico No.1. C.P. 28976. Villa de lvarez, Col.Tel/Fax (01 312) 3129920. 3140933 www.itcolima.edu.mx

Resumen: En este reporte mostramos como logramos controlar la velocidad de un motor controlando el ancho de pulso (PWM).Introduccin: El control PWM es uno de los tres posibles modos de operacin del mdulo CCP de los microcontroladores PIC16F88, 16F628A y 16F877A, y se describe a continuacin debido a su gran importancia en el campo de la automatizacin.Una seal PWM es una forma de onda digital binaria de una determinada frecuencia y ciclo de trabajo (duty cycle) variable. Un ejemplo tpico de aplicacin es el control PWM de potencia (figura 9.1), que se suele utilizar para el control de una lmpara incandescente o un motor DC. Si se considera que el nivel 0 representa OFF y el nivel 1 representa ON, la potencia que consume la carga ser directamente proporcional a la duracin del pulso.

Objetivos:Encontrar las mximas RPM a la que gira nuestro motor.Disear un encoder.Realizar un programa capaz de controlar el ancho de pulso (pwm).

Material:Motor dcFuente de computadoraMicrocontrolador 16F877ACables de para practicasProgramador de MicrocontroladoresResistencia para Master ClearProteus 8 (software de simulacin)PIC C Compiler 4.104 (software de programacin)PICkit 2 v2.61 (software para introducir el programa al PIC)Sensor de herraduraLcd 16x2Compuerta not

Frmulas:RPM = (Pulsos/ Encoder) tiempo.PWM=0.125 (Valor. Ingr. -200)+100

Desarrollo de la PrcticaLo primero que se hizo conseguir todo el material necesario para desarrollar la prctica, una vez con ya con el material proseguimos con la prctica.Lo siguiente fue hacer un encoder y acoplrselo al eje del motor para sacar el mximo de RPMS, para ello se utilizaron las formulas (0-01) y un sensor de herradura. Una vez que se supo a cuantas RPM giraba nuestro Motor se prosigui a hacer la simulacin en el Software Proteus profesional 8 y la programacin. Una vez que nos funcion en Proteus se prosigui a hacerlo en fsico.

#include #fuses HS,NOWDT#USE DELAY (CLOCK=20Mhz)//#INCLUDE //#include #include #include #USE STANDARD_IO (a)int16 counter=0;int32 num;//*************** INT TIMER1*********************#int_TIMER1void TIMER1_isr(void) {counter=get_timer0(); //Lectura contador TMR0counter=((counter/9)*(0.5)) ; //Conversin a rpm

lcd_gotoxy(1,2); printf(lcd_putc,"%lu rpm ",counter); set_timer0(0); //Reinicia cuentaset_timer1(3036); // Recarga a 0.5s }//**********************************************VOID MAIN(){ int32 n,x,v1[4]={' ',' ',' ',' '};char tecla;signed int t; char PWMH=0,PWML=0; lcd_init(); kbd_init(); PORT_B_PULLUPS(TRUE); setup_timer_0(rtcc_ext_l_to_h|RTCC_DIV_2); //Configuracin TMR0 setup_timer_1(T1_internal|T1_DIV_BY_8); //Configuracin TMR1 set_timer0(0); //Borrado contador set_timer1(3036); //Carga a 0.5s enable_interrupts(int_timer1); enable_interrupts(global); //Habilitacin interrupciones WHILE (TRUE) { //TECLADO: Inicio: printf(lcd_putc,"\f rev.#? "); num=0; tecla=' '; //No de vueltas for(t=0;t9); if(tecla=='C')break; lcd_gotoxy(1,1); printf(lcd_putc,"%Lu"v1[t]); } //convercion n=1; t=t-1; while (t>=0) { v1[t]=(v1[t]*n); num=num+v1[t]; n=n*10; t--; } //restincion de numeros if(num=3151 ){ lcd_gotoxy(1,1); printf(lcd_putc,"Error "); lcd_gotoxy(1,2); printf(lcd_putc,"Intente de nuevo"); delay_ms(400); printf(lcd_putc,"\f"); goto Inicio; } //valores pwm x=((0.125)*(num-200))+100; WHILE (TRUE) { // para pwm // if(num>=92 || num0;PWMH--){ OUTPUT_HIGH(PIN_A0);} for(PWML;PWML>0;PWML--){ OUTPUT_LOW(PIN_A0);} if(input(PIN_A1)==0){ OUTPUT_LOW(PIN_A0); break; } } }}