Project tutorial

Tension Meter for Saw Blades on Band Saws with Arduino © GPL3+

Setting up a new blade for a band saw is sometimes a hard job. But there could be help with Arduino power.

  • 69 views
  • 0 comments
  • 0 respects

Components and supplies

Necessary tools and machines

3drag
3D Printer (generic)

About this project

Setting the correct blade tension is not easy. The band saw is the Diva of saws! If tension is too small, the saw blade starts to flutter, the cut becomes unclean and requires additional grinding. If the tension is too high, this reduces the service life of the blade. What is left? Everytime try again and again until the right setting is found? A Google search gave hope. I am not alone with this issue. There is a whole host of tips for changing, aligning and tensioning a blade.

One most talked tip was to adjust the tension so that the blade sounds like a played “E” on a bass guitar. Crap - unfortunately I don't have a bass guitar at home for a live trial (and air guitar won't be enough). Luckily my daughter got a keyboard and I can listen to an "E". Unfortunately, that didn't help me at all. I'm probably not musical enough!

From technical point of view, the blade tension must ultimately be measurable. After another Google search, it was clear that this was true and that a good setting is between 250 – 300 N/mm². The right measuring device is unfortunately not a bargain. It costs about € 300! That is too much for me. These measuring devices work mechanically and presumably indicate a linear expansion. The housings are therefore made of metal and must be manufactured very precisely. There has to be another solution for me. So just somehow measure the force and evaluate it with a microcontroller?

FSR – Force Sensing Resistor

One way could be to measure the force with a FSR - a Force Sensing Resistor. They consist of a polymer thick film (PTF), which shows a decrease in resistance with an increase in the force exerted on the active surface. FSRs are not suitable for precision measurements such as load cells or strain gauges. However, they are still inexpensive at around € 5 and easy to use.

The only disadvantage of this method is that the absolute force cannot be measured as with a professional device. A suitable blade tension must first be determined as a template.

Constructing a housing

After the first measure experiments with FSR was clear, a condition is a good housing. Here, the cost should not get out of hand. That's why I chose a 3D printing variant.

On the left, a movable holder for the saw band is loosely inserted. It pushes a pin on FSR. The FSR is installed in the chassis.

Inside the housing an Arduino Nano works. It goes well with its small size and takes over the measurement and evaluation of the FSR data. It is powered by four AAA batteries.

Displaying the blade tension

A display for the blade tension must also show its measured value. Perfect for this is a very small 0.96 "128 × 64 pixel display. The connection to the Arduino is possible through the I2C. And the price is also very low.

The display is mounted in the housing directly under the Arduino Nano. So that the connection through Arduino can be installed without large loops and cable chaos.

Next to the display there is a button and the on / off switch for the display.

Components

The measuring device for the blade tension consists of the following components:

  • Arduino Nano
  • Force Sensing Resistor FSR 5 kg
  • 0.96 "128 × 64 pixel display with I2C port
  • Button (6 × 6 mm)
  • On / off switch
  • Power supply 4 AAA batteries and connecting clips
  • 2 resistors 10 kOhm

The FSR is connected via a 10k pull-down resistor to pin A1. The 4 pins of 128 × 64 displays (SCL, SDA, VCC and GND) are connected directly to the Arduino. The button is also connected via a pull-down resistor to pin A2.

The I2C display gets this connection to Arduino Nano:

  • GND - GND
  • VCC - 5V
  • SDA - A5
  • SCL - A4

Assembly

The assembly takes you about 2 hours. In this order, it goes quite well:

  • Solder cables to the on/off button and fix button with hot glue
  • Glue and solder button the same way
  • Plug in the display and solder cables to the display, stick is also with hot glue
  • Solder all wires to the Arduino Nano and add pull-up resistors
  • Push in the FSR into the measuring port and glue with hot glue, then solder wires to Arduino
  • Then add the battery clips with liquid glue on the housing and connect + to Arduino VIN and - to GND
  • Put on Arduino Nano and fasten with small screws
  • Test it
  • Then close housing with the cover with one screw

Functions of the meter

After switching on the Arduino Nano starts immediately with the measurement of force on the force sensing resistor. The measurement is updated every second and displayed on the screen.

The analog-digital converter of the Arduino represents analog reading from the FSR as a number from 0 to 1023. In order to better estimate this number will be displayed and converted in Kilogramm.

With the button you can switch between different saw blades. The individual saw blades can be added in the Arduino sketch next (with name, minimum and maximum limits).

How to measure the blade tension? Do this four steps.

  • Change as usual the saw blade and align it. Position the longitudinal guidance of the band saw (or another tool)
  • Put the tension meter between longitudinal guidance and left bandsaw center. The holder of the tension meter should slide slowly and easy into the saw blade.
  • Introduce a distance spacer between the bottom of the measuring device and the longitudinal guidance. A good value is 5 mm (depending on the FSR). So that the saw blade is stretched defined.
  • Read the measured value on the unit. Wait at best 10 to 20 seconds until a constant value has been established. Depending on the measured value, the blade tension must now be relaxed or increased. Then a new measurement can be made.

Coding the Arduino Sketch

The Arduino sketch uses the Library lcdgfx Alexey Dynda to communicate with the display. For this reason, it must be downloaded and setuped first.

#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

In the setup part, the two input pins for FSR and buttons are defined and prepared the display with the Font8×16.

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

In the program part loop the force is measured every second. When pressing the button, the stored settings of saw blades are changed between the limits. But more of that later.

Setting the maximum force

In Arduino Sketch the measured value of the force is converted to a weight. This means the power is displayed accurately, may will identify best about trying.

In this example, the sensor has a maximum force of 5 kg. The sensor operates at 3.3 V. These correspond then about the 5 kg. In the circuit diagram is carried out with a voltage divider and 5V. This will not work accurately with 3.3 V as the maximum voltage. The conversion can be improved, but if having a test weight - preferably 5 kg - the displayed result is determined. The measured maximum value can be specified in the Arduino sketch.

float fsrMax = 5.0; //Maximum (measured) value of FSR in Kilogramm

Performing a function test

Unfortunately, this tension meter does not measure absolute values. So we have to setup a perfect installed blade and took the measued force from this. And this is necessary for every blade type we use. Here is a series of measurements with my band saw.

Setting the limits

From the experiments can be seen clearly the limits which an optimally tensioned saw blade must have. In my choice of the spacer of 5 mm, the blades are in a narrow range. The determined limits for an optimally set of saw blades can be deposited in the Arduino sketch. Each blade has a name and a minimum and maximum value.

This is stored in the sketch with the variables bladeName[], bladeMin[], bladeMax[].

For my saw and my blades I have set these values ​​from my tests.

They are also stored in the Arduino sketch.

String bladeName[4] = {"No.01-03mm","No.02-06mm","No.03-12mm","No.04-16mm"};
int bladeMin[4] = { 430, 450, 470, 470};
int bladeMax[4] = { 470, 470, 510, 510};

After all the tests for the tension meter I need especially for my favourite blade, the 6 mm wide, not much help more. I'm curious how that looks for the next changes in the future and what good services does my tension meter.

And so, the setting of a band saw blade no longer has anything to do with music!

Interestingly, that's wrong! The stumbling stone for the development of FSRs goes back to Mick Fleetwood from Fleetwood Mac. He was looking for a sensor for his electronic drums in the mid-1980s and found none. This was the start for the development of Force Sensing Resistors with a friend. So, the saw band tension somehow remains a musical theme.

You can download always the current version on techpluscode.de.

Have fun with the tension meter!

Article of FSR on Wikipedia https://en.wikipedia.org/wiki/Force-sensing_resistorlcdgfx library on github: https://github.com/lexus2k/lcdgfx

Das Projekt gibt es auch in Deutsch auch techpluscode.de als zwei Artikel.

Teil 1: https://techpluscode.de/messgerat-der-bandspannung-fur-bandsagen/Teil 2: https://techpluscode.de/eigenes-messgeraet-der-bandspannung-an-bandsaegen-mit-arduino/

Code

Arduino sketch of tension meterArduino
/*
Programm: bladetension.ino
Funktion: Tension meter of blades on band saws
          measured with Force sensing resistor FSR

Autor:    Thomas Angielsky
Internet: https://techpluscode.de

*/

/*
 *   lcdgfx:
 *   Copyright (c) 2017-2019, Alexey Dynda
 *   Attiny85 PINS (i2c)
 *             ____
 *   RESET   -|_|  |- 3V
 *   SCL (3) -|    |- (2)
 *   SDA (4) -|    |- (1)
 *   GND     -|____|- (0)
 *
 *   Attiny SPI PINS:     connect LCD to D4 (D/C), GND (CS), D3 (RES), D1(DIN), D2(CLK)
 *
 *   Nano/Atmega328 PINS: connect LCD to A4/A5 (i2c)
 *   ESP8266: GPIO4(SDA) / GPIO5( SCL )
 *   STM32: B7(SDA), B6(SCL)
 */

#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 bladeName[4] = {"No.01-03mm","No.02-06mm","No.03-12mm","No.04-16mm"};
int bladeMin[4] =     { 430,         450,         470,          470};
int bladeMax[4] =     { 470,         470,         510,          510};
String s;

int fsrPin = A1; 
int buttonPin = A2;   

int blade = 0;
int fsrValue;
float fsrMax = 5.0; //Maximum (measured) value of FSR in Kilogramm 
float fsrKG;
float resolutionADW = 1024.0;
char str[16];
int i = 1;
int button;
int buttonlast;
long timestamp = 0;
long debounce = 100;



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

void loop()
{
  button = digitalRead(buttonPin);

  if (button == HIGH && buttonlast == LOW && millis()-timestamp > debounce) {
    timestamp = millis();    
    blade=blade+1;
    if (blade>3) {blade=0;}   
  }

  buttonlast = button;

  i=i+1;
  if (i>10) {
    i=1;
  
    fsrValue = analogRead(fsrPin);  
    fsrKG = float(fsrValue)/resolutionADW*fsrMax;
  
    Serial.print("Measured value = ");
    Serial.print(fsrValue);
    Serial.print(" in Kilogramm: ");
    Serial.println(fsrKG);
   
   
    s="BLADE: "+bladeName[blade];
    s.toCharArray(str,16);
    display.negativeMode();
    display.printFixed(8,  0, str, STYLE_NORMAL);
    display.positiveMode();

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

    display.printFixed(72,  16, "Limit", STYLE_NORMAL);
    s=String(bladeMin[blade])+"-"+String(bladeMax[blade]);
    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 ((fsrValue>bladeMin[blade]) && (fsrValue<bladeMax[blade])) {
      display.negativeMode();
      s="GOOD!";
      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);
}

Custom parts and enclosures

Housing of the tension meter
The device is made of three parts. You can print it with a 3d printer.
Download the current version on https://techpluscode.de/downloads/download-messgerat-fur-bandspannung/

Schematics

Circuit diagram
created with fritzing
circuit_diagram_Mm3tOljk6U.fzz

Comments

Similar projects you might like

PKE Meter Geiger Counter

Project showcase by mvonsivers

  • 3,576 views
  • 0 comments
  • 5 respects

Sorting Resistors the Lazy Way

Project tutorial by Federico Vivaldi

  • 13,244 views
  • 40 comments
  • 87 respects

Portable Range Detection Device

Project tutorial by Viktor S

  • 10,393 views
  • 6 comments
  • 25 respects

DIY Benchtop pH Meter

Project tutorial by Atlas Scientific

  • 9,523 views
  • 4 comments
  • 28 respects

Smart Coffee Table with Nano and HX711

Project tutorial by TheTNR

  • 4,581 views
  • 1 comment
  • 13 respects

Open Vortexer

Project tutorial by Federico Vivaldi

  • 3,136 views
  • 0 comments
  • 11 respects
Add projectSign up / Login