Está en la página 1de 36

INSTITUTO POLITÉCNICO

NACIONAL
ESIME CULHUACÁN

INGENIERÍA EN COMPUTACIÓN
ALUMNOS:
Rojano Peñaloza Eduardo
No. De boleta: 2020350273
Suarez González Edwin Deninson
No. De boleta: 2019350949
Flores Avalos Rodrigo Emmanuel
No. De boleta: 2020350915
Osorio Ramírez Christian
No. De boleta: 2019350183
Ojeda Hernández María de la Luz
No. De boleta: 2020350258
Santa Cruz Guerrero Dylan
No. De boleta:

GRUPO: 7CM32
ASIGNATURA: Teoría de Control Digital
PROFESOR: Loaiza Brito José Antonio
FECHA: 1/12/2022
“Control PID digital para la posición
angular de un motor de cd”
Introducción
Los sistemas de control de datos discretos y digitales difieren de los sistemas
continuos, o analógicos, en que las señales en una o más partes de ellos se
encuentran en forma de trenes de pulsos o códigos numéricos.

Los sistemas de control son una parte integral de la vida cotidiana en la


sociedad actual. Ellos controlan nuestros electrodomésticos, centros de
entretenimiento, vehículos y ambientes de oficina; controlan nuestros
procesos industriales y los sistemas de transporte, controlan nuestra
exploración de la tierra, el mar, el aire del espacio. Casi la totalidad de estas
aplicaciones utilizan controladores digitales implementados con electrónica
digital, microprocesadores, o computadores. Por lo tanto, todo estudiante de
ingeniería en computación, química o mecánica debe estar familiarizado con
la teoría básica de los controladores digitales.

Un motor D.C. o de corriente continua es una máquina que convierte energía


eléctrica en mecánica a través de un movimiento rotatorio. Las fuerzas
electromagnéticas que intervienen en un motor CC Son producidos por la
interacción entre dos campos magnéticos.
Objetivo
El alumno comprenderá el uso de un control digital, con ejemplo de una
interfaz que ayuda con el control de un motor, usando Arduino y una
aplicación en el celular, que, ayude a comprender los mecanismos adecuando
parta poder tener el control de un motor a distancia.

Planteamiento del problema


Se realizará un control digital que ayude a controlar un motor de 5v con la
ayuda de una interfaz gráfica en un celular

Materiales y software requerido

• Motor de C.C. de 5v.


• Computadora.
• Arduino UNO r3.
• IDE de Arduino.
• Protoboard.
• Encoder Incremental 600 Pulsos LPD3806-600BM.
• Matlab.
• Cables de diferentes colores para protoboard.
• Doble puente H L293.
• Modulo HC-05.
Marco teórico

ARDUINO UNO

Arduino UNO es una placa basada en el microcontrolador ATmega328P.


Tiene 14 pines de entrada/salida digital (de los cuales 6 pueden ser usando
con PWM), 6 entradas analógicas, un cristal de 16Mhz, conexión USB,
conector “Jack” de alimentación, terminales para conexión ICSP y un botón
de reseteo. Tiene toda la electrónica necesaria para que el microcontrolador
opere, simplemente hay que conectarlo a la energía por el puerto USB o con
un transformador AC-DC.

Encoder incremental

El encoder incremental proporciona normalmente dos formas de ondas


cuadradas y desfasadas entre sí en 90º eléctricos, los cuales por lo general
son "canal A" y "canal B". Con la lectura de un solo canal se dispone de la
información correspondiente a la velocidad de rotación, mientras que si se
capta también la señal "B" es posible discriminar el sentido de rotación en
base a la secuencia de datos que producen ambas señales. Está disponible
además otra señal llamado canal Z o Cero, que proporciona la posición
absoluta de cero del eje del encoder. Esta señal se presenta bajo la forma de
impulso cuadrado con fase y amplitud centrada en el canal A.

La precisión de un encoder incremental depende de factores mecánicos y


eléctricos entre los cuales, el error de división del retículo, la excentricidad del
disco, la de los rodamientos, el error introducido por la electrónica de lectura,
imprecisiones de tipo óptico.

La unidad de medida para definir la precisión de un encoder es el grado


eléctrico, éste determina la división 360º eléctricos corresponden a la rotación
mecánica del eje, necesaria para hacer que se realice un ciclo o impulso
completo de la señal de salida. Para saber a eléctricos es suficiente aplicar la
fórmula siguiente:

360° 𝑚𝑒𝑐á𝑛𝑖𝑐𝑜𝑠
360° 𝑒𝑙𝑒𝑐𝑡𝑟𝑖𝑐𝑜𝑠 =
𝑁° 𝑖𝑚𝑝𝑢𝑙𝑠𝑜𝑠/𝑔𝑖𝑟𝑜
El error de división en un encoder, está dado por el máximo desplazamiento
expresado en grados eléctricos, de dos frentes de onda consecutivos. Este
error existe en cualquier encoder y se debe a los factores antes citados. En
los encoder ELTRA dicho error está incluido entre ± 25º eléctricos máx. En
cualquier condición ambiental declarada, que corresponden, en porcentaje, a
un desplazamiento de ±7% del valor nominal. Por lo que se refiere al desfase
entre dos canales, nominalmente de 90º eléctricos, éste se aleja en ±35º
eléctricos máx. que corresponden a aproximadamente ±10%.
Doble puente H L293D.

El Driver puente H para motores L293D es un circuito que tiene en su interior


4 drivers o medio puente H. La corriente máxima que el L293D puede
manejar es de 600 mA con voltajes desde 4.5 volts a 36 volts. Cada canal es
controlado por señales TTL (lógica transistor a transistor). Cada pareja de
canales también dispone de señales para habilitar la conexión o desconexión
de los mismos.

Todas las entradas del circuito Integrado L293D son compatibles con TTL, por
lo que pueden manejarse con la mayoría de los micro controladores y
circuitos lógicos del mercado. La salida de los drivers puede activarse y
desactivarse en pares, mediante señales de habilitación. Cuando se presenta
un 1 lógico en los pines de habilitación, las señales correspondientes de
salida estarán activas y en fase con la señal de entrada. Cuando las entradas
de habilitación presentan un estado lógico 0, las salidas se encuentran en
estado de alta impedancia.

Gracias a que este circuito integrado es capaz de producir corrientes


bidireccionales, es útil en aplicaciones que requieran controlar la dirección de
giro y velocidad de motores de DC. Otras de sus aplicaciones son el control
de relevadores, motores de paso bipolares, solenoides y cualquier otro
dispositivo electrónico de corriente continua que cumpla con las
especificaciones eléctricas del dispositivo.

Algunas de sus características son:

• Voltaje de entrada (motores): 4.5V-36V.


• Corriente DC por canal: 600mA.
• Corriente pico por canal: 1.2A.
• Protección contra sobre carga térmica.
• Diodos de protección contra voltajes inversos generados por las cargas
inductivas (motores).
• En el caso de motores es posible controlar tanto su velocidad (PWM)
como su dirección de giro.
• Control de motores paso a paso en modo unipolar o bipolar.

Modulo HC-05

El módulo Bluetooth HC-05 nos permite conectar nuestros proyectos con


Arduino a un smartphone, celular o PC de forma inalámbrica (Bluetooth), con
la facilidad de operación de un puerto serial. La transmisión se realiza
totalmente en forma transparente al programador, por lo que se conecta en
forma directa a los pines seriales de nuestro microcontrolador preferido
(respetando los niveles de voltaje, ya que el módulo se alimenta con 3.3V).
Todos los parámetros del módulo se pueden configurar mediante comandos
AT. La placa también incluye un regulador de 3.3V, que permite alimentar el
módulo con un voltaje entre 3.6V - 6V. Este módulo es el complemento ideal
para nuestros proyectos de robótica, domótica y control remoto con Arduino,
PIC, Raspberry PI, ESP8266, ESP32, STM32, etc.

La comunicación Bluetooth se da entre dos tipos de dispositivos: un maestro y


un esclavo. Si nuestro objetivo es conectar nuestro proyecto a un smartphone
android podemos utilizar tanto un módulo HC-06 o un HC-05 configurado
como esclavo. El módulo Bluetooth HC-05 viene configurado de fábrica para
trabajar como esclavo, es decir, preparado para escuchar peticiones de
conexión, pero podemos configurarlo para trabajar con Maestro utilizando
comandos AT. Por otra parte, si nuestro objetivo es conectar dos proyectos,
necesitaremos utilizar un módulo HC-05 configurado como maestro y un HC-
06 (esclavo) o un HC-05 configurado como esclavo.

Este módulo cumple con las especificaciones del estándar Bluetooth 2.0 que
es perfectamente compatible con celulares o smartphones Android, más no
con los iPhone. Para trabajar con iPhone recomendamos utilizar el Módulo
Bluetooth 4.0 BLE HM-10, que también es compatible con los celulares
Android modernos.

Sus especificaciones técnicas son:

• Voltaje de operación: 3.6V - 6V DC


• Consumo corriente: 50mA
• Bluetooth: V2.0+EDR
• Frecuencia: Banda ISM 2.4GHz
• Modulación: GFSK(Gaussian Frequency Shift Keying)
• Potencia de transmisión: 4dBm, Class 2
• Sensibilidad: -84dBm a 0.1% BER
• Alcance 10 metros
• Interface comunicación: Serial TTL
• Velocidad de transmisión: 1200bps hasta 1.3Mbps
• Baudrate por defecto: 38400,8,1,n.
• Seguridad: Autenticación y encriptación
• Temperatura de trabajo: -20C a +75C
• Compatible con Android
• Dimensiones: 37*16 mm
• Peso: 3.6 gramos

Motor DC 5V

El motor de corriente continua (denominado también motor de corriente


directa, motor CC o motor DC) es una máquina que convierte la energía
eléctrica en mecánica, provocando un movimiento rotatorio, gracias a la
acción que se genera del campo magnético. Su aplicación más común es en
proyectos de estudiantes, ya que su revolución depende del voltaje de
entrada (Vin). Es posible controlar la velocidad y el par de estos motores
utilizando técnicas de control de motores CD.

Sus especificaciones técnicas son:

• Rango de tensión: 3 V a 6 V
• Corriente: 800 mA
• Diámetro del eje: 2 mm
• Velocidad de recorrido libre @ 6 V: 8000 rpm
• Dimensiones motor: 20 mm X 15 mm X 25 mm
Desarrollo

Modelo de Motor DC

Motor de Corriente Directa DC

El dínamo de corriente directa básico consiste en un elemento con una


armadura, escobas y bobinas de campo en serie, paralelo o la combinación
de ellas, el cual viene siendo usado por muchos años como un convertidor
básico de energía. Estos motores son usados en procesos como elevadores
eléctricos, laminadores, vehículos eléctricos y algunas bombas donde se
requiere de velocidad variable.

La armadura del motor DC se modela como si tuviera una resistencia


constante R en serie con una inductancia constante L que representa la
inductancia de la bobina de la armadura, y una fuente de alimentación y que
representa la tensión generada en la armadura.

La primera ecuación se realiza haciendo un análisis de la malla del circuito:


𝑑𝑖(𝑡)
𝑣(𝑡) = 𝑅𝑖(𝑡) + 𝐿 + 𝐸𝑎(𝑡)
𝑑𝑡

𝑑𝑖(𝑡)
𝐿 = 𝑣(𝑡) − 𝑅𝑖(𝑡) − 𝐸𝑎(𝑡) (1)
𝑑𝑡

Donde 𝐸𝑡 (𝑡) (Fuerza contraelectromotriz [volts]) es una tensión generada que


resulta cuando los conductores de la armadura se mueven a través del flujo
de campo establecido por la corriente del campo𝑖𝑓

Naturalmente, en toda potencia mecánica desarrollada en el rotor se entrega


a la carga mecánica conectado al eje del motor de CC. Parte de la potencia
desarrollada se pierde a través de la resistencia de la bobina del rotor, la
fricción, por histéresis y perdidas por corrientes de Foucault en el hierro del
rotor.

Desde aquí las perdidas por fricción y parte de la energía desarrollada es


almacenada como energía cinética en la masa girante del rotor. La ecuación
de la sección mecánica viene dada por el modelo

𝑑𝑤 (𝑡)
𝑇𝑚 (𝑡) = 𝐽 + 𝐵𝑤(𝑡)
𝑑𝑡

𝑑𝑤 (𝑡)
𝐽 = 𝑇𝑚 (𝑡) − 𝐵𝑤(𝑡) (2)
𝑑𝑡

Donde 𝑇𝑚 (𝑡) es el torque del motor de corriente continua, B es el coeficiente


de fricción equivalente al motor de CD (corriente continua) y la carga
montados sobre el eje del motor, J es el momento de inercia total del rotor y
de la carga con relación al eje del motor, w(t) es la velocidad angular del
𝑑𝑤(𝑡)
motor y es la aceleración angular.
𝑑𝑡
Para poder lograr la interacción entre las ecuaciones anteriores se proponen
las siguientes relaciones que asumen que existe una relación
proporcional,𝑘𝑎 (Constante contraelectromotriz [v/rad s]), entre el voltaje
inducido en la armadura y la velocidad angular del eje del motor.

Ea(t)=Kaω(t) (3)

Y se supone la siguiente relación electromecánica que establece que el


torque mecánico es proporcional, 𝑘𝑚 (Constante de Torque [Nm / A]), a la
corriente eléctrica que circula por el motor DC.

𝑇𝑚(𝑡) = 𝐾𝑚𝑖(𝑡) (4)

Funciones de Transferencia del Motor de Corriente Continua DC

Comenzamos aplicando transformada de Laplace a las ecuaciones 1 al 4.

𝐿𝑠𝑖(𝑠) = 𝑣(𝑠) − 𝑅𝑖(𝑠) − 𝐸𝑎(𝑠) (5)

𝐽𝑠𝜔(𝑠) = 𝑇𝑚(𝑠) − 𝐵𝜔(𝑠) (6)

𝐸𝑎(𝑠) = 𝐾𝑎𝜔(𝑠) (7)

𝑇𝑚(𝑠) = 𝐾𝑚𝑖(𝑠) (8)

sustituimos ec 7 y ec 8 en la ec 5

𝑇𝑚 (𝑠) 𝑇𝑚(𝑠)
𝐿𝑠 = 𝑣(𝑠) − 𝑅 − 𝑘𝑎 𝑤(𝑠)
𝐾𝑚 𝐾𝑚
(𝑅 + 𝐿𝑠)𝑇𝑚 (𝑠)
𝑣(𝑠) = + 𝑘𝑎 𝑤(𝑠) (9)
𝐾𝑚

De la Ec 6, podemos obtener la velocidad angular:

𝑇𝑚 (𝑠)
𝑤(𝑠) = (10)
𝐽𝑠 + 𝐵

Sustituyendo Ec 10 en Ec 9

(𝑅 + 𝐿𝑠)𝑇𝑚 (𝑠) 𝑇𝑚 (𝑠)


𝑣(𝑠) = + 𝐾𝑎
𝐾𝑚 𝐽𝑠 + 𝐵

(𝑅 + 𝐿𝑠) 𝐾𝑎
𝑣(𝑠) = ( + )𝑇𝑚(𝑠)
𝐾𝑚 𝐽𝑠 + 𝐵

(𝑅 + 𝐿𝑠)(𝐽𝑠 + 𝐵)𝐾𝑎 𝐾𝑚
𝑣(𝑠) = 𝑇𝑚 (𝑠) (11)
𝐾𝑚 (𝐽𝑠 + 𝐵)

De esta forma podemos obtener la función de transferencia que relaciona la


salida (torque) del motor de CD con la entrada (voltaje)

𝑇𝑚 (𝑠) 𝐾𝑚 (𝐽𝑠 + 𝐵)
=
𝑣(𝑠) 𝐿𝐽𝑠 2 + (𝑅𝐽 + 𝐿𝐵)𝑠 + 𝑅𝐵 + 𝐾𝑎 𝐾𝑚

Notemos que el motor posee diferentes salidas como puede apreciarse en el


siguiente diagrama de bloques del motor DC.
De la misma forma, se pueden usar las ecuaciones para obtener la función de
transferencia que relacionen cualquier salida con la entrada que es voltaje.

Función de transferencia de la fuerza contraelectromotriz con relación al


voltaje:

𝐸𝑎 𝐾𝑚𝐾𝑎
=
𝑣(𝑠) 𝐿𝐽𝑠² + (𝑅𝐽 + 𝐿𝐵) 𝑠 + 𝑅𝐵 + 𝐾𝑚𝐾𝑎

Función de transferencia de la corriente de armadura con relación al voltaje:

𝑖(𝑠) 𝐽𝑠 + 𝐵
=
𝑣(𝑠) 𝐿𝐽𝑠² + (𝑅𝐽 + 𝐿𝐵)𝑠 + 𝑅𝐵 + 𝐾𝑚𝐾𝑎

Función de transferencia de la velocidad angular con relación al voltaje:

𝑤(𝑠) 𝐾𝑚
=
𝑣(𝑠) 𝐿𝐽𝑠² + (𝑅𝐽 + 𝐿𝐵)𝑠 + 𝑅𝐵 + 𝐾𝑚𝐾𝑎

Por otro lado, si estamos interesados en conocer la posición del motor de


corriente directa DC, basta simplemente con integrar la velocidad angular, en
otras palabras, simplemente colocamos un integrador a la función de
transferencia anterior. Por lo tanto, la ecuación que representa la posición del
Motor DC es:
0(𝑠) 𝐾𝑚
=
𝑣(𝑠) 𝑠(𝐿𝐽𝑠² + (𝑅𝐽 + 𝐿𝐵)𝑠 + 𝑅𝐵 + 𝐾𝑚𝐾𝑎)

Espacio de Estados

Una vez obtuvimos las funciones de transferencia, el espacio de estados


también es muy sencillo de obtener, partiendo de las ecuaciones del 1 al 4,
podemos nombrar nuestros estados como:

x1=w x2=w

𝑥1̇=𝑤̇ 𝑥̇ 2=𝑤̇

Reescribiendo las ecuaciones del 1 al 4 usando las definiciones del espacio


de estado, se tiene:

𝐵 𝐾𝑚
𝑥̇ 1 = − x1 + 𝑥
𝐽 𝐽 2

𝑅 𝐾𝑎 1
𝑥̇ 2 = − 𝑥2 − 𝑥1 + 𝑣
𝐿 𝐿 𝐿

La representación del modelo del Motor DC en espacio de Estados es:

𝐵 𝐾𝑚
− 0
̇ 𝐽 𝐽 𝑋1
[𝑥1] = [ ] + [1]𝑣
𝑥2 ̇ 𝐾 𝑎 𝑅 𝑋2
𝐿
[− 𝐿 − ]
𝐿
𝑦1 1 0 𝑥1
[ ]=[ ][ ]
𝑦2 0 1 𝑥2

En unidades SI, el par motor y las constantes de emf de retorno son iguales a
través de la técnica paramétrico dimensional demostrado que en literatura
que es válido para motores DC, basándose en utilizar expresiones que
guardan una relación paramétrica dimensional directa entre 𝐾𝑚 con la
constante de voltaje 𝐾𝑎 , es decir:

𝐾𝑎 = 𝐾𝑚

Con lo anterior expuesto, podemos decir que de una manera general el


modelo matemático de nuestro motor queda como:

𝐾𝑚
𝑠(𝑠 + 𝑎)

Parámetros reales del motor

Parámetros de Motor DC
Parámetro Símbolo Valor Unidad
Momento de Inercia J 0.00032749 Kg.m^2
Constante de Fricción viscosa B 0.0020694 N.m.s
Constante de Fuerza
Ka 0.2195589 V/rad s
Electromotriz
Constante del Par del Motor Km 0.2195589 N.m/A
Resistencia de Armadura R 4.6 Ohms
Inductancia eléctrica L 0.0015 H

Constante Electromotriz
Va (v) Ia (A) W(RPM) W(rad/s)
5.3 0.19 192.5 20.1586
Parámetros de Motor DC
Parámetro Símbolo Valor Unidad
Tiempo de Estabilización
tmss 0.125 s
Mecánica
Constante de Tiempo Mecánica tm 0.03125 s
Corriente de Arranque iarr 0 A
Torque de Fricción Tf 0 N.m
Torque Mecánico Tm 0.04171619 N.m

Diseño de la acción de control

Función de transferencia en el plano Z

El sistema está dado por:

Función de transferencia de lazo abierto

1 − 𝑒 −𝑇𝑠 𝐾 (1 − 𝑒 −𝑇𝑠 )𝐾 (1 − 𝑒 −𝑇𝑠 )


𝐺𝐻(𝑧) = 𝑍{ ∙ } = 𝑍{ } = 𝑘𝑍 { }
𝑠 𝑠(𝑠 + 𝑎) 𝑠(𝑠 + 𝑎) 𝑠(𝑠 + 𝑎)

(1) (1)
𝐺𝐻(𝑧) = 𝑘𝑍 { − 𝑒 −𝑇𝑠 }
𝑠 2 (𝑠 + 𝑎) 𝑠 2 (𝑠 + 𝑎)

(1)
𝐹(𝑠) =
𝑠 2 (𝑠 + 𝑎)
1
𝐺𝐻𝑧 = 𝑘𝑍{𝐹𝑠 − 𝐹𝑠 𝑒 −𝑇𝑠 } = 𝑘𝑍{𝐹𝑠 } − 𝑍{𝐹𝑠 𝑒 −𝑇𝑠 } = 𝑘(1 − 𝑧 −1 )𝑍{ }
𝑠 2 (𝑠 + 𝑎)

Aplicando la transformada inversa de laplace mediante las fracciones parciales

𝑘 𝐴 𝐵 𝐶 𝐴(𝑠 + 𝑎) + 𝐵[𝑠(𝑠 + 𝑎)] + 𝐶𝑠 2


= + + =
𝑠 2 (𝑠 + 𝑎) 𝑠 2 𝑠 𝑠 + 𝑎 𝑠 2 (𝑠 + 𝑎)
𝐴 𝐵 𝐶
𝐿−1 { 2
− 2 + 2 }
𝑠 𝑎 𝑎 𝑠 𝑎 (𝑎 + 𝑠)

−1 ){𝐴
𝑇𝑍 −1 1 1
(1
𝐺𝐻𝑧 = − 𝑍 [ ] + 𝐵 ( ) + 𝐶( )}
(1 − 𝑍 −1 ) 1 − 𝑍 −1 1 − 𝑒 −𝑎𝑇 − 𝑍 −1

𝐴𝑇𝑍 −1 𝐵 𝐶(1 − 𝑍 −1 )
𝐺𝐻𝑧 = + +
(1 − 𝑍) 1 (1 − 𝑒 −𝑎𝑇 − 𝑍 −1 )

𝐴𝑇𝑧 −1 𝐵 𝐶(1 − 𝑍 −1 )
𝐺𝐻𝑧 = + +
(1 − 𝑧 −1 ) 1 (1 − 𝑒 −𝑎𝑇 − 𝑍 −1 )

𝐴𝑇𝑧 −1 (1 − 𝑒 −𝑎𝑇 − 𝑧 −1 ) + 𝐵(1 − 𝑧 −1 )(1 − 𝑒 −𝑎𝑇 𝑧 −1 ) + 𝐶(1 − 𝑧 −1 )2


𝐺𝐻𝑧 =
(1 − 𝑧 −1 )(1 − 𝑒 −𝑎𝑇 𝑧 −1 )

𝐺𝐻𝑧 = (𝐶 + 𝐵𝑒 −𝑎𝑇 − 𝐴𝑇𝑒 −𝑎𝑇 )𝑧 −2 + [𝐴𝑇 − 𝐵(1 + 𝑒 −𝑎𝑇 )] − 2𝐶𝑧 −1 + (𝐵 + 𝐶)

𝑏0 𝑧 −2 + 𝑏1𝑧 −1 + 𝑏22
𝐺𝐻𝑧 =
𝑎2𝑧 −2 − 𝑎1𝑧 −1 − 𝑎0
a0=1, a1=(a-aT-1) b0=C+Be-aT-Ate-aT

a1=(e-aT-1) b1=AT-B(1+e-aT)-2C

a2=e-aT b2=B+C

Calculamos A, B y C
1 1
𝑎= += = 27.97150268
1𝑚 0.0417162
𝑘 0.2195589
𝐴= = = 0.009159163
𝑎 23.97150268
𝑘 0.2195589
𝐵= 2
= = −0.000382085
𝑎 23.971502682
𝑘 0.2195589
𝐶= 2
= = 0.000382085
𝑎 23.971502682
B0=0.000382085+1-0.000382085(e-127.97150268(0.1))-0.009159163(0.1)(e-127.97150268x0.1)=0.000303

B1=0.009159163(0.1)-(-0.000382085(1+e-27.97150268(0.1))210.000382085)=0.000916
B2=0 A0=1

A1=1.06098 A2=0.060984

Ahora tenemos:

𝑏0 𝑧 2 + 𝑏2 𝑧 −1 + 𝑏2
𝐺(𝑧) =
𝑎2 𝑧 −2 + 𝑎1 𝑧 −1 + 𝑎0
0.000303𝑧 2 + 0.000916𝑧 −1 + 0
𝐺(𝑧) =
0.060984𝑧 −2 + 1.060984𝑧 −1 + 1

Estabilidad por LGR

𝑅(𝑧) 𝑘𝐺(𝑧)
=
𝐶(𝑧) 1 + 𝑘𝐺(𝑧)𝐻(𝑧)

1. Obtenemos la ecuación característica

𝑘(0.000303𝑧 2 + 0.000916𝑧 −1 )
1+ =0
0.060984𝑧 −2 + 1.060984𝑧 −1 + 1

𝑧 𝑘(0.000303𝑧 2 ) + 0.000916
𝑧 𝑧 [𝑧 𝑘(0.000303𝑧 2 ) + 0.000916]
=
(𝑧 + 0.060984 ) (𝑧 + 1) (𝑧 + 0.060984)(𝑧 + 1)
𝑧2

2. Determinamos polos y ceros

Polos 𝑧1 = −0.060984 𝑧2 = −1

Ceros

𝑧1 = 0 , 𝑧1 = 0

𝑧2 = 0.000303 , 𝑧2 = −0.000303

𝑧3 = 0.000916
3. Determinar el LGR sobre el eje real

-
1

4. Determinamos los n-m asíntotas que definen la trayectoria del LGR

Número de polos 𝑛 = 2

Número de ceros 𝑚 = 5

𝑛 − 𝑚 = 2 − 5 = −3

• Centroide

∑ 𝑝𝑜𝑙𝑜𝑠 − ∑ 𝑐𝑒𝑟𝑜𝑠 (−1.060984) − 0.000916


𝜎𝑎 = =
𝑛−𝑚 −3

𝜎𝑎 = 0.353967

• Ángulo de la asíntota

180° (2 × 0) + 1
𝜃= = −60 + 180° = 120°
−3
5. Encontramos los puntos de ruptura de salida y entrada

1 + 𝑘𝐺(𝑧)𝐻(𝑧) = 0

𝑘𝐵(𝑧)
1+ =0
𝐴(𝑧)

𝐴(𝑧)
𝑘=
𝐵(𝑧)

𝑑𝑘 𝐴′ (𝑧)𝐵(𝑧) − 𝐴(𝑧)𝐵′ (𝑧)


=
𝑑𝑧 𝐵2 (𝑧)

𝑧 [ 𝑧 𝑘 (0.000303𝑧 2 ) + 0.000916]
=0
(𝑧 + 0.060984)(𝑧 + 1)

𝑧 2 + 1.06098𝑧 + 0.060984

𝑧 2 (0.000303𝑧 2 ) + 0.000916𝑧

0.000303𝑧 4 + 0.000916𝑧

𝑧 2 + 1.06098𝑧 + 0.060984
𝑘=
0.000303𝑧 4 + 0.000916𝑧

𝐴′ = 2𝑧 + 1.06098

𝐵′ = 0.001212𝑧 3 + 0.000916

[2𝑧 + 1.06098] [0.000303𝑧 −1 + 0.000916𝑧] − [𝑧 2 + 1.06098𝑧 + 0.060984] [0.001212𝑧 3 + 0.000916𝑧]


(0.000303𝑧 4 + 0.000916𝑧)2

−3099.08𝑧 4 − 14006.3𝑧 3 − 1072𝑧. 3𝑧 2 + 19954.5𝑧


=
𝑧(𝑧 3 + 3.0231)2
Raíces 𝑧1 = 0.0310335 𝑧2 = 0.800452

6. No hay polos complejos por lo tanto no se realiza


7. Encontramos los puntos donde el LGR cruza el eje imaginario

𝑧 2 + 1.06098𝑧 + 0.060984 + 𝑧 2 𝑘(0.000303𝑧 2 ) + 0.000916𝑧 = 0

1
𝑧 2 𝑘(0.000303𝑧 2 ) + 𝑧 2 + 1.0619𝑧 + 0.060984 =
𝑘

𝑘 ≈ −4.52694

𝑤 = −0.465809

−0.0655052

𝑑𝑣 = −0.0689327925

−0.344127524
Circuito propuesto
Diagrama de flujo
Código

#include <PID_v1.h>
#define motor 6
#define motAdel 4
#define RevMot 7
String leerCad;
int EntradaUsuario = 0;
int encoderPin1 = 2;
int encoderPin2 = 3;
volatile int UltValEncoder = 0;
volatile long ValEncoder = 0;
int PPR = 2400;
int Angulo = 360;
int REV = 0;
int MSB = 0;
int LSB = 0;
double kp = 5, ki = 1, kd = 0.01;
double input = 0, output = 0, setpoint = 0;
PID myPID(&input, &output, &setpoint, kp, ki, kd, DIRECT);

void setup()
{
pinMode(motor, OUTPUT);
pinMode(motAdel, OUTPUT);
pinMode(RevMot, OUTPUT);
Serial.begin(9600);
pinMode(encoderPin1, INPUT_PULLUP);
pinMode(encoderPin2, INPUT_PULLUP);
digitalWrite(encoderPin1, HIGH);
digitalWrite(encoderPin2, HIGH);
attachInterrupt(0, actualizarEncoder, CHANGE);
attachInterrupt(1, actualizarEncoder, CHANGE);

TCCR1B = TCCR1B & 0b11111000 | 1;


myPID.SetMode(AUTOMATIC);
myPID.SetSampleTime(1);
myPID.SetOutputLimits(-125, 125);
}
void loop()
{
while (Serial.available())
{
delay(3);
char c = Serial.read();
leerCad += c;
}

if (leerCad.length() > 0)
{

Serial.println(leerCad.toInt());
EntradaUsuario = leerCad.toInt();
}
REV = map(EntradaUsuario, 0, 360, 0, 2400);
Serial.print("Estas son las Rev - ");
Serial.println(REV);
setpoint = REV;
input = ValEncoder;
Serial.print("Valor del ecoder - ");
Serial.println(ValEncoder);
myPID.Compute();
Salidapwm(output);
}
void Salidapwm(int out)
{
if (out > 0) {
analogWrite(motor, out);
adelante();
}
else
{
analogWrite(motor, abs(out));
reverso();
}
leerCad = "";
}
void actualizarEncoder()
{
int MSB = digitalRead(encoderPin1);
int LSB = digitalRead(encoderPin2);
int encoder = (MSB << 1) | LSB;
int sum = (UltValEncoder << 2) | encoder;
if (sum == 0b1101 || sum == 0b0100 || sum == 0b0010 || sum == 0b1011)
ValEncoder++;
if (sum == 0b1110 || sum == 0b0111 || sum == 0b0001 || sum == 0b1000)
ValEncoder--;
UltValEncoder = encoder;
}
void adelante()
{
digitalWrite(motAdel, HIGH);
digitalWrite(RevMot, LOW);

}
void reverso()
{
digitalWrite(motAdel, LOW);
digitalWrite(RevMot, HIGH);

}
void terminar()
{
digitalWrite(motAdel, LOW);
digitalWrite(RevMot, LOW);

}
Simulación

Lo probamos con un ángulo de 180° para probar.


Circuito implementado

Envío de información desde el ArduinoUNO hacia el Puente H


Foto global del circuito con su conexión a Bluetooth
Motor y ángulo puesto a cero grados

Motor y ángulo puestos a noventa grados


Conexión de la aplicación de Arduino con el módulo de conexión bluetooth
HC-05 instalado en el circuito para la transferencia de datos de entrada
Se conecta al módulo a forma de terminal
Se envían los datos por la línea de comandos y se reciben los valores desde
el Arduino haciendo el ajuste o mostrando los valores actuales
Video de funcionamiento
https://youtu.be/NPn96g7hZkU

Referencias
https://www.arcaelectronica.com/blogs/tutoriales/modulo-bluethoot-hc-05-y-
hc-06-
arduino#:~:text=La%20principal%20diferencia%20entre%20estos,puede%20s
er%20usado%20como%20esclavo.

https://www.alldatasheet.com/datasheet-
pdf/pdf/22432/STMICROELECTRONICS/L293D.html

https://arduino.cl/arduino-uno/

https://docs.google.com/file/d/0B93S-
Z6qmW9ER3hyRmNIazd4bVE/edit?resourcekey=0-
W53BbEVeBm1WtThyrl1fIA

https://www.picuino.com/es/control-pid-digital.html

https://controlautomaticoeducacion.com/analisis-de-sistemas/modelo-de-
motor-dc/

https://naylampmechatronics.com/drivers/223-driver-puente-h-l293d.html

https://electronicamade.com/puente-h-l293d/

También podría gustarte