Caja de cambios de una etapa accionada por un motor paso a paso

En esta publicación, quiero hablar sobre la fabricación de un engranaje recto de una sola etapa con la ayuda de una máquina CNC fabricada anteriormente.



No hace mucho tiempo, diseñé una máquina de portal con CNC , mi artículo anterior se encuentra sobre su desarrollo y construcción en este recurso.

Quiero decir de inmediato que este proyecto solo sirve para ganar experiencia en el diseño de pares de engranajes simples y su fabricación para su posible uso en proyectos posteriores.

Dado que se planeó procesar no solo madera y plásticos, sino también duraluminio en la máquina fabricada, fue interesante hacer un par de engranajes solo de este material.

Según disponibilidad, tuve restos de lámina de duraluminio de 6 mm de espesor. Como unidad de disco, decidí usar el Motor paso a paso () 23HS8430, también lo tenía y estaba tendido en reposo.

El diseño comenzó con el modelado de todo el mecanismo en el entorno Compass 3D, inmediatamente hubo varias limitaciones, debido al pequeño tamaño del blanco de duraluminio, y esto afectó en consecuencia las dimensiones del engranaje impulsado, así como el número y el tamaño de los dientes, ya que tenía el diámetro de corte más pequeño , solo tenía 2 mm, lo que significa que el radio más pequeño con el que puedo describir el contorno durante el proceso de fabricación es de 1 mm.

Teniendo en cuenta todas las restricciones, transferí el motor a un modelo 3D y luego comencé a emparejar el resto de los detalles con él ...

Ahora, con respecto a la construcción del par de engranajes: en la configuración de ingeniería de Compass 3D (v13) existe una utilidad como "Cálculos del engranaje recto de un engranaje externo", realizamos un cálculo geométrico en él, ingresando los parámetros requeridos: número de dientes, módulo, etc. No profundizaré en esto, será suficiente leer el capítulo sobre la construcción de engranajes desde el punto de vista de la mecánica: piezas de máquinas.



La utilidad utilizada por mí realiza el cálculo y la construcción del engranaje, también si se producen errores durante el cálculo, informa sobre esto. Después del cálculo, muestra un informe con todas las dimensiones geométricas. De él, solo necesitaba la distancia central, ya que dibuja el engranaje automáticamente.



Para mayor interés, decidí hacer engranajes con un número diferente de dientes y una relación de engranaje de 2: 1.



Según la distancia del centro, se dibujó la base. El motor y el eje se unieron con él, en el que se montará el engranaje impulsado.



Después de completar el diseño 3D, transfirí todos los detalles a una vista 2D y los guardé en el formato vectorial * .dxf.

Para recortar todos los detalles en la máquina, convertí el formato vectorial a código G a través de un postprocesador en el programa ArtCam. El archivo resultante se cargó en la máquina y, después de restablecer las coordenadas, recortó todos los detalles.


El rodamiento se presionó en el engranaje impulsado, entró con bastante fuerza, ya que subestimé el agujero en varios cientos de partes.

Por separado, el eje en el que se monta el engranaje impulsado se mecaniza en un torno.

Entonces todo es bastante simple, ensambló la unidad en una, y solo queda girarla.
Pero tuve que esperar un mes, porque no tenía un controlador para el SD, y pedí el controlador DM542 en Ali.

Para que el SD gire sobre la entrada del controlador, se requiere una señal de frecuencia, para esto, ensamblé un generador de frecuencia con una frecuencia variable en el arduino uno usando un codificador de 24 pulsos conectado externamente.



Quiero hacer una reserva de inmediato y encontré el código para el firmware de Arduino en Internet.

El generador de frecuencia puede: - generar un meandro en un temporizador de 16 bits. Rango de frecuencia 1Hz - 8MHz. El ajuste de frecuencia es realizado por un codificador. Hasta una frecuencia de 2.8 kHz, la resolución es de 1 hertz; a frecuencias más altas, el temporizador ya no puede soportar esta resolución en hardware; por lo tanto, las frecuencias más altas se sintetizan configurando el parámetro a la frecuencia deseada, pero simplemente incrementando el registro de comparación. Resulta que cuanto mayor es la frecuencia, mayor es el paso entre los clics del codificador. Girando el codificador, con el botón no presionado, la frecuencia cambia en 1Hz; con el botón presionado, un paso - 100Hz. Por encima de 2.8kHz. La rotación del codificador con el botón presionado también acelera el conteo. No hay supresión de software del rebote de los contactos del codificador, por lo que debe colgar condensadores de 0.01..0.1 microfaradios. relativo a la tierra. Un condensador es opcional en el botón. La frecuencia calculada matemáticamente se emite a la serie.

/*  1 Hz..8 MHz.     A0  A1,     A2.    0,01..0,1uf      2  .      atmega328 (UNO,Nano, MiniPro) */ float freq; void setup() { pinMode (9,OUTPUT); //   pinMode(A0,INPUT); //  ,    - pinMode(A1,INPUT); // -  .  ,   . pinMode(A2,INPUT_PULLUP); //  Serial.begin(9600); PCICR=1<<PCIE1; //  PCINT PCMSK1=(1<<PCINT9);//    1   TCCR1A=1<<COM1A0; //  OC1A   TCCR1B=0;// } ISR (PCINT1_vect){ static boolean gen_mode=0; //   static uint32_t enc=1; //   uint32_t ocr=OCR1A; uint32_t divider=1; // .   byte n=PINC&3; //   boolean knopka = PINC&(1<<2); // 0- , 1-  . if (freq<2848) gen_mode=0; //     if (freq>=2848) gen_mode=1; //    OCR //    if (n==3||n==0){ if (gen_mode){if (knopka){ if(ocr>0) {ocr--; } } else { if(ocr>9)ocr-=10; } } else knopka? enc++ : enc+=100; //    } //end GetUP //    if (n==2||n==1){ if (gen_mode){ if (knopka){ if(ocr<65535) {ocr++; } } else { if(ocr<=65525)ocr+=10; } } else {if (knopka) { if (enc>=2)enc--; } else { if (enc>100) enc-=100; } } } //end GetDown if(gen_mode){ OCR1A=ocr; freq= (float)F_CPU/2 / (OCR1A+1); } else { //   OCR    divider=1; ocr = (F_CPU / enc /2 /divider) -1; if (ocr >65536) { divider=8; ocr = F_CPU / enc /2 /divider; if (ocr >65536) { divider=64; ocr = F_CPU / enc /2 /divider; if (ocr >65536) {divider=256; ocr = F_CPU / enc /2 /divider; if (ocr >65536) { divider=1024; ocr = F_CPU / enc /2 /divider; if (ocr >65536){ocr=65536; }}}}} OCR1A=ocr-1; //    switch (divider) { case 1: TCCR1B=1|(1<<WGM12); break; case 8: TCCR1B=2|(1<<WGM12); break; case 64: TCCR1B=3|(1<<WGM12); break; case 256: TCCR1B=4|(1<<WGM12); break; case 1024: TCCR1B=5|(1<<WGM12); break; } freq= (float) F_CPU/2 / (OCR1A+1) /divider; } //end if !gen_mode } void loop() { if (freq <10000) { Serial.print(freq,1);Serial.println(" Hz "); } if (freq >10000) { Serial.print(freq/1000,3);Serial.println(" kHz");} delay(100); } 

Después de que todo esté ensamblado, conectado y cargado al boceto en el Arduino, puede proceder a encenderlo:


Ahora sobre el trabajo de este mecanismo: el trabajo de rotación y transmisión no es malo en absoluto, incluso con el sonido de los engranajes. Como resultado, resultó conducir la marcha principal a 12.5 revoluciones por segundo, y en la conducida, respectivamente, la mitad. La frecuencia generada fue de aproximadamente 5 kHz a 400 pulsos / rev. establecido en el conductor. A esta frecuencia, el motor aún no ha entrado en un estado de estupor, lo que significa que fue posible dar una frecuencia y más.

Gracias por leer! :)

Source: https://habr.com/ru/post/es424273/


All Articles