Documentos de Académico
Documentos de Profesional
Documentos de Cultura
com/tutorials/arduino/diy-motorized-camera-slider-pan-tilt-head-
project/
https://easyeda.com/
el Rincon de Vicente
https://www.elrincondevicente.site/
https://toolbee.co/
https://howtomechatronics.com/
114
En este tutorial aprenderemos cómo hacer un control deslizante de cámara motorizado con
cabezal de giro e inclinación. Este proyecto basado en Arduino es 100% de bricolaje,
construido con materiales baratos como MDF y madera contrachapada y controlado con
Arduino, tres motores paso a paso, algunos botones y un joystick conectado a una PCB de
diseño personalizado. A pesar de esto, el resultado final es bastante impresionante, con
movimientos de cámara súper suaves que nos permiten obtener tomas cinematográficas de
aspecto profesional.
Visión de conjunto
Trabajo solido:
Construyendo el control deslizante de la
cámara
Así que comencé a hacer los rieles deslizantes para los que usé tubería de cobre
con garrapatas de 22 mm. Decidí hacer el control deslizante de 1 metro de largo,
así que corté dos piezas a 1 metro de largo. Las tuberías de cobre se pueden
oxidar fácilmente, por lo que debemos pulirlas con un pulidor de metales. En mi
caso, no tenía uno, así que usé una pasta de dientes para ese propósito.
Esta no fue la solución perfecta, pero pude notar una diferencia y conseguí que las
tuberías estuvieran un poco más limpias.
Luego pasé a hacer la base de madera sobre la que se unirán los dos tubos y
también servirá para montar el deslizador en un trípode. Usando una sierra
circular, corté dos piezas de madera contrachapada de 21 mm y las pegué para
obtener una sola pieza de teletipo. Luego, usando una madera maciza, hice una
réplica de la placa de montaje de mi trípode y la pegué a la pieza de madera
contrachapada con un pegamento para madera y un tornillo. Ahora la base
deslizante se puede montar fácilmente en el trípode.
Montaré los rieles deslizantes a la base usando varillas roscadas de 8 mm, así que
hice dos agujeros en la base e inserté las varillas de 138 mm de largo que
previamente las corté a medida. Luego tuve que perforar orificios de garrapatas de
8 mm en las tuberías, lo que en realidad puede ser un poco complicado.
Para ese propósito hice una plantilla simple donde levanté el lápiz a una altura de
11 mm o eso es la mitad del diámetro de la tubería. Luego aseguré la tubería en
una superficie plana y usando la plantilla marqué la tubería desde ambos
lados. Esto permite obtener orificios alumbrados con precisión desde ambos
lados. Entonces, primero marqué los puntos de perforación con una punta de
tornillo afilada y luego los taladré progresivamente con una broca de 2, 4, 6 y 8
mm.
Después de eso, inserté los rieles a través de las varillas roscadas y, con algunas
arandelas y tuercas, las aseguré a la base del deslizador. De manera similar,
usando un trozo de madera contrachapada y una varilla roscada fijé los extremos
de los rieles. \
Lo siguiente es la plataforma deslizante. Nuevamente utilicé una sierra circular
para cortar el tablero de MDF con garrapatas de 8 mm al tamaño de acuerdo con
el modelo 3D. También hice un agujero de 8 mm para las varillas roscadas en las
que se va a colocar el rodamiento. Para montar la plataforma utilicé pegamento
para madera y unos tornillos. Con un taladro inalámbrico, primero hice agujeros
piloto, luego hice los avellanados y atornillé los tornillos de 3 mm en su lugar.
Una vez asegurados los paneles, continué con el montaje del sistema de
cojinetes. Los rodamientos que estoy usando son 608Z con un diámetro exterior
de 22 mm. Dos arandelas y una tuerca entre dos cojinetes hacen suficiente
distancia entre ellos, lo que permite un buen contacto con los rieles de 22 mm.
Para que la plataforma sea más segura cuando se usa el control deslizante en
ángulo, de manera similar, inserté dos juegos más de cojinetes en la parte inferior
de la plataforma. Al final, la plataforma deslizante resultó funcionar perfectamente.
Aquí podemos notar que ahora, al mover la plataforma a lo largo del control
deslizante en mi trípode pequeño, no resistente, la cabeza no puede sostener el
peso de la plataforma, por lo que tuve que hacer un brazo de soporte para
estabilizar el control deslizante. Entonces, usando dos piezas de madera y
algunas tuercas y pernos, hice una abrazadera simple que se puede sujetar a una
de las patas del trípode.
Puede obtener los componentes necesarios para este proyecto en los enlaces a
continuación:
Diseño de PCB
A continuación, de acuerdo con el diagrama del circuito, diseñé una PCB
personalizada para mantener organizados los componentes electrónicos.
Usando un tubo termorretráctil, organicé los cables de puente que salen de la caja
del controlador y, finalmente, lo que quedaba por hacer es conectar el controlador
con los tres motores paso a paso y el interruptor de límite.
En cuanto a alimentar el control deslizante, utilicé tres baterías de iones de litio de
3,7 V conectadas en serie que producen alrededor de 11 V. Y eso es todo, el
control deslizante está listo y funciona perfectamente.
Código fuente de Arduino
Ahora, lo que queda en este tutorial es echar un vistazo al código Arduino y
explicar cómo funciona el programa. Como el código es un poco más largo, para
una mejor comprensión, publicaré el código fuente del programa en secciones con
una descripción para cada sección. Y al final de este artículo, publicaré el código
fuente completo.
#include <AccelStepper.h>
#include <MultiStepper.h>
#define limitSwitch 11
#define inLED 8
#define outLED 9
AccelStepper stepper2 ( 1, 5, 4 ) ;
AccelStepper stepper3 ( 1, 3, 2 ) ;
int JoyXPos = 0;
int JoyYPos = 0;
int sliderPos = 0;
int XInPoint = 0;
int YInPoint = 0;
int ZInPoint = 0;
int XOutPoint = 0;
int YOutPoint = 0;
int ZOutPoint = 0;
int InandOut = 0;
configuración vacía () {
// Cree instancias para MultiStepper: agregue los 3 steppers a la instancia de StepperControl para el control múltiple
paso a paso 1. setCurrentPosition ( 0 ) ; // Cuando se presiona el interruptor de límite, establecer la posición a 0 pasos
retraso ( 20 ) ;
if ( digitalRead ( JoySwitch ) == 0 ) {
retraso ( 200 ) ;
Luego comprobamos si hemos pulsado el botón Set, que se utiliza para configurar
las posiciones IN y OUT. Con la primera pulsación del botón almacenamos las
posiciones IN de los motores paso a paso y también iluminamos el LED IN.
cambiar ( InandOut ) {
InandOut = 1;
romper ;
InandOut = 2;
XOutPoint = paso a paso1. currentPosition () ; // Establecer los puntos OUT para ambos steppers
romper ;
Luego, con la siguiente pulsación del botón, leemos el valor del potenciómetro de
velocidad automática que se utiliza para establecer la velocidad máxima de los
motores. También colocamos las posiciones IN en la matriz "gotoposition" que se
usa en la función moveTo () que calcula la velocidad requerida para todos los
steppers por separado. Luego, usando la función runSpeedToPosition (), el control
deslizante se mueve automáticamente a la posición In.
InandOut = 3;
gotoposition [ 0 ] = XInPoint;
gotoposition [ 1 ] = YInPoint;
gotoposition [ 2 ] = ZInPoint;
StepperControl. moveTo ( ir a la posición ) ; // Calcula la velocidad requerida para todos los motores
StepperControl. runSpeedToPosition () ; // Bloquea hasta que todos los steppers están en posición
retraso ( 200 ) ;
romper ;
InandOut = 2;
gotoposition [ 0 ] = XOutPoint;
gotoposition [ 1 ] = YOutPoint;
gotoposition [ 2 ] = ZOutPoint;
StepperControl. moveTo ( ir a la posición ) ; // Calcula la velocidad requerida para todos los motores
retraso ( 200 ) ;
romper ;
// si el joystick se mueve hacia la izquierda, mueva el paso a paso 2 o desplácese hacia la izquierda
else {
// Potenciómetro deslizante
else {
}
Por último, llamamos a las funciones runSpeed () para cada uno de los tres
motores paso a paso y eso ejecuta los comandos anteriores o hace girar los
motores de manera adecuada.
/*
www.HowToMechatronics.com
http://www.airspayce.com/mikem/arduino/AccelStepper/index.html
*/
#include <AccelStepper.h>
#include <MultiStepper.h>
#define limitSwitch 11
#define inLED 8
#define outLED 9
// Definir los motores paso a paso y los pines que usará
AccelStepper stepper2 ( 1, 5, 4 ) ;
AccelStepper stepper3 ( 1, 3, 2 ) ;
gotoposición larga [ 3 ] ; // Una matriz para almacenar la posición de entrada o salida de cada motor paso a paso
En tJoyXPos = 0;
int JoyYPos = 0;
int sliderPos = 0;
int XInPoint = 0;
int YInPoint = 0;
int ZInPoint = 0;
int XOutPoint = 0;
int YOutPoint = 0;
int ZOutPoint = 0;
int InandOut = 0;
configuración vacía () {
// Cree instancias para MultiStepper: agregue los 3 steppers a la instancia de StepperControl para el control múltiple
paso a paso 1. setCurrentPosition ( 0 ) ; // Cuando se presiona el interruptor de límite, establecer la posición a 0 pasos
retraso ( 20 ) ;
bucle vacío () {
// Limitación del movimiento: no haga nada si se presiona el interruptor de límite o si la distancia recorrida en otra
dirección es superior a 80 cm
if ( digitalRead ( JoySwitch ) == 0 ) {
retraso ( 200 ) ;
if ( digitalRead ( InOutSet ) == 0 ) {
retraso ( 500 ) ;
// Si mantenemos presionado el botón de configuración durante más de medio segundo, restablecemos las posiciones de
entrada y salida
if ( digitalRead ( InOutSet ) == 0 ) {
InandOut = 4;
cambiar ( InandOut ) {
InandOut = 1;
romper ;
XOutPoint = paso a paso1. currentPosition () ; // Establecer los puntos OUT para ambos steppers
romper ;
InandOut = 3;
ir a la posición [ 0 ]= XInPoint;
ir a la posición [ 1 ]= YInPoint;
ir a la posición [ 2 ]= ZInPoint;
StepperControl. moveTo ( ir a la posición ) ; // Calcula la velocidad requerida para todos los motores
StepperControl. runSpeedToPosition () ; // Bloquea hasta que todos los steppers están en posición
retraso ( 200 ) ;
romper ;
InandOut = 2;
gotoposition [ 0 ] = XOutPoint;
gotoposition [ 1 ] = YOutPoint;
ir a la posición [ 2 ]= ZOutPoint;
StepperControl. moveTo ( ir a la posición ) ; // Calcula la velocidad requerida para todos los motores
retraso ( 200 ) ;
romper ;
caso 4: // Si el botón Establecer se mantiene presionado más de medio segundo, regrese al caso 0
InandOut = 0;
retraso ( 1000 ) ;
romper ;
// si el joystick se mueve hacia la izquierda, mueva el paso a paso 2 o desplácese hacia la izquierda
else {
else {
// Potenciómetro deslizante
else {
Así que eso sería todo, espero que hayas disfrutado de este proyecto de Arduino y
hayas aprendido algo nuevo. No dude en hacer cualquier pregunta en la sección
de comentarios a continuación y consulte mi colección de proyectos Arduino .
Electrónica
8
En este tutorial aprenderemos cómo hacer un controlador de velocidad de motor PWM DC
usando el 555 Timer IC. Veremos en detalle cómo funciona el circuito del generador 555
Timer PWM, cómo usarlo para controlar la velocidad del motor de CC y cómo hacer una
PCB personalizada para él.
Visión de conjunto
El temporizador 555 es capaz de generar una señal PWM cuando se configura en un modo
estable. Si no está familiarizado con el 555 Timer, puede consultar mi tutorial anterior
donde expliqué en detalle lo que hay dentro y cómo funciona el 555 Timer IC .
Aquí hay un circuito básico del temporizador 555 operando en un modo estable y podemos
notar que la salida es ALTA cuando el condensador C1 se está cargando a través de las
resistencias R1 y R2.
Por otro lado, la salida del IC es BAJA cuando el condensador C1 se está descargando, pero
solo a través de la resistencia R2. Entonces podemos notar que si cambiamos los valores de
cualquiera de estos tres componentes obtendremos diferentes tiempos de ENCENDIDO y
APAGADO, o diferentes ciclos de trabajo de la señal de salida de onda cuadrada. Una
forma fácil e instantánea de hacer esto es reemplazar la resistencia R2 con un
potenciómetro y, además, agregar dos diodos en el circuito.
En esta configuración el tiempo de On dependerá de la resistencia R1, el lado izquierdo del
potenciómetro y el condensador C1, mientras que el tiempo de Off dependerá del
condensador C1 y del lado derecho del potenciómetro. También podemos notar que en esta
configuración el período de un ciclo, por lo tanto la frecuencia, será siempre el mismo,
porque la resistencia total, mientras se carga y descarga, seguirá siendo la misma.
Por lo general, la resistencia R1 es mucho menor que la resistencia del potenciómetro, por
ejemplo, 1K en comparación con 100K del potenciómetro. De esa forma tenemos un 99%
de control sobre la resistencia de carga y descarga en el circuito. El pin de control del
temporizador 555 no se usa pero está conectado a un capacitor de 100nF para eliminar
cualquier ruido externo de ese terminal. El reinicio, pin número 4, está activo bajo, por lo
tanto, está conectado a VCC para evitar cualquier reinicio no deseado de la salida.
La salida del temporizador 555 puede hundir o generar una corriente de 200 mA a la
carga. Entonces, si el motor que queremos controlar excede esta clasificación, necesitamos
usar un transistor o un MOSFET para impulsar el motor. En este ejemplo, utilicé un
transistor Darlington (TIP122) que puede manejar una corriente de hasta 5A.
La salida del IC debe estar conectada a la base del transistor a través de una resistencia, y
en mi caso usé una resistencia de 1k. Para prevenir los picos de voltaje producidos por el
motor, necesitamos usar un diodo de retorno que está conectado en paralelo con el motor.
Ahora podemos seguir adelante y diseñar un PCB personalizado para este circuito. Para ello
utilizaré el software en línea gratuito EasyEDA . Aquí podemos comenzar buscando y
colocando los componentes en el lienzo en blanco. La biblioteca tiene cientos de miles de
componentes, por lo que no tuve ningún problema para encontrar todos los componentes
necesarios para este circuito controlador de velocidad del motor DC PWM.
Después de insertar los componentes, necesitamos crear el contorno de la placa y comenzar
a organizar los componentes. Los dos condensadores deben colocarse lo más cerca posible
del temporizador 555, mientras que los otros componentes se pueden colocar donde
queramos, pero aún en una disposición lógica de acuerdo con el esquema del circuito.
Usando la herramienta de seguimiento, necesitamos conectar todos los componentes. La
herramienta de seguimiento es bastante intuitiva y fácil de trabajar. Podemos utilizar tanto
la capa superior como la inferior para evitar cruces y acortar las pistas.
Los pads de los componentes que necesitan estar conectados a Ground se establecen en
Ground a través de la pestaña Pad Properties, donde necesitamos escribir GND en la
etiqueta "Net" cuando se selecciona el pad.
Podemos usar la capa Silk para agregar texto al tablero. También podemos insertar un
archivo de imagen, así que agrego una imagen del logotipo de mi sitio web para que se
imprima en la pizarra. Al final, utilizando la herramienta de área de cobre, necesitamos
crear el área de tierra de la PCB.
Puede encontrar los archivos del proyecto EasyEDA de este proyecto aquí.
Una vez que hayamos terminado con el diseño solo debemos hacer clic en el botón “Salida
Gerber”, guardar el proyecto y podremos descargar los archivos Gerber que se utilizan para
fabricar la PCB. Podemos solicitar el PCB a JLCPCB, que es el servicio de fabricación de
PCB de EasyEDA, y también es el patrocinador de este video.
Aquí simplemente podemos arrastrar y soltar el archivo zip descargado de los archivos
gerber. Después de cargar, podemos volver a revisar la PCB en el visor de Gerber. Si todo
está bien, podemos seleccionar hasta 10 PCB y obtenerlos por solo 2 dólares.
Montaje de la PCB del controlador de velocidad del motor de
CC PWM
Sin embargo, después de una semana han llegado los PCB y debo admitir que es bastante
satisfactorio tener su propio diseño de PCB fabricado. La calidad de las placas de circuito
impreso es excelente y todo es exactamente igual que en el diseño.
Bien, ahora podemos pasar a insertar los componentes en la PCB.
Puede obtener los componentes necesarios para este ejemplo en los enlaces siguientes:
R1 = R2 = 1k Ohm …………………………. Amazon / Banggood / AliExpress
D1 = D2 = D3 = 1N4004 …………………. Amazon / Banggood / AliExpress
Divulgación: estos son enlaces de afiliados. Como asociado de Amazon, gano con las
compras que califican.
Primero inserté los componentes más pequeños, las resistencias, los diodos y los
condensadores.
Doblé sus cables en el otro lado para que permanecieran en su posición cuando voltee la
placa para soldar. En cuanto a los componentes más grandes, utilicé una cinta de
enmascarar para mantenerlos en su lugar al dar la vuelta al tablero.