Tabla de contenido:
- Paso 1: Recursos utilizados
- Paso 2: Acerca de los husillos: ¿qué son?
- Paso 3: Acerca de los husillos: roscas individuales y de bola
- Paso 4: Acerca de los husillos: aplicaciones
- Paso 5: Acerca de los husillos - Parámetros
- Paso 6: Acerca de los husillos - Paso (desplazamiento y velocidad)
- Paso 7: Montaje
- Paso 8: Montaje - Materiales
- Paso 9: Montaje - Paso 01
- Paso 10: Montaje - Paso 02
- Paso 11: Montaje - Paso 03
- Paso 12: Montaje - Paso 04
- Paso 13: Montaje - Electrónica
- Paso 14: Esquema eléctrico
- Paso 15: Código fuente
- Paso 16: Acerca de los husillos: configuraciones de la máquina
- Paso 17: Marlin
- Paso 18: GRBL
- Paso 19: Vea más de mi trabajo:
Video: Arduino Uno con husillo y motor de paso: 19 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:43
Hoy vamos a hablar de un tema muy importante en mecánica y mecatrónica: los elementos de las máquinas. En este artículo, abordaremos específicamente los ejes, presentando algunas características y aplicaciones interesantes. Aún así, demostraremos algunas formas de calcular el movimiento provocado por un husillo y presentaremos un conjunto de prueba.
Realicé el montaje a continuación, por tanto, que expone el avance de un husillo de 2 mm y otro de 8 mm. Estos husillos TR8 que estoy usando se usan comúnmente en pequeños enrutadores e impresoras 3D, especialmente en el eje Z. Recordando que al dominar algunos conceptos sobre los que trabajaremos aquí, podrás diseñar cualquier tipo de máquina.
Paso 1: Recursos utilizados
- Eje trapezoidal de 8 mm de diámetro y paso de 2 mm
- Husillo trapezoidal de 8 mm de diámetro y 8 mm de paso
- Castaño con brida de husillo 8x2
- Castaño con brida de husillo 8x8
- Rodamientos para husillos de 8 mm de diámetro
- Guía cilíndrica lineal de 10 mm de diámetro
- Rodamientos de rodillos cilíndricos para guías de 10 mm
- Soportes para guías cilíndricas de 10 mm
- Motores NEMA 17
- Acoplamientos de eje
- Arduino Uno
- Controlador DRV8825
- Teclado matricial 4x4
- Pantalla Nokia 5110
- Piezas de plástico diversas
- Tornillos y nueses
- Base de madera
- Fuente de alimentación externa de 12V
Paso 2: Acerca de los husillos: ¿qué son?
Los husillos son elementos de las máquinas, como los tornillos. Es decir, son barras rectas formadas por hilos de pasos continuos. Se utilizan en mecanismos que requieren movimiento y posicionamiento lineal. Pueden ejercer altas fuerzas de tracción y compresión y transmitir par. Permiten el movimiento con bloqueo automático. Pueden construirse de diferentes materiales, siendo los más habituales el aluminio y el acero.
Como las empresas chinas están fabricando los husillos trapezoidales, le sugiero que obtenga este tipo de producto en lugar del conocido perno de tuerca. Esto se debe al precio más atractivo y al arrastre, que considero espantoso.
En la foto pongo el mejor husillo que tiene, en mi opinión, que es el husillo de bolas recirculantes. Suele estar hecho de un acero muy duro, y las bolas giran a su alrededor, dentro de la castaña. Además de la precisión que es genial, también destaco la durabilidad, ya que este tipo de husillo puede reproducir miles de millones de movimientos sin dañar el mecanismo. Una opción más económica, que es la que usamos aquí, es el husillo trapezoidal.
Paso 3: Acerca de los husillos: roscas individuales y de bola
Los husillos de bolas, en la foto de la izquierda, tienen canales semicirculares por donde ruedan las bolas. Son relativamente más caros y tienen baja fricción en comparación con los husillos de un solo tornillo, lo que conduce a un rendimiento mucho mayor (fricción de rodadura).
Los husillos de un solo hilo en el lado derecho de la imagen suelen tener perfiles trapezoidales, ya que esta geometría es más apropiada para aplicar fuerzas en la dirección axial y una transmisión suave del movimiento. Son relativamente económicos y tienen una alta fricción en comparación con los husillos de bolas de recirculación, lo que conduce a un bajo rendimiento, es decir, fricción por deslizamiento.
Paso 4: Acerca de los husillos: aplicaciones
Los husillos se pueden aplicar a cualquier mecanismo donde se requiera un movimiento lineal. Son ampliamente utilizados en la industria en maquinaria y procesos.
Algunas aplicaciones incluyen:
- Elevadores de carga
- Prensas
- Fresas y tornos
- Equipo CNC
- Máquinas para envolver
- Impresoras 3D
- Equipos de corte y corte por láser
- Procesos industriales
- Sistemas de posicionamiento y movimiento lineal
Paso 5: Acerca de los husillos - Parámetros
Hay varias características de un husillo que deben tenerse en cuenta al diseñar un mecanismo. Además de su diámetro y paso, es necesario reconocer su resistencia a la compresión, su momento de inercia (resistencia al cambio en su estado rotacional), material constructivo, la velocidad de rotación a la que será sometido, sentido de operación (horizontal o vertical), la carga aplicada, entre otros.
Pero, a partir de mecanismos ya construidos, podemos intuir varios de estos parámetros.
Reconozcamos algún bien común. Comencemos con STEP.
Paso 6: Acerca de los husillos - Paso (desplazamiento y velocidad)
Determina la longitud recorrida por la tuerca en cada revolución. Suele expresarse en mm / revolución.
Un husillo de 2 mm por revolución provocará un desplazamiento de 2 mm en cada vuelta que realice el husillo. Influirá en la velocidad lineal de la tuerca, ya que con el aumento de la velocidad de rotación aumentará el número de revoluciones por unidad de tiempo y en consecuencia también la distancia recorrida.
Si un giro de 2 mm por revolución gira a 60 RPM (una revolución por segundo), la tuerca se moverá a 2 mm por segundo.
Paso 7: Montaje
En nuestro montaje, tengo dos motores y nuestro teclado con la pantalla, que parecía una calculadora, porque les hice una cubierta en la impresora 3D. En la pantalla de Nokia tenemos las siguientes opciones:
F1: Media luna - Fuso pasa de la posición actual a la posición que yo determine
F2: Descendente - Girar
F3: Velocidad - ¿Puedo cambiar el ancho del pulso?
F4: ESC
Paso 8: Montaje - Materiales
A - Guías lineales de 10 mm
B - Husillos trapezoidales de pasos 2 y 8 mm
C - Base de perforación
D - Cojinetes para husillos
E - Soportes de guía
F - Castañas
G - Cojinetes
H - Acoplamientos
I - Motores
J - Varias piezas de plástico (cursores, soportes de motor, cuñas, soporte de teclado y pantalla
Paso 9: Montaje - Paso 01
Tras el taladrado de la base (C), montamos los dos motores (I). Para sujetarlos utilizamos soportes realizados en la impresora 3D (J). No apriete ninguno de los tornillos en este paso de posicionamiento. Esto permitirá los ajustes necesarios en el paso de alineación.
Paso 10: Montaje - Paso 02
Continuando con la perforación de la base (C), coloque los rieles de guía (E) y los cojinetes (D). Detalle de la cuña de plástico (J) utilizada para ajustar las alturas de los cojinetes.
Paso 11: Montaje - Paso 03
Creamos un cursor usando una pieza impresa para conectar el rodamiento (G) a la tuerca (F). Usamos dos cursores, uno a la derecha y otro a la izquierda. Su función es indicar la posición en una escala siempre que queramos determinar el desplazamiento provocado por el husillo.
Paso 12: Montaje - Paso 04
Insertar la guía (A) y el husillo (B) en su respectivo rodamiento (D) y soporte (E), frente al motor, luego insertar la guía y el husillo en el rodamiento (G) y la castaña (F) y en el punta del husillo también insertamos el acoplador (H). Los llevamos a ambos hasta que lleguen a sus puntos finales (apoyo y motor opuestos).
Apriete ligeramente los tornillos para permitir un ajuste posterior. Repita el procedimiento utilizando la guía y el eje restantes. Con todos los componentes posicionados, realizamos el alineamiento de las piezas, finalizando la etapa de montaje mecánico.
Paso 13: Montaje - Electrónica
Usando un soporte de plástico impreso, aseguramos la pantalla del Nokia 5110 y un teclado matricial 4x4. En el espacio inferior del stand residirá el Arduino Uno, el controlador DRV8825.
Utilizando la perforación disponible en la base, sujetamos el conjunto.
Paso 14: Esquema eléctrico
El diagrama de cableado es sencillo. Tenemos el DRV8825 y los mismos dos espejos 17, es decir, el mismo paso que enviamos a uno va a otro. Lo que cambia es que en uno de los motores tengo un husillo de 8 mm y en el otro un husillo de 2 mm. Obviamente, entonces, que el primero, con husillo de 8 mm, va más rápido. Aún en el diagrama están la pantalla y el teclado 4x4, que tiene que ser matricial.
Paso 15: Código fuente
Inclusión de bibliotecas y creación de objetos
Tenemos aquí un Lib que hice, que es StepDriver.h. Está preparado para los controladores 8825, 4988 y también TB6600. Creo en este paso el objeto DRV8825, el d1.
// Biblioteca responsável por capturar a tecla que foi pressionada no teclado # include // Biblioteca responsável pelos graficos do display #include // Biblioteca responsável pela comunicacao do display #include // Configuracao de pinos do Display // pin 6 - Serial clock out (SCLK) // pin 5 - Salida de datos en serie (DIN) // pin 4 - Selección de datos / comando (D / C) // pin 3 - Selección de chip LCD (CS / CE) // pin 2 - Restablecimiento de LCD (RST) Pantalla Adafruit_PCD8544 = Adafruit_PCD8544 (6, 5, 4, 3, 2); // Biblioteca de motor de passo #include // Instancia o driver DRV8825 DRV8825 d1;
Constantes y variables globales
En esta parte del código trato la matriz, que enseñé en otra videolección (LINK KEYBOARD). Aún así, estoy hablando del objeto Teclado, además de la distancia y la velocidad.
const byte LINHAS = 4; // número de linhas do tecladoconst byte COLUNAS = 4; // número de colunas do teclado // define uma matriz com os símbolos que deseja ser lido do teclado char SIMBOLOS [LINHAS] [COLUNAS] = {{'A', '1', '2', '3'}, { 'B', '4', '5', '6'}, {'C', '7', '8', '9'}, {'D', 'c', '0', 'e '}}; byte PINOS_LINHA [LINHAS] = {A2, A3, A4, A5}; // pinos que indicam as linhas do teclado byte PINOS_COLUNA [COLUNAS] = {0, 1, A0, A1}; // pinos que indicam as colunas do teclado // instancia de Keypad, respondavel para capturar una tecla pressionada Keypad customKeypad = Keypad (makeKeymap (SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS); // variáveis resposnsáveis por armazenar o valor digitado char customKey; distancia larga sin signo = 0; velocidade largo sin firmar = 2000;
Función de lectura del teclado
En este paso tenemos el código referente a la pantalla, que trabaja la impresión creciente y decreciente.
// Funcao responsavel por ler o valor do usuario pelo teclado -------------------------------------- --- unsigned long lerValor () {// Escreve o submenu que coleta los valores no display display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (27, 2); display.setTextColor (BLANCO); display.print ("VALOR"); display.setTextColor (NEGRO); display.fillRect (0, 24, 21, 11, 2); display.setCursor (2, 26); display.setTextColor (BLANCO); display.print ("CLR"); display.setTextColor (NEGRO); display.setCursor (23, 26); display.print ("LIMPAR"); display.fillRect (0, 36, 21, 11, 2); display.setCursor (5, 38); display.setTextColor (BLANCO); display.print ("F4"); display.setTextColor (NEGRO); display.setCursor (23, 38); display.print ("VOLTAR"); display.setCursor (2, 14); display.display (); Valor de cadena = ""; char tecla = falso;
bucle esperando la tecla presionada
Aquí explicamos la programación de Loop, es decir, dónde ingresa los valores.
// Bucle infinito enquanto nao chamar o return while (1) {tecla = customKeypad.getKey (); if (tecla) {switch (tecla) {// Se teclas de 0 a 9 forem pressionadas case '1': case '2': case '3': case '4': case '5': case '6': caso '7': caso '8': caso '9': caso '0': valor + = tecla; display.print (tecla); display.display (); rotura; // Se tecla CLR foi pressionada case 'c': // Limpiar una cadena valor valor = ""; // Apaga o valor mostrar display.fillRect (2, 14, 84, 8, 0); display.setCursor (2, 14); display.display (); rotura; // Se tecla ENT foi pressionada case 'e': // Retorna o valor return valor.toInt (); rotura; // Pulse la tecla F4 (ESC) para presionar el caso 'D': return -1; predeterminado: descanso; }} // Limpa o char tecla tecla = false; }}
Función de accionamiento del motor
La función "mover" se trabaja en este paso. Obtengo el número de pulsos y la dirección y luego hago un "para".
// Funcao responsavel por mover o motor -------------------------------------- void mover (unsigned pulsos largos, bool direcao) {for (unsigned long i = 0; i <pulsos; i ++) {d1.motorMove (direcao); }}
configuración ()
Ahora muevo la pantalla y la configuración del controlador, e incluso coloco el anclaje dentro del código fuente para que sea más fácil. Inicializo ciertos valores y trato con los métodos que generan la configuración.
void setup () {// Configuracao mostrar ---------------------------------------- -------- display.begin (); display.setContrast (50); display.clearDisplay (); display.setTextSize (1); display.setTextColor (NEGRO); // Configuración del controlador DRV8825 ----------------------------------------- // pin GND - Habilitar (ENA) // pin 13 - M0 // pin 12 - M1 // pin 11 - M2 // pin 10 - Reset (RST) // pin 9 - Dormir (SLP) // pin 8 - Paso (STP)) // pin 7 - Dirección (DIR) d1.pinConfig (99, 13, 12, 11, 10, 9, 8, 7); d1.sleep (BAJO); d1.reset (); d1.stepPerMm (100); d1.stepPerRound (200); d1.stepConfig (1); d1.motionConfig (50, velocidade, 5000); }
loop () - 1a parte - Menú de dibujo
bucle void () {// Escreve o Menu do Programa no display ----------------------------------- display.clearDisplay (); display.fillRect (0, 0, 15, 11, 2); display.setCursor (2, 2); display.setTextColor (BLANCO); display.print ("F1"); display.setTextColor (NEGRO); display.setCursor (17, 2); display.print ("CRESCENTE"); display.fillRect (0, 12, 15, 11, 2); display.setCursor (2, 14); display.setTextColor (BLANCO); display.print ("F2"); display.setTextColor (NEGRO); display.setCursor (17, 14); display.print ("DECRESCENTE"); display.fillRect (0, 24, 15, 11, 2); display.setCursor (2, 26); display.setTextColor (BLANCO); display.print ("F3"); display.setTextColor (NEGRO); display.setCursor (17, 26); display.print ("VELOCIDADE");
loop () - Parte 2 - Menú de dibujo
display.fillRect (0, 36, 15, 11, 2); display.setCursor (2, 38); display.setTextColor (BLANCO); display.print ("F4"); display.setTextColor (NEGRO); display.setCursor (17, 38); display.print ("ESC"); display.display (); bool esc = falso;
loop () - Parte 3 - Ejecutando
// Loop enquanto a tecla F4 (ESC) nao for pressionada while (! Esc) {// captura a tecla pressionada do teclado customKey = customKeypad.getKey (); // caso alguma tecla foi pressionada if (customKey) {// Trata a tecla apertada switch (customKey) {// Se tecla F1 para pressionada case 'A': distancia = lerValor (); // Se tecla ESC foi pressionada if (distancia == -1) {esc = true; } else {// Escreve una tela "Movendo" no display display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (21, 2); display.setTextColor (BLANCO); display.print ("MOVENDO"); display.setTextColor (NEGRO); display.setCursor (2, 14); display.print (distancia); display.print ("Passos"); display.display ();
loop () - Parte 4 - Ejecutando
// Move o motor mover (distancia, LOW); // Volta ao menu esc = true; } rotura; // Se tecla F2 para el caso pressionada 'B': distancia = lerValor (); // Se tecla ESC foi pressionada if (distancia == -1) {esc = true; } else {// Escreve una tela "Movendo" no display display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (21, 2); display.setTextColor (BLANCO); display.print ("MOVENDO"); display.setTextColor (NEGRO); display.setCursor (2, 14); display.print (distancia); display.print ("Passos"); display.display ();
loop () - Parte 5 - Ejecutando
// Move o motor mover (distancia, HIGH); // Volta ao menu esc = true; } rotura; // Seleccione la tecla F3 para el caso pressionado 'C': velocidade = lerValor (); si (velocidade == -1) {esc = verdadero; } else {// Escreve una tela "Velocidade" sin pantalla display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (12, 2); display.setTextColor (BLANCO); display.print ("VELOCIDADE"); display.setTextColor (NEGRO); display.setCursor (2, 14); display.print (velocidade); display.print (char (229)); display.print ("s");
loop () - Parte 6 - Ejecutando
display.fillRect (31, 24, 21, 11, 2); display.setCursor (33, 26); display.setTextColor (BLANCO); display.println ("¡OK!"); display.setTextColor (NEGRO); display.display (); // Configura nova velocidade ao motor d1.motionConfig (50, velocidade, 5000); retraso (2000); // Volta ao menu esc = true; } rotura; // Seleccione la tecla F4 (ESC) para el caso pressionada 'D': // Seleccione la tecla CLR para el caso pressionada 'c': // Seleccione la tecla ENT para el caso pressionada 'e': // Volta ao menu esc = true; predeterminado: descanso; }} // Limpa o char customKey customKey = false; }}
Paso 16: Acerca de los husillos: configuraciones de la máquina
En máquinas CNC como impresoras 3D y enrutadores, por ejemplo, el programa responsable del control de posicionamiento necesita saber cómo ocurrirán los movimientos en función del número de pulsos dados al motor paso a paso.
Si el controlador del motor paso a paso permite la aplicación de micropasos, esta configuración debe tenerse en cuenta en el cálculo del desplazamiento producido.
Por ejemplo, si un motor de 200 pasos por revolución está conectado a un controlador configurado en 1/16, entonces se requerirán 16 x 200 pulsos para una sola revolución del eje, es decir, 3200 pulsos por cada revolución. Si este eje tiene un paso de 2 mm por revolución, se necesitarán 3200 pulsos en el destornillador para que la tuerca se mueva 2 mm.
De hecho, los controladores de software a menudo usan una razón para especificar esta relación, el "número de pulsos por milímetro" o "pasos / mm".
Paso 17: Marlin
En Marlin, por ejemplo, vemos en la sección @section motion:
/ **
* Pasos de eje predeterminados por unidad (pasos / mm)
* Anular con M92
* X, Y, Z, E0 [, E1 [, E2 [, E3 [, E4]
* /
#define DEFAULT_AXIS_STEPS_PER_UNIT {80, 80, 3200, 100}
En este ejemplo, podemos concluir que los ejes X e Y tienen una precisión de 80 pulsos para moverse 1 mm, mientras que el Z necesita 3200 pulsos y el extrusor E0 necesita 100.
Paso 18: GRBL
A continuación vemos los comandos de configuración de GRBL. Con el comando $ 100, podemos ajustar el número de pulsos requeridos para causar un desplazamiento de un milímetro en el eje X.
En el siguiente ejemplo podemos ver que el valor actual es 250 pulsos por mm.
Los ejes Y y Z se pueden configurar respectivamente $ 101 y $ 102.
Recomendado:
Motor paso a paso con Arduino UNO: 3 pasos
Motor paso a paso con Arduino UNO: Los motores paso a paso son motores de CC que se mueven en pasos discretos. Tienen múltiples bobinas que se organizan en grupos denominados "fases". Al energizar cada fase en secuencia, el motor girará, paso a paso. Los motores paso a paso son muy útiles
Motor paso a paso controlado por motor paso a paso sin microcontrolador: 6 pasos
¡Motor paso a paso controlado por motor paso a paso sin microcontrolador !: En este Instructable rápido, haremos un controlador de motor paso a paso simple usando un motor paso a paso. Este proyecto no requiere circuitos complejos ni un microcontrolador. Así que sin más preámbulos, ¡comencemos
Motor paso a paso controlado por motor paso a paso sin microcontrolador (V2): 9 pasos (con imágenes)
Motor paso a paso controlado por motor paso a paso sin microcontrolador (V2): En uno de mis Instructables anteriores, le mostré cómo controlar un motor paso a paso usando un motor paso a paso sin un microcontrolador. Fue un proyecto rápido y divertido, pero vino con dos problemas que se resolverán en este Instructable. Entonces, ingenio
Modelo de locomotora controlada por motor paso a paso - Motor paso a paso como codificador rotatorio: 11 pasos (con imágenes)
Locomotora modelo controlada por motor paso a paso | Motor paso a paso como codificador rotatorio: en uno de los Instructables anteriores, aprendimos cómo usar un motor paso a paso como codificador rotatorio. En este proyecto, ahora usaremos ese motor paso a paso convertido en codificador rotatorio para controlar un modelo de locomotora usando un microcontrolador Arduino. Entonces, sin fu
Motor paso a paso controlado por motor - Motor paso a paso como codificador rotatorio: 11 pasos (con imágenes)
Motor paso a paso controlado por motor paso a paso | Motor paso a paso como codificador rotatorio: ¿Tiene un par de motores paso a paso por ahí y quiere hacer algo? En este Instructable, usemos un motor paso a paso como codificador rotatorio para controlar la posición de otro motor paso a paso usando un microcontrolador Arduino. Así que sin más preámbulos, vamos a