Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Display de Profundidade de Furação Preciso com Sensor Giroscópio e Arduino Nano

Componentes e Materiais

Componente Quantidade
Arduino Nano R3 1

Ferramentas Necessárias

Aplicativos e Serviços Online

Sobre o Projeto

Se você precisa furar uma profundidade específica, precisa de uma furadeira de bancada com display de profundidade. A maioria tem uma régua com seta para leitura. O sucesso depende de quão precisamente você consegue ler a posição desejada. Neste projeto Arduino apresento uma alternativa: um display de profundidade de furação com sensor giroscópio e display 7 segmentos com suporte Arduino.

A máquina que mais uso na oficina não é serra nem esmeril. É de longe a furadeira de bancada. Independentemente do projeto, ela é sempre usada. Se preciso de certa profundidade, uso a régua embutida e memorizo a profundidade alvo. Funciona bem.

Mas com a idade — sim, sim, sim — fica cada vez mais difícil ler a profundidade com precisão de milímetro. E se a luz não for boa, é quase impossível. Colocar óculos só para isso? E onde guardar depois? Ainda não cheguei lá.

Fiel ao lema de Paul Akers do "2 Second Lean":

Tem que haver uma solução melhor, você só precisa pensar e fazer.

Possibilidades de Medição

Poderia colocar uma lupa na frente da escala para facilitar a leitura. Melhoraria a leitura, mas não resolveria a necessidade de memorizar a medida cada vez. E se estiver fazendo artesanato, deve ser divertido também.

Por isso uma solução eletrônica é melhor. De preferência compacta para caber ao lado do interruptor liga/desliga da furadeira. Para isso gosto do Arduino Nano: pinos suficientes para controlar tudo e tamanho reduzido.

Mas como medir a profundidade de furação? Existem várias possibilidades:

Ok, pensar mais.

Minha furadeira, como a maioria, tem um volante lateral para ajuste de profundidade. Gira aproximadamente 270°. Nem uma volta completa.

Isso é perfeito para medição de ângulo com sensor giroscópio. O cabo não torce e só precisa de um componente barato. O giroscópio pode ser fixado diretamente no eixo do volante.

Conceito

Sempre procedo da mesma forma ao definir profundidade: risco a superfície com a broca, anoto a coordenada, adiciono a profundidade desejada e furo até atingir a profundidade.

Quero manter o processo básico. Para não furar demais, quero ser avisado quando a profundidade programada for atingida.

Display de Profundidade de Furação Preciso com Sensor Giroscópio e Arduino Nano
Display de Profundidade de Furação Preciso com Sensor Giroscópio e Arduino Nano

Um botão assume essa função. Ao pressioná-lo, o Arduino salva a posição atual como valor de parada e pode me avisar quando atingida depois.

Os componentes restantes ocupam mais espaço e pesam mais. Felizmente, o gabinete da minha máquina é metálico. Por isso uso um ímã de neodímio para fixação.

Resta a questão: como fixar o sensor na máquina?

O eixo da furadeira tem porca sextavada SW17. Basta um componente impresso em 3D que aceite o sensor e encaixe na porca sextavada.

Display de Profundidade de Furação Preciso com Sensor Giroscópio e Arduino Nano

Componentes Necessários

Conexão do Sensor Giroscópio (GY-521)

Conectado via I2C. Usamos A5 e A4 no Nano.

Módulo Display 7 Segmentos

Qualquer pino digital pode ser usado. Os pinos são definidos no sketch.

Botão

Pino de entrada livre. Uso pino D9.

Alimentação

Uso 6 pilhas AA. Após o interruptor liga/desliga, alimentam todo o sistema.

Gabinete

Projetei o gabinete no Autodesk Fusion 360. Imprimi na Anycubic i3 Mega. O ímã de neodímio para fixação na máquina é colado internamente. Se o display atrapalhar, remove-se rapidamente.

Sketch Arduino

Usei a biblioteca LedControl.h para controlar o display 7 segmentos. Se não instalada, instale via Gerenciador de Bibliotecas.

O sensor giroscópio usa barramento I2C. Ao buscar bibliotecas, decidi não usar nenhuma. Comunicação via Wire.h.

No final do artigo, links que me ajudaram a entender.

O controle do display 7 segmentos funciona muito bem com LedControl.

Após inicialização com os pinos, o setup() só precisa de alguns preparos para acordar o display e ajustar intensidade.

No loop(), o display mostra apenas a profundidade atual e, se definida, a posição de parada, também em números.

O display espera cada dígito como tipo caractere. Quero usar uma casa decimal como precisão. A função dtostrf converte float em array de caracteres. Depois em string para mostrar caractere a caractere no display.

dtostrf(currentPos, 4, 1, txt);
s = ' ' + String(txt);
lc.setChar(0, 4, s.charAt(s.length()-1), false);
lc.setChar(0, 5, s.charAt(s.length()-3), true);
lc.setChar(0, 6, s.charAt(s.length()-4), false);
lc.setChar(0, 7, s.charAt(s.length()-5), false);

Quando a posição de parada é atingida, "StOP" aparece no display. O "t" minúsculo é gerado via setRow com padrão de bits B00001111.

Leitura do giroscópio via funções da biblioteca Wire. Uso apenas o acelerômetro para determinar posição angular.

Com conexão USB à Arduino IDE, tudo funcionava perfeitamente. Após desconectar e ligar na fonte externa, o sensor não fornecia dados. Só voltava a funcionar após reset do Arduino.

Isso me deu a maior dor de cabeça do projeto. Poderiam dizer que o indicador salvou meus olhos, mas por isso arranquei quase todo meu cabelo!

Após longa busca, instalar um tempo de espera após acordar o sensor foi a solução. Isso torna o delay(1000) o comando mais importante de todo o código fonte.

// Preparar sensor GY-521
// Usamos apenas dados do acelerômetro
Wire.begin();
Wire.beginTransmission(MPU);
Wire.write(0x6B);
Wire.write(0x00); // Acordar MPU
Wire.endTransmission(true);

// Este delay foi MUITO necessário no meu caso!
delay(1000);

Wire.beginTransmission(MPU);
Wire.write(0x1C); // Registrador ACCEL_CONFIG
Wire.write(0x10); // Configura como 00010000 para faixa ±8g
Wire.endTransmission(true);

Valores de offset devem ser determinados no início, senão os valores flutuam. No setup, 100 valores são medidos e as médias dos desvios calculadas.

Calcular o ângulo dos dados do sensor não é trivial. Mas há muitos tutoriais sobre os cálculos.

O ângulo X em graus é calculado com esta fórmula:

AccAngleX = (atan(AccY / sqrt(pow(AccX,2) + pow(AccZ,2))) * rad_to_deg);

Porém, os valores do acelerômetro flutuam muito. Portanto, o valor calculado atual é mediado com o anterior em 50% cada.

TotalAngleX = 0.5 * TotalAngleX + 0.5 * AccAngleX;

Os valores de ângulo saem de -90° a +90°. Mas preciso de 0° a 360° para converter em profundidade de furação.

Não achei solução simples ainda. Para minha aplicação, basta ver se Z e Y do sensor são positivos ou negativos e converter o ângulo accordingly.

delta = 0;
if (AccZ < 0) {
  delta = 180.0 - TotalAngleX * 2.0;
}
if (AccZ > 0 && AccY < 0) {
  delta = 360.0;
}
DrillingMachineAngle = TotalAngleX + delta;

// Se próximo de 360°, exibe 0°
if (DrillingMachineAngle > 350) DrillingMachineAngle = 0;

Falta o ângulo máximo de rotação que o volante permite. O jeito mais fácil: mandar o ângulo determinado via Serial.print e anotar o valor máximo.

No meu caso, 316°. Com profundidade máxima de 50 mm, a posição atual é:

currentPos = 50.0 / 316.0 * DrillingMachineAngle;

Se o botão for pressionado, o Arduino salva a posição atual. Mostra 8888 no display e espera 1 segundo.

Se posição de parada definida, a profundidade restante até a parada é mostrada no display direito.

Montagem e Teste

O sensor giroscópio é melhor fixado com um ponto de cola quente. Passe os cabos pela tampa. Pronto para esta parte.

No primeiro teste, o giroscópio deve ser alinhado. Instalei horizontalmente. Como o suporte é rotativo, ajustei facilmente até mostrar 0.0 no display.

Display de Profundidade de Furação Preciso com Sensor Giroscópio e Arduino Nano
Display de Profundidade de Furação Preciso com Sensor Giroscópio e Arduino Nano
Display de Profundidade de Furação Preciso com Sensor Giroscópio e Arduino Nano
Display de Profundidade de Furação Preciso com Sensor Giroscópio e Arduino Nano
Display de Profundidade de Furação Preciso com Sensor Giroscópio e Arduino Nano
Display de Profundidade de Furação Preciso com Sensor Giroscópio e Arduino Nano

Então o primeiro teste pode começar.

No geral, estou muito satisfeito com a solução. O sensor reage muito rápido e os valores calculados batem exatamente com a profundidade da broca.

E graças ao grande display LED, não preciso me preocupar com óculos até os 85 anos para ler a profundidade exata.

Lembre-se sempre do que Paul diz: Conserte o que te incomoda!

Divirta-se construindo!


Links que podem ajudar:

O projeto também está em alemão em: techpluscode.de/bohrtiefenanzeige-mit-gyro-sensor/

Código

Arquivo drilling-depth.ino (código completo comentado em inglês/alemão).

Peças Personalizadas e Gabinetes

Arquivo 3D do modelo: drilling-depth-3d-model_Yn2q0MSNa4.zip

Esquemático

Display de Profundidade de Furação Preciso com Sensor Giroscópio e Arduino Nano

Processo de manufatura

  1. Integração de Dados de Sensores no Raspberry Pi: Guia Prático
  2. Sensor de Rastreamento de Linha com Raspberry Pi – Detector KY‑033 Simples para Porta/Linha
  3. Construa API Robusta de Temperatura e Sensores no Raspberry Pi com Módulo GY‑91
  4. Construa um Sistema Aeropônico Automatizado com Raspberry Pi e Sensor de Umidade
  5. Domine GPIO do Raspberry Pi: Interface com Sensor PIR de Movimento no B+/Modelo 2
  6. Integrando Radar Pulsado Acconeer A111 com Raspberry Pi: Guia Prático
  7. Como Conectar, Calibrar e Programar Sensor PIR HC‑SR501 com Raspberry Pi
  8. Logger de Sensores Python/MicroPython: Armazene Dados de Sensores no Google Sheets Facilmente
  9. Integrando Sensor Termopar com Arduino Portenta H7 usando CI MAX6675
  10. Dispositivo de Precisão para Medição de Pressão e Fluxo de Ar com Sensor Analógico