Tabla de contenido:
- Suministros
- Paso 1: los codificadores ópticos
- Paso 2: Piezas impresas en 3D
- Paso 3: diagrama de cableado
- Paso 4: Código Arduino
- Paso 5: primer escaneo
Video: Escáner de punto XYZ con codificadores rotativos recuperados: 5 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:41
Habiendo adquirido una gran cantidad de codificadores ópticos rotativos desechados de mi lugar de trabajo, finalmente decidí hacer algo divertido / útil con ellos.
Recientemente compré una nueva impresora 3D para mi hogar y ¡qué podría complementarla mejor que un escáner 3D! Este proyecto también me brindó la oportunidad perfecta de emplear mi impresora 3D para fabricar las piezas necesarias.
Suministros
Encoders ópticos y sensores ópticos correspondientes
Arduino UNO
escudo de creación de prototipos opcional
rieles de barra de acero
acceso a una impresora 3D
Paso 1: los codificadores ópticos
Casi cualquier codificador rotatorio podría usarse para este proyecto, siempre que le proporcione un número relativamente alto de 'clics' por mm. Obviamente, diferentes codificadores requerirán una solución de montaje adecuada.
Usé un medidor de continuidad para rastrear el diagrama de cableado de los fotosensores.
Paso 2: Piezas impresas en 3D
Estas partes albergan los codificadores rotativos y proporcionan un deslizamiento para el riel. La carcasa del codificador único tiene dos orificios en la parte posterior para que se monten los rieles transversales. La carcasa del codificador doble es simplemente dos carcasas individuales fusionadas en ángulo recto.
Diseñé estos soportes en fusion360 para que se adapten a mi elección de codificadores y rieles, el eje del codificador tiene un trozo corto de funda de goma de tirachinas, para ayudarlo a sujetar mejor el eje de acero inoxidable.
Desea que el eje se deslice libremente y caiga a través de la carcasa cuando se sostiene verticalmente, pero debe ejercer suficiente presión sobre el codificador para que no se deslice. Lo que funcionó para mí fue permitir que la corredera del eje se superpusiera con el eje del codificador en 0,5 mm. La goma de tirachinas es lo suficientemente suave como para deformarse en esa cantidad y proporcionar una buena tracción.
Paso 3: diagrama de cableado
El circuito es muy sencillo. Los opto-sensores requieren algo de corriente para los diodos emisores de infrarrojos, una tierra y resistencias pull-up para los fotodiodos.
Me decidí por 5 mA para los diodos emisores en serie, en este codificador en particular, la caída de voltaje en los diodos es de 3,65 V. Estoy usando un suministro de 5V del Arduino, que deja 1.35V para la resistencia, a 5mA esto resulta ser 270 ohmios.
Se seleccionaron 10k ohmios para los pull-ups ya que los fotodiodos solo pueden absorber una pequeña corriente, también se usaron 10k ohmios para el botón pulsador. Hay un botón disponible para usar en la placa prototipo que ya está conectada a tierra, solo proporcione una resistencia pull-up y conéctela al pin de entrada deseado.
Paso 4: Código Arduino
El código necesita una pequeña explicación ya que su funcionamiento puede no ser obvio de inmediato, sin embargo, tuvo que optimizarse de esta manera para poder procesar 3 codificadores con la suficiente rapidez.
En primer lugar, solo queremos procesar datos de dirección SI ha habido un cambio en la posición del codificador.
cambios = nuevo_valor ^ valor almacenado;
Para obtener más resolución de mis codificadores, tuve que procesar los bordes ascendentes y descendentes.
En mi configuración, mi resolución es de 24 clics por 1 cm.
Esto nos deja con algunos escenarios.
S1 es constante 0 y S2 cambia de 0 a 1
S1 es constante 0 y S2 cambia de 1 a 0
S1 es constante 1 y S2 cambia de 0 a 1
S1 es constante 1 y S2 cambia de 1 a 0
S2 es constante 0 y S1 cambia de 0 a 1
S2 es constante 0 y S1 cambia de 1 a 0
S2 es constante 1 y S1 cambia de 0 a 1
S2 es constante 1 y S1 cambia de 1 a 0
Estas condiciones se entienden mejor en las tablas de verdad anteriores, también cada condición produce una 'dirección', arbitrariamente nombrada 0 o 1.
Los gráficos nos dan dos pistas vitales:
1) un gráfico es el inverso completo del otro, por lo que si tenemos uno, podemos calcular fácilmente el otro simplemente invirtiendo la salida. Invertimos la salida solo si un pin está cambiando y no el otro, podemos elegir uno arbitrariamente.
2) el gráfico en sí es simplemente el XOR de las señales S1 y S2. (el otro cuadro es el NO de este).
Ahora entender el código es simple.
// leer en PORT en paralelo // recordar que los pares adyacentes pertenecen al mismo estado del codificador = PINB & 0x3f; // qué pines han cambiado si cualquier diff = hold ^ state; // XOR señales adyacentes de S1 y S2 para obtener la tabla de verdad // la forma más fácil es hacer una copia del estado actual // y desplazarla hacia la derecha un bit lookup = state >> 1; // ahora los bits están alineados para XOR dir = lookup ^ state; // recuerde, la tabla debe invertirse si una // de las entradas permaneció constante, no necesitamos una instrucción IF // para esto. Actualmente, el bit de dirección deseado // es el bit de la mano derecha de cada par en la variable 'dir' // el bit de la mano izquierda no tiene sentido // la variable 'diff' tiene el bit que cambió 'set' // así que tenemos '01' o '10' // XOR esto con el byte 'dir' o // invertirá o no el bit significativo. dir ^ = diff; // ahora actualiza la variable de retención hold = state; // si alguno de los bits ha cambiado para este codificador if (diff & 0x03) {// determina la dirección if (dir & 0x01) {// según su hadware y cableado ya sea ++ o - --z; } más {++ z; }} // lo mismo para el resto if (diff & 0x0c) {if (dir & 0x04) {++ y; } else {--y; }} if (diff & 0x30) {if (dir & 0x10) {--x; } más {++ x; }}
Cuando se presiona el botón, enviamos el valor XYZ actual a un programa de terminal.
Los datos en serie son lentos, pero durante el funcionamiento normal las posiciones de los codificadores no cambiarán durante este tiempo de todos modos.
Los datos se envían como recuentos sin procesar. Podrías hacer los cálculos y enviar los datos en mm o pulgadas, etc. Encuentro que los valores brutos son igual de buenos porque podemos escalar el objeto más adelante en el software.
Paso 5: primer escaneo
Reunir los puntos es un proceso lento, suelo la sonda en la esquina superior izquierda y reinicio el Arduino.
Esto pone a cero la posición como hogar.
Luego mueva la sonda a la ubicación del objetivo, manténgala firme y presione el botón 'instantánea'.
Para esta pieza de muestra bastante grande, tomé solo ~ 140 puntos, por lo que los detalles no son excelentes en el producto final.
Guarde los datos en un archivo. PCD y agregue el encabezado
#. PCD v.7 - Formato de archivo de datos de nube de puntos VERSIÓN.7 CAMPOS x y z TAMAÑO 4 4 4 TIPO F F F RECUENTO 1 1 1 ANCHO (su recuento de puntos) ALTURA 1 PUNTO DE VISTA 0 0 0 1 0 0 0 PUNTOS (su recuento de puntos)
Ponga su cuenta de puntos en el encabezado, esto es fácil en cualquier editor que le proporcione números de línea.
Por encima de los puntos se pueden ver en freeCad, luego se exportan desde freeCad como archivo. PLY.
Abra. PLY en MeshLab y muestre el objeto. ¡¡Hecho!!
Recomendado:
Punto a punto Atari Punk Console One and a Half: 19 pasos
Punto a punto Atari Punk Console One and a Half: ¡¿Qué ?! ¿Otra compilación de la consola Atari Punk? Espera, espera, espera, gente, esta es diferente, lo prometo. Waaay allá por 1982, Forrest Mims, escritor de folletos de Radio Shack y creacionista de la Tierra Joven (emoji de poner los ojos en blanco) publicó los planes de su Stepped Tone Genera
Modelo de ferrocarril sencillo automatizado punto a punto: 10 pasos (con imágenes)
Modelo de ferrocarril de punto a punto automatizado simple: los microcontroladores Arduino son excelentes para automatizar los diseños de modelos de ferrocarril. La automatización de diseños es útil para muchos propósitos, como colocar su diseño en una pantalla donde la operación de diseño se puede programar para ejecutar trenes en una secuencia automatizada. El l
Circuito crossfader punto a punto: 16 pasos (con imágenes)
Circuito de crossfader punto a punto: este es un circuito de crossfader. Acepta dos entradas y se desvanece entre ellas, siendo la salida una mezcla de las dos entradas (o solo una de las entradas). ¡Es un circuito simple, muy útil y fácil de construir! Invierte la señal que lo atraviesa
Modelo de ferrocarril simple automatizado punto a punto con dos trenes: 13 pasos (con imágenes)
Ferrocarril modelo punto a punto automatizado simple que ejecuta dos trenes: los microcontroladores Arduino son una excelente manera de automatizar los diseños de ferrocarriles modelo debido a su disponibilidad de bajo costo, hardware y software de código abierto y una gran comunidad para ayudarlo. Para modelos de ferrocarriles, los microcontroladores Arduino pueden resultar un gr
Modelo de ferrocarril punto a punto automatizado con revestimiento de patio: 10 pasos (con imágenes)
Ferrocarril modelo punto a punto automatizado con revestimiento de patio: los microcontroladores Arduino abren grandes posibilidades en el ferrocarril modelo, especialmente cuando se trata de automatización. Este proyecto es un ejemplo de tal aplicación. Es una continuación de uno de los proyectos anteriores. Este proyecto consta de un punto