Índice:

Ferramenta de medição de taxa de alimentação CNC feita de sucata: 5 etapas
Ferramenta de medição de taxa de alimentação CNC feita de sucata: 5 etapas

Vídeo: Ferramenta de medição de taxa de alimentação CNC feita de sucata: 5 etapas

Vídeo: Ferramenta de medição de taxa de alimentação CNC feita de sucata: 5 etapas
Vídeo: Acidente de trabalho em máquina 2024, Julho
Anonim
Ferramenta CNC de medição de taxa de alimentação feita de sucata
Ferramenta CNC de medição de taxa de alimentação feita de sucata

Alguém já quis medir a taxa de avanço real em uma máquina CNC? Provavelmente não, até que os bits de fresamento estejam intactos após um trabalho CNC … mas quando eles começarem a quebrar regularmente, talvez seja hora de investigar. Neste instrutível, você pode seguir uma busca para determinar a taxa de avanço real de uma máquina CNC. Ele cobrirá a parte de engenharia reversa de uma impressora, firmware arduino, software para PC e os resultados que obtive com a ajuda de meus colegas, além de um lixo transformado em tesouro.

Etapa 1: materiais, ferramentas e dispositivos usados para colocar o projeto em execução

Quando comecei a trabalhar nisso, pensei em uma pequena lista das coisas de que precisamos:

  • mecanismo de carro de impressora desmontado
  • ferramentas manuais para ajustar isso
  • ferro de solda, solda, fios
  • multímetro
  • osciloscópio ou analisador lógico - isso não é absolutamente necessário
  • fonte de energia
  • microscópio
  • Arduino nano + pinagem
  • PC com Arduino IDE, ferramentas de gráficos Visual Studio 2008 Express + MS instaladas
  • (MPU6050 - Acabei não usando isso)
  • disposto a navegar por tudo que você não sabe fazer

No início, pensei que uma placa MPU6050 me permitiria medir a taxa de avanço em todos os três eixos ao mesmo tempo. Tendo o acelerômetro dentro dele, eu tinha certeza de que somar os dados do acelerômetro me daria o valor desejado - a velocidade em cada eixo. Depois de baixar e modificar um fragmento do Arduino que exibia dados brutos no monitor serial, escrevi um pequeno programa para PC no Visual Studio que processou os dados e os plotei em um gráfico para facilitar a interpretação. Tive que baixar o Visual Studio C # Express 2008 e as ferramentas de gráficos para isso.

Depois de codificar um pouco e procurar todas as coisas de que precisava para a comunicação serial, acabei com os valores traçados, mas não importava o que eu fizesse, não era utilizável. Movimentos pequenos, mas repentinos, resultariam em picos enormes, enquanto viagens mais longas nem apareceriam nas paradas. Depois de dois dias martelando a MPU6050, finalmente desisti e mudei para outra coisa - um mecanismo de feedback de posição da impressora desmontado.

Etapa 2: material de hardware que precisava ser executado

Coisas de hardware que precisavam ser feitas
Coisas de hardware que precisavam ser feitas
Coisas de hardware que precisavam ser feitas
Coisas de hardware que precisavam ser feitas
Coisas de hardware que precisavam ser feitas
Coisas de hardware que precisavam ser feitas
Coisas de hardware que precisavam ser feitas
Coisas de hardware que precisavam ser feitas

Engenharia reversa

É claro que o mecanismo da impressora não tinha número de peça que eu pudesse usar para determinar suas propriedades exatas; havia necessidade de um pouco de engenharia reversa para chegar onde queríamos. Depois de examinar de perto o mecanismo e a parte eletrônica, decidi que a primeira coisa deve ser a identificação dos pinos do sensor óptico. Isso teve que ser feito para fazer a interface de tudo com o Arduino. Desmontei a parte de plástico preto, extraí o PCB e examinei o sensor: ele tinha ROHM RPI-2150 escrito nele. Isso me deixou feliz, havia muita esperança de encontrar uma ficha técnica. Infelizmente, esta é uma peça antiga ou personalizada - não havia folha de dados para ser encontrada em qualquer lugar da web. Isso significava que eu tinha que resolver o problema por conta própria: sabendo que esses sensores geralmente têm um LED infravermelho e dois fototransistores dentro, peguei um multímetro, coloquei-o no modo de medição de diodo e comecei a medir entre os pinos.

Os pinos de alimentação geralmente são fáceis de encontrar - eles terão capacitores entre eles e geralmente são conectados com traços largos nos PCB-s. Traços de aterramento são freqüentemente conectados a vários blocos para melhor rejeição de ruído.

Os pinos de entrada e saída não são tão triviais, no entanto. Ao medir através de um diodo, o medidor mostrará sua tensão direta em uma direção e a sobrecarga (infinita) na outra. Consegui identificar quatro diodos entre os pinos, concluí que o quarto diodo deve ser algum tipo de zener ou diodo TVS, pois ficava bem entre os pinos de alimentação do componente. Localizar o emissor infravermelho foi fácil, havia um resistor 89R em série com ele. Fiquei com duas medições de diodo nos dois pinos restantes, esses tinham que ser os dois receptores.

Nota: Esses sensores possuem dois receptores para poder determinar a direção do movimento além de determinar a posição pela contagem dos pulsos. Essas duas formas de onda de saída estão 90 ° fora de fase; isso é usado para produzir um pulso de contagem crescente ou decrescente. Seguindo o número desses pulsos, a posição exata da cabeça de impressão pode ser determinada.

Quando o emissor e os dois receptores foram localizados, soldei os fios em seus pinos para fazer a interface do sensor com o Arduino. Antes de fazer isso, alimentei o sensor com 3,3 V, puxei a tira entre o sensor algumas vezes e observei a onda quadrada nas saídas. A frequência da onda quadrada variou com a velocidade do movimento e concluí que o sistema de medição agora está pronto para ser conectado ao Arduino.

Conectando o Arduino

Conectar este novo 'sensor' é muito fácil. Basta conectar as saídas do sensor a D2 e D3 (pinos com capacidade de interrupção!), E as linhas da fonte de alimentação, e a codificação pode começar.

Etapa 3: codificação do Arduino

Codificação Arduino
Codificação Arduino

O código do Arduino é bastante simples. Atribuí uma função que é executada sempre que D2 vê uma borda ascendente, essa é a função decorrida do código do Arduino que anexei. Se você der uma olhada nos sinais de um codificador quadrático, verá o seguinte:

  • em uma direção, a fase A é lógica alta em cada borda ascendente da fase B
  • na outra direção, a fase A é lógica baixa em cada borda ascendente da fase B

Essa era a propriedade do codificador que tirei vantagem: como a função decorrido é executada toda vez que D2 tem uma borda ascendente, acabei de escrever um if que incrementa um contador quando D3 está alto e o diminui quando D3 está baixo. Isso funcionou na primeira tentativa, enviei o valor do contador para o monitor serial e o observei aumentar / diminuir quando movi o cabeçote da impressora no eixo.

Resumindo, o firmware faz o seguinte na função de loop:

  1. verifica o buffer de recepção serial para quaisquer dados de entrada
  2. se houver dados de entrada, verifique se é '1' ou não
  3. se for '1', significa que o software do PC está solicitando o valor do contador
  4. enviar o valor do contador para o PC via serial
  5. começar de novo às 1.

Com isso, a bola está na quadra do software para PC agora. Vamos entrar nisso!

Etapa 4: Software Visual Studio C #

O objetivo do programa VS C # era transferir a carga computacional do Arduino para o PC. Este software recebe os dados que o Arduino está fornecendo, calcula e exibe a velocidade na forma de um gráfico.

O que fiz primeiro foi pesquisar no Google como fazer comunicação serial em C #. Eu encontrei muitas informações boas no MSDN.com junto com um bom exemplo, então eu simplesmente joguei fora o que eu não precisava - basicamente tudo, exceto a parte da leitura. Eu configurei a porta COM e a velocidade para coincidir com a do Arduino, então apenas fiz algumas tentativas e coloquei tudo o que veio na porta serial em uma caixa de texto multilinha.

Depois que os valores foram lidos, eu poderia apenas usar as funções readto e split para isolar uma medição uma da outra e de caracteres delimitadores. Estes foram plotados em um controle Chart, e os valores começaram a aparecer na tela.

Se você não consegue ver o controle Gráfico na caixa de ferramentas do VS, você pode pesquisar o problema no Google e encontrar a solução aqui (procure a resposta nº 1): link

O princípio de medição

Para encontrar a conexão entre o número de contagens e a distância que a cabeça percorre, zeramos o valor da contagem, movemos a cabeça da impressora 100 mm manualmente e observamos a mudança nas contagens. Finalmente chegamos à seguinte proporção: 1 contagem = 0,17094 mm.

Como podemos consultar a distância e medir o tempo entre as amostras, podemos calcular a taxa em que ocorre a mudança de posição - podemos calcular a velocidade!

Existe um tempo de software aproximado de 50ms graças ao TMR0, mas observamos que esses tempos não eram muito precisos. Na verdade, após algumas medições de velocidade de software, descobrimos que os 50ms cronometrados não são 50ms. Isso significa que as amostras não foram tiradas em um intervalo fixo, então o cálculo da velocidade também não pode usar uma base de tempo fixa. Assim que descobrimos esse problema, foi fácil seguir em frente: pegamos a diferença de distância e a diferença de tempo e calculamos a velocidade como D_distance / D_time (em vez de D-distance / 50ms).

Além disso, como nossa equação retornaria a velocidade em unidades de mm / 50ms, precisamos multiplicar isso por 1200 para obter a distância que a cabeça percorreria em um minuto, em [mm / minuto].

Nota: o software de controle de fresadora Mach 3 CNC define as taxas de avanço em unidades de [mm / minuto]

Filtrando

Deste ponto em diante, as medições pareciam ser bastante precisas, mas havia algum ruído no sinal medido. Suspeitamos que isso era devido a inconsistências mecânicas no eixo, acoplamento do eixo, etc, então decidimos filtrar, para obter um bom valor médio do que é medido.

Ajustes finos no software

Para alterar a taxa de amostragem e a taxa de filtro durante o tempo de execução, barras de rolagem foram adicionadas - uma para cada. Além disso, a capacidade de ocultar os gráficos também foi introduzida.

Etapa 5: Resultados

Resultados
Resultados
Resultados
Resultados
Resultados
Resultados
Resultados
Resultados

Depois que as partes de hardware e software estavam prontas, executamos três conjuntos de medições com mach 3 + meu software, você pode ver os resultados nas fotos anexadas. Os experimentos posteriores mostraram melhor precisão, com taxas de filtro e de amostra aumentadas. Os gráficos mostram a velocidade medida com vermelho sólido e a média com traço-pontilhado azul.

Dito isso, parece que Mach 3 lida com essas configurações de velocidade com bastante precisão, mas agora sabemos com certeza:)

Espero que você tenha gostado deste breve instrutivo sobre engenharia reversa e como transformar água em vinho!

Saúde!

Recomendado: