De sensor bestaat uit een aluminium blok met in het midden twee gaten. Aan weerszijde van de gaten zijn metalen strips geplakt waarvan de weerstand verandert bij rekken of samendrukken. Om dit goed te kunnen meten is een versterker nodig, de HX-711 die wordt aangesloten op de Arduino volgens onderstaand schema.
De sensor wordt gebruikt bij het onderdeel wrijvingmeting op de site hwc.t+i: https://sites.google.com/d/1pfykMnDT-arxNVIJ8WnWk5DdzmJoskc0/p/12RkzmFp5vSX0PS05HvKYxrOqsv80et1R/edit?pli=1
We hebben hier vooral gebruik gemaakt van de Sparkfun tutorial voor de HX-711: https://learn.sparkfun.com/tutorials/load-cell-amplifier-hx711-breakout-hookup-guide
Voor het gebruiken van de sensor hebben we nog het een en ander aan software nodig. Op de eerste plaats de bibliotheek van bogde: https://github.com/bogde/HX711
Als deze bibliotheek nog niet geïnstalleerd is (kijk in de Arduino IDE bij bestand > voorbeelden of HX711-master erbij staat) moet je dit nog doen: Pak het gezipte bestand uit in: documenten > arduino > libraries.
Nu nog de library installeren: ga daarvoor naar: https://sites.google.com/site/hwcontwerpen/sensoren/libraries-installeren
Nu hebben we nog code nodig om te kalibreren en code voor het meten zelf. Voor de kalibratie code gebruiken we “SparkFun_HX711_Calibration”, die kan je beneden kopiëren.
Voor het meten zelf gebruiken we een aangepaste code van het ‘Sparkfun HX711 Example’. (Beneden kopiëren)
Upload de onderstaande code naar de Arduino.
Start het programma met onbelaste sensor en open de seriële monitor.
De reading moet dan 0 aangeven en de kalibratiefactor 2000.
Hang nu een bekend gewicht aan de sensor (hiernaast een 9v batterij).
Voor in het invoer veldje + of - in (met enter) totdat de reading overeenkomt met het gewicht (je kan meerdere plussen en minnen tegelijk invoeren).
Je hebt nu je kalibratiefactor voor het meetprogramma.
/* SparkFun calibratie sketch:
https://learn.sparkfun.com/tutorials/load-cell-amplifier-hx711-breakout-hookup-guide.
Kijk in de toturial hierboven voor meer info en de originele code.
*/
#include "HX711.h"
#define DOUT 3 // >> of DT op printplaat
#define CLK 2 // >> of SCK op printplaat
HX711 scale;
float calibration_factor = 2000; // >> Dit is de factor die je moet gaan bepalen
void setup() {
Serial.begin(9600);
Serial.println("HX711 calibration sketch");
Serial.println("Remove all weight from scale");
Serial.println("After readings begin, place known weight on scale");
Serial.println("Press + or a to increase calibration factor");
Serial.println("Press - or z to decrease calibration factor");
scale.begin(DOUT, CLK);
scale.set_scale();
scale.tare(); //Reset the scale to 0
long zero_factor = scale.read_average(); //Get a baseline reading
Serial.print("Zero factor: "); //This can be used to remove the need to tare the scale.
Serial.println(zero_factor); //Useful in permanent scale projects.
}
void loop() {
scale.set_scale(calibration_factor); //Adjust to this calibration factor
Serial.print("Reading: ");
Serial.print(scale.get_units(), 1);
Serial.print(" gram");
Serial.print(" calibration_factor: ");
Serial.print(calibration_factor);
Serial.println();
if(Serial.available())
{
char temp = Serial.read();
if(temp == '+' || temp == 'a')
calibration_factor += 10;
else if(temp == '-' || temp == 'z')
calibration_factor -= 10;
}
}
Upload het onderstaande meetprogramma.
Verander in de regel - #define calibration_factor 2070- het getal 2070 in het getal dat je gevonden bij het kalibreren.
De meettijd staat nu op 10 seconden. Dit kan je veranderen door in de regel - while (millis() < 10000) - het getal te veranderen.
Open de seriële monitor. Je ziet twee kommen gescheiden door een komma. De eerste kolom is het aantal milliseconden sinds de start van het programma. De tweede kolom is het gewicht op dat moment. Na iedere meting moet je op de reset knop op de Arduino drukken voor de volgende meting. Druk op uitvoer wissen om het scherm leeg te maken.
/* Wrijving met de HX-711.
Dit is een aangepaste versie van het SparkFun HX711 example.
Er wordt een bepaalde (10000 milliseconde), in te stellen tijd, gemeten.
Voor iedere meting op de reset knop drukken.
*/
#include "HX711.h"
#define calibration_factor 2070 // !!! waarde bepalen met de SparkFun_HX711_Calibration sketch!!!
#define DOUT 3
#define CLK 2
HX711 scale;
int led = 13;
void setup() {
Serial.begin(9600);
Serial.println("HX711 scale demo");
pinMode(led, OUTPUT);
scale.begin(DOUT, CLK);
scale.set_scale(calibration_factor);
scale.tare(); // reset de scale op 0
Serial.println("Readings:");
}
void loop() {
while (millis() < 10000) { //// tijd instellen naar behoefte ////
digitalWrite(led, HIGH);
Serial.print(millis());
Serial.print(" , ");
Serial.println(scale.get_units(), 1); //laatste getal is het aantal decimalen
}
digitalWrite(led, LOW);
}
Meetresultaten in Excel:
Kopieer de getallen (met komma) naar (b.v.) een kladblok bestand. Open Excel. Eerst gaan we het decimaal en scheidingsteken omzetten naar het Amerikaans systeem: Ga naar – Bestand > Opties > Geavanceerd -. Vink – Scheidingstekens van systeem gebruiken - af. Verander Decimaalteken in een punt en scheidingsteken voor duizendtallen in een komma.
Ga nu naar – Gegevens – dan naar – Externe gegevens ophalen- klik op – Van tekst – en zoek het kladblokbestand waar je het opgeslagen hebt en dubbelklik.
Je krijgt nu de Wizard Tekst Importeren:
Klik aan – Gescheiden - en klik op volgende.
Vink – Tab – af en vink – Komma – aan en klik op volgende.
Op – Standaard – laten staan en klik voltooien.
Laat – Bestaand werkblad – aan staan en klik op OK.
De gegevens zijn nu in Excel geplaatst.
Nu gaan we van de gegevens nog een grafiek maken zodat we het statische- en dynamische wrijvingsgebied goed kunnen onderscheiden.
Selecteer de getallen. Ga naar – Invoegen - dan naar – Grafieken – en selecteer - Spreidingsgrafiek - .
Geef de grafiek een grafiektitel en maak ook as-titels (klik op het plusje naast de grafiek).
Pas indien nodig de uiterste waarden van de horizontale as aan: Selecteer met linkermuisknop, Klik rechts, klik op – As opmaken – en pas bij Grenzen het minimum en maximum aan.