Está en la página 1de 11

U NIVERSIDAD AUTÓNOMA DE Q UERÉTARO

FACULTAD DE I NGENIERÍA

I NGENIERÍA EN AUTOMATIZACIÓN

Control II

Identificación de parámetros de un motor de (CD) con escobillas


usando la respuesta en frecuencia.

Práctica 2

Profesor:
Dr. Roberto Valentín Carrillo Serrano

Equipo 2
Integrantes:

Arcadia Soto Jehú Cal. 3.5

Leyva Sánchez Gerardo Cal. 3

Ramos Mayorga Javier Cal. 3.5

Muro González Ángel David Cal. 4.5

Parral Medrano Diego Iván Cal. 3.5

Pérez López David Karim Cal. 3.5

21 de Octubre de 2023
Índice
1. Objetivo 2

2. Marco Teórico 2

3. Materiales y Métodos 2
3.1. Materiales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
3.2. Métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

4. Resultados y Discusión 4
4.1. Arcadia Soto Jehú . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4.2. Leyva Sánchez Gerardo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.3. Ramos Mayorga Javier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.4. Muro González Ángel David . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.5. David Karim Pérez López . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.6. Parral Medrano Diego Iván . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4.7. Resultados y discusión del equipo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

5. Conclusiones 7
5.1. Arcadia Soto Jehú . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
5.2. Leyva Sánchez Gerardo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
5.3. Ramos Mayorga Javier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
5.4. Muro González Ángel David . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
5.5. Pérez López David Karim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
5.6. Parral Medrano Diego Iván . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
5.7. Conclusiones del equipo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

Bibliografía 8

6. Anexos 9
6.1. Programa de DEV C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

Índice de figuras
1. Plataforma experimental RKCII. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Gráfica de Bode realizada en EXCEL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

Índice de cuadros
1. Características de la laptop del compañero Leyva Sánchez Gerardo. . . . . . . . . . . . . . . . 3
2. Características de la laptop del compañero Ramos Mayorga Javier. . . . . . . . . . . . . . . . . 3
3. Resultados experimentales obtenidos desde MATLAB y EXCEL. . . . . . . . . . . . . . . . . 4
1. Objetivo
Identificar los parámetros de un motor de CD con escobillas con la técnica de la respuesta en frecuencia
para obtener los valores numéricos de la función de transferencia cuando entra voltaje y sale velocidad angular.

2. Marco Teórico
Identificación Cp y Ck (Carrillo-Serrano, 2023):

m K Km
Θ(s) Ck Km Ra b + Km Kb
=  Ra b+Km Kb =  Ra J
= , Ck = , Cp =
Va (s) Ra J
s Ra b+K s + 1 s s+ Ra b+Km Kb s (s + Cp ) Ra J Ra J
m Kb Ra J
(1)
Donde:
Km : constante de par.
Ra : resistencia de armadura.
b: coeficiente de fricción viscosa.
J: momento de inercia.
Kb : constante de fuerza contraelectromotriz.
Así la función de transferencia simplificada en posición es (Carrillo-Serrano, 2023):

Θ(s) Ck
= (2)
Va (s) s (s + Cp )
Pasando la s del denominador de (2) al primer miembro (Carrillo-Serrano, 2023):

sΘ(s) Ω(s) Y (s) Ck


= = = (3)
V a(s) V a(s) U (s) s + Cp
Donde la salida Y (s) en (3) es la velocidad angular de la flecha y U (s) es el voltaje.

|Ck | Ck B
|G (jω)| = =q = (4)
|Cp + jω| 2
Cp + ω 2 A
 
ω
∠G (jω) = 0 − arctan (5)
Cp
Con w = 0.1 y usando (4):
B
q
Ck = Cp 2 + ω 2 (6)
A

3. Materiales y Métodos
3.1. Materiales
Para la realización de esta práctica utilizamos el siguiente material:

Laptop con los softwares requeridos como:


• MATLAB
◦ Versión: R2023b.
• EXCEL
◦ Versión: Microsoft Office Professional Plus 2013.

2
• DEV C++
◦ Versión: 5.11.
Plataforma experimental RKCII, mostrada en la Figura 1.
Durante la actividad, se usaron dos laptops: la de Ramos Mayorga Javier y la de Leyva Sánchez Gerardo.
La laptop de Ramos Mayorga Javier fue utilizada para manejar la plataforma experimental y elaborar gráficas
en MATLAB con información de DEV C++. En todo momento, se compartieron los valores con Leyva Sánchez
Gerardo, quien los procesó en EXCEL. Este software, al aplicar las fórmulas correspondientes, permite hacer
cálculos de manera automática y fue empleado para obtener las gráficas de Bode. Las características de las
laptops se detallan en los Cuadros 1 y 2.

Cuadro 1: Características de la laptop del compañero Leyva Sánchez Gerardo.

Marca: HP
Windows: 8.1 Single Language
Procesador: AMD A6-5200 APU
Memoria RAM: 8.00 [GB] (7.46 [GB] utilizable)
Tipo de Sistema: Sistema operativo de 64 [bits], procesador x64
Id. del Producto: 00179-40476-94726-AAOEM
Id. del dispositivo: 2F2721EE-A326-492A-B196-61DE77A24B64

Cuadro 2: Características de la laptop del compañero Ramos Mayorga Javier.

Marca: ASUS
Windows: Windows 11 Home Single Language 22H2
Procesador: 11th Gen Intel(R) Core(TM) i3-1115G4
Memoria RAM: 12 [GB] (8 [GB] utilizable)
Tipo de Sistema: Sistema operativo de 64 [bits], procesador x64
Id. del Producto: 00342-41446-18108-AAOEM
Id. del dispositivo: 94DF8ED1-B75E-48A1-B770-76A08F84AF67

Figura 1: Plataforma experimental RKCII.

3.2. Métodos
Los pasos que realizamos para lograr el objetivo de ésta segunda práctica del curso de Control II, fueron los
siguientes:
1. Se verificó que las conexiones de la plataforma experimental eran las correctas.
2. El primer día, se utilizó la laptop del profesor Roberto Valentín Carrillo Serrano, en la cual se abrieron
DEV C++ y MATLAB. Los días subsecuentes, se hizo uso de la laptop del compañero Ramos Mayorga
Javier para abrir los mismos programas. Por su parte, en la laptop de Leyva Sánchez Gerardo, solo se
abrió EXCEL.

3
3. Se confirmó que en el código proporcionado por el Dr. Roberto Valentín estuviera declarada la ecuación
(7), que nos sirvió para obtener la señal de entrada de voltaje al sistema de control.

u = 2.0 + sin(ωt) (7)

4. Se procedió a sustituir el valor de ω en el código de DEV C++, realizando varias veces la experimentación,
modificando el valor de ω en la ecuación (7).
5. Pusimos en marcha la plataforma experimental y ejecutamos el código en DEV C++ durante un tiempo
previamente calculado en EXCEL con la fórmula del inverso de la frecuencia, es decir, el periodo en [s].
6. Mientras transcurrieron los segundos correspondientes en cada experimentación observamos a través de
la pantalla de la computadora el comportamiento del motor de CD, complementando con las gráficas
generadas en MATLAB al parar la ejecución del código y la plataforma experimental una vez que pasaron
los respectivos segundos en cada prueba.

7. Conforme observábamos el comportamiento de la gráfica experimental, el docente nos explicaba los


puntos críticos, utilizando las herramientas que MATLAB nos ofrece para determinar con precisión dichos
puntos. Luego, estos se anotaban en EXCEL, donde se obtenían la fase y magnitud, para que, al finalizar
la práctica, pudiéramos crear las gráficas de Bode de manera eficiente.
8. Finalmente se obtuvieron los datos de la velocidad angular máxima y mínima del motor de CD, así como
tu y tω adquiridos de MATLAB. Además de la frecuencia, el periodo, la fase y la magnitud, entre otras
variables obtenidas en EXCEL. Valores que se registraron en el Cuadro 3.

4. Resultados y Discusión

Cuadro 3: Resultados experimentales obtenidos desde MATLAB y EXCEL.

ω rad Bmax rad Bmin rad B rad ϕ [◦ ]


B
20 log B
         
s
F [Hz] T [s] A [V ] s s s
tu tw [s] tϕ [s] A A
[dB]
0.1 0.0159 62.8319 1 68.72 34.56 17.08 141.4 142.9 1.5 -8.5944 17.08 24.6498
0.5 0.0796 12.5664 1 67.94 33.7 17.12 28.27 29.23 0.96 -27.502 17.12 24.6701
0.6 0.0955 10.472 1 68.72 39.37 14.675 23.56 24.54 0.98 -33.6899 14.675 23.3316
0.7 0.1114 8.976 1 67.94 40.45 13.745 20.2 21.11 0.91 -36.4974 13.745 22.7629
0.8 0.1273 7.854 1 66.759 40.841 12.959 17.67 18.6 0.93 -42.6281 12.959 22.2514
0.85 0.1353 7.392 1 65.974 40.841 12.5665 16.63 17.58 0.95 -46.2663 12.5665 21.9843
0.9 0.1432 6.9813 1 66.759 42.412 12.1735 15.71 16.6 0.89 -45.8939 12.1735 21.7083
0.98 0.156 6.4114 1 64.01 42.019 10.9955 14.43 15.34 0.91 -51.0964 10.9955 20.8243
1 0.1592 6.2832 1 64.795 42.411 11.192 14.14 15.03 0.89 -50.9932 11.192 20.9782
1.1 0.1751 5.712 1 64.795 43.589 10.603 12.88 13.71 0.83 -52.311 10.603 20.5086
1.2 0.191 5.236 1 64.403 44.768 9.8175 11.78 12.6 0.82 -56.379 9.8175 19.8400
1.3 0.2069 4.8332 1 64.403 45.161 9.621 10.86 11.64 0.78 -58.0979 9.621 19.6644
1.4 0.2228 4.488 1 64.01 45.947 9.0315 10.1 10.82 0.72 -57.7541 9.0315 19.1152
1.5 0.2387 4.1888 1 63.617 46.338 8.6395 9.43 10.09 0.66 -56.7228 8.6395 18.7298
5 0.7958 1.2566 1 58.119 51.836 3.1415 9.11 9.4 0.29 -83.0789 3.1415 9.9427
6 0.9549 1.0472 1 57.727 52.621 2.553 8.64 8.88 0.24 -82.5059 2.553 8.1410
7 1.1141 0.8976 1 58.119 53.407 2.356 9.2 9.42 0.22 -88.2355 2.356 7.4435
8 1.2732 0.7854 1 57.727 53.7992 1.9639 9.62001 9.80803 0.18802 -86.1820 1.9639 5.8624
9 1.4324 0.6981 1 57.334 53.799 1.7675 8.552 8.73 0.178 -91.7878 1.7675 4.9472
10 1.5915 0.6283 1 55.334 54.2163 1.475 9.58177 9.74278 0.16101 -92.2519 1.475 3.7660

A partir de los valores del Cuadro 3, la Figura 2 y haciendo uso de la fórmula (6), se obtuvieron los valores
de Cp y Ck . Siendo Cp = 0.9 y Ck = 15.46.

4
Figura 2: Gráfica de Bode realizada en EXCEL.

Cada miembro del equipo discute los resultados.

4.1. Arcadia Soto Jehú


En cuanto a la discusión personal, he decidido centrar mi atención en dos elementos específicos, a saber:
la Figura 2 y el Cuadro 3. Estos dos poseen una importancia fundamental en virtud del hecho de que se derivan,
respectivamente, de las gráficas y de los valores obtenidos durante el proceso experimental.
En el marco de la experimentación, en el Cuadro 3 se exhiben los valores obtenidos mediante el uso de
MATLAB. A través de su análisis, podemos observar que el comportamiento del motor se asemeja al de un filtro

5
Pasa Bajas, debido a que su capacidad de movimiento decrece progresivamente en la medida en que aumenta
la frecuencia. En este sentido, se puede inferir que el motor no dispone de la aptitud para efectuar cambios de
manera tan rápida.
En la Figura 2 podemos observar los datos, es importante destacar que el renglón número 7 se encuentra
ω de 0.9 rad

s que corresponde al parámetro Cp obtenido por medio de la experimentación. El diagrama de
Bode revela que, tal y como se había señalado previamente, el filtro rechaza las frecuencias altas, lo que implica
una disminución en su magnitud.
Una vez obtenidos estos valores se calculó Ck , haciendo uso de la ecuación (6), obteniendo un valor de
Ck = 15.46.
Por último, agrego que tuvimos dificultades para determinar Cp a causa de algunos problemas con la he-
rramienta DataTip en las gráficas en MATLAB y la interferencia de otros elementos en la computadora. La
técnica definitiva a la hora de obtener los valores mediante las gráficas en MATLAB fue propuesta por nuestro
compañero Vargas Carrillo Mauricio.

4.2. Leyva Sánchez Gerardo


Terminé focalizando mi atención en dos elementos críticos, la Figura 2 y el Cuadro 3, que se derivan de
datos experimentales. El Cuadro 3 muestra los valores obtenidos mediante MATLAB durante el experimento.
Al analizar estos datos, se evidencia que el comportamiento del motor se asemeja al de un filtro Pasa Bajas a
medida que la frecuencia incrementa. Este comportamiento sugiere una disminución gradual de su capacidad de
movimiento con el aumento de la frecuencia. A través de los datos experimentales, específicamente en el Cuadro
3, podemos observar que ω, con un valor correspondiente a 0.9 rad

s , corresponde al valor del parámetro Cp .
El diagrama de Bode confirma nuestra observación anterior, revelando que el filtro atenúa las frecuencias altas,
lo que se traduce en una disminución de su magnitud. Luego, utilizando la fórmula (6), se realizó el cálculo de
Ck , resultando en un valor de Ck = 15.46.

4.3. Ramos Mayorga Javier


En el Cuadro 3 podemos encontrar los datos de lectura obtenidos de laplataforma experimental, donde
podemos destacar la séptima fila donde se encuentra nuestro valor ω = 0.9 rad

s el cual establecimos como
nuestro parámetro Cp , que fue determinado así, debido a que fue la frecuencia mas cercana a una fase con
valor de −45 [◦ ], siendo así que, con los valores de BA , ω y Cp como se muestra en la ecuación (6), pudimos
determinar el valor de Ck , el cual es de 15.46. Cabe destacar que nuestro valor de Cp , fue difícil de determinar,
debido a la dificultad de centrar correctamente las gráficas para tomar una muestra en el punto indicado usando
la herramienta DataTip del software de MATLAB, además del uso de programas secundarios en la computadora
que obtenía los valores de la plataforma experimental, lo cual generaba lecturas incorrectas.

4.4. Muro González Ángel David


Al analizar el Cuadro 3, se puede observar cómo Bmáx y B disminuyen a medida que aumenta la
frecuencia, mientras que Bmı́n aumenta con la frecuencia. Además, las variables tu , tω y ϕ aumentan a medida
que aumenta su frecuencia.
En la Figura 2, se puede observar cómo su magnitud disminuye a medida que ω aumenta. Además, se
puede notar que la magnitud llega a cero, mientras que la fase nunca alcanza los −180 [◦ ]. Por lo tanto, se puede
afirmar que
 es estable en lazo cerrado con un margen de ganancia infinito. También se puede observar que en
ω = 0.9 rads se obtiene el parámetro Cp , con el cual se obtiene el valor Ck = 15.46 usando la ecuación (6).

4.5. David Karim Pérez López


Los resultados que se obtuvieron de esta práctica se ven en la Figura 2. Empezaré mi discusión con
el Cuadro 3, en el que vemos todos los valores que nos arrojó MATLAB, en estos podemos observar que el
motor actúa como un filtro Pasa Bajas ya que conforme aumenta la frecuencia el motor empieza a dejar de
moverse, ya que éste no tiene un tiempo de respuesta tan rápido. Por último, como vemos en la Figura 2, el
cuál es el diagrama de Bode, éste nos arroja, que como lo habíamos comentado anteriormente, él filtra las altas
frecuencias, lo que quiere decir que atenúa su magnitud. Se puede visualizar como ω de 0.90 rad
s corresponde
al parámetro Cp y del cual podemos obtener mediante la ecuación (6) que Ck = 15.46

6
4.6. Parral Medrano Diego Iván
Primero comenzaremos hablando del Cuadro 3 en el cual utilizamos valores de ω desde 0.1 hasta 10 con
el objetivo de analizar y comprender el comportamiento del motor de CD con cambios de giro a diferentes
frecuencias. Asignando los diferentes valores ya preestablecidos de ω, obtuvimos los resultados del resto de las
variables del Cuadro 3.
Con base en los datos obtenidos en Bmax y en Bmin observamos que comienzan con valores con una
diferencia de 30 rad

s y conforme va aumentando la frecuencia la amplitud de la señal va disminuyendo y la
diferencia entre ellas también.
Otro dato importante que hay que recalcar es cuando ω tiene valor de 0.90 rad
 
s , podemos observar que en
este valor es cuando decae 3 [dB] por lo tanto, en este punto obtenemos la frecuencia de corte.
Después tenemos la figura 2 que obtuvimos mediante EXCEL que nos muestra claramente como va deca-
yendo la respuesta del motor conforme va aumentando el valor de ω, demostrándonos que este motor no está
diseñado para brindar buenas respuestas a alta frecuencia.

4.7. Resultados y discusión del equipo


Hemos decidido enfocarnos en la Figura 2 y el Cuadro 3, ambos esenciales por representar gráficamente
los resultados experimentales y los valores numéricos obtenidos, respectivamente. En el Cuadro 3, los datos
procesados con MATLAB muestran que el motor actúa como un filtro Pasa Bajas, limitado por su capacidad
de respuesta a altas frecuencias. Por otro lado, en la Figura 2, renglón número 7, se deduce que el valor de
ω = 0.90 rad

s , es correspondiente al parámetro Cp obtenido experimentalmente, y el diagrama de Bode
confirma que el filtro rechaza las frecuencias altas. Utilizando la ecuación (6), calculamos que Ck es igual a
15.46.
No está de más decir que nuestro valor de Cp fue complicado de determinar debido a los problemas para
centrar las gráficas y tomar una muestra precisa con la herramienta DataTip de MATLAB. Además, el uso de
otros programas en la computadora afectaba la obtención de valores correctos desde la plataforma experimental,
por lo que tuvimos que hacer uso de diversas técnicas propuestas hasta que se seleccionó la presentada por
nuestro compañero de clase Vargas Carrillo Mauricio.

5. Conclusiones

5.1. Arcadia Soto Jehú


En conclusión, la identificación de los parámetros de un motor de corriente directa con escobillas a través
del análisis de la respuesta en frecuencia es un proceso de suma importancia para el diseño y control de sistemas
eléctricos. La respuesta en frecuencia es una herramienta que permite obtener información valiosa acerca de la
dinámica del motor los cuales son críticos para el modelado y control del sistema.
Es importante destacar que el método de identificación de parámetros mediante la respuesta en frecuencia
resulta ser relativamente sencillo de implementar. Por lo tanto, se considera una herramienta efectiva y de gran
utilidad para mejorar la eficiencia y rendimiento de los sistemas de control de motores de corriente directa con
escobillas.
En definitiva, aprendimos que el análisis de la respuesta en frecuencia es una técnica poderosa y altamente
recomendable para la identificación de los parámetros de un motor de corriente directa con escobillas, lo cual
contribuirá a una mejor comprensión del comportamiento dinámico del sistema y permitirá un control más
eficiente y preciso de dicho motor.

5.2. Leyva Sánchez Gerardo

En esta práctica, destacamos un punto de interés significativo: la capacidad de observar el comportamiento


del motor de corriente continua al realizar un barrido de frecuencia. Este enfoque nos permitió analizar el fun-
cionamiento del motor en detalle en varios puntos, lo que nos llevó a determinar los parámetros de Cp y Ck.

7
Es notable que nuestros cálculos teóricos coinciden de manera destacada con las observaciones del comporta-
miento físico del sistema. Esto refleja una sólida comprensión de los conceptos involucrados y la capacidad para
llevar a cabo experimentos significativos.

5.3. Ramos Mayorga Javier


Para concluir, en esta práctica hemos determinado los valores característicos Ck y Cp que fueron fundamen-
tales para obtener la función de transferencia de un motor de corriente continua, donde se relaciona la entrada de
voltaje con la salida de velocidad angular. Además, las gráficas de Bode nos proporcionaron una comprensión
más precisa de cómo se manifiestan los cambios en el comportamiento de la frecuencia.

5.4. Muro González Ángel David


Concluyo que es importante analizar la respuesta en frecuencia, ya que nos permite comprender de
mejor manera cómo se comportará el sistema y nos habilita para ejercer un control más efectivo sobre él. En
esta práctica, se utiliza para observar el comportamiento del motor, proporcionándonos un ejemplo práctico de
su utilidad.

5.5. Pérez López David Karim


Esta práctica fue de mi agrado ya que es de gran utilidad y nos ayuda a conocer con mayor profundidad
los componentes que utilizaremos para realizarles un control o simplemente conocerlos con otro fin. Cuando
queremos realizar el controlador necesitamos conocer bien como es que funciona el sistema al cual le queremos
realizar el control y esto generalmente lo hacemos mediante una ecuación que describe el comportamiento del
dispositivo y esta ecuación contiene los parámetros del sistema, en este caso únicamente es un motor y gracias
a la respuesta en frecuencia podemos conocer los valores de los parámetros. Otro aprendizaje obtenido en esta
práctica fue que los motores pueden actuar como un filtro Pasa Bajas ya que a altas frecuencias el motor no
tiene un tiempo de respuesta tan veloz.

5.6. Parral Medrano Diego Iván


Fue muy interesante la experimentación y el análisis que pudimos desarrollar acerca de los datos que nos
arrojaba el comportamiento del motor a diferentes frecuencias. Dándonos a entender que dependiendo del tipo
de motor y su composición nos darán un determinado funcionamiento siendo este único en cada motor que
utilicemos y que mediante el análisis de respuesta en frecuencia podremos comprender su comportamiento.
Nos demuestra que es de vital importancia antes de elegir un motor, definir las características que necesita-
mos para que el motor pueda desarrollar su función de la manera esperada.

5.7. Conclusiones del equipo


Hemos concluido que el análisis de la respuesta en frecuencia es una herramienta muy valiosa a la hora de
desarrollar un controlador, ya que nos permite analizar y comprender de manera amplia, sencilla y minuciosa
el comportamiento de nuestro sistema y cuál será la respuesta que tendrá en determinados escenarios que se
presenten.
Como fue el caso del motor utilizado en la plataforma experimental, pudimos observar que no funciona de
manera óptima a altas frecuencias. Por lo tanto, en un escenario donde se requiera esta característica, podemos
confirmar que no cumplirá con los criterios establecidos y que sería mejor buscar una opción con características
diferentes.

Referencias
Carrillo-Serrano, R. V. 2023. Material didáctico control II. Notas de clase.

8
6. Anexos
6.1. Programa de DEV C++
En este anexo se muestra el código fuente utilizado en DEV C++.
#include <iostream>
#include <string.h>
#include<dos.h>
#include <windows.h>
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <stdlib.h>

#define Ts 0.01
#define ppr 400.0
#define pi_ 3.141593

#define VM 10.3
#define VNM 10.0

unsigned char flagcom=0,flagfile=0,signo_sal,pwm; //de 8 bits


unsigned short int pos; //de 16 bits
float y,p_1,p,u,pwmf,t=0,esc=pi_/(2*ppr),iTs=1/Ts,escs=127/VM;

using namespace std;


int main()
{
HANDLE h; /*handler, sera el descriptor del puerto*/
DCB dcb; /*estructura de configuracion*/
DWORD dwEventMask; /*mascara de eventos*/
FILE *fp;

if((fp=fopen("MONIT.txt","w+"))==NULL)
{
printf("No se puede abrir el archivo.\n");
exit(1);
}

/*abrimos el puerto*/
h=CreateFile("COM1",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);

if(h == INVALID_HANDLE_VALUE)
{
/*ocurrio un error al intentar abrir el puerto*/
}

/*obtenemos la configuracion actual*/


if(!GetCommState(h, &dcb))
{
/*error: no se puede obtener la configuracion*/
}

/*Configuramos el puerto*/
dcb.BaudRate = 115200;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
dcb.fBinary = TRUE;
dcb.fParity = TRUE;

/* Establecemos la nueva configuracion */


if(!SetCommState(h, &dcb))
{
/* Error al configurar el puerto */
}

DWORD n;
char enviar;
int recibido;

/* Para que WaitCommEvent espere el evento RXCHAR */


SetCommMask(h, EV_RXCHAR);
while(1)
{
recibido=0;
/* Enviamos... */

/* De la llamada a WaitCommEvent solo se retorna cuando ocurra51. * el evento seteado con SetCommMask */
// WaitCommEvent(h, &dwEventMask, NULL);

9
/* Recibimos algun dato!*/
while(1)
{
ReadFile(h, &recibido, 1/* leemos un byte */, &n, NULL);
if(!n)
break;
else
{
if(flagcom!=0)
flagcom++;
if((recibido==0xAA)&&(flagcom==0))
{
pos=0;
flagcom=1;
}
if(flagcom==2)
{
pos=recibido;
pos=pos<<8;
}
if(flagcom==3)
{
p_1=p;
pos=pos+recibido;
p=(signed short int)pos;
p=esc*p;
if(abs(p-p_1)<60)
y=(p-p_1)*iTs;

u=2.0+sin(10.0*t);
//u=sin(0.628*t);
//u=1.0;

if(u>VNM)
u=VNM;
if(u<-VNM)
u=-VNM;
pwmf=u;

//escalamiento de salida a 7 bits más 1 bit de signo


pwmf=escs*pwmf;
pwm=(unsigned char)fabs(pwmf);

if(pwmf<0)
pwm=pwm+128;

//mandando byte con la señal de control///////////////////////////////////


enviar=pwm;
if(!WriteFile(h, &enviar/*puntero al buffer*/, 1/* 1 byte*/, &n, NULL))
{
/* Error al enviar */
}
//////////////////////////////////////////////////////////////////////////

//Imprimiendo en pantalla
printf("%3.3f\t%3.3f\t%3.3f\n",t,y,u);

/*escribir algunos datos en el archivo*/


fprintf(fp,"%3.3f\t%3.3f\t%3.3f\n",t,y,u);

flagcom=0;
t=t+Ts;
}
}//cierre del else
//printf("%c",recibido);
//cout << recibido; /* mostramos en pantalla */
}//CIERRE WHILE()
}//CIERRE WHILE()
fclose(fp);
return 0;
}

10

También podría gustarte