CONTROL DE MOTOR DC I. MOTOR DC Un motor DC convencional consiste básicamente de dos partes, el cuerpo estacionario del motor llamado el estator y la parte interior que gira llamada rotor. La velocidad de rotación se determina por el voltaje de DC aplicado y su torque de salida está determinado por la corriente que fluye a través de los devanados del motor. La velocidad de rotación de cualquier motor de corriente continua se puede variar desde unas pocas revoluciones por minuto (rpm) a muchos miles de revoluciones por minuto. Mediante la conexión a cajas de engranajes la velocidad de salida puede ser disminuida y el torque incrementado. Existen tres tipos de motores DC disponibles: Motor cepillado (Brushed motor) - Este tipo de motor produce un campo magnético en un rotor bobinado (la parte que gira) haciendo pasar una corriente eléctrica a través de un conjunto acumulador de carbono y cepillas, de ahí el término "brushed". Los estatores producen un campo magnético mediante el uso de imanes permanentes. Este tipo de motores son baratos, pequeños y fáciles de controlar. Motor sin escobillas (Brushless Motor) - Este tipo de motor produce un campo magnético en el rotor mediante el uso de imanes permanentes y la conmutación se logra electrónicamente. Son generalmente más pequeños, pero más caros que los motores de cepillados. Tienen mejores características de torque / velocidad, son más eficientes y tienen una vida útil más larga que los motores cepillados. Servo Motor - Este tipo de motor es básicamente un motor DC cepillado con alguna forma de control de realimentación de posición conectado al eje de rotor. Son controlados por PWM y se utilizan principalmente en los sistemas de control de posición y modelos de radio control. II. MODULACION POR ANCHO DE PULSO (PWM) La modulación de ancho de pulso (PWM) es una técnica utilizada para controlar la energía suplida a dispositivos eléctricos. Esta energía se controla encendiendo y apagando la alimentación de voltaje a una alta frecuencia. PWM se puede utilizar para variar la velocidad de un motor, variar la brillantez de una lámpara o LED, entre otros. Elementos básicos de una señal PWM: PeriodoPWM = TON + TOFF FrecuenciaPWM=1/PeriodoPWM Duty cycle (Ciclo de trabajo) = TON/ PeriodoPWM * 100 Ejemplos de distintos porcentajes de Ciclos de trabajo a una misma FrecuenciaPWM : Ejemplos de voltaje promedio Vp en función a distintos Ciclos de trabajo: III. FUNCIONES DE LA LIBRERÍA PWM LIBRARY DE MIKROC El microcontrolador PIC16F877A posee dos salidas PWM1 y PWM2 en los pines del puerto PORTC: RC.2 (CCP1) y RC.1 (CCP2). PWM1_Init Inicializa la modulación PWM con la frecuencia deseada. El valor mínimo de la frecuencia cuando usamos un oscilador externo de 4 Mhz es de 245 Hz. PWM1_Set_Duty Establece el Ciclo de trabajo. Se mide en términos de porcentaje sobre una escala que varía entre 0 y 255, donde 255 equivale al 100% del ciclo de trabajo PWM1_Start Inicia PWM PWM1_Stop Detiene PWM IV. DIAGRAMA ESQUEMATICO R4 R5 R6 R7 R8 10k 10k 10k 10k 10k HORARIO ANTIHORARIO CONTROL DE MOTOR DC 2 C1 VEL + 22pF X1 1 22pF +5v R1 10k 13 14 2 3 4 5 6 7 8 9 10 1 RESET OSC1/CLKIN OSC2/CLKOUT RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD RA0/AN0 RA1/AN1 RA2/AN2/VREF-/CVREF RA3/AN3/VREF+ RA4/T0CKI/C1OUT RA5/AN4/SS/C2OUT RC0/T1OSO/T1CKI RE0/AN5/RD RC1/T1OSI/CCP2 RE1/AN6/WR RC2/CCP1 RE2/AN7/CS RC3/SCK/SCL RC4/SDI/SDA MCLR/Vpp/THV RC5/SDO RC6/TX/CK RC7/RX/DT RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7 PIC16F877A 33 34 35 36 37 38 39 40 +5v 15 16 17 18 23 24 25 26 19 20 21 22 27 28 29 30 +12v 16 2 7 1 IN1 IN2 EN1 VSS U2 8 VS OUT1 OUT2 EN2 IN3 IN4 OUT3 OUT4 B C CODIGO FUENTE MIKROC (CONTROL DE MOTOR DC CON PWM) 1: char ciclo=128; 2: void main() { 3: TRISB=0b11111111; 4: PORTC=0; 5: TRISC=0b11111000; 6: PWM1_Init(5000); 7: PWM1_Set_Duty(ciclo); 8: while(1) 9: { 10: if(PORTB.B0==0) 11 14 L293D A D V. 3 6 +88.8 9 10 15 GND 4MHZ C2 VEL - U1 //Valor inicial del ciclo de trabajo //el puerto RB como entrada //limpiar el puerto RC //tres bits bajos de RC como salida //inicializar PWM1 //setear ciclo de trabajo //aumento de velocidad MOTOR DC STOP 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: VI. { delay_ms(40); ciclo=ciclo+8; PWM1_Set_Duty(ciclo); } if(PORTB.B1==0) { delay_ms(40); ciclo=ciclo-8; PWM1_Set_Duty(ciclo); } if(PORTB.B2==0) { PORTC.B0=0; PORTC.B1=1; PWM1_Start(); } if(PORTB.B3==0) { PORTC.B0=1; PORTC.B1=0; PWM1_Start(); } if(PORTB.B4==0) { PORTC.B0=0; PORTC.B1=0; PWM1_Stop(); } } } //eliminar rebotes //incrementar ciclo de trabajo //reducir velocidad //eliminar rebotes //decrementar ciclo de trabajo //horario //antihorario //stop CODIGO FUENTE MIKROC (PASO DE TORQUE ELEVADO)