Índice:
- Etapa 1: materiais, ferramentas e dispositivos usados para colocar o projeto em execução
- Etapa 2: material de hardware que precisava ser executado
- Etapa 3: codificação do Arduino
- Etapa 4: Software Visual Studio C #
- Etapa 5: Resultados
Vídeo: Ferramenta de medição de taxa de alimentação CNC feita de sucata: 5 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:39
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
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
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:
- verifica o buffer de recepção serial para quaisquer dados de entrada
- se houver dados de entrada, verifique se é '1' ou não
- se for '1', significa que o software do PC está solicitando o valor do contador
- enviar o valor do contador para o PC via serial
- 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
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:
Frequência da fonte de alimentação e medição de tensão usando Arduino: 6 etapas
Freqüência de fornecimento de energia e medição de tensão usando Arduino: Introdução: O objetivo deste projeto é medir a freqüência de fornecimento e tensão, que está entre 220 a 240 Volts e 50 Hz aqui na Índia. Usei um Arduino para capturar o sinal e calcular a frequência e a tensão, você pode usar qualquer outro microcont
The E Band - arte feita a partir de peças eletrônicas de sucata: 5 etapas
Banda E - Arte feita a partir de sucatas de peças eletrônicas: Bem … eu tinha alguns resistores extras (muitos!) E outras peças. Então … fiz uma obra de arte usando essas sucatas de circuito
Fonte de alimentação ATX oculta para fonte de alimentação de bancada: 7 etapas (com imagens)
Fonte de alimentação ATX oculta para fonte de alimentação de bancada: Uma fonte de alimentação de bancada é necessária ao trabalhar com eletrônicos, mas uma fonte de alimentação de laboratório disponível comercialmente pode ser muito cara para qualquer iniciante que queira explorar e aprender eletrônica. Mas existe uma alternativa barata e confiável. Por conve
FERRAMENTA DE MEDIÇÃO DIGITAL MULTI-FUNÇÕES: 21 etapas (com imagens)
FERRAMENTA DE MEDIÇÃO DIGITAL MULTI-FUNÇÕES: Olá a todos. Sempre quis um dispositivo que me ajudasse a nivelar minha mesa de impressora 3D e algum outro dispositivo que me ajudasse a obter um comprimento aproximado de uma superfície curva para que eu pudesse cortar facilmente o comprimento certo do adesivo para
Caixa para Raspberry Pi Modelo B e fonte de alimentação feita de madeira: 10 etapas
Caixa para Raspberry Pi Modelo B e Fonte de Alimentação Feita de Calços de Madeira: Caixa que conterá o Raspberry Pi 3 Modelo B e sua fonte de alimentação feita com calços de madeira de cedro. Partes: 1. Raspberry Pi 3 Modelo B2. Calços de madeira de cedro3. Cola para madeira4. Serra copo Milwaukee Dole Dozer de 3/4 polegada5. Alicate de bloqueio de ponta de agulha6. 1/2 polegada, #