Caixa de engrenagens de estágio único acionada por um motor de passo

Neste post, quero falar sobre a fabricação de uma engrenagem de dentes retos de estágio único com a ajuda de uma máquina CNC fabricada anteriormente.



Há pouco tempo, eu projetei uma máquina de portal com CNC , meu artigo anterior está localizado sobre o seu desenvolvimento e construção neste recurso.

Quero dizer imediatamente que este projeto serve apenas para ganhar experiência no design de pares de engrenagens simples e sua fabricação para possível uso em projetos subseqüentes.

Como foi planejado processar não apenas madeira e plásticos, mas também duralumínio na máquina fabricada, foi interessante fazer um par de engrenagens apenas com esse material.

Por disponibilidade, eu tinha pedaços de chapa de duralumínio com 6 mm de espessura. Como unidade, decidi usar o Stepper Motor ()) 23HS8430, eu também o tinha e estava ocioso.

O projeto começou com a modelagem de todo o mecanismo no ambiente Compass 3D, imediatamente houve várias limitações, devido ao pequeno tamanho do espaço em branco de duralumínio, e isso afetou as dimensões da engrenagem acionada, bem como o número e tamanho dos dentes, já que eu tinha o menor diâmetro de fresa , foi de apenas 2 mm, o que significa que o menor raio com o qual posso descrever o contorno durante o processo de fabricação é de 1 mm.

Considerando todas as restrições, transferi o mecanismo para um modelo 3D e comecei a combinar o restante dos detalhes com ele ...

Agora, com relação à construção do par de engrenagens: na configuração de engenharia do Compass 3D (v13), existe uma utilidade como “Cálculos da engrenagem retida de uma engrenagem externa”, realizamos um cálculo geométrico nele, inserindo os parâmetros necessários: número de dentes, módulo etc. Não vou me aprofundar nisso, basta ler o capítulo sobre a construção de engrenagens do curso da mecânica: peças de máquinas.



O utilitário usado por mim realiza o cálculo e a construção da engrenagem, também se ocorrerem erros durante o cálculo, ele informa sobre isso. Após o cálculo, ele exibe um relatório com todas as dimensões geométricas. A partir dele, eu só precisava da distância central, pois ela desenha o equipamento automaticamente.



Para maior interesse, decidi fazer engrenagens com um número diferente de dentes e uma relação de transmissão de 2: 1.



Com base na distância do centro, a base foi desenhada. O motor e o eixo foram acoplados a ele, nos quais a engrenagem acionada será montada.



Depois de concluir o design 3D, transferi todos os detalhes para uma visualização 2D e os salvei no formato vetorial * .dxf.

Para cortar todos os detalhes da máquina, converti o formato vetorial para código G através de um pós-processador no programa ArtCam. O arquivo resultante foi carregado na máquina e, após redefinir as coordenadas, recorte todos os detalhes.


O rolamento foi pressionado na engrenagem acionada e entrou com força, pois subestimei o furo em várias centenas de peças.

Separadamente, o eixo no qual a engrenagem acionada está montada é usinado em um torno.

Então tudo é bem simples, montou a unidade em uma e resta apenas torcer.
Mas tive que esperar um mês, porque não tinha um driver para o SD e pedi o driver DM542 para Ali.

Para que o SD gire na entrada do driver, é necessário um sinal de frequência. Para isso, montei um gerador de frequência com frequência variável no arduino uno usando um codificador de 24 pulsos conectado externamente.



Quero fazer uma reserva imediatamente, encontrando o código do firmware do arduino na Internet.

O gerador de frequência pode: - gerar um meandro em um temporizador de 16 bits. Faixa de frequência 1Hz - 8MHz. O ajuste da frequência é realizado por um codificador. Até uma frequência de 2,8 kHz, a resolução é de 1 hertz; em frequências mais altas, o temporizador não pode mais suportar essa resolução em hardware; portanto, frequências mais altas são sintetizadas definindo o parâmetro na frequência desejada, mas simplesmente incrementando o registro de comparação. Acontece que quanto maior a frequência - maior o passo entre os cliques do codificador. Girando o codificador, com o botão não pressionado, a frequência muda em 1Hz; com o botão pressionado, um passo - 100Hz. Acima de 2,8kHz. a rotação do codificador com o botão pressionado também acelera a contagem. Não há supressão de software da rejeição dos contatos do codificador, portanto, é necessário travar capacitores de microfarads de 0,01 a 0,1. em relação à terra. Um capacitor é opcional no botão. A frequência calculada matematicamente é emitida para a série.

/*  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); } 

Depois que tudo estiver montado, conectado e carregado no esboço no Arduino, você poderá ativá-lo:


Agora, sobre o trabalho desse mecanismo: o trabalho de rotação e transmissão não é ruim, mesmo com o toque das engrenagens. Como resultado, acabou aumentando a marcha principal para 12,5 rotações por segundo e, na marcha acionada, respectivamente, a metade. A frequência gerada foi de cerca de 5 kHz a 400 pulsos / rot. definido no driver. Nessa frequência, o motor ainda não entrou em estupor, o que significa que era possível fornecer uma frequência e muito mais.

Obrigado pela leitura! :)

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


All Articles