Wegen met Loadcel in het brouwproces

Gestart door ExPeteriment, 08-01-2018 21:10 u

Vorige topic - Volgende topic

0 leden en 1 gast bekijken dit topic.

ExPeteriment

Intro

In diverse stappen van het brouwproces is het gewicht een belangrijke maatstaf. Er kleven nadelen aan het toepassen van keuken en personenweegschalen bij het brouwproces. Ze gaan uit terwijl je ermee bezig bent, leveren altijd gewichtseenheden af, moeten steeds gekalibreerd worden, onvoldoende nauwkeurig, belasting schermt display snel af etc. Op zich logisch, ze zijn niet voor het brouwproces ontworpen. In digitale weegschalen zitten loadcellen. Ik heb voor loadcellen een bepaalde opstelling bedacht,  daarachter eigen programmatuur gezet om te onderzoeken of ik die in kan zetten bij:
1.   Maischen, volgen hoeveel je toevoegt en aftapt;
2.   Koken, nagaan hoeveel er verdampt is,
3.   Vergisten, verloopt SG weergeven,
4.   Daarnaast handig bij tappen, zodat je altijd kunt zien hoeveel glazen er nog in de keg zitten.

In dit topic toon ik via experimenten aan dat loadcellen met een juiste opstelling en programmatuur hier een rol kunnen spelen. Op de vier gebieden volgen aparte topics, anders wordt deze te groot en gaan de specifieke toepassingen door elkaar lopen.

Eisenpakket:
Mijn eisen aan de weegschakeling voor het bierbrouwen:
1-   Aan blijven, niet steeds uitgaan;
2-   Niet steeds moeten kalibreren door last eraf te halen en weer terug te zetten, desondanks weinig verloop van de meetresultaten,
3-   Het display mag niet door de last afgedekt worden;
4-   Nauwkeurig, kleine variaties in relatief grote lasten weergeven (vb bij koken en vergisten);
5-   Lichte en zware lasten aankunnen;
6-   Weergave in zelf te bepalen eenheden (liters, kilo's, SG, aantal resterende glazen, verdampt stoom),
7-   Gegevens moeten geëxporteerd kunnen worden.
8-   Moet stand alone kunnen werken, dus zonder aansluiting PC/laptop.
9-   Compact, goedkoop, eenvoudig te bouwen

Personen en keuken weegschalen voldoen niet aan alle eisen, maar die zijn dan ook niet voor bierbrouwen ontwikkeld.

De Loadcel:
Het type loadcel dat ik toepas (zie onder) moet aan 1 kant aan de ondergrond vastgeschroefd worden, de andere kant moet los zijn van de ondergrond, daarop komt de belasting. De loadcellen werken op basis van weerstanden die veranderen onder invloed van druk en trekkrachten. De veranderingen zijn minimaal, daarom zijn ze in een brugschakeling opgenomen en zit er een nauwkeurige AD convertor (GX711) achter. Daar komen dan digitale signalen uit, waar je een PC/controller op kunt aansluiten.

Ik heb 3stuks van 10 kg varianten aangeschaft, er zijn lichtere en zwaardere. Om de kosten hoef je het niet te laten:

In huis tuin en keukenweegschalen zitten ze ook, maar dan andere vorm, hierbij een open geschroefde personenweegschaal met op de hoekpunten loadcellen:


Uitlezen met Arduino.
In mijn opstelling lees ik de getallen uit met een Arduino. In de gevoeligste stand komen er getallen van 7 cijfers uit. Het viel me op dat deze getallen vanaf het 3e cijfer nogal fluctueerden. Door een goede aarding en door ze te middelen verminderde het fluctueren sterk.  Middeling over veel individuele metingen gaat wel ten koste van snelheid, maar ja, een vergisting is traag, dus dat geeft dan niet. Bij maischen en tappen wil je snellere respons, maar dan is de nauwkeurigheid minder van belang, dan voldoet een mindere weegschaalnauwkeurigheid.

Het programma voor het uitleesdeel met de HX711 driver is heel compact. Het uitlezen van het gemiddelde gebeurt met slecht 1 commando:
  RuwNieuw = scale.read_average (1000);  // nieuwe ruwe waarde wordt bepaald door loadcel uit 1000 te laten middelen.
Dat getal is kleiner te nemen, of als variabele toe te passen. Ik zal mijn programma van Nederlands kommentaar voorzien en aan dit topic hangen. Is minder dan een A4.

Het programma schrijft de getallen naar de seriële bus. Ik laat de gemiddelde getallen verder door de Arduino ongemoeid. Als ze eerst naar kilo's zouden worden omgezet en dan later weer naar iets anders (vb liters, SG, aantal glazen), dan zou ik de nauwkeurigheid om zeep helpen.

Voor de experimenten heb ik er een lcd display en een sd kaart module eraan toegevoegd. Hierdoor kan ik er stand alone mee werken en heb de getallen ook later op een PC tot m'n beschikking om de data bijvoorbeeld in Excel te analyseren.

De proef-opstelling: Arduino in kastje met LCD display, SD module erop, AD convertor blijft dicht bij loadcel. RVS blad is geaard. In aarding/afscherming kan het nog verbeteren.

Grotere gewichten, wat nu?.
Mijn loadcellen zijn tot 10 kg bedoeld, maar in mijn hobbybrouwerij (brouwerij DaalderWaard) heb ik met grotere gewichten te maken. De filterkuip weegt met inhoud tot ca 20 kg, kookketel (ik gebruik nog steeds de Daalderop) loopt wel op tot  80 kg. Vergisten doe ik in 1 of meerdere 19 l kegs, ook al snel 20 kg per stuk (keg + 15 l brouwsel). Tappen uit 11,5 l kegs, dus ook > 10 kg.

Ik breng de gewichten omlaag met het hefboomprincipe. Hierbij als de opstelling voor de filteremmer:



Door het staafje dichter naar het middelpunt te plaatsen, neemt het gewichtsdeel op de loadcel rechtsonder af. Het staafje is dus het kantel/draaipunt, ook al draait er merkbaar niets. De load cel is van stijf materiaal gemaakt (aluminium als ik me niet vergis).

Daarop een plateau:

Daarop de te meten emmer, ketel, kuib, evt keg, of wat dan ook.


Ernaast staat het meethulpmiddel (David), daarmee doseerde ik 10 ml om te kijken of dit invloed had op de emmer van 23 liter (Goliath).

Voor Daalderop ketel heb ik een andere opstelling. De ketel staat op een stevig plateau met een balk als kantelpunt. De load cel zit verticaal tegen de muur gemonteerd, de ketel met isolatie leunt er tegenaan zodanig dat het plateau aan weerskanten van het balkje vrij van de grond hangt. Met een bagage weger meet ik met wel gewicht de ketel tegen de loadcel leunt, door de balk te verschuiven zorg ik dat dit onder 10 kg is. Meer hierover in het loadcel kook topic. Ik overweeg hier een 50 kg exemplaar toe te passen, maar die heb ik nu niet. Dan kun je denk ik wel tot 200 kg gaan. Als je op gas kook zet je de pit gewoon op het plateau erbij.

Het experiment.
Een experiment was met bovenstaande opstelling. Ik startte het in de avond met ca 8,5 liter water.  Na verloop van tijd gooide ik er gedoseerd wat Davidjes in en ook een keer een liter. Daarna liet ik het de nacht staan. In de ochtend weer eea toevoegen. Wat ik erbij gooide noteerde ik nauwgezet. Uiteindelijk zette ik de kraan van de emmer open. Daarna SD kaar PC in, getallen in Excel gezet en er grafieken van geplot. Ik kon precies mij toegevoegde hoeveelheden nagaan, de nacht was de waarde stabiel gebleven. Hieronder een representatieve greep uit wat resultaten:







Conclusie: Beschreven oplossing voldoet aan de gestelde eisen en lijkt toepasbaar op de genoemde 4 fases in het proces is op basis van de experimenten. Let op opstelling (aarding, juiste hefboominstelling) en de Arduino niet teveel laten rekenen (daar ligt niet zijn kracht). In de aparte topics laat ik specifiek daarop gerichte experimenten zien. Want we moeten het eerst nog zien voor we het geloven.

Verder ga ik de opstelling als die uit de experimenteerfase is mogelijk nog uitbreiden met tft display (grafiek meteen daarop), bluetooth, klokmodule, geluidsignaal, etc om hem nog zelfstandige zijn werk te laten doen. Ik overweeg het ook met de bestaande temperatuur regeling te integreren. Maar ja, tijd besteden aan brouwen houdt toch prioriteit.

Wordt vervolgd.

Peter

Jacques

Interessant project. Vooral door het continu kunnen volgen van de vergisting door weging.

seed7


ExPeteriment

Ter voorbereiding op de echte vergistingsmeting meting heb ik een experiment gedaan met twee emmers water met daartussen een aangezogen dun slangetje. De opstelling (laptop stond daar maar heel even hoor):


Nadat de niveaus via het slangetje in balans waren, heb ik in de rechter emmer (die zonder loadcel) een liter water gegooid (in kg gemeten op weegschaal). Eerst stroomde het water relatief snel door het slangetje, maar dat ging steeds langzamer naarmate de niveaus dichter bij elkaar kwamen. In dit geval duurde het meer dan een nacht. Ik heb de gegevens van de sd kaart in Excel ingelezen, dit leverde geheel volgens verwachting de volgende kromme:



Op de  y-as staan de ruwe getallen uit de loadcel. Ik weet dan dat dit verschil staat voor een halve kilo (er is een halve liter overgestroomd om de niveaus weer gelijk te krijgen). Dat zou ik bij de as kunnen zetten. Op de x-as staat het aantal metingen, er worden er ca 3 per minuut gedaan, dus ca 14 uur meetperiode, ik zou ook uren langs deze  as kunnen zetten.

Dit biedt perspectief voor de echte vergistingsmeting.

@

Citaat van: ExPeteriment op 08-01-2018  21:10 uIk zal mijn programma van Nederlands kommentaar voorzien en aan dit topic hangen. Is minder dan een A4.

Gewoon uit nieuwsgierigheid, wil je de code nog steeds delen op het forum? Ik heb wel intresse want ik wil dit zelf ook eens gaan proberen.
De loadcellen gaan komende week alvast besteld worden.

Groeten,
Ed.

ExPeteriment

Citaat van: @ op 22-04-2018  20:04 uGewoon uit nieuwsgierigheid, wil je de code nog steeds delen op het forum? Ik heb wel intresse want ik wil dit zelf ook eens gaan proberen.
De loadcellen gaan komende week alvast besteld worden.

Groeten,
Ed.
Leuk Ed dat je hier ook mee aan de slag gaat. Ik zoek de gegevens bij elkaar en zal het delen. Wordt komend weekend verwacht ik.

Grt, Peter.

ExPeteriment

Citaat van: ExPeteriment op 24-04-2018  22:23 uLeuk Ed dat je hier ook mee aan de slag gaat. Ik zoek de gegevens bij elkaar en zal het delen. Wordt komend weekend verwacht ik.

Grt, Peter.
Hierbij de Arduino sketch. Ik heb het zo kaal en plat mogelijk gehouden en er veel commentaar in gezet. Wellicht ook leesbaar voor niet programmeurs (lees dan alleen de commentaren om te weten wat het programma doet).

Ik heb het volgende op een Arduino Uno aangesloten:
1- een loadcell via een HX711 AD convertor op pin 2 en 3.
2- een LCD display met I2C op pin A4, A5.
3- eend SD kaart op pin 4, 11, 12, 13 (SPI).

Totaal dus maar 3 componenten en 8 signaaldraden!

Onderstaande sketch kun je via copy/paste op de Arduino IDE inlezen en compileren. Ik heb het vandaag nog gebruikt voor testen waar Hans Halberstadt om vroeg. In die post kun je de output dus zien (volgt zo). Als er vragen, opmerkingen, aanvullingen, ervaringen mee zijn zie ik ze met belangstelling tegemoet. Veel plezier ermee, heb ik ook. Heel recht toe recht aan met indrukwekkende resultaten!

grt,

Peter
/*
  Loadcell programma voor toepassing in het brouwproces DemoVersie 1.0, op verzoek van @, Ed.
  Door Peter Koolhaas / Expeteriment.  Datum: 27 april 2018
*/
//---------------------------------------------------------------------Inlezen benodigde drivers ------------------
#include <SPI.h> //                                                                 | interface van Arduino naar SD
#include <SD.h> //                                                                  | SD
#include <Wire.h>  //                                                               | interface naar LCD
#include <LiquidCrystal_I2C.h>  //                                            | LCD library
#include "HX711.h"  //                                                              | AD convertor voor loadcell
// -------------------------------------------------------------------Instellen drivers ----------------------------
HX711 scale; //                                                                        | AD convertor
const int chipSelect = 4;//                                                         | SD kaart instelling, CS op pin 4
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  //   | LCD instelling
//----------------------------------------------------------------------Aangeven benodigde variabelen en startwaarde ---------
long MeetWaardeGemiddeld = 0; //                                           | hierin komen de gemiddelde meetresultaten
int MetingTeller = 0; //                                                             | Iedere meting krijgt een nummer
long tijd_vorigMeetpunt = 0;        //                                          | Tijd van vorig meetpunt wordt hierin opgeslagen
unsigned long tijd_nieuwMeetpunt = millis();//                           | Nieuw meetpunt: Timerwaarde uit Arduino halen
long interval = 60000;   //                                                        | Het interval bepaalt het aantal metingen per tijdseenheid,
//                                                                                            | deze demo 1 meting per minuut (60.000 miliseconde)
void setup() {
  //-------------------------- -------------------------------------opstarten drivers etc ----------------------------------------------------------
  scale.begin(2, 3, 128); //                                                        | starten AD convertor, aangesluiten op pin 2 en 3, 128 is de nauwkeurigste stand
  Serial.begin(9600); //                                                             | starten seriele poort voor smartphone/PC
  lcd.begin(20, 2);    //                                                              | starten LCD, heeft 20 karakters op 2 rijen
  if (!SD.begin(chipSelect)) //                                                     | starten SD kaart en controleren of die erin zit
  {
    lcd.setCursor (0, 0);
    lcd.print ("plaats SD"); //                                                       | als SD nog niet is teruggeplaatst, volgt melding op LCD.
  }
  else
  {
    Serial.println("SD kaart Okay"); //
    lcd.setCursor (9, 0);
    lcd.print ("SD OK"); //                                                           | anders SD okay melding
  }
} //                                                                                          | einde septup
///---------------------------------------------------------------- Hehe, nu kunnen we gaan meten, lus wordt "eindeloos" doorlopen ------------------------------
void loop() {
  tijd_nieuwMeetpunt = millis();  //                                              | tijdstip bepaling
  if (tijd_nieuwMeetpunt - tijd_vorigMeetpunt > interval) {  //        |Als het interval verstreken is wordt een nieuwe meting gestart.
    lcd.setCursor(8, 1); //
    lcd.print ("meten..."); //                                                          | geef in display aan dat gemeten wordt, laat opstelling dan met rust en SD kaart erin
    MeetWaardeGemiddeld = scale.read_average (1000);  //           | het commando waar alles om draait, ik laat  de AD convertor 1000 keer meten
//                                                                                              | en het gemiddelde ervan bepalen. Gemiddelde bepaling kan op diverse manieren.
    MetingTeller = MetingTeller + 1;  //                                          | teller ophogen

    //----------------------------------------------------------------- opslag in file op SD kaart----------------------------------
    File dataFile = SD.open("DEMO_1.txt", FILE_WRITE);  //            | Openen file op SD kaart, naam te wijzigen, voegt toe, overschrijft niet
    if (dataFile)
    {
      dataFile.print(MetingTeller);
      dataFile.print(" , ");//                                                            | Metingnr en meetwaarde naar file op SD kaart
      dataFile.println(MeetWaardeGemiddeld);
      dataFile.close(); //                                                                | belangrijk SD bestand na schrijven te sluiten, anders wordt de file onleesbaar als je SD eruit haalt
       }
    else
    {
      lcd.setCursor (9, 0);
      lcd.print ("SD?");  //                                                              | melding op LCD als schrijven niet is gelukt, bijvoorbeeld als SD kaart eruit is
    }
      //  -------------------------------------------------------------- gegevens naar seriële poort, uit te lezen met telefoon of PC ----------------
      Serial.print(MetingTeller);
      Serial.print(" , ");
      Serial.println(MeetWaardeGemiddeld);
       //  ------------------------------------------------------------- gegevens naar LCD display:----------------------------
      lcd.setCursor(0, 0);
      lcd.print (MetingTeller);
      lcd.setCursor(8, 0);
      lcd.print (MeetWaardeGemiddeld);
     tijd_vorigMeetpunt = tijd_nieuwMeetpunt ; //                         | timer klaarzetten voor volgend meetinterval
    lcd.setCursor(8, 1);
    lcd.print ("wachten");//                                                          | indicatie dat het programma nu niets doet
  }//                                                                                         | interval gereed
} ///                                                                                         | naar volgende meeting

@

Hoi Peter,

Bedankt voor het delen van de code. Ziet er clean uit.
Mijn spulletjes zijn inmiddels onderweg, dus ik hoop er de komende weken ook echt mee aan de slag te kunnen.

Als ik de code tegen je andere posts aan leg zie ik dat je ondertussen een ander display gebruikt. De 2x20 LCD waar deze code voor geschreven is heb je vervangen door een grafisch TFT display?
In de andere posts zie ik ook dat je het SG op de display laat zien. Ik neem aan dat je dan per vergisting het start SG ingeeft? Ik ga proberen dat straks via een touchscreen display te doen. Dan kan ik meteen net als jij inmidels een grafiek, temperatuur en actueel SG laten zien, maar door de tochscreen wordt het geheel wat interactiever en kunnen de verschillende functies onafhankelijk van elkaar gekozen worden.
Ik laat de Arduino ook via Twitter elke x uur het actuele SG tweeten. Waarom? Gewoon omdat het kan  ^-^

Grtz,
Ed.

ExPeteriment

Citaat van: @ op 29-04-2018 &nbsp;11:13 uHoi Peter,

Bedankt voor het delen van de code. Ziet er clean uit.
Mijn spulletjes zijn inmiddels onderweg, dus ik hoop er de komende weken ook echt mee aan de slag te kunnen.

Als ik de code tegen je andere posts aan leg zie ik dat je ondertussen een ander display gebruikt. De 2x20 LCD waar deze code voor geschreven is heb je vervangen door een grafisch TFT display?
In de andere posts zie ik ook dat je het SG op de display laat zien. Ik neem aan dat je dan per vergisting het start SG ingeeft? Ik ga proberen dat straks via een touchscreen display te doen. Dan kan ik meteen net als jij inmidels een grafiek, temperatuur en actueel SG laten zien, maar door de tochscreen wordt het geheel wat interactiever en kunnen de verschillende functies onafhankelijk van elkaar gekozen worden.
Ik laat de Arduino ook via Twitter elke x uur het actuele SG tweeten. Waarom? Gewoon omdat het kan  ^-^

Grtz,
Ed.
Hoi Ed,
Mooie plannen heb je ermee en ik ben blij dat er straks nog iemand is om de ervaringen uit te wisselen. Zeker met het versturen van resultaten naar buiten wil ik wel van je leren. Ik heb met ESP zitten vogelen, maar schuif dat nog voor me uit.

Ik heb 3 load cellen en 2 opstellingen. Een kale met lcd display, die gebruik ik nu voor de leerzame interactie met Hans over nauwkeuriger maken van de meetmethode. Daarnaast heb ik er 1 in breadbord vorm met oa TFT display. Steeds als ik die definitief wil maken verzin ik er weer iets bij, maar is wel mijn uiteindelijke doel. Voor de resolutie van mijn tft display is de nauwkerigheid van de meetmethode in het script al meer dan voldoende.

Voor het laten tekenen van de grafiek op het display geef ik inderdaad het begin SG op en het verwachte eind SG (op basis van BrouwVisie en brouwervaringen.) Ik geef de getallen in met een IR zender/ ontvanger. Het gaat me voornamelijk om de vorm van de grafiek, daaruit bepaal ik of ik temperatuur verhoog of kan gaan overhevelen (zonder aanraking met zuurstof naar andere keg). Ik wil de temperatuur nog enigszins omgekeerd evenredig met het SG verloop regelen.

Ik kijk ook nog of ik de sg op basis van de formules van Hans kan laten bepalen, maar daar zit mbt het deltavolume een k1 factor in waar ik de waarde nog niet van weet.

Heel leuk om naast het brouwen mee bezig te zijn.

Succes,
Peter.

@

Hoi Peter,

Misschien is dit niet de juiste plek om over de inhoud van de code te praten, maar ik probeer het toch maar.
Ik ben me aan het verdiepen in de omrekening van de gewichtsafname naar het actuele SG en heb daar wat vragen over die jij misschien al wel hebt beantwoord.
Volgens de formules van Hans is het actuele SG te brekenen als je het leeggewicht van het gistingsvat, het totale start gewicht en het begin SG weet.
Maar, volgens mij is het leeg gewicht van het gistingsvat en het start gewicht toch helemaal niet nodig? Als je alleen het start SG weet, en je weet de meetwaarden van de loadcell dan kun je toch aan de hand van het verloop van de meetwaarden berekenen met hoeveel het SG is afgenomen? Volgens mij is dat niet afhankelijk van het startgewicht, zolang je maar niet over de maximale load van de cel heen gaat.

Of zie ik iets over het hoofd? Ik heb de cellen nog niet dus kan niets testen, alleen maar overpijnzen  ;D

Ed.

ExPeteriment

Citaat van: @ op 30-04-2018 &nbsp;21:42 uHoi Peter,

Misschien is dit niet de juiste plek om over de inhoud van de code te praten, maar ik probeer het toch maar.
Ik ben me aan het verdiepen in de omrekening van de gewichtsafname naar het actuele SG en heb daar wat vragen over die jij misschien al wel hebt beantwoord.
Volgens de formules van Hans is het actuele SG te brekenen als je het leeggewicht van het gistingsvat, het totale start gewicht en het begin SG weet.
Maar,volgens mij is het leeg gewicht van het gistingsvat en het start gewicht toch helemaal niet nodig? Als je alleen het start SG weet, en je weet de meetwaarden van de loadcell dan kun je toch aan de hand van het verloop van de meetwaarden berekenen met hoeveel het SG is afgenomen? Volgens mij is dat niet afhankelijk van het startgewicht, zolang je maar niet over de maximale load van de cel heen gaat.

Of zie ik iets over het hoofd? Ik heb de cellen nog niet dus kan niets testen, alleen maar overpijnzen  ;D

Ed.
Hoi Ed,

Afstemmingen over de methode van het bepalen van de SG grafiek past mi prima op dit forum, geven we anderen de kans er iets van op te steken of opmerkingen te plaatsen waar wij dan weer wat aan kunnen hebben. Zo heb ik ook veel aan jouw vragen, beantwoording helpt de materie te doorgronden en evt gedachtekronkels recht te trekken.

Maar inderdaad, bij het maken van de grafieken tot nu toe heb ik de absolute gewichten van vat en inhoud niet meegenomen. Wat je mi nodig hebt zijn de loadcell waardes op 2 punten die in het bereik liggen van de SG kromme. Ik hou bij het vullen een beetje wort achter, weeg die en schrijf de waarde van de loadcell op. Daarna de achtergehouden wort erbij en weer load cell waarde opschrijven, dat komt dan overeen met het start SG. Met het andere punt kun je het bereik van de kromme bepalen en het SG op ieder moment. Als de vergisting afgelopen is heb je een indicatie van het eind SG. Dat meet ik dan uiteraard ook nog, ligt meest redelijk in de buurt van de waarde in de grafiek.

In de SG formules van Hans zit naast gewichten ook het delta volume. Om daarmee te rekenen moet je dan wel het netto gewicht van het wort weten. Er zit ook een K factor in welke ik nog niet kan kwantificeren. Ik zie die afleiding meer als een bewijs dat het gewichtsverloop een maat is voor het SG verloop. Uiteindelijk wil ik deze berekening wel doorgronden, maar voor ons nog niet noodzakelijk voor het maken van de grafieken.
grt,
Peter

hansHalberstadt

Die k factor kun je op de default waarde laten staan en zegt iets over volumeafname. omdat SG=gewicht/volume moet je naast het gewicht ook het volume weten. De volumeafname is ca 0.078 x de gewichtsafname, dus stel dat het gewicht met 100 g afneemt, dan neemt je volume met 7 ml af. Als je wilt kan ik de procedure wel een keer opschrijven die je kunt volgen om in een keer het SG te berekenen met de software.

@

Citaat van: hansHalberstadt op 01-05-2018 &nbsp;08:11 uDie k factor kun je op de default waarde laten staan en zegt iets over volumeafname. omdat SG=gewicht/volume moet je naast het gewicht ook het volume weten. De volumeafname is ca 0.078 x de gewichtsafname, dus stel dat het gewicht met 100 g afneemt, dan neemt je volume met 7 ml af. Als je wilt kan ik de procedure wel een keer opschrijven die je kunt volgen om in een keer het SG te berekenen met de software.

Als je een keer tijd hebt om dat op te schrijven kan dat denk ik heel nuttig zijn. Ik ben nogal lui van aard, dus als ik iets in 1 keer kan laten berekenen door de software dan ben ik daar best wel voor. 8)

@

Citaat van: ExPeteriment op 30-04-2018 &nbsp;22:41 uWat je mi nodig hebt zijn de loadcell waardes op 2 punten die in het bereik liggen van de SG kromme. Ik hou bij het vullen een beetje wort achter, weeg die en schrijf de waarde van de loadcell op. Daarna de achtergehouden wort erbij en weer load cell waarde opschrijven, dat komt dan overeen met het start SG. Met het andere punt kun je het bereik van de kromme bepalen en het SG op ieder moment.

Waarom 2 meetpunten aan het begin?
Ik dacht dat het zou volstaan om het gistvat gevuld en wel op de cel te zetten en dan de waarde die je uit de cel leest als startwaarde aan te nemen. Tijdens de vergisting leg je dan de gewichtsafname vast, en dat zou je op de een of andere manier moeten kunnen omrekenen naar een SG afname.
Tenmiste, dat was mijn aanvliegroute. Ik ben nogal van de KISS, je kunt het altijd nog ingewikkelder maken als het niet voldoet  ;D

ExPeteriment

Citaat van: @ op 01-05-2018 &nbsp;20:15 uWaarom 2 meetpunten aan het begin?
Ik dacht dat het zou volstaan om het gistvat gevuld en wel op de cel te zetten en dan de waarde die je uit de cel leest als startwaarde aan te nemen. Tijdens de vergisting leg je dan de gewichtsafname vast, en dat zou je op de een of andere manier moeten kunnen omrekenen naar een SG afname.
Ik laat de loadcell/ADconvertor de ruwe waardes afgeven. Wat zegt een gewichtsafname van bijvoorbeeld 125872? Ik neem dan 2 punten met een bekend gewicht ertussen om de rest van de metingen om te kunnen rekenen naar SG. Je kunt ook direct naar grammen om laten rekenen, maar dan heb je toch ook iets van calibratie aan het begin nodig (zie onder). Ik reken het liefst zo laat mogelijk om, reken onnauwkeurigheden van de Arduino wil ik pas zo laat mogelijk en 1 maal per meting. Maar ik zal jouw voorstel ook eens uitproberen, dat gaat via het set.scale commando, dat gebruik ik nu niet. In readme staat het volgende (niet veel meer KISS dan wat ik doe volgens mij):


# How to Calibrate Your Scale

1. Call set_scale() with no parameter.
2. Call tare() with no parameter.
3. Place a known weight on the scale and call get_units(10).
4. Divide the result in step 3 to your known weight. You should get about the parameter you need to pass to set_scale.
5. Adjust the parameter in step 4 until you get an accurate reading.



grt,

Peter

p.s. een alternatief voor mijn beetjewortachterhoud-methode is er na de totaalvulling een klein bekend gewicht op te zetten en daar de waarde verschillen van mee te nemen.

ExPeteriment

Een kalibratie in de buurt van de uiteindelijke metingen heeft sowieso mijn voorkeur tov kalibreren bij een ander punt, om afwijkingen in lineariteit van de Loadcell te minimaliseren.

ExPeteriment

Een grafiek zegt meer dan woorden: hierbij de berekening van het SG aan de hand van een loadcell grafiek. De vergisting was al even onderweg. Ik heb:
-   aan het begin van onderstaande grafiek een SG monster genomen  SG: 1045 gram/liter
-   na 27 uur 200 gram op het gistvat gelegd en er na ca kwartier weer afgehaald (= de ijkmeting) ;

Vraagstuk: wat is het SG aan het eind van deze grafiek?

Langs vertikale as staan de loadcell waardes, horizontaal de tijd.




Antwoord:
Op basis van de loadcell metingen blijkt het gewicht met 128 gram afgenomen ( =  200 gram * 15375/24012 ).

Het SG op het eind van deze grafiek is dan 1045 – 128/10 = 1032,2 gram/liter.

Dat is nog niet het eind SG, vergisting gaat nog verder. Ik verwacht in dit geval ergens rond 1012 gram/liter  uit te komen.

Kan zo op ieder moment bepaald worden, dat zet ik op het display van de Arduino.

hansHalberstadt

Nog even jouw data ingevuld in de rekensheet.
Met k1=0 kom ik op jou waarde van SG=1032. Met k=0.078 neem je ook de krimp en verdamping mee en dan wordt het SG nog een puntje hoger, nl 1033.

Voor het leeggewicht van het gistingsvat heb ik voor het gemak 2000 gram aangehouden en met 10 liter met SG=1045 kom je dan op 2000g+10000*1.045=12450gram totaalgewicht. Dat heb ik in de sheet ingevuld. Dan in kolom H vul je de het huidig gewicht in, in dit geval totaalgewicht - 128 g = 12322 g

ExPeteriment

Citaat van: hansHalberstadt op 03-05-2018 &nbsp;11:37 uNog even jouw data ingevuld in de rekensheet.
Met k1=0 kom ik op jou waarde van SG=1032. Met k=0.078 neem je ook de krimp en verdamping mee en dan wordt het SG nog een puntje hoger, nl 1033.

Voor het leeggewicht van het gistingsvat heb ik voor het gemak 2000 gram aangehouden en met 10 liter met SG=1045 kom je dan op 2000g+10000*1.045=12450gram totaalgewicht. Dat heb ik in de sheet ingevuld. Dan in kolom H vul je de het huidig gewicht in, in dit geval totaalgewicht - 128 g = 12322 g
Ah, dat helpt mij de k faktor te snappen. Ik zal eens tussentijdse monsters nemen om te kijken waar ik hem op moet instellen, ik hoop op de standaard waarde. Tussentijdse monsters veranderen het gewicht natuurlijk, maar door die dan nauwkeurig te wegen zijn het ook weer nieuwe kalibratie/ijkpunten. Het wordt steeds mooier! Heel erg bedankt Hans!

Peter

hansHalberstadt

Citaat van: ExPeteriment op 03-05-2018 &nbsp;12:38 uAh, dat helpt mij de k faktor te snappen.
Mooi. Je ziet dat de factor k feitelijk maar een 2e orde effect is, dus als je die niet helemaal nauwkeurig weet maak je misschien een foutje in de schaalfactor en bereken je een SG puntje lager, maar de vorm van de curve zal er niet door veranderen en dat is toch waar het vooral om gaat, namelijk bepalen hoe de gisting verloopt. Aan het einde meet je toch nog een keer nauwkeurig het echte SG.

@

In afwachting van de loadcellen ben ik me een beetje aan het verdiepen in de mogelijkheden. Ik vond op de site van sparkfun wel een redelijk duidelijke uitleg over de loadcellen en de HX711 library.
Daar wordt ook een voorbeeld gegeven van het kalibreren van de cel. Zij gebruiken daar een aparte sketch voor die een calibratiefactor berekend en die factor wordt vervolgens in hun uiteindelijke weegschaal sketch gebruikt met het commando scale.set_scale(calibration_factor)

Een verdere kalibratie per gebruik, zoals hier wel het geval is, zou dan toch niet meer nodig zijn? Het gewicht van het object op de loadcel is meteen uit te lezen, alsmede de gewichtsafname. En daarmee kun je dan (denk ik) het soortelijk gewicht weer uitrekenen. 1 gram gewichtsafname is 0.1 SG punt afname, toch? Misschien moet er ergens nog die k-factor meegenomen worden, maar in de basis zou dit zo toch moeten werken volgens mij.

Inmiddels ben ik al wel zo ver dat het invoeren van het start SG (en eventuele andere zaken) via een touchscreen gedaan kan worden. Dus het begin is er  8)

Ed.

ExPeteriment

Citaat van: @ op 04-05-2018 &nbsp;15:39 uIn afwachting van de loadcellen ben ik me een beetje aan het verdiepen in de mogelijkheden. Ik vond op de site van sparkfun wel een redelijk duidelijke uitleg over de loadcellen en de HX711 library.
Daar wordt ook een voorbeeld gegeven van het kalibreren van de cel. Zij gebruiken daar een aparte sketch voor die een calibratiefactor berekend en die factor wordt vervolgens in hun uiteindelijke weegschaal sketch gebruikt met het commando scale.set_scale(calibration_factor)

Een verdere kalibratie per gebruik, zoals hier wel het geval is, zou dan toch niet meer nodig zijn? Het gewicht van het object op de loadcel is meteen uit te lezen, alsmede de gewichtsafname. En daarmee kun je dan (denk ik) het soortelijk gewicht weer uitrekenen.
Ja,deze standaard manier van kalibreren kan ook. Ik doe het net even anders, wel interessant om de resultaten straks te vergelijken.
Citaat van: @ op 04-05-2018 &nbsp;15:39 u1 gram gewichtsafname is 0.1 SG punt afname, toch? Misschien moet er ergens nog die k-factor meegenomen worden, maar in de basis zou dit zo toch moeten werken volgens mij.
Je moet wel het aantal liters meenemen. Het volume speelt ook mee in sg bepaling.  Zoals Hans aangaf speelt het delta volume een ondergeschikte rol.
Citaat van: @ op 04-05-2018 &nbsp;15:39 uInmiddels ben ik al wel zo ver dat het invoeren van het start SG (en eventuele andere zaken) via een touchscreen gedaan kan worden. Dus het begin is er  8)

Ed.
Mooi ik ben benieuwd. Ik zal ook weer aan mijn tft verder gaan. Welke load cell heb je trouwens besteld, 10, 20, 50 kg?

@

Citaat van: ExPeteriment op 04-05-2018 &nbsp;22:59 uWelke load cell heb je trouwens besteld, 10, 20, 50 kg?

10 en 20 kg. Dat is goed genoeg om mee te experimenteren.

ExPeteriment

Citaat van: @ op 05-05-2018 &nbsp;09:36 u10 en 20 kg. Dat is goed genoeg om mee te experimenteren.
Daar kun je met het wip/ hefboom principe inderdaad al flinke gewichten mee aan, zeker tot 60 kg.

@

Citaat van: ExPeteriment op 08-05-2018 &nbsp;17:00 uDaar kun je met het wip/ hefboom principe inderdaad al flinke gewichten mee aan, zeker tot 60 kg.

Deze zijn eigenlijk meer om het principe mee te doorgronden en te kijken of het werkbaar is. Als het wat is dan wil ik eigenlijk 4 loadcellen onder een plaat monteren en op die manier het gewicht bijhouden. Dan ben ik minder afhankelijk van de positie van het gewicht op de plaat want dan kan ik middelen over de 4 cellen. Een beetje zoals ik me voorstel hoe een badkamer weegschaal het ook doet.


Zoeken met Google op deze site.
Brouwspullen zijn ook te koop via Bol.com.
Als je iets bestelt bij Bol.com (ook andere zaken dan brouwspullen) via deze link steun je het forum.


Het boek van de beheerder van deze site.