Jump to content
Nikon apoya a los profesionales gráficos durante el estado de alarma en España Read more... ×
dsteodoro

Proyecto StackBlackBox X. Controladora macro doble carril.

Recommended Posts

(Actualizado 04/01/2020) - v3.52

(https://foromacrosmuymacros.com/viewtopic.php?f=14&t=867)


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 cualquier parámetro relacionado con los movimientos y numero de fotos.

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.


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)

    arduin12.jpg

  • 2 controladoras de motor TMC2208 (16 micropasos en modo heredado o 256 micropasos - comunicacion UART) o A8825 (32 micropasos)

    tmc22012.jpga882511.jpg

  • 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 o equivalente.


    descar10.jpg

     

  • 1 pantalla LCD 2004 I2C

    a200410.jpg

     

  • 1 joystick para Arduino. Sirve para manejar todas las funciones.

    arduin11.jpg

  • 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

    cable_10.jpg

  • 2 pares de conectores de aviación de 12mm macho – hembra de 4 pines para los motores. Banggood - Juego conectores motor

    conect10.jpg

  • 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-Montaje-5-Pins-Hembra-2-5mm-Stereo-Audio-Jack-Enchufe-/381762433395

    jack2510.png

  • 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

    caja10.jpg

Todos los componentes se pueden encontrar en aliexpress o banggood.
 

Esquema fritzing.

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

pcb10.jpg

12/03/2019 - Modificación para uso de TMC2208

tmc22010.png

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.

img_2018.jpg

arduin10.png


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 losl 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

sbbx_p12.png



Código fuente.

Aquí está el código fuente del proyecto para Arduino. Está probado y funcionando aunque seguiré haciendo algunas mejoras.

04/01/2020 - Código arduino - StackBlackBox X v3.52
 

IMPORTANTE:

Ajustar los siguientes #define antes antes de programar el arduino:

#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)

ejez10.jpg


También se puede montar dos carriles fijos, uno que mueva el objeto el sentido Y (derecha-izquierda) y otro que mueva la camara en el eje Z.

 

Opciones del menu.

      1. Iniciar ciclo   - Iniciar el ciclo de trabajo con los parámatros programados


      2. 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 ...


      3. 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


      4. Fijar inicio

        400. ..                      - Vuelve al menu raiz
        401. |------|              - Indica la distancia total que recorrerá el carril 1
        402. |------|              - Indica la distancia total que recorrerá el carril 2
        403. Reset carriles     - Borra de memoria la posición fijada para el carril 1 y los cálculos realizados para el nº de fotos


      5. Ajustes Camara 1

        500. ..                 - Vuelve al menu raiz
        501. Num.Fotos    - Numero de fotos ha hacer: calculadas o fijadas
        502. Fot.Ciclo       - Numero de fotos por ciclo. Para modo Mup, HDR, timelapses, ...
        503. Tp.Espera     - Tiempo de espera desde que se dispara la camara 1 hasta que se mueve el motor 1

        504. Tp.Estab       - Tiempo de espera desde que termina de moverse el motor 1 hasta que dispara la camara 1
        505. Tp.Disparo    - Tiempo durante el que se acciona el optoacoplador para disparar la camara 1
        506. Copiar a Camara 2  - Copia los ajustes actuales a la camara 2
        507. Test Camara 1        - Hace un disparo de prueba de la camara 1


      6. Ajustes Camara 2

        600. ..                  - Vuelve al menu raiz
        601. Num.Fotos     - Numero de fotos ha hacer: calculadas o fijadas
        602. Fot.Ciclo       - Numero de fotos por ciclo. Para modo Mup, HDR, timelapses, ...
        603. Tp.Espera     - Tiempo de espera desde que se dispara la camara 2 hasta que se mueve el motor

        604. Tp.Estab       - Tiempo de espera desde que termina de moverse el motor 2 hasta que dispara la camara 2
        605. Tp.Disparo    - Tiempo durante el que se acciona el optoacoplador para disparar la camara 2 (0.00 - 0.99 seg)
        606. Copiar a Camara 1   - Copia los ajustes actuales a la camara 1
        607. Test Camara 2         - Hace un disparo de prueba de la camara 2

        608. Tp.Camara 2     - Tiempo de espera desde que se activa la salida de camara 1 hasta que se activa la salida de camara 2 (0.00 - 0.99 seg).


      7. Ajustes Carril 1

        700. ..                       - Vuelve al menu raiz
        701. Ajustar posicion  - Ajustar la posicion del carril 1.
        702. Dis.Paso             - Distancia de avance entre foto y foto en micras.
        703. Movimiento lento, medio, rapido - Ajusta el tipo de movimiento del motor (antes uPxPaso)

        704. 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.
        705. Sentido         - A->B o B->A. Sirve para invertir el sentido del movimiento del motor.
        706. TpMotor        - Establece los pasos necesarios para dar una vuelta completa
        707. 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.

        708. Volver 0        - Indica si el motor vuelve a su posicion inicial al terminar el ciclo de trabajo.
        709. Tipo Mov      - movimiento lineal o rotativo.
        710. An.Rotac      - Angulo de rotación del carril en movimientos rotativos.
        711. Int1rms        - Intensidad RMS (1 a 999 mA) - SOLO comunicacion UART TMC2208.

        712. Copiar a Carril 2 - Copia los ajustes actuales al carril 2.
        713. Test Carril 1       - Envia al motor del carril 1 los pasos necesarios para dar un giro completo (TpMotor)


      8. Ajustes Carril 2

        800. ..                       - Vuelve al menu raiz
        801. Ajustar posicion  - Ajustar la posicion del carril 2.
        802. Dis.Paso             - Distancia de avance entre foto y foto en micras.
        803. Movimiento lento, medio, rapido - Ajusta el tipo de movimiento del motor (antes uPxPaso)

        804. 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.
        805. Sentido         - A->B o B->A. Sirve para invertir el sentido del movimiento del motor.
        806. TpMotor        - Establece los pasos necesarios para dar una vuelta completa
        807. 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.

        808. Volver 0        - Indica si el motor vuelve a su posicion inicial al terminar el ciclo de trabajo.
        809. Tipo Mov      - movimiento lineal o rotativo.
        810. An.Rotac      - Angulo de rotación del carril en movimientos rotativos.
        811. Int1rms        - Intensidad RMS (1 a 999 mA) - SOLO comunicacion UART TMC2208.

        812. Copiar a Carril 2 - Copia los ajustes actuales al carril 1.
        813. Test Carril 1       - Envia al motor del carril 2 los pasos necesarios para dar un giro completo (TpMotor)


      9. Ajustar Posicion ZX  - Ajustar la posicion de los dos carriles a la vez con el Joystick.

        900. ..                    - Vuelve al menu raiz
        901. Ajuste fino      - Ajustar la posicion de los carriles con el doble del tiempo de pulso (delay uP)
        902. Ajuste normal  - Ajustar la posicion de los carriles con el tiempo de pulso establecido
        903. Ajuste largo     - Ajustar la posicion de los carriles con la mitad del tiempo de pulso


      11. General

        1100. ..                                  - Vuelve al menu raiz
        1101. Auto EN                         - No: motores siempre activados, Si: todo el ciclo, Solo Mov: o solo para mover la base
        1102. LCD Off                         - Tiempo de reposo y desconexion del LCD, en segundos
        1103. Unidades: micras / mm  - Ajusta la visualizacion a micras o milimetros
        1104. 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.

ciclo_10.png

ciclo_11.png

Edited by dsteodoro
Actualizado

Share this post


Link to post
Share on other sites

Una gran noticia dsteodor.

Tienes pensado algún sistema para que se pueda usar con cámara que no tengan el sistema de enfoque al que haces referencia?

Share this post


Link to post
Share on other sites

Hola, el equipo se puede usar con cualquier camara. Puede manejar dos carriles z a la vez o un conjunto de carril zx. El tema del focus bracketing de las fuji sería una opción para poder capturas en los 3 ejes.

Saludos,
Daniel

Enviado desde mi MI MAX mediante Tapatalk

Share this post


Link to post
Share on other sites

Código fuente actualizado a la ultima version a fecha de hoy (v3.10). Mejoras internas en el codigo, en la gestion del driver TMC2208 y aumentada la opcion "Precision" que ahora admite como máximo el nº de micropulsos que se programen (máximo x256 con TMC2208 a 256 micropulsos).

Saludos,
Daniel

Share this post


Link to post
Share on other sites

Muchas gracias por compartir la información, voy a intentar digerirla y liarme a montarlo.

Ya en su día hice yo el carril aunque disponía del StackShot, prefiero currármelo todo.

Saludos.

Share this post


Link to post
Share on other sites

Actualizado el codigo fuente a la version 3.40 con algunas correcciones y mejoras.

Saludos,
Daniel

Share this post


Link to post
Share on other sites

Actualizada la version 3.52 con correcciones para el correcto funcionamiento de los carriles tras la simplificación de las opciones del menu. Tambien he actualizado y corregido el manual ya que el tiempo de disparo es entre 0.01 y 0.99 seguntos (y no entre 0.1 y 9.9 segundos).

Felices fiestas,
Daniel

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing

    No registered users viewing this page.

×