Tabla de contenido:

Módulo de dirección láser DIY para Arduino: 14 pasos (con imágenes)
Módulo de dirección láser DIY para Arduino: 14 pasos (con imágenes)

Video: Módulo de dirección láser DIY para Arduino: 14 pasos (con imágenes)

Video: Módulo de dirección láser DIY para Arduino: 14 pasos (con imágenes)
Video: ✅ Programas para CNC Láser, Conexiones y Primer tallado. GRBL, LaserGRBL #6 2024, Mes de julio
Anonim
Image
Image

En este Instructable, demostraré la construcción de un módulo de dirección de rayo láser de espejo único y doble eje utilizando piezas impresas en 3D y componentes económicos de eBay.

Este proyecto tiene similitudes con Arduino Laser Show con Full XY Control y Arduino Laser Show con Real Galvos, pero creo que es el primero en utilizar un diseño impreso en 3D con solenoides económicos. Estoy poniendo todos los archivos de diseño bajo la GPLv3 para que el diseño pueda mejorarse y mejorarse.

Aunque en la actualidad solo he ensamblado el módulo y escrito un código de prueba muy básico, espero que algún día pueda llevarlo al siguiente nivel incorporando el código de gráficos vectoriales de mi anterior Instructable, Super Fast Analog Voltajes de Arduino.

Paso 1: Reúna las piezas no impresas en 3D

El conjunto láser consta de las siguientes partes:

  • 4 micro solenoides
  • Un espejo de 1/2 pulgada
  • Cuatro tornillos M3

Los solenoides particulares que utilicé se compraron en eBay por $ 1,45 cada uno. El espejo redondo se encontró en el pasillo de manualidades de HobbyLobby; un paquete de 25 me costó menos de $ 3 dólares. También puede encontrar espejos en eBay.

También necesitará un puntero láser económico, nuevamente, de eBay. ¡Un láser violeta junto con una hoja de vinilo que brilla en la oscuridad es una combinación excelente para este proyecto!

No es necesario un par de manos amigas, pero será muy útil para sostener y posicionar el puntero láser. Se puede usar un clip de carpeta grande para mantener presionado el botón de encendido.

Necesitará un Arduino (yo usé un Arduino Nano) y una forma de conducir los solenoides. Como VajkF ha declarado en los comentarios, puede usar puentes en H prefabricados, como los basados en el L298 o el L9110. Estos están disponibles en eBay por unos pocos dólares y también se pueden usar para impulsar motores y proyectos de robótica.

Como no tenía un puente en H, construí mi propio controlador con componentes discretos:

  • Cuatro transistores bipolares NPN (usé un MPS3704)
  • Cuatro resistencias (usé una resistencia de 1.2k ohmios)
  • Cuatro diodos (usé un 1N4004)
  • Una batería de 9V y un conector de batería

Los componentes electrónicos eran de mi laboratorio, por lo que no tengo un costo exacto para ellos, pero a menos que ya tenga las piezas o pueda recuperarlas, probablemente sea más rentable usar un puente en H prefabricado. No obstante, proporcionaré los esquemas para construir el suyo.

Paso 2: Imprima en 3D el módulo de dirección del espejo

Imprima en 3D el módulo de dirección del espejo
Imprima en 3D el módulo de dirección del espejo
Imprima en 3D el módulo de dirección del espejo
Imprima en 3D el módulo de dirección del espejo

El módulo de dirección láser consta de dos piezas impresas en 3D: una base para montar cuatro solenoides y una plataforma articulada para el espejo.

He adjuntado los dos archivos STL para que los imprima en 3D, así como los archivos FreeCAD en caso de que necesite modificar el diseño. Todo el contenido está bajo la GPLv3, por lo que puede realizar y compartir sus mejoras.

Paso 3: ensamble el módulo láser

Ensamble el módulo láser
Ensamble el módulo láser
Ensamble el módulo láser
Ensamble el módulo láser
Ensamble el módulo láser
Ensamble el módulo láser
  • Use pegamento caliente para fijar los cuatro solenoides a la pieza inferior.
  • Use pegamento caliente para pegar el espejo en el centro de la pieza superior.
  • Inserte los pistones metálicos en los solenoides y luego coloque la pieza superior en los postes (pero no la atornille). Gire ligeramente la pieza superior y, con un destornillador pequeño, levante cada pistón hasta su posición. El borde del disco debe deslizarse en la ranura del pistón. Tenga cuidado, ya que las bisagras impresas en 3D son muy frágiles. Con paciencia y posiblemente con algunos intentos fallidos, debería poder colocar los cuatro pistones sin girar ni ejercer presión sobre las bisagras.
  • Una vez que todos los pistones estén colocados, inserte parcialmente los tornillos M3, pero antes de apretarlos, presione suavemente cada pistón hacia abajo y asegúrese de que el espejo se incline libremente. Si no se mueve libremente o se engancha, puede ser necesario quitar la placa superior, sacar uno o más solenoides sueltos y volver a colocarlo en un ligero ángulo hacia afuera (colocar espaciadores entre él y el poste central puede ayudar con esto).

Paso 4: imprima el collar del puntero láser

Imprima el collar del puntero láser
Imprima el collar del puntero láser
Imprima el collar del puntero láser
Imprima el collar del puntero láser

El collar del puntero láser encaja en la cabeza del puntero láser. Luego, puede usar un par de manos amigas para agarrar el collar y permitirle colocar el láser con precisión en su banco.

Paso 5: Ensamble el circuito de conducción

Ensamblar el circuito de conducción
Ensamblar el circuito de conducción

El circuito de accionamiento se muestra en el esquema. Como se indicó anteriormente, mi versión está construida con componentes discretos, pero también podría usar un puente en H fácilmente disponible. Si eliges construir el tuyo propio, necesitarás construir cuatro copias de este circuito, una para cada uno de los cuatro solenoides.

Cada circuito se conectará a un pin Arduino, dos para controlar el solenoide izquierdo y derecho, y dos para los solenoides arriba y abajo. Estos deberán estar conectados a pines con capacidad PWM, así:

  • Pin 9: Solenoide arriba
  • Pin 3: Solenoide abajo
  • Pin 11: Solenoide izquierdo
  • Pin 10: Solenoide derecho

Se puede usar una sola batería de 9V para impulsar los cuatro circuitos de controlador de solenoide o puede usar una fuente de alimentación de sobremesa. El Arduino funcionará con alimentación USB y no debe conectarse al lado positivo de la batería de 9V. Sin embargo, el lado negativo de la batería se usa como referencia a tierra y debe conectarse al pin GND en el Arduino, así como a los pines emisores en los transistores.

Paso 6: Cargue el código de muestra

Cargar el código de muestra
Cargar el código de muestra

El código de muestra se ha actualizado con las siguientes características:

  • Ajusta la frecuencia PWM de modo que el mecanismo sea casi silencioso a bajas velocidades. ¡El zumbido en Motion Test 1 ha desaparecido por completo!
  • Agrega como ecuaciones de voltaje basadas en el documento de Schimpf para "linealizar" la respuesta no lineal de los solenoides.

También he incluido una implementación de un Atractor de Lorenz basada en el código de este blog.

La fidelidad de los resultados deja bastante que desear, ¡pero todavía estoy trabajando en ello!:)

Los pasos siguientes ilustran algunas de las técnicas utilizadas en el código.

Paso 7: bajar el volumen

En mi Prueba de movimiento 1, puede escuchar un fuerte zumbido, en particular durante el movimiento hacia arriba y hacia abajo. Resulta que esto se debió a que la frecuencia de corte PWM predeterminada del Arduino estaba dentro del rango audible. El encendido y apagado rápido del voltaje de la bobina haría que vibraran a esa frecuencia, convirtiéndolos en pequeños altavoces.

Para resolver este problema, aumenté la frecuencia PWM en el código:

#define PWM_FREQ_31372Hz 0x01 // Configura la frecuencia PWM a 31372.55 Hz # define PWM_FREQ_3921Hz 0x02 // Configura la frecuencia PWM a 3921.16 Hz #define PWM_FREQ_980Hz 0x03 // Configura la frecuencia PWM a 980.39 Hz & 0b11111000) | frecuencia; // Establecer la frecuencia del temporizador1 (pines 9 y 10) TCCR2B = (TCCR2B y 0b11111000) | frecuencia; // Establecer la frecuencia del timer2 (pines 3 y 11)}

Configurar la frecuencia de Arduino PWM es un truco útil para silenciar solenoides o motores. Experimente con las diferentes opciones de frecuencias para ver cuál le da los mejores resultados. Aunque implica una programación más avanzada, aquí se encuentra un buen recurso sobre cómo funcionan los temporizadores.

Paso 8: ajuste de los voltajes para reducir la distorsión

Ajuste de los voltajes para reducir la distorsión
Ajuste de los voltajes para reducir la distorsión

Mis pruebas de movimiento iniciales mostraron que hubo una distorsión significativa en la respuesta de los solenoides. En Motion Test 3 (figura de la izquierda), lo que se suponía que era una espiral circular se convirtió en una red rectangular con bordes irregulares.

Resolver este problema requirió un poco de matemáticas, pero pude encontrar un artículo increíble en la web que me ayudó a comprender el problema lo suficientemente bien como para resolverlo en software.

¡Lo que sigue le guía a través del proceso por el que pasé para ajustar el sistema y mejorar la apariencia de las trazas resultantes!

Paso 9: perfeccionamiento del software con matemáticas

Perfeccionando el software con matemáticas
Perfeccionando el software con matemáticas
Perfeccionando el software con matemáticas
Perfeccionando el software con matemáticas

El secreto para ajustar el sistema resultó ser un excelente artículo llamado "Explicación detallada de la fuerza del solenoide" por Paul H. Schimpf de la Universidad de Eastern Washington (enlace). En particular, la ecuación 17 me dio la fuerza del solenoide en términos de varios términos.

Los siguientes términos fueron fáciles de medir:

  • R - La resistencia de mi solenoide
  • l - La longitud del solenoide
  • x - El desplazamiento del pistón en el solenoide
  • V: el voltaje a través del solenoide

También sabía que la fuerza emitida por el solenoide tenía que equilibrar la fuerza de los resortes impresos en 3D en el espejo de doble eje. La fuerza de un resorte se rige por la ley de Hooke, que se establece de la siguiente manera:

F = -kx

Aunque no conocía el valor de k, al menos sabía que la fuerza que obtuve de la ecuación 17 del artículo de Schimpf tenía que ser igual a la fuerza de la ley de Hooke.

El valor de alfa (α) fue complicado. Aunque las ecuaciones 13 y 14 mostraban cómo calcular estos valores a partir del área del solenoide (A), el número de vueltas (N) y los valores de permeabilidad magnética (μ), no quería tener que desgarrar un solenoide para contar el número de vueltas, ni sabía el material del que estaba hecho el núcleo de mi solenoide.

Paso 10: ¡Un probador de componentes económico salva el día

¡Un probador de componentes económico salva el día!
¡Un probador de componentes económico salva el día!
¡Un probador de componentes económico salva el día!
¡Un probador de componentes económico salva el día!
¡Un probador de componentes económico salva el día!
¡Un probador de componentes económico salva el día!

Sin embargo, resultó que las ecuaciones 15 y 16 me dieron lo que necesitaba. Tenía un probador de componentes M328 económico que había comprado en eBay por $ 10. Fue capaz de usarlo para medir la inductancia de mi solenoide y descubrí que al empujar la armadura a diferentes profundidades obtenía diferentes valores de inducción.

Medirlo con la armadura completamente insertada me dio el valor de L (0).

La longitud de mi solenoide era de 14 mm, por lo que medí la inductancia con la armadura en cinco posiciones y esto me dio varios valores para L (x):

  • L (0,0) = 19,8 mH
  • L (3,5) = 17,7 mH
  • L (7,0) = 11,1 mH
  • L (10,5) = 9,3 mH
  • L (14) = 9,1 mH

Luego utilicé una hoja de cálculo para trazar mis valores frente al valor de la ecuación 15 y 16, para una elección particular de μr y luego varié mi elección hasta que encontré una buena coincidencia. Esto sucedió cuando μr fue 2.9, como se muestra en el gráfico.

Paso 11: Encuentre la constante de resorte K, resuelva el problema

Image
Image
Análisis de problemas actuales y posibles soluciones
Análisis de problemas actuales y posibles soluciones

La única incógnita que quedaba era K, la constante del resorte. Medí esto aplicando 9V a uno de los solenoides en mi ensamblaje de doble eje y midiendo la distancia en la que se bajó el espejo. Con estos valores, pude resolver las ecuaciones para K, que encontré alrededor de 10,41.

Ahora tenía los valores que necesitaba para calcular el tirón del solenoide en varias posiciones a lo largo de la carrera. Al establecer F (x) igual a la fuerza del resorte de la ley de Hooke, puedo resolver el voltaje V requerido.

El gráfico muestra el voltaje requerido para mover el solenoide a cualquier posición deseada x.

A la derecha, donde el voltaje es cero y la posición es de 3 mm, esto corresponde al punto de reposo neutro del solenoide cuando las bisagras impresas en 3D están completamente relajadas. Moverse hacia la izquierda en el gráfico corresponde a tirar del inducido hacia el solenoide contra el tirón de las bisagras impresas en 3D; esto inicialmente requiere más voltaje, pero a medida que el inducido se adentra más en el solenoide, el tirón aumenta y el voltaje de conducción requerido disminuye.

Esta relación es definitivamente no lineal, pero con las ecuaciones del artículo de Schimpf, puedo escribir mi código Arduino para generar los voltajes correctos para que la desviación del haz sea lineal:

posición flotanteToVoltaje (flotante x) {

// Restaurando la fuerza ejercida por las bisagras (Ley de Hooke) en la x deseada. const float spring_F = -spring_K * (x - spring_X0); // Voltaje tal que la fuerza de tracción del solenoide coincide con la // fuerza de restauración de las bisagras return sqrt (-2 * R * R * (- spring_F) * solenoid_len / (a * L_0 * exp (-a * x / solenoid_len))); }

Esto conduce a una espiral mucho más circular que en mi prueba de movimiento original. ¡Misión cumplida!

Paso 12: Preguntas y respuestas sobre el circuito del controlador utilizando componentes discretos

¿Por qué no puedo conectar el solenoide directamente al Arduino?

Es una cuestión de cuánta corriente puede proporcionar Arduino sin sufrir daños. Esto es aproximadamente 40 mA por pin. Sabiendo que el Arduino opera a 5V, podemos usar la ley de Ohm para calcular la resistencia mínima requerida de la carga (en este caso, el solenoide). Dividir 5 voltios por 0.040 amperios nos da 125 ohmios. Si la carga tiene una mayor resistencia, podemos conectarla directamente al Arduino, de lo contrario no podemos. Un pequeño solenoide generalmente tiene una resistencia de 50 ohmios, por lo que no podemos conducirlo directamente desde el Arduino. Si lo hiciéramos, extraería 100 mA, lo que claramente es demasiado.

¿Por qué usa 9V para el solenoide, pero 5V para el Arduino?

El Arduino funciona a 5 V, pero esto es demasiado poco para un solenoide. El uso de un transistor nos permite elegir un voltaje para el solenoide que es independiente de los 5V utilizados para Arduino.

¿Cómo sé si un transistor es adecuado para este proyecto?

Al igual que el Arduino, el requisito principal es que la corriente que fluye a través del solenoide no exceda las clasificaciones máximas para el transistor (en particular, la corriente del colector). Podemos calcular fácilmente el peor de los casos midiendo la resistencia del solenoide y luego dividiendo el voltaje de suministro por eso. En el caso de una corriente de suministro de 9 V para los solenoides y una resistencia del solenoide de 50 ohmios, el peor de los casos nos sitúa en 180 mA. El MPS3704, por ejemplo, está clasificado para una corriente máxima de colector de 600 mA, lo que nos da un margen de aproximadamente 3.

¿Cómo determino el valor mínimo de la resistencia para poner entre la salida del Arduino y la base del transistor?

La salida del Arduino conectará la pata base de los transistores bipolares a través de una resistencia limitadora de corriente. Dado que el Arduino funciona a 5 V, podemos usar nuevamente la ley de Ohm para calcular la resistencia requerida para limitar la corriente por debajo de 40 mA. Es decir, divida 5 voltios por 0,04 amperios para obtener un valor de al menos 125 ohmios. Los valores de resistencia más altos disminuirán la corriente, lo que nos dará un margen de seguridad aún mayor.

¿Existe un valor máximo para esa resistencia que no debería superar?

Resulta que sí. Un transistor tiene lo que se conoce como ganancia de corriente. Por ejemplo, si la ganancia es 100, significa que si ponemos 1 mA en la base, entonces fluirán hasta 100 mA a través de la carga que el transistor está controlando. Si colocamos 1.8mA en la base, entonces fluirán hasta 180mA a través de la carga. Como calculamos anteriormente que a 9 V, 180 mA fluyen a través del solenoide, entonces una corriente base de 1.8 mA es el "punto óptimo", y menos y nuestro solenoide no se encenderá por completo.

Sabemos que el Arduino emite 5V y queremos que fluyan 1.8mA de corriente, por lo que usamos la ley de Ohm (R = V / I) para calcular la resistencia (R = V / I). 5V dividido por 1.8mA da una resistencia de 2777 ohmios. Entonces, dadas las suposiciones que hicimos, esperamos que la resistencia tenga que estar entre 125 y 2777; elegir algo como 1000 ohmios nos da un margen de seguridad bastante bueno de cualquier manera.

Paso 13: Análisis de problemas actuales y posibles soluciones

Análisis de problemas actuales y posibles soluciones
Análisis de problemas actuales y posibles soluciones

El prototipo actual muestra potencial, pero persisten varios problemas:

  1. El movimiento a lo largo de los ejes X e Y no parece ser perpendicular.
  2. Hay un salto cuando el espejo cambia de dirección.
  3. La resolución es bastante baja y hay patrones de escalones visibles.
  4. A velocidades de movimiento más altas, la trayectoria del láser se distorsiona por vibraciones y timbres.

El problema 1) puede deberse al diseño de las bisagras flexibles impresas en 3D que transmiten movimiento a lo largo de un eje al eje perpendicular.

El problema 2) se debe a una holgura en el acoplamiento entre los pistones impulsores y la plataforma del espejo, esto hace que el espejo se mueva bruscamente y salte en las transiciones entre los ejes X e Y. Este movimiento repentino conduce a un espacio en forma de X oscurecido donde el punto láser está haciendo un movimiento incontrolado más rápido.

El problema 3) ocurre porque el Arduino PWM predeterminado solo tiene 255 niveles y algunos de ellos se desperdician debido a la forma de la curva de voltaje. Esto podría mejorarse significativamente mediante el uso de timer1, que es de 16 bits y sería capaz de 65536 valores únicos.

El problema 4) ocurre porque el espejo y la armadura deslizante del solenoide (pistones) constituyen una cantidad significativa de masa en movimiento.

Como los problemas 1) y 2) están relacionados con el diseño mecánico, una posibilidad puede ser quitar los pistones metálicos y reemplazarlos con pequeños imanes de tierras raras que se fijan directamente a la placa basculante. Los solenoides serían una bobina abierta que atraería o repelería los imanes sin hacer contacto físico. Esto conduciría a un movimiento más suave y eliminaría la posibilidad de sacudidas, al tiempo que reduciría la masa total.

Reducir la masa es la solución principal para el problema 4), pero cualquier problema restante podría abordarse directamente en el software mediante la implementación de un perfil de control de movimiento en el software para acelerar y desacelerar el espejo de manera controlada. Esto ya se hace ampliamente en el firmware de la impresora 3D y métodos similares también podrían funcionar aquí. A continuación, se muestran algunos recursos relacionados con el control de movimiento que se aplica a las impresoras 3D:

  • "Matemáticas de los perfiles de control de movimiento", Chuck Lewin (enlace)
  • "Explicación del movimiento controlado por tirones", (enlace)

Sospecho que agregar un perfil de control de movimiento trapezoidal permitiría que el espejo se manejara a velocidades mucho más altas sin ruidos o artefactos de vibración.

Paso 14: Trabajo futuro y posibles aplicaciones

Aunque desarrollar soluciones a estos problemas requerirá una cantidad considerable de trabajo, tengo la esperanza de que este módulo de dirección de haz de código abierto pueda convertirse en una alternativa asequible a los proyectos basados en galvanómetros en aplicaciones tales como:

  • Un espectáculo láser económico para DJ y VJ.
  • Una pantalla vectorial electromecánica para un juego de arcade clásico como el Vectrex.
  • Una impresora 3D SLA tipo resina de bricolaje que, en el espíritu del movimiento RepRap, puede imprimir su propio módulo de dirección láser.
  • Panorámica digital o estabilización óptica de imagen para cámaras.
Concurso Arduino 2017
Concurso Arduino 2017
Concurso Arduino 2017
Concurso Arduino 2017

Segundo premio en el concurso Arduino 2017

Recomendado: