1
Práctica 1 Registrador Concéntrico
Oscar Alfonso Pérez Hernández 214517588, Brayan Felipe Villaseñor Lopez 214517588
M. en C. Anuar Benjamín Beltrán González
Resumen
Este documento reporta los procesos que se desarrollaron para la creación de un registrador concéntrico.
La práctica incluye el uso de motores a pasos como los actuadores principales, así como el empleamiento de
la tarjeta de desarrollo Arduino UNO para el control del instrumento completo. En este reporte se incluye
información acerca de la metodología utilizada, se plantea la problemática, se especifica el funcionamiento de
los componentes del sistema y se presentan los resultados mediante capturas del propio registrador.
I. I NTRODUCCIÓN los cd y dvd, así como los discos duros, todos ellos utilizan
Para comenzar con este documento sería útil dejar claros el principio del registrador concéntrico.
algunos conceptos necesarios para la correcta interpretación
del mismo. Debido a este motivo es requerido explicar qué
es un registrador y como es que estos trabajan, así como el
uso de estos dispositivos en la historia.
I-A. Registrador
En la historia industrial, la recopilación de datos ha sido
un punto clave a la hora de reducir costos y maximizar
la eficiencia de los procesos de manufactura. Dentro del
tema de la captura de datos se presentan los registradores,
instrumentos capaces de, como su nombre indica, registrar
los datos provenientes de las maquinarias utilizadas dentro
de la industria. Estos dispositivos cuentan con un sensor para
medir la magnitud que nos interesa capturar, de esta manera
adquieren los datos de la magnitud sensada y representan los Figura 1: Registrador encontrado en el mercado.
cambios en el tiempo.
A lo largo de la historia se han ido desarrollando más y
más tipos de registradores, conforme cambian las tecnologías II. P ROBLEMÁTICA
la complejidad de estos se va aumentando. Sin embargo El instrumento a desarrollar genera tres espirales en las
podemos observar un patrón en el funcionamiento de alguno cuales se guarda la información que proviene de la forma
de ellos. Uno de los primeros y más conocidos registradores digital o aquella analógica. Mediante el movimiento de una
por su aparición en inclusive películas es el registrador de pluma se registran los cambios en los datos adquiridos, de
banda rectangular. Este tipo de instrumento es comúnmente modo que, al llenarse una banda circular se obtiene de
reconocido por registrar la actividad de las placas tectónicas manera gráfica el registro de todos los datos capturados
en los sismometros. Además de este existe el registrador de durante el periodo de tiempo. Esto nos permite llevar un
banda circular, el cuál graba de manera radial la información orden y, de ser necesario, tomar esos datos como entrada para
haciendo girar la banda y registrando los datos con una un instrumento de control. Sin embargo, el instrumento por
pluma colocada cerca de un extremo de la circunferencia. si mismo nos permitirá mantener la información de nuestros
Los registradores de banda circular son instrumentos que sistemas y en caso de ser necesario recurrir a estos discos
fueron tomados como base, ya que se podía guardar mayor de registro para observar el buen o mal funcionamiento del
información en una banda de menor dimensión. Otros ins- proceso, para ello se requiere que el instrumento siga un
trumentos cuentan con un funcionamiento similar al de los estándar simple para que el encargado de revisarlo pueda
primitivos registradores, por ejemplo los discos de acetato, identificar los valores fácilmente.
2
III. D ESARROLLO divisor de voltaje variable que sirve como entrada para el
Se requiere de un instrumento registrador concéntrico que sistema.
sea capaz de capturar dos tipos de señales, una analógica
y otra digital, para su implementación en un sistema de
adquisición de datos. El registrador debe de cumplir con
ciertas características para su correcto funcionamiento dentro
del sistema, mismas que se presentan a continuació:
El instrumento deberá de girar la banda circular con una ve-
locidad de una revolución cada 30 segundos, con un mínimo
de tres revoluciones por cada banda utilizada, mientras tanto,
la pluma escribe sobre la banda creando espirales con una
separación de un centímetro entre cada una de ellas. El rango
de la pluma debe de ser de -4 mm a 4 mm teniendo como
referencia la espiral original, para un alcance de 5 V en la
señal de entrada del instrumento, mientras que las entreadas Figura 4: Entrada Analógica.
digitales representan una distancia distinta para cada boton
(-4mm, -2mm, 2mm, 4mm).
Controlador: Se decidió implementar una tarjeta Arduino
como controlador. Gracias a que la tarjeta Arduino es un
dispositivo open source existe una gran cantidad de recursos
en línea que facilitan el diseño de sistemas electrónicos con
esta tarjeta. Dentro de nuestro sistema el Arduino se encarga
de leer la entrada analógica o digital (depende de un selector)
y controlar el giro de los dos motores del sistema.
Figura 2: Diagrama a Bloques del Sistema.
El sistema se compone de 5 bloques principales: Entrada
digital, Entrada analógica, Controlador, Motor Base y Motor
Pluma.
Entrada digital: se compone de 4 pushbuttons con sus
respectivas resistencias de pulldown. Cada pushbutton repre- Figura 5: Tarjeta Arduino.
senta un valor diferente de “offset” en la salida, en nuestro
sistema en específico se comparte el uso de dos pushbuttons
para realizar un ajuste de posición inicial de la pluma.
Motor Base: Este Motor es el encargado de hacer girar
el Disco donde se graba la información, debido a las
especificaciones de velocidad (2 rpm), optamos por la
implementación de un Motor a pasos unipolar de 4 fases,
con caja reductora 1:64, (5.625◦ /64pasos = 4096 pasos por
revolución), con la implementación de este motor podemos
lograr un movimiento rotatorio lento y sin problemas de
resolución debido a los pasos del motor. Para lograr el
funcionamiento del motor usando el Arduino se utilizó
el driver ULN2003a, este consiste en un encapsulado con
cuatro transistores que alimentan los embobinados del motor
unipolar con hasta 500mA. A continuación se especifican
las variables necesarias para controlar el motor.
Figura 3: Entrada Digital.
Revoluciones por minuto = 2
Entrada analógica: Consiste en un potenciómetro alimen- P asos por Rev. = 4096
tado con 5v donde su derivación central funciona como un V ueltas necesarias = 3
3
Figura 6: Motor de la Base. Figura 8: Motor de la Pluma.
III-A. Código
Motor Pluma: Este Motor es el encargado de mover la
pluma en un recorrido rectilíneo, para este bloque del sistema El programa utilizado se basa en una librería desarrollada
se reutilizaron las partes de un reproductor de DVD que para motores a pasos, esta se puede descargar de forma
convierten el movimiento rotatorio de un motor en un gratuita en la página de arduino buscandola como CustomS-
movimiento lineal. Acoplamos un motor a pasos (3.75◦ por tepper. Sin profundizar demasiado, la librería cuenta con
paso, igual a 96 pasos por revolución) al sistema mecánico métodos para asignar las rpm, la dirección, las vueltas o
mostrado en la siguiente figura y de manera empírica se los grados que se quieren recorrer. Todos estos valores son
determinaron la relación de vueltas y milímetros avanzados ejecutados con el método run(), este es el encargado de
(se necesitan 6 vueltas del motor para avanzar un milímetro). que los motores se muevan, por este motivo se le observa
prácticamente en todas las zonas dentro del loop.
De forma general inicializamos las variables y parámetros de
nuestro instrumento, así como la configuración de nuestros
motores utilizando la librería de los motores a paso.
1 #include <CustomStepper.h>
2 float RPM=120;
3 float RPM2=2;
4 float SPR=96;
5 float SPR2=4096;
6 int vueltas=180;
7 int vueltas2=3;
8 int Vueltasmm= 6;
9 int PotActual=0, PotAnterior=512;
10 boolean BaseDone=false;
11 boolean PlumaFastDone=false;
12 boolean Flag = false;
Figura 7: Sistema mecanico de un lector de DVDs. 13 boolean primera = true;
14 int Fwd = 10, Bwd = 11, Start = 12, Pot = A0, PushB
= A1, Selec= A2; //Botones
15 CustomStepper Pluma (6, 7, 8, 9, (byte[]){8, B1000,
B1100, B0100, B0110, B0010, B0011, B0001, B10
Sabemos que el sistema debe recorrer 3 espirales con 01}, SPR, RPM, CW);
16 CustomStepper Base(2, 3, 4, 5, (byte[]){8, B1000, B
separación de 1cm entre cada espiral, todo esto en un 1100, B0100, B0110, B0010, B0011, B0001, B1001
total de 90 segundos, determinamos que la pluma debe }, SPR2, RPM2, CW);
moverse una distancia de 0.333mm/s. Ahora, sabiendo que el
sistema mecánico permite avanzar 1mm por cada 6 vueltas,
obtenemos que la velocidad del motor debe ser de 120
Configuramos nuestras entradas y salidas del sistema,
revoluciones por minuto. Por ultimo, si queremos recorrer
además confirmamos algunos parámetros para los motores
los 3cm es necesario dar 180 vueltas. Para controlar un
de la base y la pluma.
motor a pasos bipolar es necesario un puente H, para este
caso usamos el integrado L293D, este incluye 2 puentes H 1 void setup()
2 {
para manejar cargas de potencia media, con la capacidad de 3 [Link](RPM); //pluma
controlar corrientes de hasta 600 mA en cada circuito y una 4 [Link](RPM2); //Base
tensión entre 4,5 V a 36 V. A continuación se especifican las 5 [Link](STOP);
6 [Link](STOP);
variables del motor necesarias para el código y su diagrama 7 pinMode(Start,INPUT);
a bloques 8 pinMode(Bwd,INPUT);
9 pinMode(Fwd,INPUT);
10 pinMode(Selec,INPUT);
V ueltas por mm recorrido = 6; 11 pinMode(13,OUTPUT);
Revoluciones por minuto = 120 12 }
P asos por Rev = 96
V ueltas necesarias = 180
4
Iniciamos con el loop con una condición, esta etapa se 18 while(![Link]()){
considera la de ajuste o arranque. En este if se evalúa si el 19 [Link]();
20 [Link]();
botón de arranque fue activado, de ser así, se configuran los 21 }
parámetros de los motores, los rpm, la dirección y el número 22 }
de vueltas. Esto provoca el arranque del registro en forma 23 }
24 else{
automática. 25 digitalWrite(13,LOW);
1 void loop() 26 }
2 { 27
3 if (digitalRead(Start) && primera){ 28 if([Link]()){
4 digitalWrite(13,LOW); 29 [Link](RPM);
5 [Link](RPM); //pluma 30 [Link](CCW);
6 [Link](RPM2); //Base 31 [Link](vueltas);
7 [Link](CCW); 32 }
8 [Link](CW); 33 [Link]();
9 [Link](vueltas); 34 [Link]();
10 [Link](vueltas2); 35 }
11 primera=false; 36 }
De no haberse activado el botón de arranque se entra a un
modo de ajuste de la pluma. Esto es para cambiar de disco IV. R ESULTADOS
o para colocar la pluma en su posición original. El sistema diseñado, fue implementado y probado en el
1 else{ laboratorio, después de hacer algunos ajustes de calibración,
2 //Ajuste posicion
3 digitalWrite(13,HIGH);
los resultados fueron satisfactorios, sin embargo existen
4 [Link](550); algunos puntos a mejorar en futuros diseños:
5 while(digitalRead(Fwd) || digitalRead(Bwd)){ Existen limitaciones en cuanto a la velocidad de res-
6 if ([Link]() && digitalRead(Bwd)){
7 digitalWrite(13,LOW); puesta en el sistema mecánico de la pluma, si hacemos
8 primera= true; que el motor gire a más de 600 rpm, los engrandes
9 [Link](CW); empiezan a fallar.
10 [Link](1);
11 } else if ([Link]() && digitalRead( Si el sistema es reiniciado o pierde la energía, el
Fwd)){ controlador olvidara la posición en la que se encuentra
12 digitalWrite(13,LOW); y será necesario hacer el ajuste de posición de la pluma.
13 [Link](CCW);
14 [Link](1); La implementación de Encoders en los motores pro-
15 } porcionaría una exactitud mayor a la que se tiene
16 [Link](); actualmente.
17 }
18 }
19 }
Continuamos con una estructura iterativa, dentro de esta se
condiciona el cumplimiento del programa mientras el motor
de la base no haya concluido con las tres revoluciones que
deben de realizarse por disco. En este while se evalúan las
entradas de forma que se obtiene una respuesta a ellas. Se
observa dentro de esta estructura la condicionante del selec-
tor de lectura digital o analógica, asignando de esta forma
instrucciones independientes para cada modo de operación.
1 while(!([Link]())){
2 if (digitalRead(Selec)){ Figura 9: Instrumento registrador concéntrico creado.
3 PotActual=analogRead(Pot);
4 int x= abs((PotActual-PotAnterior));
5 digitalWrite(13,HIGH);
6 if(x>50 && [Link]()){ V. B IBLIOGRAFÍA
7 [Link](STOP); R EFERENCIAS
8 [Link](500);
9 int dist = int(x*0.0078); [1] I GOR C AMPOS, «Arduino’s CustomStepper library», Julio de 2012,
10 dist=dist*Vueltasmm; Arduino, [Link]
11 if (PotActual<PotAnterior){ [2] E DUARDO J. C ARLETTI, «Manejo de potencia para motores con el
12 [Link](CW); integrado L293D», 2007, [Link], [Link]
13 } else { [Link]/MotorCC_L293D.htm.
14 [Link](CCW); [3] T OSTATRONIC, «Motor a pasos con controlador»,
15 } 2016, Hoja de Datos, [Link]
16 [Link](dist); [Link]?search_query=motor+a+
17 PotAnterior=PotActual; pasos&results=4.