Documentos de Académico
Documentos de Profesional
Documentos de Cultura
MOTOR CD.
Alumno:
Armenta López Bladimir.
Martínez Cisneros Alonso.
Ponce Varela Ramón Efrén.
Ríos Ulloa Aram David.
Materia:
Control I.
Maestro:
Fernando Joaquín Ramírez Coronel.
Fecha:
04 de junio del 2019.
Capítulo 1
Información general.
Introducción.
Durante el transcurso del semestre “par” correspondiente al año 2019, durante las
impartieron las clases necesarias con el objetivo de reunir el conocimiento necesario para
poder así realizar un proyecto final que involucre los temas aprendidos en clase durante el
En el caso de Control I; durante la clase aprendimos desde lo más básico del control como
lazo cerrado?
orden, junto con su error en estado estable, y como reaccionaban ante diferentes tipos de
Para el caso de Optoelectrónica, durante las primeras clases analizamos y trabajamos con
segmentos, entre otros. Seguido de eso, analizamos otro tipo de componentes como el LED
2
que se manejan en la industria, tales como el modelo OSI, entre otros. También estuvimos
muy familiarizados con la simbología que se maneja en ella, por ejemplo: los diagramas
de conexión que maneja una planta de energía. Pero el conocimiento más importante para
Con todos estos conocimientos que hemos adquirido, nosotros hemos decidido elaborar un
Se decidió apostar por este proyecto ya que para poder llevarlo a cabo, es necesario tener
el conocimiento que nos han impartido estas tres clases a lo largo del semestre: sin la clase
de Control I no pudiéramos tener el controlador adecuado para este tipo de proyectos (ya
que para un controlador de velocidad es casi imperativo utilizar este tipo de controladores),
esa capacidad de discernir entre un sensor eficiente y un sensor eficaz para nuestro
proyecto.
3
Es por ello que hemos decidido escoger este tipo de proyecto, ya que es la manera más
final.
usted podrá encontrar el sustento teórico que lleva de fondo este proyecto, los objetivos
lo largo de la elaboración del prototipo; ¿Qué pasos se llevaron a cabo para encontrar los
sistema? ¿Cuál fue el código utilizado para elaborar el controlador del prototipo? ¿Cuál fue
el circuito utilizado para elaborar las conexiones del motor con el Raspberry?
También esperamos detallar cuales fueron los materiales utilizados, los valores obtenidos
de este proyecto y las conclusiones obtenidas por cada uno de los integrantes de este equipo
de trabajo.
Finalmente, cabe aclarar que este documento fue elaborado con la intención de informar al
lector de todo lo ocurrido durante la elaboración de este proyecto, así como también espera
proporcionarle al lector de una información que le sea útil para que este pueda realizar en
caso de que esté interesado, un proyecto similar al planteado en este reporte. Tiene como
propósito informar y ayudar al lector a que pueda armar su propio controlador de velocidad
4
derivativo.
Marco teórico.
Para la elaboración de este proyecto, es importante recalcar que nada de este trabajo
fuera posible de no ser por todos los fundamentos teóricos que va detrás de todo este
a este experimento, nada de esto sería posible; por lo que resulta imperativo mencionar
Primero, vamos a hablar acerca del tipo de controlador que ha sido utilizado en nuestro
industrial. Este calcula la desviación o error entre un valor medido y un valor deseado.
integral, y el derivativo. El valor Proporcional depende del error actual. El Integral depende
de los errores pasados y el Derivativo es una predicción de los errores futuros. La suma de
estas tres acciones es usada para ajustar al proceso por medio de un elemento de control
algoritmo de control del PID, el controlador puede proveer una acción de control diseñado
para los requerimientos del proceso en específico. La respuesta del controlador puede
controlador sobrepasa el punto de ajuste, y el grado de oscilación del sistema. Nótese que
el uso del PID para control no garantiza control óptimo del sistema o la estabilidad del
mismo.
Algunas aplicaciones pueden solo requerir de uno o dos modos de los que provee este
sistema de control. Un controlador PID puede ser llamado también PI, PD, P o I en la
comunes, ya que la acción derivativa es muy sensible al ruido, y la ausencia del proceso
integral puede evitar que se alcance al valor deseado debido a la acción de control.
7
Ahora es tiempo de hablar acerca de un componente que sin su ayuda no pudiéramos haber
luz emitida por un diodo led que satura un componente optoelectrónico, normalmente en
Estos elementos se encuentran dentro de un encapsulado que por lo general es del tipo DIP.
una corriente en el led emisor cuando se cierra el interruptor S1. Si dicha corriente
generando una corriente en R2. De este modo la tensión de salida será igual a cero con S1
Si la tensión de entrada varía, la cantidad de luz también lo hará, lo que significa que la
tensión de salida cambia de acuerdo con la tensión de entrada. De este modo el dispositivo
puede acoplar una señal de entrada con el circuito de salida, aunque hay que tener en cuenta
que las curvas tensión/luz del led no son lineales, por lo que la señal puede distorsionarse.
9
Se venden optoacopladores especiales para este propósito, diseñados de forma que tengan
un haz de luz. Esto se traduce en una resistencia de aislamiento entre los dos circuitos del
orden de miles de MΩ. Estos aislamientos son útiles en aplicaciones de alta tensión en las
que los potenciales de los dos circuitos pueden diferir en varios miles de voltios.
y casi inmediato mencionar o trabajar con las revoluciones por minuto. Esta es una unidad
de frecuencia que se usa también para expresar velocidad angular. En este contexto, se
indica el número de rotaciones completadas cada minuto por un cuerpo que gira alrededor.
A veces se utiliza el término régimen de giro para referirse a la velocidad de giro expresada
Para expresar un valor en revoluciones por minuto, se simboliza dicha unidad como min^-
1 o r/min, aunque también se utilizan símbolos de uso tradicional que no han sido fijados
por las instituciones de normalización como rpm, RPM. Aunque las unidades de medida
hubiésemos podido ejecutar la acción deseada por el equipo sobre nuestro dispositivo a
controlar.
Es por ello que tenemos que mencionar al gadget que nos ha permitido llevar a cabo este
placa simple (SBC) de bajo coste desarrollado en el Reino Unido por la Fundación
oficial explican que disponen de contratos de distribución y venta con dos empresas, pero
Raspberry Pi, por lo que da a entender que es un producto con propiedad registrada,
versión adaptada de Debian, denominada Raspbian, aunque permite usar otros sistemas
operativos, incluido una versión de Windows 10. En todas sus versiones incluye un
procesador Broadcom, una memoria RAM, una GPU, puertos USB, HDMI, Ethernet (El
primer modelo no lo tenía), 40 pines GPIO y un conector para cámara. Ninguna de sus
ediciones incluye memoria, siendo esta en su primera versión una tarjeta SD y en ediciones
La fundación da soporte para las descargas de las distribuciones para arquitectura ARM,
Raspbian (derivada de Debian), RISC OS 5, Arch Linux ARM (derivado de Arch Linux) y
programación Python. Otros lenguajes también soportados son Tiny BASIC, C, Per y Ruby.
12
las funciones del controlador proporcional, integral y derivativo; se trató del lenguaje de
programación Python.
Es administrado por la Python Software Foundation. Posee una licencia de código abierto,
anteriores.
Estos objetivos fueron trazados con el fin de poder llevarlos a cabo de manera satisfactoria
derivativo.
necesarios.
Con todos estos objetivos mencionados, el proyecto pudo llevarse a cabo de manera
adecuada, ya que, con todas estas metas cumplidas, nuestro objetivo primordial estaría
necesario diseñar ciertos planes de contingencia para poder llevar a cabo ciertos objetivos
Capítulo 2
elaboración de este proyecto, así como se les hará mención a los resultados obtenidos al
finalizar este proyecto. De igual forma, estará detallado claramente cómo se obtuvieron los
Raspberry utilizada.
Materiales utilizados.
Antes de pasar con el diseño experimental, así como el desarrollo junto con los
resultados obtenidos de este proyecto; antes de siquiera poder llegar a imaginar en obtener
dichos resultados e imaginar un proyecto físico, fue necesario concebir primero la idea del
prototipo final junto con un listado de los materiales esenciales, o bien, los materiales
El motor utilizado para controlar sus revoluciones por minuto mediante un controlador tipo
caminadora.
16
El motor utilizado corresponde a un motor que funciona con voltaje de corriente directa,
con una potencia máxima de 2.5 caballos de fuerza (HP), con un voltaje máximo de 120
VDC, con una corriente máxima de 18 Amperios, a una máxima de 7100 RPM, a una
Este fue el motor seleccionado a utilizar entre otras opciones ya que se trata de un motor
que nos permite trabajar con un mayor intervalo de voltajes, revoluciones por minuto, etc.
También, este motor fue el escogido sobre otras opciones ya que al tratarse de un motor
cuyo tamaño y ventanas de trabajo son más “vistosas” para quien este observando el
proyecto; eso representa una gran ventaja sobre los otros motores ya que las otras opciones
no nos permitían trabajar con los voltajes esperados, con las revoluciones necesarias para
llevar a cabo este proyecto, así como su manipulación dentro de nuestro controlador
Uno de los componentes que también tuvo un papel cuya importancia fue mucho más que
relevante fue el del dispositivo que se encargó de ejecutar el código de programación, así
17
como el de recopilar toda la información necesaria para llevar a cabo el proceso de control:
un Raspberry Pi.
El Raspberry utilizado para nuestro proyecto fue el Raspberry Pi 3. Este dispositivo fue el
un dispositivo para poder visualizar la información de manera más sencilla, como, por
ejemplo: un monitor. Otra ventaja de utilizar este dispositivo sobre un Arduino es que en
Arduino y esto se ve reflejado en múltiples ventajas creativas como el poder crear un código
totalmente desde cero, sobre posiblemente elaborar un código con alguna de las librerías
A continuación, una lista con todos los dispositivos utilizados para la realización de este
proyecto final:
Un soldador eléctrico.
Una Raspberry Pi 3.
Arduino uno.
Un disco codificador.
Un optoswitch ITR8102.
18
Un optoacoplador 4N25.
Transistores 2N2222.
Diseño experimental.
Antes de comenzar con la parte del desarrollo de este proyecto final y los resultados
capturados, primero tenemos que hablar del funcionamiento de nuestro proyecto, así como
el papel que juega cada una de las partes que conforman este proyecto, como el código de
programación elaborado para el controlador PID, los pasos que seguimos para encontrar
unos valores adecuados para las constantes proporcional, integral y derivativa, entre otros
puntos.
Primero, nuestro circuito del motor está conformado por un arreglo elaborado en una placa
el cual estará posicionado cerca del disco codificador, de modo que cuando el disco
codificador gire e interrumpa la señal, esa señal interrumpida se enviará a otra placa de
circuito impreso.
20
En esta nueva placa se mandarán las señales interrumpidas por el disco codificador del
motor, y el cual, por medio de un arreglo con los transistores, el optoswitch, y otras
resistencias de distintos valores que funcionan como protección del circuito, posibilitan
que la Raspberry pueda recibir estas señales gracias a uno de sus pines, y así pueda ejecutar
PID, y así podamos mantener un valor constante a la salida de nuestro motor de corriente
continua.
El motor comenzara a girar gracias a una fuente de voltaje que le proporciona una
especificaremos los pasos que se llevaron a cabo para la realización de este proyecto, así
como una breve explicación del funcionamiento del código de programación utilizado, el
procedimiento que se siguió para encontrar ciertos valores que nos permitirán modificar
puntos importantes.
Antes de empezar el proyecto físico, primero comenzamos con una lluvia de ideas para
sin embargo, esta idea se deshecho ya que era muy similar a una práctica de laboratorio
Después, nos encontramos con una idea muy similar a la del proyecto final, solo que, a
embargo, la idea quedo descartada porque su visualización de datos sería un poco más
complicada que en cambio contar con una Raspberry donde podemos observar la
información en tiempo real en un simple monitor, donde el usuario o en este caso nosotros
optoacoplador, cuya señal se ve interrumpida por las vueltas del disco codificador, y es ahí
cuando se produce cada interrupción, donde por medio de la circuitería interna armada por
22
Una vez encontrado y concebir una idea original para nuestro proyecto final, decidimos
y derivativo.
Seleccionamos este tipo de controlador porque es el tipo de controlador ideal para este tipo
de sistemas, en nuestro caso controlador de la velocidad, además de que reúne todas las
Responde rápidamente.
Aunque de igual forma no se trata de un controlador perfecto, ya que con este tipo de
controladores hace muy susceptible el sistema a las oscilaciones, sin embargo, estas se
proporcionales y derivativos.
23
PID:
import time
import threading
import RPi.GPIO as GPIO
import pigpio
Así es como comienza nuestro código de programación; declarando las librerías a utilizar
en nuestro algoritmo tales como: import threading la cual nos sirve para programar con
hilos, import time para ejecutar acciones relacionadas con el tiempo, import RPi.GPIO para
Luego, tenemos la siguiente parte del código que le indica al programa que imprima el
performance de la señal de reloj, así como también declara los pines que servirán de
entrada, desactivar los warnings que nos pueda proporcionar el Raspberry, declarar dos
print(time.perf_counter())
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(23, GPIO.IN)
pi = pigpio.pi()
pi.set_PWM_dutycycle(18, 0)
retro = 0
ref = 500
time1 = 0.0
time2 = 0.0
time1 = time.perf_counter()
time2 = time.perf_counter()
24
Ahora pasamos a la parte donde declaramos nuestra función que realizara el control
def Pid():
Kp = 1.0
Ki = 0.01
Kd = 0.5
motor = 0
Error = 0
Error_anterior = 0
Delta = 0.01
while True:
Error = ref - retro
motor = ((Kp*Error + Ki*Error*Delta + Kd*(Error-Error_anterior))/Delta)
if motor > 255:
pi.set_PWM_dutycycle(18, 255)
elif motor < 0:
pi.set_PWM_dutycycle(18, 0)
else:
pi.set_PWM_dutycycle(18, motor)
print(retro)
time.sleep(0.01)
Error_anterior = Error
La función la llamamos con el nombre “Pid”; declaramos las variables “Kp”, “Ki” y “K”
(los valores que se ven ahí no son representativos de los utilizados finalmente), también
declaramos la variable “motor” la cual nos ayuda a encender o apagar el motor dependiendo
del voltaje aplicado a este, la variable “Error” la cual funge como la señal de error, la
variable “Error_anterior” la cual funciona como una señal de error anterior a la señal del
Con el resto de la función nosotros podemos enviar a nuestro motor el voltaje necesario
para que alcance las revoluciones especificadas en el punto de consigna, enviando por
25
medio del pin PWM del Raspberry la alimentación necesaria para que el motor comience
a girar.
Esa parte del código podría considerarse como la pieza angular del programa ya que se
Sin esta función el programa no podría realizar ningún tipo de operación relacionada al
función:
def Speedv2(channel):
global retro
global time1
global time2
if GPIO.input(23) == 1:
time1 = time.perf_counter()
retro = 60/(time1-time2) #60/(12*ts)
time2 = time1
print('k3 ', retro)
concernientes al motor, es decir que gracias a esta función nosotros podemos obtener las
realimentación para así poder generar la señal de “Error” y “Error_anterior”, las cuales son
Las figuras con el resto del código las puede encontrar al final del reporte en la sección de
anexos.
26
Ya con nuestro controlador PID y nuestro programa finalizado, pasamos a la parte donde
los cuales estaban sin utilizar para poder soldar en ellos con estaño y cautín y armar los
circuitos que realizan la parte de la interrupción de la señal, o también los circuitos que se
Luego ensamblamos todo lo construido junto con el motor, en una pequeña base de madera
Después, decidimos hacer una prueba del motor con el programa ya en funcionamiento
para poder verificar el desempeño del código de programación, así como que tal funcionaba
el controlador PID. Cuando se hizo la prueba, pudimos observar como ciertas mediciones
que nos mostraba el programa, no eran del todo confiables; nos señalaba una cantidad
mayor de revoluciones por minuto de las que eran en realidad. No obstante, este error se
produjo por el disco codificador del motor, y una vez corregido ese inconveniente, el
Con el programa del controlador y toda la circuitería del motor funcionando, luego
proseguimos a encontrar las constantes proporcional, integral y derivativa con ayuda del
Para comenzar, tomamos una muestra de las revoluciones por minuto del motor cuando
voltios.
27
aproximadamente.
segunda columna nos muestra el tiempo de muestreo, en la siguiente columna nos está
indicando el tiempo de muestreo una vez más, solo que en esta ocasión se está
multiplicando por 10 segundos. Luego, en la cuarta columna tenemos las revoluciones por
minuto medidas y finalmente, la última columna nos señala la señal del PWM que se le
está enviando al actuador, en el caso de esta prueba, esa columna correspondió a 255.
En dicha grafica podemos observar como la señal parece ser que tiene un pequeño retraso,
para que al cabo de 1.6 milisegundos el sistema llegue a su valor en estado estable
Con la información obtenida de las dos últimas columnas, podemos obtener nuestra función
Primero, creamos dos nuevas variables: la variable “entrada” (la cual contiene todos los
datos de la señal arrojada hacia al actuador, que en nuestro caso fueron 250) y la variable
“RPM” (la cual contiene todos los datos capturados en la tercera columna, que hacen
tiempo.
Con este comando, declaramos la entrada del sistema como la variable “entrada” creada
anteriormente, así como la variable de salida, que en nuestro caso es la variable “RPM”.
Luego, este nos genera el siguiente recuadro con una gráfica similar a la que obtuvimos
anteriormente:
“estimate”.
30
Esto nos creara una función de transferencia como la que se muestra a continuación:
Una vez que encontramos la función de transferencia, ahora podemos encontrar la gráfica
Ahora para poder encontrar los valores deseados de las constantes de proporcionalidad,
Ahora, con la barra deslizadora que se encuentra en la parte de arriba, nosotros podemos
ajustar si la respuesta de nuestro sistema es muy lenta o en cambio que sea más rápida, sin
embargo, al modificar estos valores podemos tener un sistema con demasiada oscilación,
o bien uno que tarde demasiado en alcanzar el valor deseado, es por ello que esto se tiene
Entonces, una vez que probamos con distintas combinaciones de los parámetros
Como se puede observar en la gráfica, nuestro sistema tarda un poco en alcanzar el valor
derivativo, pudimos encontrar un sistema que nos da una respuesta que cumpla con
Capítulo 3
Conclusiones.
manera individual acerca del presente proyecto final que tanto se ha descrito anteriormente
A lo largo del presente documento ha quedado plasmado todos los pasos que se siguieron
para poder conseguir o alcanzar los objetivos trazados, las metas propuestas, en el
desarrollo de este proyecto final que involucra el cierre de un semestre donde se abordaron
distintos temas, que probablemente en su momento el estudiante pudo pensar que no tenía
sentido abordar dichos temas. No obstante, el tiempo le ha dado la razón al docente de que
el estudiante tiene que estar preparado para afrontar los problemas que se le presentan, y
con las herramientas que tiene a su lado, intentar solventarlos de la manera adecuada.
Este proyecto final fue todo un reto para cada uno de los cuatro miembros del equipo, ya
derivativo, utilizando nuestros propios conocimientos para crearlo desde cero y que este
funcionara. Fue una tarea complicada ya que tal vez nos hubiese gustado ver más dentro
del salón de clases, pero entendemos que muchas veces el tiempo es el gran enemigo de
cualquier docente, y es probable que los temas de clase no puedan cubrirse de la manera
De igual forma, la realización de este proyecto fue todo un éxito para el equipo y estamos
más que contentos por el desempeño logrado por cada uno de sus miembros.
36
Personalmente este proyecto final me pareció muy interesante ya que utilizamos varios
considero que fue una tarea difícil, ya que personalmente la programación puede ser un
tanto tediosa, sin embargo, de nuevo vuelve a salir lo multidisciplinario que puede llegar a
escoger lo más relevante entre todo lo aprendido, ya que todo tiene su importancia dentro
importancia que puede llegar a tener la selección del controlador a utilizar para poder
Es importante este paso en el proceso del control ya que dependiendo de la elección que se
tome, puede ser la diferencia entre un sistema estable y un sistema que simplemente no
trabaje dentro los rangos de operación deseados o un sistema que ni siquiera sea capaz de
la elaboración de este proyecto, ya que sin ellos no hubiésemos logrado ningún tipo de
algunos años atrás probablemente no hubiésemos creído posible que con ellos podríamos
Durante la realización de este proyecto final pienso que los integrantes del equipo hemos
podido apreciar las ventajas de los distintos controladores sobre otro tipo de controladores.
eso no significa que sea un mal controlador, eso solamente quiere decir que no es útil para
este tipo de proyectos, pero el controlador será seleccionado según lo necesite el proyecto
Este proyecto nos ha servido para desarrollar habilidades que anteriormente no se habían
puesto a prueba a lo largo de nuestra trayectoria académica. Por ejemplo, hemos entendido
MATLAB para encontrar los parámetros que satisfagan nuestras condiciones al momento
distintas asignaturas, poniendo a prueba lo interdisciplinario que puede ser este equipo y
así como las materias correspondientes a nuestra retícula académica, se relacionan de cierta
forma.
A lo largo del desarrollo de este prototipo final, el equipo se enfrentó a diversos problemas
mano. No obstante, eso nunca impidió la realización del proyecto y es por ello que estoy
En conclusión, fue un proyecto cuya elaboración resulto más que satisfactoria porque es
una muestra pequeña de lo que está por venir en nuestros próximos semestres.
38
esperábamos encontrarnos con algún contratiempo de nuevo. No obstante, una vez más el
equipo ha sido capaz de superar los inconvenientes que se presentan al realizar este tipo de
prácticas.
Una vez más, me ha parecido fascinante como se han involucrado varios temas de clase en
relacionar los conceptos y la teoría vista en clase con situaciones más prácticas, que
Es importante recalcar la gran ventaja o ayuda que nos ha sido el tener a nuestra mano las
matemáticos, por ejemplo: MATLAB, Proteus, Multisim, etc. Ya que, sin estas herramientas
de nuestro lado, hubiese sido muy complicado alcanzar la realización de este proyecto.
proporcional, integral y derivativo, es la primera vez que nos relacionamos con este tipo
de conocimientos, y fue todo un reto desde armar un circuito capaz de controlar las
revoluciones por minuto, hasta el programar un código que pudiera controlar por medio de
las constantes correspondientes al controlador PID; sin dejar de lado también el método
seguido para encontrar los valores requeridos de las constantes para así poder obtener un
Concluyendo, este proyecto fue todo un reto de diseño para el equipo, una invitación a
darle rienda suelta a nuestra creatividad y sacar lo mejor de nosotros como compañeros.
39
Anexos.
40