Tecnológico Nacional de México: Reporte Final de Residencia Profesional
Tecnológico Nacional de México: Reporte Final de Residencia Profesional
Campus Querétaro
Que presenta:
Estudiante de la carrera:
Ingeniería en Mecatrónica
Asesor:
Cervantes Gloria Omar Alejandro
Asesor Externo:
Ávalos Zúñiga Raúl Alejandro
Periodo:
Agosto-Diciembre 2022
Indice General
Introducción …………………………………………………………………………………… 1
i
Capítulo 4 Desarrollo del Proyecto
4.1 Metodología…………………………………………..…………………………………… 20
4.2 Descripción del emulador………………………………………..………………………. 21
4.2.1 Características mecánicas y
expresiones matemáticas auxiliares…………………………………..……………. 23
4.2.2 Funciones posibles de emular……………………………………..…………. 23
4.3 Sensor de Posición……………………………………………………………..……….. 24
4.3.1 Principio de funcionamiento general…….….……..………………………… 24
4.3.2 Calibración……………………………………..……….………………………. 25
4.3.3 Reajuste del sensor Sharp……………...…………………………………..… 29
4.4 Circuito y cableado……………………………………..………………………………… 30
4.5 Interfaz de visualización para la posición del oscilador………………..…………….. 34
4.6 Programación de las funciones a emular.…………………………….……………….. 36
4.7 Prueba piloto. Comprobación del funcionamiento del sistema.…………….……….. 39
4.8 Pruebas finales………………...…………………………………………………………. 41
4.9 Emulación por tabla de datos…………………………………..……………………….. 44
Capítulo 5 Resultados…………………………………..…………………………………… 45
5.1 Otras actividades…………………………………..……………………………………... 47
Conclusiones y recomendaciones…………………………………………………………… 49
Anexos…………………………………………………………………………………………... 50
Indice de Figuras
ii
Figura 13 Sensores magnéticos instalados……………………………………….….…….. 22
Figura 14 Dimensiones del sistema……………………………………………………….. .. 22
Figura 15 Sensor Sharp………………………………………………………….……………. 24
Figura 16 Posición inicial del sensor Sharp…………………………………………………. 25
Figura 17 Base y sistema montados en placa metálica…………………..……………….. 26
Figura 18 Superficie con material reflectante………………….……………………………. 26
Figura 19 Calibrador armado en un 70%……………………………………………………. 27
Figura 20 Sistema calibrador completo………….…..…….………………………………... 27
Figura 21 Cálculos para disminución del error……………………………………………… 28
Figura 22 Gráfica de calibración con hoja de papel blanco……………………………….. 29
Figura 23 Sensor Sharp montado en el sistema.…………………………………………… 29
Figura 24 Sistema mecánico completo.……………………………………………………… 30
Figura 25 Conexiones al driver……………………………………………………………….. 31
Figura 26 Conexiones a protoboard……………………………………………….…………. 32
Figura 27 Salidas digitales del driver…………………………………………………………. 33
Figura 28 Conexiones del driver a la fuente…………………….…………………………... 33
Figura 29 Conexiones completas……………………………………………………….……. 34
Figura 30 Mensaje advertencia…………………………………………………….………… 35
Figura 31 Configuración de PLX – DAQ…………………………………………………….. 35
Figura 32 Pantalla de Mint Workbench……………………………………………………… 36
Figura 33 Pantalla de PLX - DAQ sin registro de datos.…………………………………... 40
Figura 34 Declaración del pin 2 como entrada……………………………………………… 40
Figura 35 Ecuación de calibración inicial……………………………………………………. 41
Figura 36 Verificación de los sensores magnéticos………………………………………... 41
Figura 37 LEDs indicadores del driver……………………………………………………….. 42
Figura 38 Ejecución de la función seno…………………………………….………………... 43
Figura 39 Tabla de datos generada en Matlab…………..…………………………………. 44
Figura 40 Gráfica generada por Matlab
de P(x) = 5sen(2πt)cos(2π2t)………………………….……………...………….…………… 44
Figura 41 Datos y gráfica de P(X) = 10sen(2π0.5t)………………………………………… 45
Figura 42 Datos y gráfica de P(x) = 15cos(2πt)………………...……………..……………. 46
Figura 43 Datos y gráfica de P(x) = 5sen(2πt)cos(2π2t)………………………….………. 46
Figura 44 Experimento del disco de cobre……………………..……..……………………... 47
Figura 45 Prototipo de tanque de agua electromagnético………………………….……... 48
iii
Indice de Tablas
iv
Introducción
El primer capítulo presentado en este informe abarca los datos generales del Centro
de Investigación en Ciencia Avanzada y Tecnología Aplicada, como su reseña histórica,
organigrama, entre otra información.
El capítulo dos describe claramente el problema que existe en la organización motivo por el
cual se realiza el proyecto, se incluyen antecedentes, objetivos y demás datos relacionados
con la problemática.
El capítulo tres se basa el la información teórica del proyecto como conceptos básicos,
antecedentes históricos, descripciones generales, etcétera.
En el capítulo cuatro se centra en la metodología y procedimientos usados para la realización
del proyecto así como una breve descripción de otras actividades realizada.
En el capítulo cinco se reflejan todos los resultados del proyecto, incluyendo pruebas con un
antes y un después.
El último capítulo describe lo que se consiguió con la realización de dicho proyecto, así como
las competencias alcanzadas y aquellas que se aplicaron para lograr los objetivos.
Este documento explica a detalle ciertas actividades que fueron requeridas para el proyecto y
da un enfoque diferente a la manera en que fue realizado anteriormente, se contó con un
manual con todos los pasos necesarios para la puesta en marcha del oscilador, sin embargo
fueron implementadas otras cosas muy útiles para un mejor funcionamiento. Siendo de ese
modo puede resultar de mucha ayuda para alumnos y futuros residentes que tengan la
oportunidad de realizar un proyecto con características similares a las presentadas en este
informe. El proyecto se limita a trabajar con el sistema usado por un residente anterior pero
fueron aplicadas otras metodologías para retomarlo además se hizo un sistema extra para
facilitar el uso de ciertos componentes.
1
Capítulo 1 Generalidades de la empresa
2
El 6 de febrero del 2003 se llevó a cabo en esta Unidad el primer examen de grado de
maestría, correspondiente a una alumna que dedicó tiempo completo a sus estudios y el 27
de junio del mismo año, se graduó el primer alumno que dedicó tiempo parcial a sus
estudios.
A partir de diciembre de 2004, los Programas de Posgrado en Tecnología Avanzada fueron
admitidos en el Programa Integral de Fortalecimiento al Posgrado (PIFOP) 2.0 del
CONACYT. Antes de estar en el PIFOP, la característica principal del funcionamiento del
posgrado en el CICATA-IPN, Querétaro fue, que se atendían alumnos en su mayoría de
medio tiempo, combinando así sus actividades laborales con las escolares. Lo que permitió
que sus tesis y trabajos de asignaturas realizadas en el Centro fueran de aplicación directa a
su actividad profesional; los alumnos de tiempo completo en este periodo contaron con becas
institucionales del IPN para estudios de posgrado, además de los apoyos económicos del
Programa Institucional de Formación de Investigadores (PIFI).
Fue hasta el 30 de junio de 2005 cuando se estableció, de manera oficial, el CICATA-IPN,
Querétaro. En los considerandos del acuerdo respectivo se menciona que el desarrollo
científico y tecnológico del país requiere de centros de investigación que tengan la capacidad
de crear tecnología propia; vincularse con los sectores productivos de bienes y servicios,
público, social y privado y realizar la transferencia de la tecnología desarrollada; señala,
además, que la infraestructura ofrecida por el estado de Querétaro permite el desarrollo de la
investigación en el ámbito de la ciencia y la tecnología, lo cual posibilita cumplir con los
objetivos planteados por el CICATA. Por esto, se decidió establecer el CICATA-IPN,
Querétaro, como una entidad regional teniendo por objeto impartir docencia y desarrollar
investigaciones científicas y de tecnología avanzada que contribuyan en el crecimiento
económico y social del país.
3
1.3 Organigrama
4
1.4 Misión Visión y Política
1.4.1 Misión
1.4.2 Visión
1.4.3 Objetivo
5
• Captura y video de eventos de alta velocidad: La captura de videos o imágenes a alta
velocidad de adquisición ofrece la posibilidad de poder observar eventos que suceden
muy rápido. Esto resulta eficaz para la detección de problemas o el análisis de
procesos. Esta información puede ser utilizada para la toma de decisión o
simplemente para la observación de fenómenos. La captura es mediante una cámara
digital de alta velocidad Memrecam GX-1.
1998
2º. Lugar en el VII Concurso universitario Feria de las ciencias asesorando el trabajo
“Osciloscopio de Gas. Certamen patrocinado por la UNAM. C.U. D.F. 3 Abril 1998.
2000
3er lugar en el simposio “ La Investigación y el Desarrollo Tecnológico en Querétaro 2000”
con el trabajo titulado ”Mejoramiento de adobes a través de agentes tenso activos y
emulsiones” Mc. Jorge Pineda Piñón, Ing. Vicente Sánchez Maqueda, Dr. Alejandro manzano
Ramírez, Dr. Juan francisco Pérez Robles, Ing. Eduardo Morales Sánchez” . Querétaro, Qro.,
14 de noviembre de 2000.
2003
2do. Lugar en el certamen “Premio Alejandrina a la investigación y a la creación artística”
versión 2003. trabajo titulado “Proceso de cristalización en memorias ópticas de cambio de
fase: Discos Compactos”. Octubre de 2003.
2006
2do. Lugar en el simposio “ La Investigación y el Desarrollo Tecnológico en Querétaro 2006”
dentro del área avance tecnológico de la industria, con el trabajo titulado “Aplicación de
metodología para seleccionar maices de alto valor agregado en base a su uso final”.
6
1.7 Caracterización del área en la que se participó
7
Capítulo 2 Planteamiento del problema
El uso de los recursos naturales para la generación de energía ha sido una tendencia
en los últimos años además la humanidad entera es consciente que el agua, el viento, el sol
y otros recursos son usados actualmente como generadores de la energía eléctrica, la cual
se ha convertido en el tipo de energía más demandado en el mundo. El motivo principal de
recurrir a las energías alternativas es el ahorrar y aprovechar los recursos naturales con el
debido cuidado para satisfacer ciertas necesidades.
Una de estas alternativas que ha llamado la atención en los últimos años es el uso de los
generadores de metal líquido, mejor conocidos como generadores magnetohidrodinámicos
(MHD), en conjunto con algún aparato que aproveche la energía de las olas del mar, por
mencionar un ejemplo; el MHD no es otra cosa que un sistema encargado de convertir el
movimiento oscilatorio de un fluido conductor en energía eléctrica al reaccionar con un
campo magnético; sus principales características son el diseño sencillo, la ausencia de
partes móviles y alta eficiencia.
Este proyecto tiene como fin innovar y desarrollar nuevos sistemas para la generación
eléctrica a partir de sistemas oscilantes. El proceso consiste en la integración del simulador
mecánico de oscilaciones para evaluar la factibilidad y acoplamiento de sus componentes.
En este caso se innova un concepto de generador eléctrico lineal de metal líquido que
funciona por el principio de inducción electromagnética. La particularidad del proyecto es la
caracterización eléctrica del generador lineal para aprovechar el desplazamiento mecánico
de los convertidores de energía.
8
2.2 Objetivos
• Llevar a cabo una prueba piloto del sistema ya implementado para comprobar su
funcionamiento.
• Diseñar e implementar un sistema de calibración para el sensor Sharp de
posicionamiento.
• Mejorar el sistema mecánico haciendo los ajustes y montajes de piezas necesario
para mejorar el funcionamiento del mismo.
• Realizar la programación correspondiente a la visualización de la posición del
oscilador.
• Probar el sistema una vez que haya sido completamente verificado.
2.3 Justificación
9
2.4 Alcance
El sistema actual que emula movimientos oscilantes para el generador MHD de metal
líquido tiene fallos de programación, tales como la programación par visualizar la posición del
oscilador; permite emular diferentes funciones armónicas y no armónicas como;
Asen(wt)
Acos(wt)
Asen(wt)*cos(wt)
Asen(w1t)+ABcos(w2t)
Acos(wt)*e-ct
Siendo A la amplitud y w el producto 2π por la frecuencia.
Todos los esfuerzos se pondrán en corregir todos esos detalles, se realizarán las
mejores necesarias para garantizar una mejor eficiencia en todo el sistema, el CICATA
cuenta con licencias de varios softwares de diseño mecánico e impresión 3D que pueden ser
útiles, por ejemplo, para la construcción de un sistema de calibración del sensor de posición
o innovar el sistema mecánico; algo importante que se busca es aprovechar todos los
recursos disponibles en el laboratorio y en las instalaciones del centro de investigación para
evitar gastos innecesarios. Al momento de realizar pruebas con el sistema completo, será
necesario hacer ciertos cambios en las instrucciones correspondientes al uso de dicho
sistema.
10
Capítulo 3 Marco teórico
11
3.2 Servomotor Baldor sin escobillas de la serie N de BSM
12
3.2.2 Aplicaciones comunes
• Impresión 3D.
• Cortado a medida.
• Cizalla voladora.
• Etiquetado.
• Mecanizado.
• Manejo de materiales.
• Devanado.
13
Figura 4 Pantalla principal de Mint Workbench
Incluye también un archivo de ayuda completo con mucha información sobre todas las
palabras clave de Mint, cómo usar la plataforma y la información complementaria sobre
temas de control de movimientos.
14
3.4 PLX – DAQ
3.5 Arduino
15
La información de esos periféricos se trasladará al microcontrolador, el cual se
encargará de procesar los datos que le lleguen a través de ellos.
El tipo de periférico que se utilizan para enviar datos al microcontrolador depende del
propósito que se desea cumplir. O la aplicación que se desee realizar También cuenta con
una interfaz de salida, encargada de llevar la información que se ha procesado en el Arduino
a otros periféricos que pueden ser pantallas o altavoces en los que reproducir los datos
procesados o también pueden ser otras placas o controladores.
3.5.1 Características
16
3.6 Lenguaje MINT
Es un sensor óptico capaz de medir la distancia entre él y un objeto, para esto, con la
ayuda de un emisor infrarrojo y un receptor, miden la distancia usando el método de
triangulación que consiste en medir uno de los ángulos que forma el triángulo emisor-objeto-
receptor, el receptor es un PSD (Position Sensitive Detector) que detecta el punto de
incidencia el cual depende del ángulo y a su vez de la distancia del objeto.
El termino SHARP (Agudo) proviene del hecho de que tiene un rango de visión muy reducido
porque la luz que emite es puntual, lo que permite usar el sensor para escanear o mapear
áreas pero teniendo en cuenta que los objetos pequeños son muy difíciles de detectar
Existen varios modelos y fabricantes de estos sensores, algunos de los más utilizados se
muestran en la tabla siguiente.
17
Tabla 1 Sensores Sharp más utilizados
La salida que arroja el sensor al registrar datos tiene una forma potencial, como se muestra
en la imagen.
El sensor Sharp tiene muchas aplicaciones, puede ser utilizado y enlazado directamente con
Arduino usando librerías o simplemente con las entradas analógicas, dicha aplicación es la
que usó en este proyecto.
18
Figura 10 Conexión entre Arduino y el sensor Sharp
19
Capítulo 4 Desarrollo del Proyecto
4.1 Metodología
Esquema 1 Metodología
20
Este proceso respeta la norma VDI 2206, la cual es una guía de metodología para
sistemas mecatrónicos, ésta establece ciertos pasos para el desarrollo de un proyecto y
están adecuados a las características propias del proyecto redactado en este informe,
también esta norma establece que debe existir una constante verificación en los pasos a
seguir para determinar si se deben hacer modificaciones en pasos anteriores, estas posibles
modificaciones se representan con una flecha indicando al paso al que hay que regresar.
El primer paso será identificar necesidades del sistema para seguir cumpliendo los requisitos
que se piden, después se hará una caracterización más detallada del sistema mecánico para
resaltar los errores y detalles que deben mejorarse, después se procederá a tomar acción
sobre cada uno de ellos, analizando uno por uno para, finalmente, hacer las pruebas finales
con todo el sistema ya mejorado tanto en hardware como en software.
21
Este sistema ya tiene instalados los sensores magnéticos en cada extremo, en la
figura 13 se observan mejor, estos sensores se encargan de dar seguridad, están
conectados en serie con un diodo LED cuya función es encenderse cada vez que se llegue al
fin de carrera y se detecta un error.
El manual indica una carrera efectiva de 120 mm, se dan 10 mm de libertad, por lo que
la carrera total es de 110 mm, al posicionar el oscilador en el centro de la carrera, a 55 mm
de la de la barra lateral izquierda, el oscilador podrá recorrer 50 mm hacia la izquierda y 50
mm hacia la derecha, es decir la amplitud máxima de una oscilación que puede efectuar sin
coalición es de 50 mm, dato que será corroborado con la prueba piloto.
22
4.2.1 Características mecánicas y expresiones matemáticas auxiliares
El tornillo sinfín con el que cuenta el sistema es de 8 mm con un paso de 7.85 mm por
vuelta, en el manual de usuario del motor industrial, cuyo enlace se anexa al final de este
documento, se indica que un giro del motor equivale a 10,000 pasos, es decir, si se desea
que el motor de media vuelta se debe crear un programa que haga avanzar al motor 5 mil
pasos, también se indica que la velocidad máxima a la que el motor puede girar es de
400,000 pasos por segundo, por lo que se obtienen las siguientes relaciones:
Usando esas relaciones se encuentra el número de pasos que el motor debe hacer para
realizar el desplazamiento deseado con la siguiente fórmula:
Para saber si una función puede ser emulada hay que comprobar que no rebase los 50 mm
de amplitud y los 314.2183 mm/s, a continuación presento un ejemplo para entender mejor el
procedimiento.
Ejemplo.
Se desea saber si una función de la forma Acos(2πft) siendo A la amplitud, f la frecuencia y t
el tiempo, se sabe que la derivada de una función de posición como la que se quiere emular
es la velocidad, por esto como primer paso se debe calcular la derivada de dicha función.
V = (d(Acos(2πft))/dt = -2πAfsen(2πft)
El valor máximo y mínimo de una función seno son: 1 y -1 respectivamente por lo que nos
quedan las siguientes expresiones:
23
El sistema mecánico oscilante solo puede emular funciones de la forma Acos(ft) que cumplan
con que la multiplicación de la amplitud por la frecuencia sea menor a 50, dando la amplitud
en milímetros y la frecuencia en Hertz, y además la amplitud sea menor a 50 mm.
NOTA: Es recomendable realizar este procedimiento con cada función para encontrar
una fórmula que nos permita saber si el sistema podrá emularla, y así no dañar el
sistema.
Este sensor envía una señal infrarroja, la cual choca y rebota en una superficie y con
el tiempo que tarda en realizar esto se determina la distancia a la que se encuentra la
superficie del sensor, tiene 3 salidas la primera es donde se alimenta con 5 volts, la segunda
es 0 volts o “tierra” y la tercera es la salida analógica que nos indica la distancia que está
determinando el sensor. Al principio el sensor fue colocado en la barra lateral derecha
usando cinta doble cara, uno de los detalles que deben corregirse por cuestiones de estética
y técnicas.
La salida de este sensor debe regirse de la gráfica que se presentó en el capítulo 3, en el
manual se recomienda realizar un proceso de calibración ocasional, otro detalle que también
debe revisarse puesto que no ha sido calibrado desde la contingencia sanitaria.
24
La barra oscilante cuenta con una pestaña la cual funciona como la superficie en la que
rebota la señal infrarroja para que se pueda determinar la distancia, es por eso que es de
color blanco ya que, según el manual, esto mejora el “rebote” de la señal, eso será
comprobado más adelante.
4.3.2 Calibración
Con una placa metálica se guió todo el procesos, se sacaron las dimensiones y se
consideró el margen de medición del sensor, el doctor Raúl me proporcionó un sistema
mecánico manual parecido al oscilador el cual serviría para usarlo como calibrador.
Lo que siguió fue hallar la manera de fijar ese pequeño sistema a la placa de metal, así que
opté por realizar una pieza en SolidWorks y aprovechar la impresora 3D con la que cuenta el
CICATA.
Cabe mencionar que las mediciones de los tornillos y de las aberturas de la placa fueron las
dimensiones clave para elaborar el resto del sistema calibrador, por ser mi primera impresión
en 3D tuve ciertos errores en el diámetro de los círculos por lo que recurrí al taladro y a una
lima para aproximar dichos diámetros a las medidas de los tornillos, éstas las coloqué muy
exactas en el diseño y por ser tan exactas los tornillos no entraban en los orificios.
25
Figura 17 Base y sistema montados en placa metálica
Una vez montado el sistema lo siguiente fue diseñar una superficie que fuese
detectada por el sensor, con esa superficie deben hacer algunas pruebas con materiales
reflectantes, en este caso fueron una hoja de papel blanco y una pequeña lámina de metal,
esos materiales fueron adheridos a la superficie diseñada que a su vez fue monada en el
sistema aprovechando los orificios con los que ya se contaba, en la imagen se muestra dicha
superficie con un trozo de papel blanco.
A continuación sigue el montaje del sensor Sharp, para ello se usó un mecanismo que
ya se encontraba en el laboratorio y se diseñaron dos piezas más: la primera fue una base
para fijar el mecanismo a la placa de metal y la segunda fue otra base para montar el sensor
de forma horizontal. Con esas piezas también tuve varios errores en ciertas medidas y cada
una de ellas fue impresa un par de ocasiones porque era muy importante que el sensor
quedara completamente fijo así que no podía haber más fallas, antes de rediseñar esas
piezas tuve que corroborar todas las medidas, la ventaja fue que en la hoja de datos del
sensor éstas ya se encuentran disponibles y en lo único que tuve que tener cuidado fue en
los diámetros de los orificios para los tornillos. Cuando las piezas se reimprimieron ahora sí
debían ser colocadas en el sistema, se inició con el sensor y después el mecanismo se
montó en su respectiva base para ser montado en la placa metálica.
26
Hubo que diseñarse una pieza extra porque el sistema de balanceaba un poco y nada
debía de moverse así que opté por diseñar un prisma con una pequeña ranura circular para
ajustarlo debajo de la manija, delante de la superficie blanca, el sistema casi completo se ve
de la siguiente manera.
Lo único que falta es tener una base de medición, el sensor registra la distancia hacia
la superficie pero recordemos que hay un margen de error, para disminuir ese error se colocó
un calibrador digital, de ahí el nombre del sistema, también se diseñó una pieza para evitar
que el calibrador se moviera y es así como queda el sistema final.
27
Figura 21 Cálculos para disminución del error
28
Figura 22 Gráfica de calibración con hoja de papel blanco
Una vez calibrado el sensor se requiere de un nuevo código en Arduino para el sistema
mecánico oscilante que se enlace con el servo drive, el manual cuenta con uno que se
analizará en la prueba piloto más adelante.
29
El sistema mecánico está casi completo, el casi es porque había un pequeño
desequilibrio del lado derecho, en donde está colocado el motor, así que para evitar ese
balanceo diseñé una última pieza que fue colocada en un extremo del motor, además se
cambió el trozo de hoja de papel blanco por uno más limpio. Con ello el sistema mecánico
quedó completo y se ve una buena diferencia en comparación con el sistema inicial.
Los sensores se conectan en serie con dos diodos que sirven como protección y éstos
a su vez van conectados también en serie a un diodo LED el cual se enciende cada vez que
hay un error o que el oscilador llegó al tope de carrera. Los sensores magnéticos hacen la
función de alarma y ayudan a proteger al sistema de colisiones.
30
Ahora bien, todo debe estar enlazado con driver, la hoja de datos se adjunta en este
documento y en ella hay un apartado que indica las entradas y salidas, para hacer el enlace
entre el driver y los sensores magnéticos se recurrió al uso de las entradas digitales 6
(negativa) y 16 (positiva) las cuales también están conectadas al circuito de los sensores
magnéticos y a las entradas V+ y V- de la fuente.
Los cables V+ y V- sirven para que la fuente alimente al driver y éste pueda funcionar.
Las salidas digitales 3 (negativa) y 13 (positiva) sirven para enlazar el driver con el
sensor Sharp para que la salida de los datos venga del driver, se “traslade” al sensor, se
enlace directamente con Arduino y la plataforma PLX – DAQ. Esas salidas van conectadas a
los pines positivo y negativo del circuito mostrado anteriormente, como está en protoboard y
está aislado de los sensores magnéticos no causa ningún inconveniente.
El sensor Sharp también se conectó directamente al protoboard a excepción de cable
amarillo que va al pin A0 del Arduino.
Las conexiones iniciales de las entradas y salidas estaban mal ajustadas por lo que me vi en
la tarea de desconectarlas, con un poco de soldadura en las puntas de los cables le di un
poco más de grosor para que ya no se desconectaran del driver, eso no afectó para nada al
sistema.
La placa Arduino también necesita alimentarse así que se conectaron los pines GND y 5V a
las terminales negativa y positiva del protoboard, respectivamente. El pin RX de Arduino es el
enlace final entre la plataforma PLX – DAQ, Arduino y el driver, ese pin va conectado a una
terminal positiva el protoboard.
31
Figura 26 Conexiones a protoboard
32
Figura 27 Salidas digitale del driver
Las entradas 6 y 16 del driver deben ir conectadas a la fuente, las entradas del driver con las
etiquetas 0V y +24V también van a V- y V+ de la fuente. Las últimas conexiones van desde el
motor al driver, hay que tener cuidado de que todos los cables estén completamente
apretados y muy justo ya que si algún cable se suelta cuando el sistema está en marcha
pueden ocurrir colisiones o el motor puede dañarse.
33
Figura 29 Conexiones completas
Para poder observar la salida de valores arrojados por el sensor e cuenta con la
plataforma PLX – DAQ que no es más que un complemento de Excel que permite un enlace
directo con Arduino por medio de una serie de comandos o directivas. Para este proyecto se
cuenta con un código en Arduino con las directivas necesarias sin embargo cuenta con
ciertos detalles que se describirán más adelante, y que deben ser corregidos. Para lograr el
enlace, aparte de las directivas, debe tenerse en cuenta el puerto COM que va a usarse y la
velocidad en baudios, no deben ser diferentes a los usados en la programación.
34
Esta plataforma puede descargarse desde la página de Parallax, el archivo es una
carpeta comprimida, para instalarse hay que descomprimir dicha carpeta y ejecutar como
administrador el archivo plx_daq_install.exe, se siguen los pasos y para abrirla hay que ir a la
carpeta correspondiente a PLX – DAQ, en esa carpeta aparecerán dos archivos, el que debe
abrirse es el correspondiente a una hoja de Excel, una vez abierto aparecerá dicha hoja al
fondo con el siguiente mensaje:
35
Este centro será indicado como la posición 0 del emulador; se repite este proceso de
lectura un cierto número de veces para reducir el error, en este caso se repite cinco veces,
estas se promedian para obtener una medición más precisa y ésta es la que se envía junto al
tiempo en que esta medida fue obtenida a la plataforma de visualización mediante el puerto
serie de Arduino, en el apartado de anexos se encuentra ese código.
El servo drive MicroFlex e100 cuenta con un software propio de la marca ABB llamado Mint
Workbench que es un lenguaje de programación muy parecido a C o C++, puede
descargarse de la página oficial de ABB que se adjunta en la bibliografía de este documento.
La pantalla principal de Mint Workbench cuenta con una serie de íconos que permiten utilizar
las diferentes herramientas del software.
No es difícil la programación en Mint Workbench aunque si hay que tener cuidado en las
líneas de código, aunque es parecido al lenguaje C eso no significa que la sintaxis sea igual,
voy a explicarlo con un código usando de ejemplo la función A*sen(2π *f * t).
36
Las primeras líneas de código son las variables a utilizar, Dim
significa que la variable se está declarando, Float indica una
variable decimal e Integer una variable entera, como se
observa la sintaxis es:
Dim nombre_de_la _variable AsTipo de variable
37
La parte más importante son los cálculo, al
inicio de este capítulo se indicaron una
serie de relaciones que son
indispensables. El producto 2π se sustituye
por 2*180, su equivalente en grados, la
división por 1000 es para obtener
milisegundos.
El periodo se multiplica por 1000 para
denotarlo en segundos, y para que la
función comience de cero entonces se
evalúa con t = 0.
Algunas funciones como coseno no inician
su movimiento a partir del 0, si no en una
posición especifica, este valor posición
obtenido se guarda en la variable dpos2 y
con el comando MOVEA se mueve el
motor a esa posición.
Con Pause se detiene al sistema por
seguridad. De esta forma el sistema ya
estará en la posición inicial para empezar
la emulación.
La siguiente línea es para que el usuario
indique el número de ciclos deseados y
con ello termina el ciclo IF.
Como el posicionamiento se realizó dentro del IF cuando la respuesta fue 1, se vuelve a
realizar por si la respuesta fue 2, si ya se había posicionado anteriormente no ocurrirá nada.
El comando OUT(0)=3 pone en estado alto la salida 3 del servo drive, esto indicará al
Arduino que es momento de empezar a obtener datos de la posición del oscilador, de esta
manera se evita que Arduino y la plataforma de visualización registren datos no deseados
entre cada pausa de emulación y solo registran cuando se realiza una emulación.
38
Este valor se manda al comando JOG(0)=velo que es el comando que controla la velocidad
del motor, y se mantiene esta velocidad durante 50 milisegundos con un retardo Wait(50),
una vez terminado este retardo, se vuelve a iniciar el ciclo while, ya que, la variable Time
sigue siendo menor a la variable tiempo, aquí ya no es necesario calcular las dos posiciones
requeridas para encontrar la siguiente velocidad, ya que la posición 2 del cálculo anterior
ahora es la posición 1 para este cálculo, así que el valor que tenía dpos2 ahora lo guardamos
en dpos1 y se vuelve a calcular la posición a 50 milisegundos después y esta se guarda en
dpos2, se vuelve a calcular la pendiente y se guarda en la variable velo, se envía al comando
JOG y este procedimiento se repite sucesivamente hasta que se cumpla el tiempo de
funcionamiento establecido.
El manual proporciona una serie de pasos para la puesta en marcha del emulador, los
cuales se resumen a continuación.
1) Verificar la posición 0 del oscilador (a 55 mm de la barra lateral derecha).
2) Revisar que los sensores magnéticos funcionen moviendo manualmente el tornillo hacia
cada extremo, el LED debe encenderse.
3) Regresar a la posición 0 y conectar la fuente y el motor así como el cable USB del driver.
5) Abrir la plataforma PLX – DAQ y configurar la velocidad y el puerto que correspondan.
6) Conectar el cable USB del motor y del Arduino a la computadora y cargar el código que
corresponde a la posición del oscilador al Arduino.
7) Abrir el archivo de Mint Workbench correspondiente a la función que se desea emular.
8) En la pantalla saldrá un error por defecto y una ventana con el nombre WATCHING, el
error se quita con el ícono al lado izquierdo del cuadro rojo, se cierra la ventana WATCHING
y se activa el control con el ícono de flecha a la izquierda del letrero Axis 0.
9) Dar PLAY con el ícono de la flecha verde y presionar 1 + ENTER para colocar los
parámetros
39
10) Después de colocar el último parámetro que es el número de ciclos, dar ENTER y el
movimiento comienza así como el registro de datos
11) Una vez que termina la emulación se da clic en desconectar en la pantalla de PLX – DAQ
y se grafican los datos registrados.
12) Si se desea repetir la emulación, presionar 2 y ENTER.
Seguí esos pasos y el sistema funcionó, emuló la función como se debía pero no había
ninguna conexión con PLX – DAQ, no se registró ningún dato, cosa que fue muy extraña, por
ello me dispuse a revisar el sistema y analizar el código línea por línea.
40
Figura 35 Ecuación de calibración inicial
Ahora que el sistema está completo es momento de realizar algunas pruebas, voy a listar los
pasos para el arranque.
Pasos para puesta en marcha del sistema mecánico oscilante
41
3. Regresar el oscilador a la posición 0.
4. Conectar el sensor Sharp al Arduino, en caso de estar desconectado.
5. Conectar la fuente y el driver. Es muy importante verificar que el LED de estado
siempre esté encendido, ya sea en verde fijo o en verde parpadeante.
Los LEDs CAN indican el estado general de funcionamiento, si están en verde fijo ambos el
sistema de encuentra en estado operativo uno rojo y uno verde el sistema está funcionando
pero el bus está desactivado. Los LEDs de ETHERNET no deben estar encendidos de forma
fija porque ese tipo de conexión no se está usando, pueden parpadear ocasionalmente in
ningún problema.
11. Cerrar la ventana WATCHING y activar el control con el ícono de flecha indicado
también en la figura 34
12. En los parámetros que se encuentran del lado derecho en los recuadros negros, debe
verificarse que POSITION se encuentre en cero o en un valor cercano a cero, de no
ser así, debe cerrarse el programa, desconectarse el USB, la fuente y el driver para
mover manualmente el tornillo a la posición cero, después se vuelve a conectar todo y
se repetir desde el paso seis.
42
13. Abrir la plataforma PLX – DAQ y seleccionar el puerto con y la velocidad en baudios
que correspondan.
14. Dar clic en el botón PLAY (ícono con el triángulo de color verde) para iniciar con la
ejecución del programa.
15. En la ventana terminal aparecerá la pregunta CONTINUAR, con el teclado de la
computadora presionar 1.
16. Se pedirá la amplitud, después de colocarla dar ENTER con el teclado de la
computadora y escribir el periodo seguido del número de ciclos.
17. Antes de dar ENTER después de ese último parámetro, ir a la pantalla de PLX – DA y
dar clic en CONNECT, y enseguida ahora sí dar ENTER después del número de
ciclos.
18. Una vez que termine la emulación, dar clic en DISCONNECT de PLX – DAQ y
graficar los datos que registre el sensor.
19. Si se desea repetir la emulación, presionar 2 con el teclado de la computadora o 1
para ingresar nuevos parámetros.
Algo muy importante a mencionares que se encontró una limitante por una falla en el
sistema: la máxima amplitud que pueden tener todas las funciones es de 15 mm, la hipótesis
es que el cople que sostiene al tornillo sinfin está flojo y/o el motor no está completamente
apretado con el tornillo, después de platicarlo con el doctor Raúl sostuvimos esa hipótesis y
concluimos que hay una posibilidad de que al momento de empezar la contingencia sanitaria,
la verificación del sistema no se hizo completa además el sistema no se había usado desde
entonces; las emulaciones se realizan muy bien, el sistema hace lo que debe hacer pero,
como ya mencioné, está la limitante de la amplitud máxima.
43
4.9 Emulación por tabla de datos
Mint Workbench ya tiene varias funciones precargadas y listas para ejecutarse, sin
embargo hay otra manera de realizar la emulación de distintas funciones y esa es mediante
la generación de una tabla de datos vía Matlab. En el manual se incluyen dos códigos, el
primero de ellos permite la generación de una tabla de datos, éstos representan la posición
del oscilador, en el apartado de anexos se encuentra dicho código y en la imagen siguiente
se pone un ejemplo de una tabla de datos tomando como ejemplo la función así como la
gráfica que arroja Matlab
P(x) = 5*sen(2π*t)*cos(2π*2*t)
El siguiente paso es ejecutar otro script de Matlab que se
encargará de leer esa tabla de datos y con ella permite
generar un código en mi código que será leído en Mint
Workbench y para correrlo se siguen los mismos pasos
listados anteriormente, la única diferencia es que ya no se
pedirán todos los parámetros sólo hay que poner el número
de ciclos y dar ENTER, el principio de funcionamiento es el
mismo.
44
Capítulo 5 Resultados
45
Figura 42 Datos y gráfica de P(x) = 15cos(2πt)
46
5.1 Otras actividades
El segundo proyecto fue un tanque a escala con tres imanes, dos pegados en cada
pared del tanque y un tercero entre esos dos, los imanes de las paredes tenían soldado un
cable en el cual se conectaba una fuente de voltaje para alimentarlos. Ese tanque se llenaba
de agua con sal y se colocaba un pequeño barco de plástico. Cuando se conectaba la fuente
y se encendía, el barco comenzaba a moverse a causa del campo magnético del imán
superior cuya dirección era hacia abajo y entraba en contacto con la sal del agua que, a su
vez, producía energía.
47
Figura 45 Prototipo de tanque de agua electromagnético
48
Conclusiones y recomendaciones
Tuve la ventaja de poder trabajar de manera presencial y como todo debe iniciarse de
cero, m enfoqué primero en leer el manual que me fue proporcionado para entender las
partes del sistema, lo que realizaba y cómo lo hacía, su principio de funcionamiento así como
empecé a identificar todas las fallas que tenía a pesar de que salió otra muy importante.
Debo reconocer que en la construcción del sistema de calibración me llevé mucho tiempo y
la razón principal fue que algunas de las piezas tuvieron que reimprimirse más de dos veces
específicamente porque tenía varios errores en las dimensiones. También consumí bastante
tiempo corrigiendo el código de calibración del sensor Sharp ya que debía de encontrar la
manera de tomar un rango de valores en cierto tiempo.
A fin de cuentas pude lograr lo que se pretendía: innovar y mejorar el sistema oscilante tanto
en hardware como en software, aunque con la desventaja de que no supe administrar bien
mis tiempos, dedicando demasiado a ciertas actividades que debían consumir menos tiempo
pero me sirvió como experiencia y aprendí mucho con el doctor Raúl Ávalos, además el
ambiente en general del CICATA fue muy tranquilo y favorable.
- La interfaz PLX – DAQ no es la más óptima, creo que es mejor hacer un control de
visualización usando LABVIEW.
- Buscar la manera de que los cableados del circuito del protoboard estén cubiertos, una
forma de hacerlo es usando una PCB o construir un encapsulado.
49
Pérez Orozco, Juan Adrián (2020), Estudio teórico-experimental de un generador
magnetohidrodinámico de metal líquido acoplable a un convertidor de energía de olas.
Recuperado de:
[Link]
%20magnetohidrodin%C3%A1mico%20(MHD,interacciona%20con%20un%20campo
%20magn%C3%A9tico.
Anexos
//variables
const int sensor=A0; //pin A0 como entrada del sensor
int valor[5],i; //arreglo para promediar datos leidos por el sensor
float valorfinal,voltaje=0;
char mensaje;
void setup()
{
[Link](4800); //velocidad de 4800 baudios
}
50
void loop()
{
if([Link]()>0) //inicio de registro de datos
{
mensaje=[Link]();
if(mensaje=='1') //ciclo para la toma del tiempo
{
unsigned long tiempo=millis();
[Link]("Tiempo: ");
[Link](tiempo);
[Link](" ");
}
else if(mensaje=='2') //condición para detener la salida de datos
{
exit(0);
}
}
else
{
for(i=0;i<5;i++)
{ //lectura señal analogica del sensor
valor[i]=analogRead(sensor);
}
51
void setup()
{
[Link](9600);
[Link]("CLEARDATA"); //Comando para borrar los datos
enviados a la plataforma PLX
void loop()
{
en=digitalRead(enviasi); //Se lee si el servo drive mando estado
alto
while(en==1) //si envio el estado alto, entra en un while
{
for(i=0;i<7;i++) //Se toman 7 medidas del sensor Sharp
{
valor[i]=analogRead(sensor);
delay(9);
}
valorfin=(valor[0]+valor[1]+valor[2]+valor[3]+valor[4]+valor[5]+
valor[6])/7; //promediar
valorfin = 18021.8606743583*(pow(valorfin,-0.9383906682));
valorfin=-(valorfin-66.45); //Se determina la posicion 0
[Link](valorfin);
k=millis(); //Se toma el tiempo en que se tomo la medida
en=digitalRead(enviasi); //Se corrobora que el servo drive sigan
indicando que se debe seguir midiendo
[Link]("[Link],TIMER,");
delay(100); //tiempo de espera de registro de datos
}
52
• Código en Matlab para obtener la tabla de datos
• Código en Matlab para obtener código en Mint a partir de una tabla de datos
clear all;;
clc;
% Se pregunta el nombre del archivo donde se encuentran los datos
archivo= input('Nombre del archivo con los datos ','s');
fileID1= fopen(archivo,'r');
formatSpec = %f;
A = fscanf(fileID1,formatSpec); %se lee el documento
A=A*1273;
[tam,p]=size(A); % se obtiene la cantidad de datos
seguridad=1;
seguridad2=1;
for j=1:tam %% se verifica que la funcion se puede emular, que no rebase los limites del
sistema
if(A(j,1)>(45*1273)||A(j,1)<(-45*1273));
fprintf('La tabla de datos no se puede emular, rebasa las capacidades del sistema \n');
seguridad=0;
end
end
53
if(seguridad==1)
time= input('¿Cuánto es el tiempo de discretización? (en milisegundos) ');
timer=time/1000;
tiempo=(tam-2)*timer;
x=0:timer:tiempo;
v=diff(A)/timer; % se calculan las velocidades para llevar a cabo la %emulacion
[m,n] = size(v);
for j=1:m %se verifica que las velocidades no sobrepasen las del sistema
if(v(j,1)>400000||v(j,1)<-400000);
fprintf('La tabla de datos no se puede emular, rebasa las capacidades del sistema ;\n');
seguridad2=0;
end
end
if(seguridad2==1);
name= input('Nombre del archivo a generar ','s'); % se pregunta el nombre del archivo donde
se guardara el codigo
namecomplete= strcat(name,'.txt');
plot(x,v);
fclose(fileID1);
fileID = fopen(namecomplete,'wt');
fprintf(fileID,'Dim Amplitud As Float\n\r' );
fprintf(fileID,'Dim Frecuencia As Float\n\r' );
fprintf(fileID,'Dim Periodo As Float \n\r' );
fprintf(fileID,'Dim Ciclos As Float \n\r' );
fprintf(fileID,'Dim ampli As Float \n\r' );
54
fprintf(fileID,'%.0f}\n\r',v(m,1));
fprintf(fileID,'STOPINPUT(0) = 1\n\r' );
fprintf(fileID,'k1=1\n\r' );
fprintf(fileID,'While(k1=1 Or k1=2)\n\r' );
fprintf(fileID,'Print "<<<<<< 1:Coninuar >>>>>>"\n\r' );
fprintf(fileID,'Input " ====> ", k1\n\r' );
fprintf(fileID,'If(k1=1 Or k1=2)Then\n\r' );
fprintf(fileID,'If(k1=1)Then\n\r' );
fprintf(fileID,'MOVEBUFFERSIZE(0) = 30\n\r' );
fprintf(fileID,'SCALEFACTOR(0) = 1\n\r' );
fprintf(fileID,'SPEED(0)= 100000\n\r' );
fprintf(fileID,'ACCEL(0)=10000000\n\r' );
fprintf(fileID,'DECEL(0)=10000000\n\r' );
fprintf(fileID,'ACCELTIME(0) = 130\n\r' );
fprintf(fileID,'DECELTIME(0)=130\n\r' );
fprintf(fileID,' Print "<<<< Escribir los ciclos que desea >>>>>"\n\r' );
fprintf(fileID,' Input "Ciclos ====> ",Ciclos\n\r' );
fprintf(fileID,' Wait(500)\n\r' );
fprintf(fileID,' End If\n\r' );
fprintf(fileID,'MOVEA(0)= %.0f :GO(0)\n\r',A(1,1)); f
printf(fileID,'OUT(0)=3\n\r' );
fprintf(fileID,'Pause(IDLE(0))\n\r' );
fprintf(fileID,'ACCELTIME(0) = 8\n\r' );
fprintf(fileID,'DECELTIME(0)=8\n\r' );
fprintf(fileID,'Wait(300)\n\r' );
fprintf(fileID,'tiempo=(%.0f*%.0f)*Ciclos\n\r',time,m );
fprintf(fileID,'i=1\n\r' );
fprintf(fileID,'Time =0\n\r' );
fprintf(fileID,'While (Time));
fprintf(fileID,'JOG(0)=0\n\r' );
fprintf(fileID,'Wait(1000)\n\r' );
fprintf(fileID,'ACCELTIME(0) = 130\n\r' );
fprintf(fileID,'DECELTIME(0)=130\n\r' );
fprintf(fileID,'MOVEA(0) = 0 :GO(0)\n\r' );
fprintf(fileID,'End If \n\r' );
fprintf(fileID,'OUT(0)=1\n\r' );
fprintf(fileID,'End While \n\r' );
fprintf(fileID,'Cls #_TERM2\n\r' );
fclose(fileID);
fprintf(' \n');
fprintf('El programa para la plataforma Mint Workbench esta listo en el archivo ');
fprintf(namecomplete);
fprintf(' \n\r');
end
end
55