control de velocidad de un motor cd y su funcion de transferencia por matlab
description
Transcript of control de velocidad de un motor cd y su funcion de transferencia por matlab
INSTITUTO TECNOLÓGICO DE TOLUCA
Ingeniería Mecatrónica
Proyecto:
“control de velocidad de motor con sensor de temperatura para controlar ventilador”
Alumnos:
Padilla Corpus Omar Alejandro.
García Molina Arturo.
Maestro:
Camarena Vudoyra Fidel Alejandro.
Materia: Control discreto
Introducción.
A continuación se mostrara como realizar un control discreto a un ventilador para controlar la temperatura de algún equipo electrónico como puede ser una computadora, una consola, etc. aplicando los conocimientos obtenidos en la materia de control discreto.
Objetivo
Se realizara el control analítico de un ventilador para reducir o aumentar la su velocidad por medio de un sensor de temperatura para evitar calentamientos en el en equipos electrónicos
Delimitación.
Se realizara un prototipo que reduzca un grado cada 10 segundos por medio del análisis de un controlador analítico.
Hipótesis.
Realización de un control de velocidades para un ventilador por medio de un sensor de temperatura.
Antecedentes.
Accionar un motor DC es muy simple y solo es necesario aplicar la tensión de alimentación entre sus bornes. Para invertir el sentido de giro basta con invertir la alimentación y el motor comenzará a girar en sentido opuesto.
A diferencia de los motores paso a paso y los servomecanismos, los motores DC no pueden ser posicionados y/o enclavados en una posición específica. Estos simplemente giran a la máxima velocidad y en el sentido que la alimentación aplicada se los permite.
El motor de corriente continua está compuesto de 2 piezas fundamentales:
• Rotor.• Estator.
Materiales
Los materiales a utilizar fueron los siguientes.
Microcontrolador PIC 16F877a Tablilla protoboard, pantalla LCD de 16x2 Dos ventiladores de 12volts Resistencias, capacitores, multímetro, osciloscopio, generador de
funciones.
Sensor de temperatura lm35
Calculo de la función de transferencia del ventilador.
Se acoplan 2 ventiladores iguales para así poder excitarlos mediante un escalón para obtener la información necesaria para el cálculo de la función de transferencia (imagen 1.1).
Los datos fueron recolectados y medidos en un osciloscopio agilent (imagen1.2).
Imagen 1.1 imagen 1.2
Imagen 1.3.- datos obtenidos del osciloscopio
Los datos usados fueron los valores de voltaje del canal uno (escalon) y del canal dos (curva del motor).
Estos datos se trataron con el programa matlab.
Imagen 1.4.- herramienta usada llamada IDENT de matlab
La herramienta usada fue el ident. La cual te ayuda a generara la función de transferencia del motor por medio de los datos obtenidos del osciloscopio.
También con la ayuda de esta herramienta se observa el comportamiento de la función del ventilador.
Imagen 1.5.- obtención de función de transferencia
La función de transferencia obtenida fue.
G(s)= 4.0007s (s+41.349)
Calculo del controlador.
a=41.349 , k=4.0007 ,t=10 s , at=413.49 , e−at=0
G(z )= 412.49z (z−1)
Simulación en proteus.
Imagen 1.6.- simulación
Imagen 1.7 simulación en proteus
Programa en c++
# include <16F877a.h>
# device *=16
# device adc=10
# use delay(clock=4M)
# include <lcd.c>
# fuses xt
float temperatura;
void main()
{
//*******************************
setup_adc_ports(RA0_ANALOG);//entrada del LM35
setup_adc(ADC_CLOCK_INTERNAL);
setup_COUNTERS(RTCC_internal.rtcc_div_1);//marca de divicion
set_adc_channel(0);
//*******************************
lcd_init();
lcd_gotoxy(5,1);
printf(lcd_putc,"Temperatura");
delay_ms(350);
lcd_init();
while(true)
{
temperatura=(float)read_adc()/2;
//********grados centigrados
lcd_gotoxy(5,1);
printf(lcd_putc,"%f",temperatura);
lcd_gotoxy(14,1);
printf(lcd_putc,"°C");
delay_ms(200);
//***********si la temperatura es mayor que 25
if(temperatura<=400&&temperatura>=30)
{
output_high(pin_a1);
output_high(pin_a2);
output_low(pin_a3);
lcd_gotoxy(5,2);
printf(lcd_putc "enfriando");
delay_ms(200);
}
//****************si la temperatura es correcta o menor que 25
else
{
output_low(pin_a1);
output_low(pin_a2);
output_high(pin_a3);
lcd_gotoxy(5,2);
printf(lcd_putc," enfriado");
delay_ms(200);
}
}
}
Imagen 1.8.- Programa en c++
Pruebas:
Las pruebas las hicimos para en control de temperatura de un liquido calentamos un vaso con agua y para ese hicimos el control de velocidad (imagen 1.9 y 1.10)
Imagen 1.9
Imagen 1.10
Conclusiones
Al principio tuvimos problemas al obtener la función de transferencia del motor en el acoplar los motores como utilizamos dos ventiladores ya fabricados no pudimos sacar los motores y tuvimos que acoplar los dos ventiladores pero esto causaba mucho ruido pero solucionamos este problema y obtuvimos la función de transferencia y también tuvimos una seria de errores en el pic por que se nos quemo y no nos habíamos dado cuenta de eso pero lo solucionamos.
También el problema que tuvimos fue que a falta de tiempo no metimos la función de transferencia en nuestro microcontrolador e hicimos un control “if” todo o nada.
Bibliografía
ww1.microchip.com/downloads/en/devicedoc/39582b.pdf
https://www.national.com/ds/LM/LM35.pdf