Está en la página 1de 42

PROYECTO FINAL: CONTROLADOR PID DE VELOCIDAD DE UN

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.

Instituto Tecnológico de Hermosillo.


Ingeniería Electrónica.
Contenido del reporte. ii

Capítulo 1 Información general. ..................................................................................................... 1


Introducción. ............................................................................................................................... 1
Marco teórico. ............................................................................................................................. 5
Objetivo del prototipo. .............................................................................................................. 13
Capítulo 2 Desarrollo y materiales utilizados. ............................................................................. 15
Materiales utilizados. ................................................................................................................ 15
Diseño experimental. ................................................................................................................ 19
Desarrollo del experimento y resultados obtenidos. ................................................................. 21
Capítulo 3 Conclusiones. ............................................................................................................. 35
Anexos. ......................................................................................................................................... 39
1

Capítulo 1

Información general.

Introducción.

Durante el transcurso del semestre “par” correspondiente al año 2019, durante las

clases pertinentes a las materias de Optoelectrónica, Control I e Instrumentación; se

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

transcurso del semestre.

En el caso de Control I; durante la clase aprendimos desde lo más básico del control como

sus conceptos básicos: ¿Qué es un diagrama de bloques? ¿Qué es una función de

transferencia? ¿Qué es un sistema de control? ¿Cuál es la diferencia entre lazo abierto y

lazo cerrado?

Después, observamos cómo encontrar la función de transferencia de diferentes tipos de

sistemas en el dominio de Laplace. Luego, analizamos los sistemas de primero y segundo

orden, junto con su error en estado estable, y como reaccionaban ante diferentes tipos de

entradas. Finalmente, aprendimos como diseñar diferentes controladores, pero en el caso

de este proyecto, un controlador PID.

Para el caso de Optoelectrónica, durante las primeras clases analizamos y trabajamos con

elementos primordiales de la optoelectrónica como lo son los diodos LED, displays de 7

segmentos, entre otros. Seguido de eso, analizamos otro tipo de componentes como el LED
2

infrarrojo, LED laser, fototransistores. Finalmente, trabajamos con dispositivos de mucha

utilidad para el desarrollo de esta práctica como los optoacopladores.

En la materia de Instrumentación, trabajamos primero con la normatividad y estándares

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

la elaboración de este prototipo final, fue el de la inclusión de distintos “gadgets” que se

manejan en la industria y que pueden ser aplicados a distintos dispositivos de trabajo, en

nuestro caso utilizamos un “Raspberry”, para la elaboración del proyecto.

Con todos estos conocimientos que hemos adquirido, nosotros hemos decidido elaborar un

regulador de velocidad de un motor de corriente directa con un controlador tipo

proporcional, integral y derivativo (PID).

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),

no pudiéramos utilizar de manera adecuada un optoacoplador, sin el conocimiento

adquirido de la clase Optoelectrónica, y sin la clase de Instrumentación, no obtendríamos

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

eficiente de involucrar el contenido de tres materias, tres evaluaciones, en un solo prototipo

final.

Entonces, durante el presente documento correspondiente al reporte del proyecto final,

usted podrá encontrar el sustento teórico que lleva de fondo este proyecto, los objetivos

que esperamos alcanzar con la elaboración de este experimento, el desarrollo detallado a

lo largo de la elaboración del prototipo; ¿Qué pasos se llevaron a cabo para encontrar los

distintos parámetros del controlador? ¿Cómo se encontró la función de transferencia del

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 nuestro controlador, los distintos imprevistos que se encontraron durante la elaboración

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

de un motor de corriente directa por medio de un controlador proporcional, integral y

derivativo.

Sin más que añadir, pasemos al siguiente punto de este reporte.


5

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

prototipo. Si no tuviéramos ningún sustento conceptual que acompañe o “tome de la mano”

a este experimento, nada de esto sería posible; por lo que resulta imperativo mencionar

todo aquello que va detrás de este proyecto.

Primero, vamos a hablar acerca del tipo de controlador que ha sido utilizado en nuestro

proyecto: el controlador proporcional, integral y derivativo, o bien, PID.

Un controlador PID (Controlador Proporcional, Integral y Derivativo) es un mecanismo de

control simultaneo por realimentación ampliamente usado en sistemas de control

industrial. Este calcula la desviación o error entre un valor medido y un valor deseado.

Figura 1. Diagrama de bloques típico de un controlador PID en un lazo realimentado.


6

El algoritmo del control PID consiste de tres parámetros distintos: el proporcional, el

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

como la posición de una válvula de control o la potencia suministrada a un calentador.

Cuando no se tiene conocimiento del proceso, históricamente se ha considerado que el

controlador PID es el controlador más adecuado. Ajustando estas tres variables en el

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

describirse en términos de la respuesta del control ante un error, el grado el cual el

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

ausencia de las acciones de control respectivas. Los controladores PI son particularmente

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

realizado este proyecto; estamos hablando acerca del optoacoplador.

Un optoacoplador, también llamado optoaislador o aislador acoplado ópticamente, es un

dispositivo de emisión y recepción que funciona como un interruptor activado mediante la

luz emitida por un diodo led que satura un componente optoelectrónico, normalmente en

forma de fototransistor o fototriac. De este modo se combinan en un solo dispositivo

semiconductor, un fotoemisor y un fotorreceptor cuya conexión entre ambos es óptica.

Estos elementos se encuentran dentro de un encapsulado que por lo general es del tipo DIP.

Se suelen utilizar para aislar eléctricamente a dispositivos muy sensibles.

Figura 2. Símbolo electrónico de un optoacoplador.


8

En la siguiente figura se muestra un optoacoplador 4N35 formado por un led y un

fototransistor. La tensión de la fuente de la izquierda y la resistencia en serie establecen

una corriente en el led emisor cuando se cierra el interruptor S1. Si dicha corriente

proporciona un nivel de luz adecuado, al incidir sobre el fototransistor lo saturará,

generando una corriente en R2. De este modo la tensión de salida será igual a cero con S1

cerrado y a V2 con S1 abierto.

Figura 3, Ejemplo de un circuito con un optoacoplador.

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 rango en el que la señal de salida sea casi idéntica a la de entrada.

La ventaja fundamental de un optoacoplador es el aislamiento eléctrico entre los circuitos

de entrada y salida. Mediante el optoacoplador, el único contacto entre ambos circuitos es

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.

Ahora, cuando se trabaja con un controlador de velocidad de un motor, resulta imperativo

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

en revoluciones por minuto y no confundirse con la velocidad angular expresada en

radianes por segundo.

Figura 4. Un tacómetro de un vehículo que indica las RPM.


10

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

se representan normalmente con símbolos y no con abreviaturas, también existe la

abreviatura r. p. m. para representar esta unidad.

Probablemente sin la ayuda de cierto dispositivo no hubiésemos podido recaudar o

recopilar toda la información destinada a nuestro controlador. Inclusive, probablemente ni

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

proyecto: Raspberry Pi.

Raspberry Pi es un ordenador de placa reducida, ordenador de placa única u ordenador de

placa simple (SBC) de bajo coste desarrollado en el Reino Unido por la Fundación

Raspberry Pi, con el objetivo de estimular la enseñanza de informática en las escuelas.

Figura 5. Logotipo de Raspberry Pi.


11

Aunque no se indica expresamente si es hardware libre o con derechos de marca, en su web

oficial explican que disponen de contratos de distribución y venta con dos empresas, pero

al mismo tiempo cualquiera puede convertirse en revendedor o redistribuidor de las tarjetas

Raspberry Pi, por lo que da a entender que es un producto con propiedad registrada,

manteniendo el control de la plataforma, pero permitiendo su uso libre tanto a nivel

educativo como particular.

En cambio, el software sí es de código abierto, siendo su sistema operativo oficial una

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

posteriores una tarjeta MicroSD.

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

Pidora (derivado de Fedora); y promueve principalmente el aprendizaje del lenguaje de

programación Python. Otros lenguajes también soportados son Tiny BASIC, C, Per y Ruby.
12

El lenguaje de programación utilizado para el desarrollo del algoritmo capaz de ejecutar

las funciones del controlador proporcional, integral y derivativo; se trató del lenguaje de

programación Python.

Python es un lenguaje de programación interpretado cuya filosofía hace hincapié en una

sintaxis que favorezca un código legible.

Se trata de un lenguaje de programación multiparadigma, ya que soporta orientación a

objetos, programación imperativa y, en menor medida, programación funcional. Es un

lenguaje interpretado, usa tipado dinámico y es multiplataforma.

Es administrado por la Python Software Foundation. Posee una licencia de código abierto,

denominada Python Software Foundation License, que es compatible con la Licencia

pública general de GNU a partir de la versión 2.1.1, e incompatible en ciertas versiones

anteriores.

Figura 6. Logotipo del lenguaje de programación utilizado.


13

Objetivo del prototipo.

Durante la realización de este proyecto, se trazaron objetivos cuyo resultado fue el

esperado al concluir esta práctica.

Estos objetivos fueron trazados con el fin de poder llevarlos a cabo de manera satisfactoria

conforme el proyecto se fuese desarrollando paulatinamente.

A continuación, en listaremos los objetivos correspondientes a este proyecto final:

 Diseñar un dispositivo controlador de velocidad de un motor de corriente continua.

 Desarrollar un controlador proporcional, integral y derivativo cuyo fin sea el de

controlar las revoluciones por minuto de un motor.

 Emplear de manera adecuada los dispositivos de medición y de toma de datos para

recopilar la información necesaria en la elaboración del proyecto.

 Aplicar los conocimientos adquiridos en las distintas clases correspondientes a la

materia Control I para la elaboración de un controlador proporcional, integral y

derivativo.

 Esquematizar un código por medio de lenguaje de programación Python cuyo fin

sea el de proporcional un sistema controlador de las revoluciones por minuto.

 Usar toda la información obtenida durante la asignatura de Optoelectrónica para

así poder utilizar apropiadamente los distintos dispositivos optoelectrónicos

necesarios.

 Emplear correctamente un Raspberry Pi para el procesamiento y ejecución del

algoritmo que controlara nuestro motor de corriente continua.


14

 Manejar eficientemente todo el conocimiento recabado en las clases

correspondientes de Instrumentación para el manejo de controladores, sensores, y

distintos dispositivos adecuados para la manipulación de datos.

 Hacer uso eficiente de diferentes herramientas para la estilización, ensamble y

armado de los circuitos utilizados durante el proyecto.

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

cubierto de manera más que satisfactoria.

Es importante recalcar que algunos de estos objetivos se fueron presentando conforme el

desarrollo de la práctica lo empezaba a requerir. Por lo tanto, en muchas ocasiones fue

necesario diseñar ciertos planes de contingencia para poder llevar a cabo ciertos objetivos

que se presentaron de manera emergente. Sin embargo, esto no represento ningún

contratiempo en la elaboración de la práctica.


15

Capítulo 2

Desarrollo y materiales utilizados.

A continuación, en el presente capitulo se expondrá acerca de todo lo sucedido en

la elaboración del proyecto; los pasos que se siguieron, la metodología e instrumentación

utilizada. También, se mencionarán los distintos materiales que se utilizaron en la

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

distintos parámetros concernientes al controlador proporcional, integral y derivativo, así

como un desglose del algoritmo utilizado para programar nuestro controlador en la

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

necesarios para poder llevar a cabo este proyecto final.

Primero, el dispositivo sin el cual probablemente nuestro proyecto no pudiera llevarse a

cabo, es el motor de corriente continua utilizado.

El motor utilizado para controlar sus revoluciones por minuto mediante un controlador tipo

proporcional, integral y derivativo; fue el de un motor que pertenecía anteriormente a una

caminadora.
16

Figura 6. Imagen representativa del motor utilizado.

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

temperatura ambiente de 25℃.

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

proporcional, integral y derivativo diseñado para este prototipo.

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

seleccionado por encima de un Arduino ya que nos proporcionó la posibilidad de incluir

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

un Raspberry podemos utilizar un código de programación distinto al que se utiliza en un

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

disponibles en Arduino sobre el controlador PID.

A continuación, una lista con todos los dispositivos utilizados para la realización de este

proyecto final:

 Una pequeña placa de circuito impreso (PCB)

 Un soldador eléctrico.

 Estaño para soldar.

 Resistores de 220Ω, 330Ω, 1kΩ, 2,2kΩ y 10kΩ.

 Un motor de corriente directa de

 Una Raspberry Pi 3.

 Arduino uno.

 Varios alambres de conexión.

 Un disco codificador.

 Un optoswitch ITR8102.
18

 Una fuente de voltaje CD 12-24V.

 Un optoacoplador 4N25.

 Transistores 2N2222.

 Una base de madera.


19

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.

Figura 7.- Diseño del circuito en el simulador Proteus.

Primero, nuestro circuito del motor está conformado por un arreglo elaborado en una placa

de circuito impreso donde tenemos algunas resistencias de protección para el optoaislador,

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

las instrucciones detalladas por nuestro código de programación de nuestro controlador

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

alimentación de 12 voltios al motor, y por medio de nuestro punto de consigna o “setpoint”,

el motor debe de girar a las revoluciones por minuto especificadas.


21

Desarrollo del experimento y resultados obtenidos.

Ahora pasamos a la parte más importante del presente documento, donde

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

nuestro controlador proporcional, integral y derivativo de forma adecuada, entre otros

puntos importantes.

Antes de empezar el proyecto físico, primero comenzamos con una lluvia de ideas para

concebir el bosquejo a seguir en la elaboración de este prototipo. Uno de los primeros

planes fue el de regular la velocidad de un simple motorreductor por medio de un Arduino,

sin embargo, esta idea se deshecho ya que era muy similar a una práctica de laboratorio

concerniente a la materia de Optoelectrónica y por lo tanto esta idea quedo descartada.

Después, nos encontramos con una idea muy similar a la del proyecto final, solo que, a

diferencia de este utilizaríamos simplemente un Arduino en lugar del Raspberry, sin

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

podemos modificar el punto de consigna con ayuda de un teclado y un mouse.

Y así fue como conseguimos el prototipo final, un controlador de velocidad proporcional,

integral y derivativo de un motor de corriente continua, donde por medio de un

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

nosotros y el código de programación elaborado en la Raspberry, nosotros somos capaces

de controlar la velocidad de este motor.

Una vez encontrado y concebir una idea original para nuestro proyecto final, decidimos

empezar con el desarrollo de la programación de nuestro controlador proporcional, integral

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

ventajas de la parte proporcional, integral y derivativa; por ejemplo:

 Proporciona una buena estabilidad.

 Responde rápidamente.

 Se anticipa en la aparición de un error.

 Elimina el error en estado estacionario (estable).

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

pueden disminuir con una buena configuración de sus parámetros integrales,

proporcionales y derivativos.
23

A continuación, una descripción del código de programación utilizado para el controlador

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

poder utilizar los pines del Raspberry.

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

variables que realizaran la función de contador, y darle un valor deseado de revoluciones

por minuto a nuestro controlador; tal y como se muestra a continuación:

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

proporcional, integral y derivativo:

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

“Error”, y un “Delta” que nos sirve como tiempo de muestreo.

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

encarga de realizar toda la función de un controlador proporcional, integral y derivativo.

Sin esta función el programa no podría realizar ningún tipo de operación relacionada al

control, es por ello su vital importancia en el desarrollo de este proyecto.

Ahora, la siguiente parte corresponde a la función de velocidad, que se encarga de realizar

las mediciones de la velocidad a la que gira el motor. A continuación, el código de la

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)

La función lleva el nombre de “Speedv2” y se encarga de realizar las mediciones

concernientes al motor, es decir que gracias a esta función nosotros podemos obtener las

revoluciones por minuto en tiempo real, y compararlas con otras mediciones de

realimentación para así poder generar la señal de “Error” y “Error_anterior”, las cuales son

enviadas a la función de nuestro controlador proporcional, integral y derivativo.

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

armamos el circuito diseñado finalmente; utilizamos distintas piezas de circuitos impresos

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

encargan de enviar la señal al Raspberry.

Luego ensamblamos todo lo construido junto con el motor, en una pequeña base de madera

para poder trasladar todo el prototipo de una manera más eficiente.

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

programa nos arrojó unas mediciones más que adecuadas.

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

software especializado en asuntos y resolución de operaciones matemáticas: MATLAB.

Para comenzar, tomamos una muestra de las revoluciones por minuto del motor cuando

lo sometíamos a todo el voltaje proporcionado por la fuente de voltaje, es decir, 12

voltios.
27

A continuación, una pequeña muestra de los resultados obtenidos:

Figura 8.- Muestra de la tabla de mediciones obtenidas durante la prueba a 12 voltios.

Se realizaron cerca de 346 mediciones en un intervalo de 50 milisegundos

aproximadamente.

En la tabla, la primera columna corresponde a la hora en que se realizó la medición, la

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.

Con los valores obtenidos y capturados en la tabla anterior, elaboramos un bosquejo de la

gráfica del sistema, tal y como se puede apreciar en la figura.


28

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

correspondiente a aproximadamente 720 revoluciones por minuto.

Con la información obtenida de las dos últimas columnas, podemos obtener nuestra función

de transferencia a partir del programa MATLAB.

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

referencia a las revoluciones por minuto medidas).

Después, utilizamos el introducimos el comando “ident”, el cual nos proporciona la

posibilidad de encontrar nuestra función de transferencia del sistema en el dominio del

tiempo.

Figura 9.- Comando “ident” en MATLAB.


29

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:

Luego seleccionamos la opción de “estimate”, y escogemos la opción “process model”,

donde vamos a construir nuestra función de transferencia, clickeando en la opción de

“estimate”.
30

Esto nos creara una función de transferencia como la que se muestra a continuación:

Figura 10.- Función de transferencia del sistema.


31

Como se puede observar en la imagen, la función de transferencia corresponde a una de

primer orden con un polo.

Una vez que encontramos la función de transferencia, ahora podemos encontrar la gráfica

de nuestra función de transferencia que se muestra a continuación:

Figura 11.- Grafica de nuestro sistema.

Ahora para poder encontrar los valores deseados de las constantes de proporcionalidad,

integral y diferencial, utilizamos el comando “pidtool”. Con este comando nosotros

podemos importar una función de transferencia, y adaptarla al tipo de controlador que

deseemos, en nuestro caso uno proporcional, integral y derivativo.


32

Figura 12.- La función de transferencia dentro del comando “pidtool”.

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

que ajustar de modo que se pueda encontrar un equilibro.

En la otra opción, podemos escoger el comportamiento de la respuesta en estado transitorio,

que esta sea muy fuerte o muy agresiva.


33

Entonces, una vez que probamos con distintas combinaciones de los parámetros

mencionados anteriormente, nosotros encontramos las constantes proporcional, integral y

derivativa que nos brindaron una mayor estabilidad al sistema.

Figura 13.- Grafica de nuestro controlador PID.

Como se puede observar en la gráfica, nuestro sistema tarda un poco en alcanzar el valor

deseado, sin embargo, no presenta ningún problema de sobre-impulso o de oscilaciones.

Figura 14.- Parámetros del controlador PID.


34

De la imagen anterior, apreciamos los valores de la constante proporcional, Kp, con un

valor de 0.12313 aproximadamente, la constante integral, Ki, con un valor correspondiente

de 0.4912, y la constante derivativa, Kd, con un valor de 0.0057378.

Con estos valores de las constantes de nuestro controlador proporcional, integral y

derivativo, pudimos encontrar un sistema que nos da una respuesta que cumpla con

nuestros requisitos, durante el lapso de tiempo deseado.


35

Capítulo 3

Conclusiones.

En este capítulo, los cuatro integrantes del equipo expondrán su conclusión de

manera individual acerca del presente proyecto final que tanto se ha descrito anteriormente

en los capítulos pasados de este documento.

 Armenta López Bladimir:

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

nunca nos imaginamos que pudiéramos integrar un controlador proporcional, integral y

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

adecuada, o si quiera que puedan cubrirse.

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

 Martínez Cisneros Alonso:

Personalmente este proyecto final me pareció muy interesante ya que utilizamos varios

componentes electrónicos y pusimos en práctica sus distintos funcionamientos. También

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

ser este equipo para sacar adelante los problemas sorteados.

Probablemente nosotros nunca pensamos en elaborar un proyecto de este tipo, y es difícil

escoger lo más relevante entre todo lo aprendido, ya que todo tiene su importancia dentro

de la realización de este tipo de trabajos. Sin embargo, siempre me gustaría mencionar la

importancia que puede llegar a tener la selección del controlador a utilizar para poder

controlar lo que desees controlar.

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

cumplir con su función.

También es importante recalcar la gran importancia de los dispositivos optoelectrónicos en

la elaboración de este proyecto, ya que sin ellos no hubiésemos logrado ningún tipo de

medición. Es impresionante como la industria de la electrónica cada día crece más,

superándose constantemente, generando y creando distintos componentes que nos hace

algunos años atrás probablemente no hubiésemos creído posible que con ellos podríamos

realizar tantas cosas.


37

 Ponce Varela Ramón Efrén:

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.

Probablemente un controlador ON/OFF no hubiese funcionado para nuestro proyecto, pero

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

que se esté desarrollando y eso es hay que tenerlo muy en cuenta.

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

el funcionamiento de los diferentes tipos de controladores, aprendimos como utilizar

MATLAB para encontrar los parámetros que satisfagan nuestras condiciones al momento

de diseñar un controlador, logramos armar un proyecto que relacionara el contenido de

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

en el diseño del circuito, la implementación del mismo, trabajar horas extras en la

producción de este, entre otra clase de inconvenientes que no se esperaban de primera

mano. No obstante, eso nunca impidió la realización del proyecto y es por ello que estoy

satisfecho con el desempeño logrado por cada integrante.

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

 Ríos Ulloa Aram David:

El desarrollo del prototipo fue el esperado, mas no probablemente el deseado ya que no

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

la realización de la práctica; eso es fundamental ya que es importante que podamos

relacionar los conceptos y la teoría vista en clase con situaciones más prácticas, que

podamos ejecutarlas sobre alguna mesa de proyectos.

Es importante recalcar la gran ventaja o ayuda que nos ha sido el tener a nuestra mano las

distintas herramientas de simulación, programas de diseño o resolución de problemas

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.

En lo personal, me quedo de este proyecto con todo lo aprendido relacionado al controlador

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

sistema con una respuesta deseada.

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

También podría gustarte