Tabla de contenido:

Herramienta de medición de velocidad de avance CNC hecha de chatarra: 5 pasos
Herramienta de medición de velocidad de avance CNC hecha de chatarra: 5 pasos

Video: Herramienta de medición de velocidad de avance CNC hecha de chatarra: 5 pasos

Video: Herramienta de medición de velocidad de avance CNC hecha de chatarra: 5 pasos
Video: 🔧GUIA HERRAMIENTAS DE TORNO (FACIL)#mecanizado 2024, Mes de julio
Anonim
Herramienta de medición de velocidad de avance CNC hecha de chatarra
Herramienta de medición de velocidad de avance CNC hecha de chatarra

¿Alguien ha querido medir la velocidad de avance real en una máquina CNC? Probablemente no, hasta que las brocas de fresado estén intactas después de un trabajo de CNC … pero cuando comiencen a romperse de forma regular, tal vez sea el momento de investigar. En este instructivo, puede seguir una búsqueda para determinar la velocidad de alimentación real de una máquina CNC. Cubrirá la parte de ingeniería inversa de una impresora, firmware arduino, software de PC y los resultados que obtuve con la ayuda de mis colegas, y una basura convertida en tesoro.

Paso 1: materiales, herramientas y dispositivos utilizados para poner en marcha el proyecto

Cuando comencé a trabajar en esto, pensé en una breve lista de las cosas que necesitaremos:

  • mecanismo de carro de impresora desmontado
  • herramientas de mano para modificar eso
  • soldador, soldadura, alambres
  • multimetro
  • osciloscopio o analizador lógico: esto no es absolutamente necesario
  • fuente de alimentación
  • microscopio
  • Pinout Arduino nano +
  • PC con Arduino IDE, Visual Studio 2008 Express + MS Charting tools instaladas
  • (MPU6050 - Terminé sin usar esto)
  • dispuesto a buscar todo lo que no sabe cómo hacer

Al principio, pensé que una placa MPU6050 me permitiría medir la velocidad de alimentación en los tres ejes a la vez. Teniendo el acelerómetro dentro, estaba seguro de que sumar los datos del acelerómetro me daría el valor deseado: la velocidad en cada eje. Después de descargar y modificar un fragmento de Arduino que mostraba datos sin procesar en el monitor en serie, escribí un pequeño programa para PC en Visual Studio que procesaba los datos y los trazaba en un gráfico para facilitar la interpretación. Tuve que descargar Visual Studio C # Express 2008 y las herramientas de gráficos para esto.

Después de codificar un rato y buscar todas las cosas que necesitaba para la comunicación en serie, terminé con los valores graficados, pero no importa lo que hiciera, no era utilizable. Los movimientos pequeños pero repentinos resultarían en picos enormes, mientras que los viajes más largos ni siquiera aparecerían en las listas. Después de dos días de martillar la MPU6050, finalmente me di por vencido y recurrí a otra cosa: un mecanismo de retroalimentación de posición de la impresora desmontado.

Paso 2: Cosas de hardware que debían hacerse

Cosas de hardware que debían hacerse
Cosas de hardware que debían hacerse
Cosas de hardware que debían hacerse
Cosas de hardware que debían hacerse
Cosas de hardware que debían hacerse
Cosas de hardware que debían hacerse
Cosas de hardware que debían hacerse
Cosas de hardware que debían hacerse

Ingeniería inversa

Por supuesto, el mecanismo de la impresora no tenía un número de pieza que pudiera haber usado para determinar sus propiedades exactas, era necesario un poco de ingeniería inversa para llegar a donde queríamos. Después de examinar de cerca el mecanismo y la electrónica, decidí que lo primero tenía que ser la identificación de los pines del sensor óptico. Esto tenía que hacerse para interconectar todo con Arduino. Desmonté la pieza de plástico negro, extraje el PCB y examiné el sensor: tenía escrito ROHM RPI-2150. Eso me hizo feliz, tenía muchas esperanzas de encontrar una hoja de datos. Desafortunadamente, esta es una pieza antigua o personalizada; no había ninguna hoja de datos en ninguna parte de la web. Esto significó que tuve que tomar el asunto en mis propias manos: sabiendo que estos sensores generalmente tienen un LED infrarrojo y dos fototransistores adentro, agarré un multímetro, lo puse en modo de medición de diodos y comencé a medir entre pines.

Los pines de alimentación suelen ser fáciles de encontrar: tendrán condensadores a través de ellos y, por lo general, están conectados con trazos anchos en los PCB-s. Las trazas de tierra a menudo se conectan a múltiples almohadillas para un mejor rechazo del ruido.

Sin embargo, los pines de entrada y salida no son tan triviales. Al medir a través de un diodo, el medidor mostrará su voltaje directo en una dirección y la sobrecarga (infinita) en la otra. Pude identificar cuatro diodos entre los pines, llegué a la conclusión de que el cuarto diodo debe ser algún tipo de diodo Zener o TVS, ya que estaba justo entre los pines de alimentación del componente. Localizar el emisor de infrarrojos fue fácil, había una resistencia 89R en serie con él. Me quedé con dos mediciones de diodos en los dos pines restantes, esos tenían que ser los dos receptores.

Nota: Estos sensores tienen dos receptores para poder determinar la dirección del movimiento además de determinar la posición contando los pulsos. Estas dos formas de onda de salida están desfasadas 90 °, esto se usa para producir un pulso de conteo ascendente o descendente. Siguiendo el número de estos pulsos, se puede determinar la posición exacta del cabezal de impresión.

Cuando se ubicaron el emisor y los dos receptores, soldé cables en sus pines para poder conectar el sensor con el Arduino. Antes de hacer eso, suministré al sensor 3.3V, tiré de la tira entre el sensor un par de veces y observé la onda cuadrada en las salidas. La frecuencia de la onda cuadrada variaba con la velocidad de movimiento, y llegué a la conclusión de que el sistema de medición ya está listo para conectarse al Arduino.

Conectando el Arduino

Conectar este nuevo 'sensor' es muy fácil. Simplemente conecte las salidas del sensor a D2 y D3 (pines con capacidad de interrupción), y las líneas de suministro de energía, y la codificación puede comenzar.

Paso 3: Codificación Arduino

Codificación Arduino
Codificación Arduino

El código Arduino es bastante simple. Asigné una función que se ejecuta cada vez que D2 ve un borde ascendente, esta es la función transcurrida del código Arduino que adjunté. Si observa las señales de un codificador cuadrático, verá esto:

  • en una dirección, la fase A es lógica alta en cada flanco ascendente de la fase B
  • en la otra dirección, la fase A es lógica baja en cada flanco ascendente de la fase B

Esta fue la propiedad del codificador que aproveché: dado que la función transcurrido se ejecuta cada vez que D2 tiene un flanco ascendente, simplemente escribí un if que incrementa un contador cuando D3 es alto y lo disminuye cuando D3 es bajo. Esto funcionó en el primer intento, envié el valor del contador al monitor en serie y lo vi aumentar / disminuir cuando moví el cabezal de la impresora en el eje.

En pocas palabras, el firmware hace lo siguiente en la función de bucle:

  1. comprueba el búfer de recepción en serie en busca de datos entrantes
  2. si hay datos entrantes, verifique si es un '1' o no
  3. si es un '1', significa que el software de la PC está solicitando el valor del contador
  4. enviar el valor del contador a la PC a través de serie
  5. empezar de nuevo en 1.

Con esto, la pelota está ahora en la cancha del software para PC. ¡Entremos en eso!

Paso 4: software Visual Studio C #

El propósito del programa VS C # era cambiar la carga computacional del Arduino a la PC. Este software recibe los datos que proporciona Arduino, calcula y muestra la velocidad en forma de gráfico.

Lo primero que hice fue buscar en Google cómo hacer una comunicación en serie en C #. Encontré mucha buena información en MSDN.com junto con un buen ejemplo, luego simplemente tiré lo que no necesitaba, básicamente todo excepto la parte de lectura. Configuré el puerto COM y la velocidad para que coincidieran con la del Arduino, luego solo lo intenté y volqué todo lo que venía en el puerto serie en un cuadro de texto de varias líneas.

Después de leer los valores, pude usar las funciones de lectura y división para aislar una medida entre sí y de los caracteres delimitadores. Estos se trazaron en un control Chart y los valores comenzaron a aparecer en la pantalla.

Si no puede ver el control Chart en su caja de herramientas VS, puede buscar en Google el problema y encontrar la solución aquí (busque la respuesta n. ° 1): enlace

El principio de medición

Para encontrar la conexión entre el número de recuentos y la distancia que recorre el cabezal, pusimos a cero el valor del recuento, movimos el cabezal de la impresora 100 mm a mano y observamos el cambio en los recuentos. Finalmente se nos ocurrió la siguiente proporción: 1 recuento = 0,17094 mm.

Dado que podemos consultar la distancia y podemos medir el tiempo entre las muestras, podemos calcular la velocidad a la que ocurre el cambio de posición, ¡podemos calcular la velocidad!

Hay un tiempo de software aproximado de 50 ms gracias a TMR0, pero observamos que estos tiempos no eran demasiado precisos. De hecho, después de algunas mediciones de velocidad del software, descubrimos que los 50ms cronometrados no son 50ms en absoluto. Esto significaba que las muestras no se tomaron a intervalos fijos, por lo que el cálculo de la velocidad tampoco podía utilizar una base de tiempo fija. Una vez que encontramos este problema, fue fácil seguir adelante: tomamos la diferencia en la distancia y la diferencia en el tiempo y calculamos la velocidad como D_distance / D_time (en lugar de D-distance / 50ms).

Además, debido a que nuestra ecuación devolvería la velocidad en unidades de mm / 50ms, necesitamos multiplicar esto por 1200 para obtener la distancia que recorrería la cabeza en un minuto, en [mm / minuto].

Nota: el software de control de fresado CNC Mach 3 define las velocidades de avance en unidades de [mm / minuto]

Filtración

A partir de este momento, las mediciones parecieron ser bastante precisas, pero hubo algo de ruido en la señal medida. Sospechamos que esto se debía a inconsistencias mecánicas en el eje, acoplamiento del eje, etc., así que decidimos filtrarlo, para obtener un buen valor medio de lo que se mide.

Ajustes finos del software

Para cambiar la frecuencia de muestreo y la frecuencia de filtrado durante el tiempo de ejecución, se agregaron barras de desplazamiento, una para cada una. Además, también se introdujo la capacidad de ocultar las parcelas.

Paso 5: resultados

Resultados
Resultados
Resultados
Resultados
Resultados
Resultados
Resultados
Resultados

Después de que las partes de hardware y software estuvieron listas, ejecutamos tres conjuntos de mediciones con mach 3 + my software, puede ver los resultados en las imágenes adjuntas. Los experimentos posteriores mostraron una mejor precisión, con un aumento de las frecuencias de filtro y de muestreo. Los gráficos muestran la velocidad medida en rojo sólido y el promedio en azul punteado con guiones.

Dicho esto, parece que Mach 3 maneja estos ajustes de velocidad con bastante precisión, pero ahora lo sabemos con certeza:)

¡Espero que hayas disfrutado de este breve instructivo sobre ingeniería inversa y conversión del agua en vino!

¡Salud!

Recomendado: