Universidad Tecnológica de Querétaro

Anuncio
Universidad
Tecnológica de
Querétaro
Firmado digitalmente por Universidad
Tecnológica de Querétaro
Nombre de reconocimiento (DN):
cn=Universidad Tecnológica de Querétaro,
o=Universidad Tecnológica de Querétaro,
ou, [email protected], c=MX
Fecha: 2013.01.07 11:41:31 -06'00'
UNIVERSIDAD TECNOLÓGICA DE
QUERÉTARO
Nombre del proyecto:
Construcción de un Actuador lineal.
Empresa:
CENTRO DE INVESTIGACIÓN EN CIENCIA APLICADA Y
TECNOLOGÍA AVANZADA IPN.
Memoria que como parte de los requisitos para obtener el título de
Técnico Superior Universitario en
Mecatrónica Área Automatización.
Presenta
Martínez Navarrete Ricardo
Gustavo Ortiz González
Asesor de la UTEQ
Eduardo Morales Sánchez
Asesor de la Empresa
Santiago de Querétaro, Qro. Noviembre de 2012
RESUMEN
En este documento se presenta la construcción de un actuador lineal,
dispositivo que será desarrollado e implementado en las instalaciones del
centro de investigación en ciencia aplicada y tecnología avanzada (CICATA).
Se construirá el dispositivo con base en actuadores lineales electromecánicos
que tienen la posibilidad de ser controlados por circuitos electrónicos digitalesanalógicos y acondicionados por el usuario. Ya que el dispositivo es de fácil
uso, el usuario puede visualizar en la pantalla de este los siguientes datos; la
velocidad a la que se encuentra el motor antes de su reducción 131:1, el valor
deseado por el usuario y el acondicionamiento automático de la modulación de
ancho de pulso proveniente del microcontrolador (PIC 18F2520). En la parte
frontal de la caja del dispositivo el usuario podrá observar los controles, la
pantalla (LCD), una perilla que representara el valor deseado por el usuario con
un intervalo de 0 a 19 revoluciones por minuto después de la reducción del
motor, un interruptor que controla la habilitación o deshabilitación del proceso y
por ultimo un switch de encendido y apagado del dispositivo. Básicamente el
dispositivo es un control proporcional con realimentación (KP), que consiste de
un algoritmo lineal y proporcional que tiene como objetivo reducir la magnitud
del error para poder estabilizar el proceso mediante el ascenso y descenso del
valor de ciclo útil del PWM (modulación de ancho de pulso). El dispositivo se
aplicará en un sistema de lazo cerrado llamado electrospinning (dispositivo que
se utiliza en la industria farmacéutica), que está compuesto de dos actuadores
lineales: uno de base y otro para el aplicado del polímero sintético mediante una
aguja con una alta tensión en la punta, para controlar las moléculas del
polímero al momento de que son rociadas sobre un rodillo giratorio en posición
horizontal. La estructura del dispositivo está hecha de aluminio y se conforma
con baleros y tornillos allen (para seguridad), y dos limit switch en los extremos
para cambiar el sentido de carrera del actuador. La carrera de este en la
estructura será de 30cm, ya que el rodillo donde se rociará el polímero sintético
tiene esa longitud.
1
ABSTRACT
The construction of a linear actuator is presented in this document, which
will be developed and implemented in the applied science and advanced
technology research center (CICATA). The device will be built based on
electromechanical linear actuators which have the possibility of being controlled
by analog-digital electronic circuits and conditioned by the user. Since the
device is easy to use, the user can observe some information in the display like:
the motor velocity before a 131:1reduction, the value needed by the user and
the automatic conditioning of a pulse modulation from a microcontroller
(PIC18F2520). In the front side of the box the user can observe the controls,
one display (LCD), an adjust lever to set the value needed by the user within an
interval from 0 to 19 revolutions per minute after the motor reduction, a process
enable - disable switch, and finally a switch to turn on and off the device. The
device is a feedback proportional control (Kp), consisting of a proportional linear
algorithm which has the objective to reduce the error and stabilize the process
by the rise or fall of the pulse with modulation (PWM). The device will be applied
in a closed loop system called electrospinning (device that is used for the
pharmaceutic industry), which is composed by two linear actuators: one in the
base and the other for synthetic polymer application by a high voltage needle at
the tip, to control polymer molecules sprayed on a moving roller. The structure of
the device is made of aluminum with iron allen screws (for security), bearings
and two limit switches to change the actuator shift direction. The shift length is of
30 centimeters because the roller has the same length.
2
INDICE
Página
Resumen
1
Abstract
2
Índice
3
I.
INTRODUCCION
4
II.
ANTECEDENTES
5
III.
JUSTIFICACIÓN
6
IV.
OBJETIVOS
6
V.
ALCANCES
6
VI.
FUNDAMENTACIÓN TEÓRICA
6
VII.
PLAN DE ACTIVIDADES
8
VIII.
RECURSOS MATERIALES
9
IX.
DESARROLLO DEL PROYECTO
9
X.
RESULTADOS OBTENIDOS
25
XI.
ANÁLISIS DE RIESGOS
25
XII.
CONCLUSIONES
26
XIII.
RECOMENDACIONES
26
XIV.
REFERENCIAS BIBLIOGRÁFICAS
26
ANEXO A
28
3
I. INTRODUCCIÓN
Un actuador mecánico lineal es un dispositivo que transforma un
movimiento rotativo en
un
movimiento
lineal.
Se
utilizan
para
aplicaciones de elevación, traslación y posicionamiento lineal. Existen varias
clases de actuadores lineales de acuerdo a la energía usada: neumáticos,
hidráulicos y eléctricos. Los actuadores hidráulicos se utilizan cuando se quiere
una gran potencia en el movimiento, los actuadores eléctricos se utilizan para
aplicaciones de velocidad y posicionamiento de precisión y los neumáticos para
posicionamiento simple. La estructura de un actuador eléctrico es simple en
comparación con la de los actuadores hidráulicos y neumáticos, ya que sólo
requieren de energía eléctrica como fuente de poder. Como se utilizan cables
eléctricos es altamente versátil y prácticamente no hay restricciones respecto a
la distancia entre la fuente de poder y el actuador. Además existen una gran
cantidad de modelos y es fácil utilizarlos con motores o servomotores eléctricos
estandarizados según la aplicación. En la mayoría de los casos es necesario
utilizar reductores, debido a que los motores son de operación continua.
El presente proyecto se trata del diseño, construcción y automatización
de un actuador lineal eléctrico. El actuador lineal eléctrico a proponer será de
propósito general con una carrera de 30 cms, con tornillo sinfín como
convertidor mecánico del movimiento de rotación a lineal, contendrá un
servomotor con encoder y con reductor para controlar la velocidad en forma
precisa por lo cual se construirá un sistema controlador de velocidad utilizando
un microcontrolador PIC de la serie 18FXXXX. Dentro de las funciones a tendrá
que realizar esta el control de la velocidad y el cambio de giro automático
cuando llegue a los extremos de la carrera.
4
II. ANTECEDENTES
El proyecto inició con la necesidad de crear un actuador lineal para un
sistema electro spinning. Un sistema electro spinning es un dispositivo que se
utiliza para crear nanofilamentos de polímeros sintéticos. El sistema electro
spinning consta de una bomba de jeringa, una fuente de alto voltaje y un
colector de las nano fibras. La figura 2.0 muestra un sistema de electrospinning.
Figura 2.0. Sistema de electrospinnig.
Como se puede observar en la figura 2.0 los nanofilamentos se
depositan en el colector formando una red de filamentos en un solo punto. Si se
pudiera mover la jeringa, los nanofilamentos se depositarían en línea recta
permitiendo obtener nanofilamentos largos y en diferente lugar evitando
amontonamiento.
Por lo tanto se propone construir un actuador lineal que servirá para
mover a la bomba de jeringa en una línea recta para
evitar que los
nanofilamentos se amontonen en un punto. Este proyecto solo contempla la
construcción y automatización del actuador lineal.
5
La función principal del actuador lineal es mover una bomba de jeringa
teniendo las especificaciones siguientes: base para soportar a la bomba de
jeringa, baja velocidad de movimiento, y control de velocidad.
III. JUSTIFICACIÓN
La justificación de proyecto está basada en el mejoramiento de sistemas
por medio de la incorporación de nuevas funciones. En específico incorporar un
actuador lineal a un sistema de electrospinning proporcionara mayor flexibilidad
en la operación (evitar que los filamentos se amontonen) y en la calidad del
producto final.
IV.OBJETIVOS
Diseñar, construir y automatizar un actuador lineal eléctromecanico.
V. ALCANCES
Se diseñara, construirá y automatizará un actuador lineal eléctrico, el
cual consiste de una base de aluminio, con dos laterales de apoyo a los lados y
un tornillo sin fin colocado de extremo a extremo sobre la base. Se tendrá un
carro que se desliza conforme gira el tornillo sinfín. Se usara un servomotor con
reductor y encoder de cuadratura acoplado al tornillo sinfin para que el carro se
deslice en línea recta y a velocidad controlada. Se construirá un sistema de
control de velocidad utilizando un microcontrolador comercial.
VI.FUNDAMENTACIÓN TEÓRICA
El actuador lineal electromecánico prototipo que será desarrollado en el
centro de investigación en ciencia aplicada y tecnología avanzada con el fin de
formar parte de un sistema electro spinning, es un reto para cualquier
estudiante, ya que involucra conocimientos de mecánica y el diseño de partes
mecánicas, involucra también conocimientos de programas especiales para el
6
diseño en 3D y por último se requieren conocimientos de electrónica digital y
control digital para poder realizar el control de velocidad.
El reto es controlar la posición o velocidad de desplazamiento de la base
del actuador lineal eléctrico.
7
VII.PLAN DE ACTIVIDADES
La tabla 7.0 muestra el plan de actividades propuesto para desarrollar el presente proyecto. Se propone que el
diagrama de actividades este dividido por semanas.
ACTIVIDAD
SEPTIEMBRE
Diseño de prototipo (actuador lineal).
Investigación encoder de cuadratura del servomotor, y
desarrollo de algoritmos de programación.
Avances de reportes y desarrollo de etapa de potencia
para cambio de giro.
Adecuación de los programas para que funcionen con la
de etapa de potencia del PWM.
Adecuación de todo el firmware para
el funcionamiento de este con la estructura mecánica y la
electrónica de control.
Calibración
del
control
electrónico
con
la
estructura
mecánica.
Construcción de circuitos impresos y fuente de poder.
Prueba de circuitos impresos y diseño de caja para estos.
Terminación de caja para dispositivo y calibración de este.
Tabla 7.0 plan de actividades.
8
OCTUBRE
NOVIEMBRE
VIII. RECURSOS MATERIALES
VIII.II-Recursos materiales:













Osciloscopio
Multimetro.
Fuente de alimentación variable.
Vernier.
Computadora.
Sistema mínimo PIC18F2520.
Componentes electrónicos varios.
Calculadora.
Programador de PIC.
Estructura electromecánica.
Servomotor.
Pinzas de corte.
Desarmador plano.
IX. DESARROLLO DEL PROYECTO
IX.I. Introducción
En este capítulo se mostrará cómo se diseñó el actuador lineal, como se
construyó y como se realizó la automatización para controlar la velocidad del
actuador. La metodología empleada es la que se utiliza para sistemas
mecatrónicos: Primero se dan especificaciones de diseño, se propone un
diseño, se simula en 3D, se propone un diseño conceptual, se manda a
construir, se ensambla, se rediseña y por último se automatiza.
9
IX.II. Diseño del actuador lineal eléctromecanico
El primer paso de un diseño es dar las especificaciones a cumplir. Las
especificaciones son:
a) Largo de carrera de 30 cm.
b) Material aluminio
c) Base para soportar una bomba de jeringa
d) Tornillo sinfín
e) Servo Motor eléctrico con reductor de 12 volts
con encoder de
cuadratura
El actuador lineal debe estar basado en el giro del tornillo sinfín, sobre el
cual se pone una base para que deslice y de ese modo obtener un movimiento
lineal de la base.
IX.III. Desarrollo de estructura mecánica del actuador lineal.
Se propuso una estructura mecánica con un mínimo de piezas para
evitar un peso y volumen excesivo. La figura 9.3.0 muestra la estructura
propuesta del actuador lineal, la cual es un producto comercial de la marca
FESTO.
Figura 9.3.0 actuador lineal FESTO.
10
A partir de esta estructura se propuso un diseño propio que incorporará
un tornillo sinfín para que se deslizará la base superior. Se procedió a diseñar la
estructura del actuador utilizando la plataforma de autodesk inventor. El
programa autodesk inventor permite diseñar en 3d cada pieza del actuador y
posteriormente ensamblar las piezas para formar el actuador. La ventaja de
este tipo de programas es que permite probar o cambiar las piezas sin
necesidad de mandar a construirlas. Se ahorra una gran cantidad de tiempo y
dinero en la generación de una propuesta de diseño mecánica.
La figura 9.3.1 muestra el diseño del actuador lineal propuesto que
contiene varias piezas como: Una base general de soporte, el tornillo sin fin,
bases de apoyo con rodamientos para sostener a los extremos del tornillo
sinfín, rodamientos en las bases, base deslizante acoplada al tornillo por medio
de una tuerca buje y por ultimo una base para el servomotor alineada a un
extremo del tornillo. Se utilizará un cople para unir la flecha del servomotor con
el extremo del tornillo.
En la figura 9.3.1 se muestra el diseño conceptual del actuador lineal
eléctrico a construir. Se observa que la base deslizante es de un tamaño
adecuado para poder montar una bomba de jeringa. Esta base se desliza con el
movimiento del tornillo. Se observa la base donde se pondrá el servomotor
alineado con el tornillo.
Figura 9.3.1. Diseño conceptual del actuador lineal
electromecánico.
11
IX.IV. Construcción mecánica del actuador lineal electromecánico.
El siguiente paso es la construcción del actuador lineal electromecánico
propuesto. Como primer paso se generaron los dibujos a detalle de cada pieza
del diseño. La figura 9.4.0 muestra el dibujo a detalle correspondiente a la base
del servomotor.
Figura 9.4.0 Dibujo a detalle de la Base para el servomotor.
La figura 9.4.1 muestra el dibujo a detalle del sistema completo con el
ensamble de las piezas.
12
Figura 9.4.1 Diseño de actuador lineal eléctrico
A partir del dibujo a detalle se mando a construir cada pieza y se
ensamblaron con tornillos. La figura 9.4.2 muestra el actuador lineal
electromecánico construido. El material utilizado fue aluminio y solamente la
base deslizante se construyo de nylamide para disminuir el peso de la pieza. .
El nylamide es un material polimérico de bajo peso y alta resistencia. El tornillo
sin fin se fabrico de un gusano de ½ pulgada, se utilizaron rodamientos de ½
pulgada interna para soportar los extremos del tornillo sinfín.
Figura 9.4.2. Actuador lineal electromecanico construido
13
La figura 9.4.3 a,b y c muestran el actuador construido con mas detalle. En la
figura a) muestra la base para el servomotor y la base del extremo del tornillo
sinfín b) muestra la base deslizante de nylamide montada en el tornillo sinfín y c
muestra la base donde se soporta el extremo del tornillo sinfín con el respectivo
rodamiento.
a
b
c
Figura 9.4.3 a) base del servomotor y base soporte del tornillo sinfín b) base
deslizante de nylamide c) base soporte del tornillo sinfín.
A continuacion se procede a ensamblar el servomotor al sistema. Figura 9.4.4
muestra el servomotor empotrado en la base y acoplado al extremo del tornillo
sinfin con un cople de acero.
Figura 9.4.4. Servomotor acoplado al actuador lineal construido.
14
IX.V. -Características de servomotor con encoder de cuadratura.
Codificadores rotatorios.
Para construir un actuador lineal se requiere utilizar sensores de posición
y de giro para poder controlar la posición o velocidad de la base deslizante. Los
sensores que más se utilizan en actuador lineales electromecánicos son los
codificadores rotatorios.
Los codificadores rotatorios (conocidos genéricamente como encoders)
son mecanismos utilizados para entregar la posición, velocidad y aceleración
del rotor de un motor. Sus principales aplicaciones incluyen aplicaciones en
robótica, lentes fotográficas, aplicaciones industriales que requieren medición
angular, militares, etc. Un codificador rotatorio es un dispositivo electromecánico
que convierte la posición angular de un eje, directamente a un código digital.
Los tipos más comunes de encoders se clasifican en: absolutos y
relativos (conocidos también como incrementales). Los encoders absolutos
pueden venir codificados en binario o gray. Dentro de los encoders
incrementales, se encuentran los encoders en cuadratura, ampliamente
utilizados en motores de alta velocidad y en aplicaciones en las que interesa
conocer la dirección del movimiento del eje.
Codificador de cuadratura.
Corresponde a un tipo de encoder incremental que utiliza dos sensores
ópticos posicionados con un desplazamiento de ¼ de ranura el uno del otro,
generando dos señales de pulsos digitales desfasada en 90º o en cuadratura. A
estas señales de salida, se les llama comúnmente A y B. Mediante ellas es
posible suministrar los datos de posición, velocidad y dirección de rotación del
eje. Si se incluye la señal de referencia, se le denomina I (índice).
El disco de un encoder generalmente da una vuelta por revolución del
motor o eje al cual se encuentra adosado. Pero podría estar acoplado a través
15
de un sistema de transmisión con una proporción conocida de reducción o
elevación. De esta manera la frecuencia de la señal A o B variará de manera
proporcional a la velocidad del rotor. Así, midiendo la frecuencia de dichas
señales y conociendo la manera de cómo se encuentra acoplado, es posible
determinar la velocidad de giro del eje.
Servomotor y codificador de cuadratura del actuador lineal.
El servomotor que se acopló al actuador lineal es un motoreductor con un
encoder o codificador rotatorio de cuadratura de efecto hall (magnético). El
reductor del servomotor proporciona una relación de reducción de 131:1, es
decir por cada 131 revoluciones en la entrada se tendrá 1 en la salida. Por otro
lado el codificador de cuadratura que esta acoplado al servomotor proporciona
una resolución de 64 pulsos por revolución del eje del motor. Para calcular los
conteos por revolución de la salida del reductor, se multiplica por la relación de
transmisión 131:1.
La tabla 9.5.0 muestra el código de colores y el nombre de cada señal
del decodificador de cuadratura utilizado.
COLOR
NEGRO
FUNCION
POTENCIA NEGATIVA MOTOR 0V
ROJO
POTENCIA POSITIVA MOTOR 6-12V
AZUL
ACTIVACION ENCODER 3.5-20V
VERDE
NEGATIVO O TIERRA ENCODER
AMARILLO
SALIDA ENCODER FASE A
BLANCO
SALIDA ENCODER FASE B
Tabla 9.5.0. Código y nombre de las señales del encoder.
16
El sensor hall requiere una tensión de entrada vcc, entre 3,5 y 20 v y
señala a un máximo de 10mA.
Las salidas A y B son ondas cuadradas de 0 v a Vcc aproximadamente
90° desfasadas una de la otra, al contar tanto los flancos de subida y de bajada
de ambas salidas nos dan un conteo de 64 pulsos por revolución. Si solo
usamos una señal por ejemplo A, entonces cables obtenemos 16 pulsos por
revolución del eje del motor en lugar de los 64.
Para nuestro caso se decidió utilizar solo un canal del decodificador para
controlar la velocidad de desplazamiento de la base deslizante del actuador.
IX.VI. Sistema de control de velocidad del actuador lineal
electromecánico construido.
Una vez que se construyó el actuador lineal electromecánico y que se
acopló el servomotor con decodificador de cuadratura, se procedió a construir el
sistema de control de velocidad que hará girar al tornillo sinfín para que la base
deslizante tenga una velocidad controlada.
El sistema de control de velocidad tendrá varias etapas de acuerdo a las
funciones que realiza. Las etapas son:
Etapa decodificador:
Figura 9.6.0 Esta parte del sistema corresponde a la captura de la
fase A del encoder de cuadratura por medio de una entrada de I/O del
microcontrolador pin 6 (PIC).
La entrada de I/O utilizada corresponde a la
entrada del contador 0 del PIC. Por medio del contador podemos hacer la
cuenta de pulsos por giro para controlar la velocidad de la base deslizante. Se
realizaron varios programas para configurar la operación del contador del PIC,
17
para utilizar la interrupción del timer0 y para comparar la velocidad deseada y la
velocidad real del dispositivo. Los programas se muestran en el anexo A.
Figura 9.6.0 etapa decodificador.
Etapa control de velocidad: Figura 9.6.1 Esta etapa corresponde a la
generación
de la señal eléctrica que
se conecta al servomotor para que
aumente o disminuya su velocidad de giro. Corresponde a un voltaje de DC
generado por medio de un PWM desde el microcontrolador en el pin 12 (PIC).
Debido a que el motor utiliza corrientes mayores a 100 mA se requiere construir
un amplificador de corriente de la señal DC generada (configuración emisor
común) por medio de un transistor Darlington. El programa utilizado y la
configuración se muestran en el anexo A.
Figura 9.6.1 etapa de control.
18
Etapa muestreo de datos: Figura 9.6.2 Esta etapa corresponde al
manejo de un desplegador LCD de 2 líneas que despliega el valor de la
velocidad
real del motor y la
velocidad
deseada.
La
programación
correspondiente se muestra en el anexo A.
Figura 9.6.2 muestreo.
Etapa de captura de velocidad deseada: Figura 9.6.3 esta etapa
corresponde a la captura de la velocidad deseada. Se realiza por medio de la
captura de un voltaje variable presente en una entrada analógica del CAD del
microcontrolador PIC. El voltaje variable se produce por medio de un divisor de
voltaje con un
potenciómetro externo. La programación correspondiente se
muestra en el anexo A.
Figura 9.6.3 captura de valor deseado.
19
Etapa de cambio de giro: Figura 9.6.4 Esta etapa corresponde al
cambio de giro del motor cuando llega al fin de carrera. Se realiza esta función
por medio de microswitch empotrados en el actuador lineal, los cuales e activan
cuando la base deslizante llega la fin de carrera. El microswitch se activa con un
valor alto y este voltaje es capturado por el microcontrolador,. Dependiendo del
microswitch activado el microcontrolador activa un arreglo de dos relevadores
que cambian el sentido del voltaje aplicado al motor. La programación
correspondiente se muestra en el anexo A.
Figura 9.6.4 cambio de giro con relevadores.
Etapa fuente de alimentación: Figura 9.6.5 Esta epata corresponde al
diseño de las fuentes que alimentarán a los circuitos digitales y al servomotor.
Se construyó una fuente de 12 VDC para el motor y otra fuente de 5VDC para
el microcontrolador PIC.
Figura 9.6.5 fuentes de alimentación.
20
IX.VII-Simulaciones y esquematizaciones.
Se realizaron varias simulaciones correspondientes a los circuitos
propuestos para cada etapa por medio de programa s de simulación como
Proteus. La figura 9.7.0 muestra la simulación utilizada para la simulación de la
etapa de desplegado es decir el funcionamiento del desplegador LCD y la
información desplegada.
Figura 9.7.0 simulación de etapa de muestreo.
La figura 9.7.1 a y b muestra el diagrama eléctrico del sistema completo
de control de velocidad y las etapas que lo componen. Nótese en el diagrama
las fuentes de alimentación diseñadas y el arreglo de relevadores para el
cambio de giro del motor.
21
Figura 9.7.1 a) diagrama eléctrico de control.
Figura 9.7.1.b) Diagrama eléctrico de las etapas del sistema controlador
de velocidad.
22
Construcción del sistema de control de velocidad.
Una vez diseñado y programada cada etapa se procedió a construir un
PCB. El PCB se diseño con Proteus y se implemento con la técnica de
serigrafía. Se soldaron los componentes eléctricos y se conectaron los cables
tantos externos (motor, encoder y microswitchs) como internos (cables del
desplegador, fuentes y otros). La figura 9.7.2 muestra el PCB, conexiones y
desplegador funcionando.
Figura 9.7.2 Pruebas de sistema de control construido.
23
En las figuras 9.7.3 y 9.7.4 se puede apreciar el dispositivo terminado y
funcionando.
Figura 9.7.3 actuador lineal.
Figura 9.7.4 desplegado de datos para usuario.
24
X. RESULTADOS OBTENIDOS
Se diseñó y construyó físicamente un actuador lineal de 30 cm de
carrera.
Se construyó un sistema de control de velocidad basado en un
microcontrolador PIC.
Los resultados muestran que se logro controlar la velocidad del motor
sin perdidas de torque ni velocidad, sin calentamiento en los circuitos
electrónicos, ni ruido electrónico en la pantalla del dispositivo.
VELOCIDAD
ESPERADA
393 RPM
524 RPM
655 RPM
786 RPM
917 RPM
1048 RPM
1179 RPM
1310 RPM
1441 RPM
1572 RPM
1703 RPM
1834 RPM
1965 RPM
2096 RPM
2227 RPM
2358 RPM
2489 RPM
VELOCIDAD REAL
420 RPM
540 RPM
660 RPM
840 RPM
960 RPM
1020 RPM
1200 RPM
1320 RPM
1440 RPM
1620 RPM
1800 RPM
1860 RPM
2100 RPM
2160 RPM
2280 RPM
2460 RPM
2520 RPM
PORCENTAJE DE D/C
50%
53%
57%
59%
60%
63%
66%
68%
71%
73%
78%
81%
83%
86%
90%
92%
98%
#DE RPM EN
REDUCCION
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
XI. ANÁLISIS DE RIESGO
Uno de los principales riesgos fue el alineado del eje de la estructura
mecánica con el eje del motor ya que se encontraban en el prototipo unos
errores de fabricación los cuales impedían que el dispositivo funcionara
25
adecuadamente, este problema se solucionó mediante la medición adecuada
de la pieza que sostenía al motor con la alineación de su eje y con un buen
trato del dispositivo a la hora de ser modificado.
XII. CONCLUSIONES
Se cumplió con el objetivo de diseñar, construir y controlar un actuador
lineal electromecánico.
XIII. RECOMENDACIONES
Una de las recomendaciones es tratar de dominar la electrónica continua
y alterna para facilitar el proceso de construcción y asimilación.
XIV. REFERENCIAS BIBLIOGRÁFICAS

2007, Microchip Technology Incorporated.
PIC18F2420/2520/4420/4520 Data Sheet ©, Printed in the U.S.A.

Ing. Juan Ricardo Clavijo Mendoza (2011).
Diseño y simulación de sistemas microcontrolados en lenguaje c.
ISBN 978-958-44-8619-6 Primera edición mayo de 2011.

RECUPERADA 25 de noviembre de 2012
Autodesk Inventor Products. 2008. http://usa.autodesk. com/autodeskinventor/
26

Katsuhiko Ogata.
Ingenieria de control moderna.
Editorial Prentice Hall.

Benjamín c. kuo.
Sistemas de control automático.
Séptima edición. Editorial Prentice Hall.
27
ANEXO A
En este anexo se darán a conocer los diagramas de flujo para la
programación de control. Etapa decodificador con su diagrama de flujo en la
figura 9.6.6.
INICIO
CONFIGURACION DE LCD
DECLARACION DE:
CONTADOR=0;
TIEMPO=0;
CONFIGURACION PIC.
T0CON=STOP TIMER.
T0CON=0XE3//START
TIMER.
DELAY_MS (5);
TIEMPO++;
TIEMPO==200
T0CON=STOP TIMER.
CONTADOR=TMR0L*60
//OPERACIÓN PARA RPM
DESPLEGAR LCD
TIEMPO=0;
TMR0L=0;
FIN
Figura 9.6.6 diagrama de flujo RPM.
28
En el texto a continuación se puede apreciar el programa en mikroc del
diagrama de flujo anterior.
RPM SERVOMOTOR
// LCD CONFIGURACION 4 BITS
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;
sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
char txt1[] = “VELOCIDAD SERVOMOTOR”;
char txt[7];
int CONTADOR=0,TIEMPO=0;//VARIABLES DE RETARDO
void InitMain()
{
//INICIALIZACION DE OSCILADOR INTERNO 1MHZ
PORTA = 0X00;
TRISA = 0X10;
// CONFIGURACION DE PORTA COMO ENTRADAS
PORTB = 0X00;
// PORTB 0
TRISB = 0X00;
// DESIGNACION DE PORTB COMO SALIDAS
ADCON1 = 0X0F;
//DETERMINA CUALES ENTRADAS SON DIGITALES
T0CON = 0X63;
//PREESCALER DE 1:16-CONTADOR DE 16 bits TIMER OFF
}
void main() {
InitMain();
//LLAMANDO A LA FUNCION INITMAIN
Lcd_Init();
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Out(1,1,txt1);
do {
T0CON = 0XE3; //TIMER ENABLE
delay_ms(5);
TIEMPO++;
if (TIEMPO==200) //PREGUNTA SI A PASADO 1 SEGUNDO
{
T0CON=0X63; //STOP TIMER
CONTADOR=TMR0L*60; //RPM
IntToStr(CONTADOR, txt);//CONVERSIÓN A STRING PARA LCD
Lcd_Out(2,1,txt); //ESCRIBE VALOR EN LCD
Lcd_Out_Cp(“ RPM”);
TIEMPO=0;
TMR0L=0;
TMR0H=0;
}
}while(1);
29
Etapa de control de velocidad figura 9.6.7.
INICIO
CONFIGURACION DE LCD
LIBRERÍA ADC
DECLARACION DE:
CURRENT_DUTY=0;
TEMP_RES=0;
RESULTADO=0;
FLOAT TENSION;
CONFIGURACION PIC.
PWM_INIT 30KHZ
PWM START.
LEER CANAL 0 Y
GUARDAR EN TEMP_RES.
ADECUACION DE SEÑAL
DE 10BITS PARA 8 BITS.
PWM1_SET LEE UN
VALOR DE 0-255.
VARIABLE “RESULTADO”
LEE PARA MONITOREAR
Y ACONDICIONAR DE 0-5
V.
DESPLEGAMOS EN LCD
DE 0-5 VOLTS.
FIN
Figura 9.6.7 Diagrama de flujo para modulación de ancho de pulso
(PWM).
30
Firmware para el diagrama de flujo de la figura 9.6.7 modulación de
ancho de pulso.
PWM SERVOMOTOR
// LCD CONFIGURACION 4 BITS
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;
sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
char txt1[] = “PWM”;
char txt[15];
#include <built_in.h>
unsigned short current_duty, old_duty;//VARIABLE PARA PWM
unsigned int adc_rd,temp_res,resultado;//VARIABLES PARA ADC
float TENSION;
void InitMain()
{
//INICIALIZACION DE OSCILADOR INTERNO 1MHZ
PORTA = 0X00;
TRISA = 0X11;
// CONFIGURACION DE PORTA COMO ENTRADAS
PORTB = 0X00;
// PORTB 0
TRISB = 0X00;
// DESIGNACION DE PORTB COMO SALIDAS
PORTC = 0X00;
// PORTC 0
TRISC = 0X00;
// DESIGNACION DE PORTC COMO SALIDAS
PWM1_Init(30000);
// INICIALIZACION DE PWM1 EN 30KHZ
ADCON1 = 0X0E;
//DETERMINA CUALES ENTRADAS SON DIGITALES
}
void main() {
InitMain();
PWM1_Start();
//LLAMANDO A LA FUNCION INITMAIN
// INICIO PWM1
Lcd_Init();
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Out(3,1,txt1);
do {
//INICIO DE LA DECODIFICACION PARA EL PWM
temp_res = ADC_Read(0); // CONVERSIÓN DE 10 BITS 0-1023 BITS
current_duty = (temp_res / 4.011764705882353);//EL VALOR DEL ADC DE 10 BIT SE
ACONDISIONA
//AL VALOR DEL PWM DE 8 BITS 1023/255
PWM1_Set_Duty(current_duty); //EL PWM SE MUESTRA DE 0 A 255 BITS RECONOCIENDO DE 0-5V
resultado=current_duty;
31
TENSION=(resultado * 0.019607843); //ACONDICIONAMIENTO DE 0-5 V
FloatToStr(TENSION, txt);//CONVERSIÓN A STRING PARA LCD
Lcd_Out(4,1,txt); //ESCRIBE VALOR EN LCD
Lcd_Out_Cp(“ VOLT”);
Delay_ms(5);
}while(1);}
// PEQUEÑO RETRASO DE LECTURA
Etapa de desplegado, cambio de giro y captura de velocidad deseada.
La figura 9.6.8 es el Diagrama de flujo para el control de cambio de giro
con monitoreo de revoluciones por minuto y duty cycle de pwm para el control
del actuador.
INICIO
DECLARACION DE LIBRERÍA ADC
CONFIGURACION DE LCD
Unsigned short Currrent_duty=0;
Unsigned int adc_rd, temp_res, resultado;
Unsigned short int REG, i, D1, D2, D3, D4, D5;
Int CONTADOR=0, DESEADO=0, RPMDESEADA,
DATO=0;//VARIABLE PARA CONTEO
CONFIGURACION PIC.
ADCON1 = 0X0E; //DETERMINA CUALES
ENTRADAS SON DIGITALES
T0CON = 0X63;
//PREESCALER DE 1:16CONTADOR DE 8 bits
PWM2_Init (500);// INICIALIZACION DE PWM2
INTCON=0XC0; //GIE PEIE
PIR1=0X00;
// TMR1IF BANDERA DE
INTERRUPCION
PIE1=0X01; //OVERFLOW INTERRUPT ENABLE
T1CON=0X30; //PRESCALER 1:8
TMR1H=0X85;
//INICIO
DE
CONTEO
DESCONTANDO UN SEGUNDO
TMR1L=0XEE;
//INICIO
DE
CONTEO
DESCONTANDO UN SEGUNDO
TMR0L=0 // REGISTRO DE TIMER0
Mandamos llamar la configuración del pic y
periféricos.
Lcd_init();
Desplegamos texto de velocidad, valor deseado y
duty cycle.
32
T1CON = 0X31;//ENCENDIDO DE TIMER1
PARA DAR UN RETARDO DE 1s CUANDO
SE SATURE SALTARA A LA INTERRUPCION
T0CON = 0XE3;//ENCENDIDO DE TIMER0
PARA CONTAR CON EL PRIMER FLANCO
ASCENDENTE EN RA4.
LEER CONTADOR Y CONVERTIR EL DATO
DE ENTERO A STRING (DESPLEGAR EN
LCD).
PWM2_Stop(); //PWM2 STOP
PWM2_Set_Duty(current_duty); //EL PWM2
TOMA UN VALOR ENTRE 0 A 255 BITS
temp_res = ADC_Read(0);//LECTURA DE
CANAL ANALOGICO PARA COLOCAR EL
VALOR DESEADO.
DESEADO = (temp_res /0.4092);//LEEMOS
CANAL ANALOGICO Y LO
INTERPRETAMOS COMO RPM EN
REDUCCION DEL SERVOMOTOR
SI
PORTB.F6=0;
PORTB.F7=1; GIRO DERECHA
PORTA.F2==0
NO
SI
PORTB.F7=0;
PORTB.F6=1; GIRO IZQUIERDA
PORTA.F3==0
NO
SI
PWM2_Start();//INICIAM
OS EL PWM2
PORTA.F5==0
SI
NO
Current_duty > 251
33
current_duty = 251;
PWM2_Set_Duty(current_duty);
PARA QUE EL PWM NO INICIE
DESDE UN PRINCIPIO.
//PARTE PARA EL DESPLIEGUE DE
DATOS EN LCD 0-100%
resultado=current_duty;//RESULTADO
LEE DE 0-255
resultado = resultado *
0.392156862745098039;
//ACONDICIONAMOS PARA 0-100% EN
LCD
D3=resultado/100;
D4=(resultado%100)/10;
D5=(resultado%10)/1;
//CONVERTIMOS
EL PORCENTAJE
Lcd_Chr(2, 13, D3 + 48);
RPMDESEADA==
DESEADO/60
SI
//SI RPM = AL DESEADO NO
REALIZAR NADA Y DESABILITAR
LAS DOS COMPARACIONES
SIGUIENTES
REG=0;
Lcd_Chr(2, 14, D4 + 48); Lcd_Chr(2,
15, D5 + 48);
DESEADO/=131; D1=DESEADO/10;
D2=(DESEADO%
10)/1;
//DESPLEGAMOS
LOS
DATOS
ANTERIORES
Lcd_Chr(2, 6, D1 + 48);
Lcd_Chr(2, 7, D2 + 48);
RPMDESEADA>DES
EADO/60
&&
REG==1
SI
NO
FIN
current_duty--;
current_duty--;
delay_ms(70);
delay_ms(70);
//SI RPM
MAYOR QUE EL
DESEADO DISMINUIR EL D/C
C/70ms
RPMDESEADA<DES
EADO/60
&&
REG==1
NO
SI
current_duty++;
delay_ms(70);
//SI RPM
MENOT QUE EL
DESEADO AUMENTAR EL D/C
C/70ms
RPMDESEADA
DESEADO
!=
NO
SI
REG=1
;
34
NO
VOID INTERRUT
NO
PIR1.B0==1
SI
PIR1.B0=0;//BANDERA DE
INTERRUPCION A CERO
T0CON=0X63; //STOP TIMER0
CONTADOR=TMR0L*60; //RPM
TMR0L=0;//REGISTRO DE 8 BITS=0
TMR1H=0X85;//DEBOLVEMOS EL
VALOR DE INICIO DE TEMPORIZADOR1
TMR1L=0XEE;
FIN
Figura 9.6.8 diagramas de flujo de programa completo.
35
Programa de monitoreo completo.
//REALIZACION DE FIRMWARE PARA ACTUADOR LINEAL
//MARTINEZ NAVARRETE RICARDO
//UNIVERSIDAD TECNOLOGICA DE QUERETARO
//MECATRONICA AREA AUTOMATIZACION
// LCD CONFIGURACION 4 BITS
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;
sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
char txt[7];//DESPLIEGUE DE RPM
char txt1[] = "VELOC:"; //VELOCIDAD
char txt2[] = "D/C"; int CONTADOR=0,DESEADO=0,RPMDESEADA,DATO=0; //VARIABLE PARA CONTEO
#include <built_in.h> //LIBRERIA PARA ADC
unsigned short current_duty=0, old_duty;//VARIABLE PARA PWM
unsigned int adc_rd,temp_res,resultado;//VARIABLES PARA ADC
unsigned short int REG,i,D1,D2,D3,D4,D5;//VARIABLE DE USO COMUN
//INTERRUPCION CADA SEGUNDO
/********************************************************************************************************/
void interrupt()
{
if(PIR1.B0==1) //SE ASEGURA DE QUE EXCTAMENTE OCURRA LA INTERRUPCION DEL TIMER1 POR
DESBORDAMIENTO
{
PIR1.B0=0;//BANDERA DE INTERRUPCION A CERO
T0CON=0X63;
//STOP TIMER
RPMDESEADA=TMR0L; //VARIABLE DE APOYO TOMA EL VALOR DEL REGISTRO TMR0L rpmxs.
36
CONTADOR=TMR0L*60; //EL REGISTRO TIENE UN PREESCALER DE 1:16 RPM rpmxm
TMR0L=0;//REGISTRO TMR0L DE 8 BITS A 0
TMR1H=0X85;//DEBOLVEMOS EL VALOR DE INICIO DE TEMPORIZADOR
TMR1L=0XEE; //ENTRE LOS DOS REGISTRO INICIAMOS EN 34286
}
}
/***********************************************************************************************************/
//INICIO DE MENU INIT MAIN
void InitMain()
{
//INICIALIZACION DE OSCILADOR INTERNO 1MHZ
PORTA = 0X00; //INICIALIZACION PUERTO
TRISA = 0X3D;
// CONFIGURACION DE PORTA COMO ENTRADAS POTENCIOMETRO Y RA4 FASE A DE
ENCODER botones RA2-RA3 de INICIO PWM Y D/C
PORTB = 0X00; // PORTB 0
TRISB = 0X00; // DESIGNACION DE PORTB COMO SALIDAS
PORTC = 0X00; // PORTC 0
TRISC = 0X00; // DESIGNACION DE PORTC COMO SALIDAS
ADCON1 = 0X0E; //DETERMINA CUALES ENTRADAS SON DIGITALES
T0CON = 0X63; //CONTADOR DE 8 bits CON PREESCALER DE 1:16
PWM2_Init(500);// INICIALIZACION DE PWM2
INTCON=0XC0; //GIE PEIE
PIR1=0X00; // TMR1IF
PIE1=0X01; //OVERFLOW INTERRUPT ENABLE
T1CON=0X30; //PRESCALER 1:8 CON STOP TIMER
TMR1H=0X85; //INICIO DE CONTEO DESCONTANDO UN SEGUNDO ALTO EN 34286
TMR1L=0XEE; //INICIO DE CONTEO DESCONTANDO UN SEGUNDO BAJO
TMR0L=0;//INICIAMOS REGISTRO DE TIMER0 DE CONTEO EN 0
}
/********************************************************************************************************/
//INICIAMOS MENU PRINCIPAL
void main() {
InitMain();
//LLAMANDO A LA FUNCION INITMAIN
Lcd_Init();
// INICIO LCD
//PRIMER DESPLIEGUE DE TEXTO
37
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Out(1,1," CICATA IPN/UTEQ");
Lcd_Out(2,1," MECATRONICA");
delay_ms(1000);
for(i=0; i<16; i++)
{
Lcd_Cmd(_LCD_SHIFT_LEFT);
delay_ms(350);
}
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Out(1,1,txt1);
Lcd_Out(2,9,txt2);
Lcd_Chr(2,16, '%');
Lcd_Out(2,1,"VAL: ");
/*************************************************************************************************/
do { //INICIAMOS CICLO DO-WHILE
T1CON = 0X31;//ENCENDIDO DE TIMER1 PARA INTERRUPCION DE UN SEGUNDO
T0CON = 0XE3;//TIMER0 ENABLE PARA CONTAR
IntToStr(CONTADOR, txt);//CONVERCION A STRING PARA LCD
Lcd_Out(1,7,txt); //DESPLEGAMOS LAS RPM
Lcd_Out_Cp(" RPM");
/************************************************************************************************/
PWM2_Stop(); //PWM2 STOP
PWM2_Set_Duty(current_duty); //EL PWM2 TOMA UN VALOR ENTRE 0 A 255 BITS
temp_res = ADC_Read(0);//LECTURA DE CANAL ANALOGICO
DESEADO = (temp_res /0.4092);//LEEMOS CANAL ANALOGICO Y LO INTERPRETAMOS COMO RPM EN
REDUCCION
/***********************************************************************************************/
//CONTROL DE GIRO
if (PORTA.F2==0)
{
PORTB.F6=0;
PORTB.F7=1;
}
38
if (PORTA.F3==0)
{
PORTB.F7=0;
PORTB.F6=1;
}
/************************************************************************************************/
//INICIO DE LA DECODIFICACION PARA EL PWM
if(PORTA.F5==1)//SWITCH DE HABILITACION DESPUES DE QUE EL USUARIO INCERTO EL VALOR DESEADO
{
PWM2_Start();//INICIAMOS EL PWM2
//SI CURRENT DUTY SOBREPASA EL NIVEL MAXIMO EL PWM SE COLOCARA EN EL NIVEL MAXIOMO
if(current_duty > 251)
{
current_duty = 251;
PWM2_Set_Duty(current_duty);
}
//SI RPM = AL DESEADO NO REALIZAR NADA Y DESABILITAR LAS DOS COMPARACIONES SIGUIENTES
if (RPMDESEADA==DESEADO/60)
{
REG=0;
}
//SI RPM MAYOR QUE EL DESEADO DISMINUIR EL D/C C/70ms
if(RPMDESEADA>DESEADO/60 && REG==1)
{
current_duty--;
delay_ms(70);
}
//SI RPM MENOR QUE EL DESEADO AUMENTAR EL D/C C/70ms
if(RPMDESEADA<DESEADO/60 && REG==1)
{
current_duty++;
delay_ms(70);
}
//SI RPM ES DIFERENTE QUE EL DESEADO ACTIVAR LAS DOS COMPARACIONES ANTERIORES
if(RPMDESEADA != DESEADO)
{
39
REG=1;
}
}
/**********************************************************************************************/
//PARTE PARA EL DESPLIEGUE DE DATOS EN LCD 0-100%
resultado=current_duty;//RESULTADO LEE DE 0-255
resultado = resultado * 0.392156862745098039; //ACONDICIONAMOS PARA 0-100% EN LCD
D3=resultado/100;
D4=(resultado%100)/10;
D5=(resultado%10)/1;
Lcd_Chr(2, 13, D3 + 48);
Lcd_Chr(2, 14, D4 + 48);
Lcd_Chr(2, 15, D5 + 48);
//CONVERTIMOS EL VALOR DESEADO DE REDUCCION 1:131
DESEADO/=131;
D1=DESEADO/10; //1ER DECIMAL
D2=(DESEADO% 10)/1; //2° DECIMAL
//DESPLEGAMOS LOS DATOS ANTERIORES
//Lcd_Out(2,10, caracter); //0-100%
//Lcd_Out(3,1, DES); //1:131
Lcd_Chr(2, 6, D1 + 48);
Lcd_Chr(2, 7, D2 + 48);
}while(1);
}
40
Descargar