Eigenes Messgerät der Bandspannung an Bandsägen mit Arduino

Eigenes Messgerät der Bandspannung an Bandsägen mit Arduino

Nach den ersten Messversuchen geht es nun darum, die Erfahrungen in ein eigenes Messgerät für die Bandspannung einfliessen zu lassen. Die ersten Tests mit FSR’s – Force Sensing Resistors – und Arduino waren noch nicht wiederholgenau. Es gilt jetzt bessere Voraussetzungen zu schaffen. Eine vielversprechende Möglichkeit ist ein passendes Gehäuse mit konstanter Einspannung und damit geringeren Toleranzen im Messsystem.

In meinem Testaufbau aus Artikel Messen der Bandspannung an Bandsägen gab es zu viel Spiel für die Kraftmessung, deswegen war die Wiederholgenauigkeit nicht gut.

Einfluss darauf haben vor allem:

  • Die Winkellage des Zwischenstücks
  • Das Abheben vom Sägetisch auf einer Seite
  • Die nicht konstante (bewegliche) Position des FSR’s selbst

Inhalt
Konstruieren eines passenden Gehäuses
Anzeige der Bandspannung
Komponenten des Messgeräts
Zusammenbau mit Anschluss an Arduino Nano
Funktionen des Messgeräts
Programmieren des Arduino Sketch
Einstellen der maximalen Kraft
Durchführen eines neuer Funktionstests
Festlegen der Grenzwerte
Download
Links

Konstruieren eines passenden Gehäuses

Die Einflüsse lassen sich mit einer passenden Konstruktion verbessern. Hier sollen die Kosten nicht aus dem Ruder laufen. Deswegen habe ich eine 3D-Druck-Variante gewählt. Das Messgerät wird zusätzlich nicht mehr, wie beim Testaufbau, zwischen den Sägebändern eingespannt, sondern nur noch auf einer Seite.

Messgerät Bandspannung FSR Arduino im Gehäuse als CAD Modell
Gehäuse für FSR, Arduino und Stromversorgung. Das Sägeband wird in den beweglichen Halter fixiert.

Auf der linken Seite ist ein beweglicher Halter für das Sägeband lose eingesteckt. Er drückt über einen Pin auf den FSR. Der FSR ist im Gehäuse verbaut.

Halter Sägeband
Halter für das Sägeband mit definierter Andrückfläche auf den Force-Sensing-Resistor

Im Inneren des Gehäuses arbeitet ein Arduino Nano. Er passt gut mit seiner kleinen Baugröße. Er übernimmt die Messung und Auswertung der FSR-Daten. Die Stromversorgung erfolgt über vier AAA Batterien.

Anzeige der Bandspannung

Das Messgerät für die Bandspannung muss seine Messung auch darstellen. In diesem Fall muss die Anzeige Zahlen darstellen können. Dafür eignen sich 7-Segmentanzeigen oder LCD-Displays mit 16×2 Zeichen. Durch die recht großen Abmessungen scheiden diese Anzeigen hier aus. Sehr klein ist ein 0.96“ 128×64 Pixel Display. Der Anschluss an den Arduino ist durch den I2C nur über einfache direkte Leitungen möglich. Daneben ist es auch recht günstig.

Display 0.96" 128x64 Pixel I2C
0.96″ 128×64 Pixel Display mit I2C Anschluss

Das Display ist im Gehäuse, direkt unter dem Arduino Nano montiert. Damit können die Leitungen zum Arduino ohne große Leitungsschleifen und Kabelchaos installiert werden.

Messgerät Bandspannung Einbauposition Displays im Gehäuse als CAD Modell
Einbauposition des 0.96″ Displays im Gehäuse

Neben dem Display befindet sich ein Taster und der Ein-/Ausschalter für das Messgerät.

Komponenten des Messgeräts

Das Messgerät für die Bandspannung besteht damit aus den Komponenten:

  • Arduino Nano
  • Force Sensing Resistor FSR 5 kg
  • 0.96″ 128×64 Pixel Display mit I2C Anschluss
  • Taster (6×6 mm)
  • Ein-/Ausschalter
  • Stromversorgung mit 4 AAA Batterien und dazugehörenden Anschlussclips
  • 2 Widerstände 10 kOhm

Die Schaltung für den FSR ist mit dem Versuchsaufbau identisch. Er wird über einen 10k Pull-Down-Widerstand an Pin A1 angeschlossen. Die 4 Pins des 128×64-Displays (SCL, SDA, VCC und GND) werden direkt mit dem Arduino verbunden. Der Taster wird ebenfalls über einen Pull-Down-Widerstand mit Pin A2 verbunden.

Verbindungen des Displays zum Arduino Nano:

  • GND – GND
  • VCC – 5V
  • SDA – A5
  • SCL – A4
Schaltplan des Messgeräts für Bandspannung mit Arduino, FSR
Schaltplan des Messgeräts für Bandspannung mit Arduino, FSR, Display, Taster, Ein-/Ausschalter und Stromversorgung

Zusammenbau mit Anschluss an Arduino Nano

Der Zusammenbau dauert mit allen Lötverbindungen ca. 2 Stunden. In dieser Reihenfolge geht es ganz gut:

  • Leitungen an den Ein-/Austaster löten und diesen einkleben mit Heißkleber
  • Taster genauso löten und ebenfalls festkleben
  • Leitungen an das Display löten, Display aufstecken und mit Heißkleber fixieren
  • Alle Leitungen an den Arduino Nano löten und Pull-up-Widerstände nicht vergessen
  • FSR in die Messöffnung einschieben und mit Heißkleber festkleben, danach mit Leitungen zum Arduino verlöten
  • Dann die Batterieclips mit Flüssigkleber am Gehäuse festkleben und Leitungen für + und – an Arduino löten (+ zu VIN)
  • Am Ende Arduino Nano aufsetzen und mit kleinen Schrauben festschrauben (2 Punkte reichen)
  • Testen
  • Dann Deckel mit Schraube befestigen
Messgerät Bandspannung: Zusammenbau Gehäuse, Arduino, Display, Stromversorgung von vorne
Messgerät Bandspannung: Zusammenbau Gehäuse, Arduino, Display, Stromversorgung von der Seite
Alle Komponenten sind verbunden als Messgerät für Bandspannung

Funktionen des Messgeräts

Nach dem Einschalten startet der Arduino Nano sofort mit der Messung der Kraft über den Force Sensing Resistor. Die Messung wird jede Sekunde aktualisiert und auf dem Display angezeigt.

Die Analog-Digital-Wandler des Arduino stellt den analogen Messwert vom FSR als Zahl von 0 bis 1023 dar. Zur besseren Einschätzung wird diese Zahl auch als Gewicht umgerechnet und angezeigt.

Über den Taster kann zwischen verschiedenen Sägebändern gewechselt werden. Den einzelnen Sägebändern lassen sich im Arduino Sketch neben dem Namen, die jeweils ermittelten gültigen minimalen und maximalen Grenzwerte zuweisen. Damit kann das Messgerät anzeigen, ob ein gemessener Wert innerhalb dieser Grenzen liegt und die gefundene Bandspannung in Ordnung ist oder ob nochmals nachjustiert werden sollte.

Bedienelemente des Messgerät
Bedienelemente des Messgeräts und Anzeigeelemente auf dem Display.

Wie funktioniert die Messung der Bandspannung mit dem Gerät? Das geht in vier Schritten.

  1. Das Sägeband, wie gewohnt wechseln, ausrichten und grob vorspannen. Den Längsanschlag der Bandsäge (oder ein anders Hilfsmittel) anbringen.
  2. Das Bandspannungsmessgerät zwischen Längsanschlag und linkem Sägeband mittig ausrichten. Das Messgerät langsam in das Sägeband schieben. Das Sägeband muss sich locker in das Messgerät bringen lassen.
  3. Ein Distanzabstandstück zwischen Boden des Messgeräts und den Längsanschlag einführen. Ein guter Wert ist (je nach FSR) 5 mm. Damit wird das Sägeband definiert gespannt.
  4. Den Messwert am Gerät ablesen. Am besten 10 bis 20 Sekunden warten, bis sich ein bleibender Wert eingestellt hat. Je nach Messwert muss jetzt die Bandspannung gelockert oder erhöht werden. Dann kann eine neue Messung erfolgen.

Programmieren des Arduino Sketch

Der Arduino Sketch nutzt die Bibliothek lcdgfx von Alexey Dynda für die Kommunikation mit dem Display. Aus diesem Grund muss sie über die Bibliotheksverwaltung heruntergeladen werden, falls das noch nicht schon vorgenommen wurde.

Bibliothek Arudino lcdgfx
Download der lcdgfx Bibliothek in der Arduino IDE

Zuerst muss das richtige Display aktiviert werden – bzw. die anderen auskommentiert werden. Im Setup-Teil werden die beiden Eingangspins für FSR und Taster definiert und das Display mit dem Font 8×16 vorbereitet.

#include "lcdgfx.h"

DisplaySSD1306_128x64_I2C display(-1);
//DisplaySSD1306_128x64_SPI display(-1,{-1, 0, 1, 0, -1, -1); // Use this line for nano pi (RST not used, 0=CE, gpio1=D/C)
//DisplaySSD1306_128x64_SPI display(3,{-1, 4, 5, 0,-1,-1});   // Use this line for Atmega328p (3=RST, 4=CE, 5=D/C)
//DisplaySSD1306_128x64_SPI display(24,{-1, 0, 23, 0,-1,-1}); // Use this line for Raspberry  (gpio24=RST, 0=CE, gpio23=D/C)
//DisplaySSD1306_128x64_SPI display(22,{-1, 5, 21, 0,-1,-1}); // Use this line for ESP32 (VSPI)  (gpio22=RST, gpio5=CE for VSPI, gpio21=D/C)
// composite_video_128x64_mono_init(); // Use this line for ESP32 with Composite video support

String bandName[4] = {"Nr.01-03mm","Nr.02-06mm","Nr.03-12mm","Nr.04-16mm"};
int bandMin[4] =     { 430,         450,         470,          470};
int bandMax[4] =     { 470,         470,         510,          510};
String s;

int fsrPin = A1; 
int tasterPin = A2;   

int band = 1;
int fsrWert;
float fsrMax = 5.0; //Maximaler (ermittelter/gemessener) Wert des FSR in Kilogramm 
float fsrKG;
float aufloesungADW = 1024.0;
char str[16];
int i = 1;
int taster;
int tastervorher;
long timestamp = 0;
long debounce = 100;

void setup()
{
    pinMode(fsrPin, INPUT);   
    pinMode(pushbuttonPin, INPUT);   
  
    display.setFixedFont( ssd1306xled_font8x16 );
    display.begin();
    display.clear();
}

Im Programmteil loop wird jede Sekunde die Kraft vom FSR gemessen, umgerechnet und auf dem Display ausgegeben. Bei Druck auf den Taster wird zwischen den Grenzwerten der hinterlegten Sägebänder Einstellungen gewechselt. Davon aber später mehr.

void loop()
{
  taster = digitalRead(tasterPin);

  if (taster == HIGH && tastervorher == LOW && millis()-timestamp > debounce) {
    timestamp = millis();    
    band=band+1;
    if (band>3) {band=0;}   
  }

  tastervorher = taster;

  i=i+1;
  if (i>10) {
    i=1;
  
    fsrWert = analogRead(fsrPin);  
    fsrKG = float(fsrWert)/aufloesungADW*fsrMax;
  
    Serial.print("Meßwert = ");
    Serial.print(fsrWert);
    Serial.print(" in Kilogramm: ");
    Serial.println(fsrKG);
    
    s="BAND: "+bandName[band];
    s.toCharArray(str,16);
    display.negativeMode();
    display.printFixed(8,  0, str, STYLE_NORMAL);
    display.positiveMode();

    display.printFixed(8,  16, "Messwert", STYLE_NORMAL);
    sprintf(str,"%04d",fsrWert);
    display.printFixed(8,  32, str, STYLE_NORMAL);

    display.printFixed(72,  16, "Grenzen", STYLE_NORMAL);
    s=String(bandMin[band])+"-"+String(bandMax[band]);
    s.toCharArray(str,16);
    display.printFixed(72,  32, str, STYLE_NORMAL);

  //trick for float with sprintf
    sprintf(str, "%d.%1d kg ", (int)fsrKG, (int)(fsrKG*100)%100);
    display.printFixed(8,  48, str, STYLE_NORMAL);

    if ((fsrWert>bandMin[band]) && (fsrWert<bandMax[band])) {
      display.negativeMode();
      s="*GUT*";
      s.toCharArray(str,16);
      display.printFixed(72,  48, str, STYLE_NORMAL);
      display.positiveMode();  
      }
    else {
      s="-----";
      s.toCharArray(str,16);
      display.printFixed(72,  48, str, STYLE_NORMAL);
    }
  }
  lcd_delay(100);
}

Einstellen der maximalen Kraft

Im Arduino Sketch wird der Messwert der Kraft in eine Gewichtsangabe umgerechnet. Damit die Kraft genauer angezeigt wird, kann wird sie am besten über einen Versuch ermitteln.

In diesem Beispiel hat der Sensor eine maximale Kraft von 5 kg. Der Sensor arbeitet mit 3,3 V. Diese entsprechen dann ungefähr den 5 kg. Im Schaltplan wird mit einem Spannungsteiler und 5 V gearbeitet. Dadurch wird nicht exakt mit 3,3 V als maximale Spannung gearbeitet. Die Umrechnung lässt sich aber verbessern, wenn mit einem Testgewicht – am besten von 5 kg – der angezeigte Messwert ermittelt wird.

Der gemessene maximale Wert kann im Arduino Sketch vorgegeben werden.

Durchführen eines neuer Funktionstests

Jetzt zeigt sich, ob die ganze Arbeit sinnvoll war. Mit dem neuen Messgerät werden wieder Versuche mit mehreren Sägebändern durchgeführt. Zuerst habe ich eine optimale Bandspannung einzustellen versucht.

MessungBand 1: 3 mmBand 2: 6 mmBand 3: 12 mm
1432463476
2435466474
3434450492
4441462498
5454455475
Min 432 450 474
Max 454 466 498

Das Messergebnis ist vielversprechend. Die Werte haben eine sehr gute Wiederholgenauigkeit. Viel genauer als im ersten Versuch.

Festlegen der Grenzwerte

Aus den Versuchen kann man gut erkennen, in welchen Grenzen ein optimal gespanntes Sägeband vom Messwert liegen muss.

Bei meiner Wahl des Zwischenstücks von 5 mm liegen die Bänder in einem engen Bereich.

Die so ermittelten Grenzwerte für ein optimal eingestellte Sägebänder lassen sich im Arduino Sketch hinterlegen. Jedes Band hat einen Namen und einen minimalen und maximalen Wert.

Das wird im Sketch in den Variablen BandName[], BandMin[], BandMax[] verwaltet.

Für meine Säge und meine Sägebänder habe ich diese Werte aus den Versuchen festgelegt.

Bandname BandMin (untere Grenze für GUT) BandMax (obere Grenze für GUT)
Band 1: 3 mm430 470
Band 2: 6 mm450480
Band 3: 12 mm470510
Band 4: 16 mm470510

Sie sind auch im Arduino Sketch hinterlegt.

String bandName[4] = {"Nr.01-03mm","Nr.02-06mm","Nr.03-12mm","Nr.04-16mm"};
int bandMin[4] =     { 430,         450,         470,          470};
int bandMax[4] =     { 470,         470,         510,          510};

Nach den vielen Tests für das Messgerät brauche ich besonders für mein Lieblingsband, die 6 mm Breite, keine große Hilfe mehr. Ich bin gespannt, wie das für die nächsten Bandwechsel in der Zukunft aussieht und welche guten Dienste das Messgerät leistet.

Möchten Sie wissen, wie es mir geholfen hat oder nicht? Tragen Sie einfach Ihre Mailadresse ein.

Download


Sketch für Arduino-IDE, Schaltplan für Fritzing und STL-Dateien für 3D-Druck

Artikel zum FSR auf Wikipedia: https://de.wikipedia.org/wiki/Force_Sensing_Resistor
lcdgfx Bibliothek auf github: https://github.com/lexus2k/lcdgfx
Artikel Messen der Bandspannung an Bandsägen

Dieser Beitrag hat einen Kommentar

Kommentar verfassen