Uploaded by Javier C. Mendoza

Control de Motor DC con PWM y PIC16F877A

advertisement
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)
Download