Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Präzise Bohrtiefen-Anzeige mit Gyro-Sensor (GY-521) & Arduino Nano

Komponenten und Zubehör

Benötigte Werkzeuge

Software

Motivation

Die eingebaute Skala an der Säulenbohrmaschine ist bei schlechter Lichtverhältnissen und altersbedingt schlechteren Augen schwer ablesbar. Eine elektronische Anzeige direkt am Handrad löst das Problem – und macht Spaß beim Basteln.

Messprinzip

Das Handrad der Bohrmaschine dreht ca. 270° (keine volle Umdrehung). Ein Gyro-Sensor (Beschleunigungsmesser) am Handrad misst den Neigungswinkel zur Schwerkraft → direkter Rückschluss auf die Bohrspindel-Position. Vorteile: Keine Mechanik (Seilzug, Zahnrad), keine Kabelverdrehung, nur ein kleiner Sensor.

Konzept

  1. Bohrer an Werkstück ansetzen (Nullpunkt).
  2. Taster drücken → aktuelle Position als „Stopp-Position“ (Zieltiefe) speichern.
  3. Während des Bohrens: Aktuelle Tiefe links, Resttiefe bis Stopp rechts anzeigen.
  4. Zieltiefe erreicht → „StOP“ auf rechtem Display.
Präzise Bohrtiefen-Anzeige mit Gyro-Sensor (GY-521) & Arduino Nano
Präzise Bohrtiefen-Anzeige mit Gyro-Sensor (GY-521) & Arduino Nano

Sensor wird in einen 3D-gedruckten Adapter gesteckt, der auf die SW17-Sechskantmutter der Bohrspindel passt. Hauptgehäuse (Display, Arduino, Batterien) per Neodym-Magnet am Maschinengehäuse – schnell abnehmbar.

Präzise Bohrtiefen-Anzeige mit Gyro-Sensor (GY-521) & Arduino Nano

Verdrahtung

GY-521 (I2C)

7-Segment MAX7219 (SPI, beliebig wählbare Pins)

Taster

Stromversorgung

6× AA-Batterien in Reihe (9 V) → Ein-/Ausschalter → VIN/GND des Nano (oder 5V-Regler).

Gehäuse

In Autodesk Fusion 360 entworfen, auf Anycubic i3 Mega gedruckt. Neodym-Magnet eingeklebt. Sensor-Adapter separat druckbar (STL-Datei im Projekt: drilling-depth-3d-model_Yn2q0MSNa4.zip).

Arduino-Sketch (Kernlogik)

Keine fertige MPU-6050-Bibliothek verwendet – direkte I2C-Kommunikation über Wire.h. Nur Beschleunigungsdaten genutzt.

Initialisierung & Kalibrierung

Wire.begin();
Wire.beginTransmission(0x68); Wire.write(0x6B); Wire.write(0x00); Wire.endTransmission(true); // Wake up
delay(1000); // KRITISCH: Ohne Delay liefert Sensor nach externer Stromversorgung keine Daten!
Wire.beginTransmission(0x68); Wire.write(0x1C); Wire.write(0x10); Wire.endTransmission(true); // +/- 8g Range

// Offset-Kalibrierung: 100 Messungen mitteln
for(int a=0; a<100; a++) { ... AccAngleErrorX += atan2(AccY, sqrt(AccX²+AccZ²)) * RAD_TO_DEG; }
AccAngleErrorX /= 100;

Winkelberechnung & Glättung

AccAngleX = atan2(AccY, sqrt(AccX*AccX + AccZ*AccZ)) * RAD_TO_DEG - AccAngleErrorX;
TotalAngleX = 0.5 * TotalAngleX + 0.5 * AccAngleX; // Komplementärfilter (50/50)

// Umrechnung -90..+90° → 0..360° mittels Vorzeichen von AccZ, AccY
delta = 0;
if (AccZ < 0) delta = 180.0 - TotalAngleX * 2.0;
if (AccZ > 0 && AccY < 0) delta = 360.0;
DrillingMachineAngle = TotalAngleX + delta;
if (DrillingMachineAngle > 350) DrillingMachineAngle = 0;

Tiefe berechnen

Maximaler Handrad-Winkel (per Serial-Monitor ermittelt): 316°. Maximale Bohrtiefe: 50 mm.

currentPos = 50.0 / 316.0 * DrillingMachineAngle; // mm

Taster-Logik & Anzeige

Montage & Test

Präzise Bohrtiefen-Anzeige mit Gyro-Sensor (GY-521) & Arduino Nano
Präzise Bohrtiefen-Anzeige mit Gyro-Sensor (GY-521) & Arduino Nano
Präzise Bohrtiefen-Anzeige mit Gyro-Sensor (GY-521) & Arduino Nano
Präzise Bohrtiefen-Anzeige mit Gyro-Sensor (GY-521) & Arduino Nano
Präzise Bohrtiefen-Anzeige mit Gyro-Sensor (GY-521) & Arduino Nano
Präzise Bohrtiefen-Anzeige mit Gyro-Sensor (GY-521) & Arduino Nano

Sensor mit Heißkleber punktfixieren, Kabel durch Gehäusedeckel führen. Erste Inbetriebnahme: Sensorhalter drehen, bis Display „0.0“ anzeigt. Dann Testbohrung – Reaktionszeit und Genauigkeit exzellent.

Gesamtfazit: Große LED-Anzeige gut ablesbar bis ins hohe Alter. Paul Akers („2 Second Lean“): „Fix what bugs you!“

Hilfreiche Links

Schaltplan

Präzise Bohrtiefen-Anzeige mit Gyro-Sensor (GY-521) & Arduino Nano

Code (drilling-depth.ino)

/* drilling-depth.ino * Thomas Angielsky * 2021-03-20 * https://techpluscode.de/bohrtiefenanzeige-mit-gyro-sensor/ */
#include <Wire.h> #include <math.h> #include "LedControl.h"
#define MPU 0x68
char txt[8]; String s;
float currentPos, stopPos; float rad_to_deg = 180/PI;
float AccX, AccY, AccZ; float AccAngleX, AccAngleErrorX; float TotalAngleX;
float DrillingMachineAngle, delta;
LedControl lc = LedControl(12,11,10,1); // DIN, CLK, CS, 1 Device

void setup() {
  stopPos=0; currentPos=0;
  Wire.begin();
  Wire.beginTransmission(MPU); Wire.write(0x6B); Wire.write(0x00); Wire.endTransmission(true);
  delay(1000); // WICHTIG!
  Wire.beginTransmission(MPU); Wire.write(0x1C); Wire.write(0x10); Wire.endTransmission(true);
  for(int a=0;a<100;a++) {
    Wire.beginTransmission(MPU); Wire.write(0x3B); Wire.endTransmission(false);
    Wire.requestFrom(MPU,6,true);
    AccX=(Wire.read()<<8|Wire.read())/4096.0; AccY=(Wire.read()<<8|Wire.read())/4096.0; AccZ=(Wire.read()<<8|Wire.read())/4096.0;
    AccAngleErrorX+=atan2(AccY, sqrt(AccX*AccX+AccZ*AccZ))*rad_to_deg;
  }
  AccAngleErrorX/=100;
  pinMode(9, INPUT_PULLUP);
  lc.shutdown(0,false); lc.setIntensity(0,8); lc.clearDisplay(0);
}

void loop() {
  Wire.beginTransmission(MPU); Wire.write(0x3B); Wire.endTransmission(false);
  Wire.requestFrom(MPU,6,true);
  AccX=(Wire.read()<<8|Wire.read())/4096.0; AccY=(Wire.read()<<8|Wire.read())/4096.0; AccZ=(Wire.read()<<8|Wire.read())/4096.0;
  AccAngleX=atan2(AccY, sqrt(AccX*AccX+AccZ*AccZ))*rad_to_deg - AccAngleErrorX;
  TotalAngleX=0.5*TotalAngleX + 0.5*AccAngleX;
  delta=0;
  if(AccZ<0) delta=180.0-TotalAngleX*2.0;
  if(AccZ>0 && AccY<0) delta=360.0;
  DrillingMachineAngle=TotalAngleX+delta;
  if(DrillingMachineAngle>350) DrillingMachineAngle=0;
  currentPos=50.0/316.0*DrillingMachineAngle;

  if(digitalRead(9)==LOW) { stopPos=currentPos; lc.setChar(0,3,'8',false); lc.setChar(0,2,'8',false); lc.setChar(0,1,'8',false); lc.setChar(0,0,'8',false); delay(1000); }

  if(stopPos>0) {
    if(currentPos>=stopPos) { lc.setChar(0,3,'5',false); lc.setRow(0,2,B00001111); lc.setChar(0,1,'0',false); lc.setChar(0,0,'P',false); }
    else { dtostrf(stopPos-currentPos,4,1,txt); s=' '+String(txt); lc.setChar(0,0,s.charAt(s.length()-1),false); lc.setChar(0,1,s.charAt(s.length()-3),true); lc.setChar(0,2,s.charAt(s.length()-4),false); lc.setChar(0,3,s.charAt(s.length()-5),false); }
  } else { lc.setChar(0,3,' ',false); lc.setChar(0,2,' ',false); lc.setChar(0,1,' ',false); lc.setChar(0,0,' ',false); }

  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);
  delay(200);
}

Herstellungsprozess

  1. Sensordaten in Raspberry Pi integrieren: GPS & MPU-9150 Hands-On Guide
  2. Line-Tracking-Sensor mit Raspberry Pi – Einfacher KY-033 Tür/Line Detektor
  3. Robuste Temperatur- & Sensor-API auf Raspberry Pi mit GY-91 Modul bauen
  4. Automatisiertes Aeroponik-System mit Raspberry Pi und Feuchtigkeitssensor bauen
  5. Raspberry Pi GPIO meistern: PIR-Bewegungsmelder an B+/Model 2 anschließen
  6. Acconeer A111 Pulsradar mit Raspberry Pi integrieren: Praktischer Leitfaden
  7. HC-SR501 PIR-Bewegungssensor an Raspberry Pi anschließen, kalibrieren und programmieren
  8. Python/MicroPython Sensor Logger: Sensordaten nahtlos in Google Sheets speichern
  9. Thermofühler (Thermocouple) mit Arduino Portenta H7 über MAX6675 IC integrieren
  10. Präzise Druck- & Luftstrommessung mit analogem Sensor und Arduino