Toda la información recopilada en esta web:
(Web StackBlackBox ®)
Introducción.
Tras el desarrollo del StackBlackBox® (Enlace proyecto), un compañero del foro de Nikonistas (Taver) me dio la idea de ampliar las capacidades del equipo para que pudiera manejar dos carriles a la vez y de esa forma poder hacer macro panoramas (How to Make Gigapixel Macro Images | GIGAmacro).
Para stacking o apilado simple, con un carril se consigue el movimiento “Z” o “profundidad” y con dos carriles se conseguiría otro movimiento: X o Y según nuestras necesidades. Para simplificar las explicaciones, voy a suponer que el eje que se va a mover es el horizontal o eje X.
StackBlackBox® X.
Para el que no haya visto el proyecto, StackBlackBox® es un dispositivo que permite controlar de forma precisa un motor paso a paso disparando la cámara una o varias veces entre cada movimiento. Esto hace que podamos controlar cualquier tipo de carril: carril macro/micrométrico, de varios cm para timelapses dinámicos, una plataforma giratoria, etc.
StackBlackBox ® X es la evolución natural del StackBlackBox®. La nueva versión permite controlar dos carriles de forma independiente o conjunta en movimientos tipo “Zigzag”, es decir, primero haría la secuencia de fotos del eje Z, luego movería el eje X y de nuevo empezaría hacer la secuencia del eje Z. Así hasta completar el movimiento programado para el eje X.
Se puede programar casi cualquier parámetro relacionado con los movimientos y numero de fotos.
El programa ha sido optimizado y las opciones del menú se han organizado para que sea sencillo de manejar.
Las distancias que se visualizan en pantalla cambian automaticamente entre micras y milimetros en funcion de la distancia de paso seleccionada para cada carril o en función de la distancia total visualizada.
Tiene un modo de ahorro de energía que apaga el LCD si pasan 3 minutos sin tocar el Joystick.
Para el movimiento Z del carril, usando un husillo de 1mm/vuelta y un motor de 400 pasos se obtiene una precisión nativa de 2.5 micras (0,0025 mm). Si usamos el driver TMC2208 con conexion por UART y ajustamos los micropasos a 256 y la precisión mediante menú a x256, obtenemos un movimiento teorico de 0,009 micras. El ajuste de este parametro permite usar husillos de paso más grande y aun así obtener precisiones muy pequeñas.
Mediante reles de estado solido optoacoplados o modulos de relés normales de arduino, permite activar un led o flash externo usando una salida digital.
Desde la version 3.20 permite especificar el nº de pasos del motor que usamos entre 1 y 9990. Aunque los motores normales son de 200 o 400 pasos, siempre hay excepciones y motores que usan reductoras y necesitan más pasos para dar una vuelta completa.
Software de stacking o apilado.
El software de apilado que yo uso y que soporta macro panoramas es Helicon Focus (Intelligent Software For Photographers - Helicon Soft). Es un software muy bueno y asequible si te gusta la macrofotografía y piensas hacer muchas tomas. Soporta archivos raw y los convierte a dng mediante el convertidor gratuito de adobe (Conversor DNG de Adobe) antes de procesarlos. Tiene una versión de prueba de 30 días para que veas sus bondades. Para uso normal, la versión “Lite” es suficiente y es la que yo adquirí.
Otro software muy conocido y usado es Zerene Stacker, pero no soporta panoramas.
Hardware necesario.
El proyecto se ha diseñado tomando como base un Arduino mega pro porque es muy pequeño y potente.
El hardware necesario es el siguiente:
- 1 Arduino mega pro: Mega 2560 PRO (Embed) CH340G/ATmega2560-16AU (Arduino-compatible board)
- 2 controladoras de motor TMC2208 (256 micropasos - comunicacion UART)
- 3 condensadores 100uF 16V
- 1 diodo 1N4001 o 1N4007
- 2 resistencias de 150 ohm y 1/4W
- 5 resistencias de 1k ohm y 1/4W
- 2 optoacopladores PC817
- 1 pantalla LCD 2004 I2C
- 1 joystick para Arduino. Sirve para manejar todas las funciones.
- 1 modulo HM-10 bluetooth (opcional – futuras ampliaciones)
- 1 modulo HC-12 433 MHz (opcional – futuras ampliaciones)
- 5 pares de conectores macho – hembra para baterías lipo 3s (4 pines)
- 2 pares de conectores macho – hembra para barrerías lipo 4s (5 pines)
- 1 par de conectores macho – hembra para baterías lipo 5s (6 pines)
Banggood - enlace de compra
- 2 pares de conectores de aviación de 12mm macho – hembra de 4 pines para los motores. Banggood - Juego conectores motor
- 2 conectores Jack hembra 2.5” para la salida para disparar las cámaras de fotos.
https://www.ebay.es/itm/10-Un-DIP-PCB-M ... 1762433395
- 3 conectores RCA hembra para los sensores de final de carrera y disparador directo externo.
- 1 caja para colocarlo todo. Yo uso el modelo de 158x90x60 de: Banggood - Caja
Todos los componentes se pueden encontrar en aliexpress o banggood.
Esquema EasyEDA para proyecto con TMC2208.
He migrado el proyecto fritzing a EasyEDA, una herramienta excelente que he "descubierto" hace poco y la verdad me ha encantado para hacer proyectos electrónicos. Tanto el esquema como el PCB están actualizados para poder usar los drivers A8825 y TMC2208. En el código fuente se puede ver claramente la asignación de las entradas/salidas digitales a los distintos elementos del hardware.
Proyecto StackBlackBox X - EasyEDA
Esquema Fritzing.
(Para nuevos montajes recomiendo el esquema easyEDA)
Debido a que el montaje puede ser algo complejo, en el esquema fritzing también tenéis el diseño del PCB que yo he usado y que se puede enviar a fabricar (AISLER - Powerful Prototyping for your electronics project made in Germany.). Simplifica enormemente el proceso del montaje del hardware.
Fritzing - StackBlackBox X
12/03/2019 - Modificación para uso de TMC2208
Controlador Motor 1 - TX -> Patilla D50 en Arduino Mega
Controlador Motor 1 - RX -> Patilla D51 en Arduino Mega
Controlador Motor 2 - TX -> Patilla D52 en Arduino Mega
Controlador Motor 2 - RX -> Patilla D53 en Arduino Mega
Las patillas MS1, MS2, NC, CLK no se conectan.
Código fuente.
23/02/2020 - Código arduino - StackBlackBox X v4.21
IMPORTANTE:
Ajustar los siguientes #define antes antes de programar el arduino:
Código: Seleccionar todo
#define UsaTMC2208_UART 1 // 0: Usa A8825 // 1: Usa TMC2208 por UART
#define JOYREVES 0 // 0: Usa el joystick con las conexiones hacia abajo 1: conexiones hacia arriba
Librería necesaria para la pantalla 20x4 I2C.
Librería LCD 2004 - I2C
Librería necesaria para el driver TMC2208.
Libreria TMC2208
Este driver se puede usar en modo heredado, donde se debe configurar por hardware la intensidad del motor y los micropulsos para 1 paso o en modo UART que permite configurar desde el menu ambas cosas.
Manual de actualización del codigo fuente.
Para la gente que ha trabajado poco o nada con Arduino, he preparado este manual que explica la forma de actualizar nuestro código fuente. Es un documento word que he dejado abierto para que podais modificarlo con vuestras propias anotaciones.
https://1drv.ms/w/s!AsjC_7oRY5wujS7U31nAeuVeSff1
Uso de dos carriles
El carril “Z + X/Y” está pendiente de desarrollo. Para mi, lo mas "coñazo" siempre ha sido la fabricación de los carriles pero por suerte en tiendas online chinas (aliexpress, bangood) ya venden carriles buenos bastante baratos (unos 40€).
Una opción es usar un carril para el movimiento "Z" del objeto a fotografiar y otro para el movimiento "X" o "Y" de la cámara según nuestras necesidades.
Aquí teneis el enlace de un carril ya montado y que sirve perfectamente para realizar sesiones de apilados normales. Es muy robusto. El lead es un poco alto (8mm/vuelta = paso de 40 micras) y el motor es de 200 pasos. Programando la intensidad del TMC2208 a 300mA funciona bien. Si pongo 256 uPulsos y la precision x4 obtengo un "lead" de 2mm/vuelta. Subiendo la precisión tengo de sobra para usar objetivos de microscopio x4 y x10.
Carril - Eje Z (Aliexpress)
Manual de referencia.
En este enlace teneis el primer manual que he hecho. Está en formato .docx para que podais modificarlo con vuestras propias notas.
https://1drv.ms/w/s!AsjC_7oRY5wujUfof3q ... g?e=NwJA8P
Opciones del menu.
Iniciar ciclo - Iniciar el ciclo de trabajo con los parámatros programados
Fijar recorrido
.. - Vuelve al menu raiz
Fijar posicion ZX - Establece la posición inicial del ciclo macro (modos 2 y 4) o la final (modos 1, 3 y 5)
|------| - Establece la posición inicial del carril 1 (modos 1, 3 y 5). Indica la distancia total y el numero de fotos
|------| - Establece la posición inicial del carril 2 (modos 1, 3 y 5). Indica la distancia total y el numero de fotos
Reset carriles - Borra de memoria la posición fijada para los carriles
Modo Trabajo 1 - 5
Modo 1 - Funciona un carril indicando el recorrido de principio a fin.
Modo 2 - Funciona un carril indicando el numero de fotos a realizar.
Modo 3 - Funcionan dos carriles indicando el recorrido de principio a fin de cada uno.
Modo 4 - Funcionan dos carriles indicando el numero de fotos a realizar por cada uno.
Modo 5 - Funcionan los dos carriles en forma de zigzag: carril 1 de inicio a fin -> desplaza carril 2 -> carril 1 de inicio a fin -> desplaza carril 2 ...
Motor principal - Indica si en los modos 1 y 2 se trabajará con el carril 1 + cámara 1 o con el carril 2 + cámara 2
Ajustes Camara 1
.. - Vuelve al menu raiz
Num.Fotos - Numero de fotos ha hacer: calculadas o fijadas
Fot.Ciclo - Numero de fotos por ciclo. Para modo Mup, HDR, timelapses, ...
Tp.Espera - Tiempo de espera desde que se dispara la camara 1 hasta que se mueve el motor 1
Tp.Estab - Tiempo de espera desde que termina de moverse el motor 1 hasta que dispara la camara 1
Tp.Disparo - Tiempo durante el que se acciona el optoacoplador para disparar la camara 1
Copiar a Camara 2 - Copia los ajustes actuales a la camara 2
Test Camara 1 - Hace un disparo de prueba de la camara 1
Led On - Indica el tiempo que debe esperar desde que se activa la camara hasta que se activa la salida para el led/flash
Led Dur - Indica el tiempo que está activa la salida para el led/flash
Ajustes Camara 2
.. - Vuelve al menu raiz
Num.Fotos - Numero de fotos ha hacer: calculadas o fijadas
Fot.Ciclo - Numero de fotos por ciclo. Para modo Mup, HDR, timelapses, ...
Tp.Espera - Tiempo de espera desde que se dispara la camara 2 hasta que se mueve el motor
Tp.Estab - Tiempo de espera desde que termina de moverse el motor 2 hasta que dispara la camara 2
Tp.Disparo - Tiempo durante el que se acciona el optoacoplador para disparar la camara 2 (0.00 - 0.99 seg)
Copiar a Camara 1 - Copia los ajustes actuales a la camara 1
Test Camara 2 - Hace un disparo de prueba de la camara 2
Led On - Indica el tiempo que debe esperar desde que se activa la camara hasta que se activa la salida para el led/flash
Led Dur - Indica el tiempo que está activa la salida para el led/flash
Ajustes Carril 1
.. - Vuelve al menu raiz
Ajustar posicion - Ajustar la posicion del carril 1.
Dis.Paso - Distancia de avance entre foto y foto en micras.
Movimiento lento, medio, rapido - Ajusta el tipo de movimiento del motor (antes uPxPaso)
Precision - x1, x2, x4,... X256- Se envían al motor (uPxPaso / Precision) para moverlo. Al cambiar este valor la distancia de paso se establece en su valor más pequeño.
Sentido - A->B o B->A. Sirve para invertir el sentido del movimiento del motor.
TpMotor - Establece los pasos necesarios para dar una vuelta completa
mm/giro - Lead o paso del husillo o correa. Distancia (1 a 50 mm) que se desplaza la base en una vuelta completa del motor.
Volver 0 - Indica si el motor vuelve a su posicion inicial al terminar el ciclo de trabajo.
Tipo Mov - movimiento lineal o rotativo.
An.Rotac - Angulo de rotación del carril en movimientos rotativos.
Int1rms - Intensidad RMS (1 a 999 mA) - SOLO comunicacion UART TMC2208.
Copiar a Carril 2 - Copia los ajustes actuales al carril 2.
Test Carril 1 - Envia al motor del carril 1 los pasos necesarios para dar un giro completo (TpMotor)
Ajustes Carril 2
.. - Vuelve al menu raiz
Ajustar posicion - Ajustar la posicion del carril 2.
Dis.Paso - Distancia de avance entre foto y foto en micras.
Movimiento lento, medio, rapido - Ajusta el tipo de movimiento del motor (antes uPxPaso)
Precision - x1, x2, x4,... X256- Se envían al motor (uPxPaso / Precision) para moverlo. Al cambiar este valor la distancia de paso se establece en su valor más pequeño.
Sentido - A->B o B->A. Sirve para invertir el sentido del movimiento del motor.
TpMotor - Establece los pasos necesarios para dar una vuelta completa
mm/giro - Lead o paso del husillo o correa. Distancia (1 a 50 mm) que se desplaza la base en una vuelta completa del motor.
Volver 0 - Indica si el motor vuelve a su posicion inicial al terminar el ciclo de trabajo.
Tipo Mov - movimiento lineal o rotativo.
An.Rotac - Angulo de rotación del carril en movimientos rotativos.
Int1rms - Intensidad RMS (1 a 999 mA) - SOLO comunicacion UART TMC2208.
Copiar a Carril 2 - Copia los ajustes actuales al carril 1.
Test Carril 1 - Envia al motor del carril 2 los pasos necesarios para dar un giro completo (TpMotor)
Reset Restaura todas las opciones a sus valores por defecto. (Recomendable después de actualizar el firmware)
Ciclo de disparo y tiempos.
Aqui se ve gráficamente como afectan los tiempos que se programan y el número de fotos por ciclo.