Arduino houtkachel monitor systeem

verwarming, isolatie, huiselijk energieverbruik

Moderator: Moderators

holtere
Berichten: 1173
Lid geworden op: 07 mei 2011, 18:23

Re: Arduino houtkachel monitor systeem

Bericht door holtere »

Wat gebeurd er?
De Arduberry schrijft wat weg op de Seriele port, dit wordt vervolgens door een Python-script opgehaald en in de database, op de Raspberry Pi gezet.
Dit kan vervolgens door een PHP-script worden opgehaald, die er een leesbaar Json-uitvoer van maakt.
De html pagina leest de Json data en geeft dit vervolgens in de grafieken weer.
Is toch allemaal heel logisch en niet zo vreemd dat dat zo werkt.... :fff :fff :fff
Maar nu eerlijk, ksnap er geen klote van maar maar de webpagina is wel heel erg mooi! Groot compliment voor je doorzettingsvermogen èn je vaardigheden! :geek:
BuschBusch
Berichten: 29
Lid geworden op: 08 feb 2016, 11:23

Re: Arduino houtkachel monitor systeem

Bericht door BuschBusch »

Ben niet op mijn plaats dus even wat mitrailleur-antwoorden.

Maarten, prachtig wat je allemaal hebt gemaakt - grafiekjes zijn erg mooi en duidelijk (misschien iets te veel in een enkele grafiek maar verdelen in 'kachel' en 'systeem' moet mogelijk zijn, toch?). Ik neem graag een Arduberry van je af en geef je een gil als ik er weer ben. Hans en Maarten zie ook onderstaand.

Ruud, ik heb geprobeerd de 4.9D sensor en controller van Ecotrons te bestellen maar ze kunnen deze niet leveren. Het is ook niet je beste keuze. Ik heb een paar Tech Edge controllers in Australië besteld, deze zijn onderweg. Met de Tech Edge controller kun je - volgens Tech Edge - ook de 4.9D aansturen. De controller geeft de volgende informatie: lambda (en data uit onderliggende formule's) en zuurstofgehalte (en gerelateerde formule's). Er is naar ik begrijp ook ruimte voor een drietal thermokoppels, maar ik heb hier nog niet mee gespeeld. Voor mijn doeleinden is drie niet genoeg, maar voor die van Hans, Maarten en jezelf wellicht wel. Data wordt via serial verstuurd, formule's kun je ondervangen in software (dus in principe zou je de Arduino kunnen overslaan, hoewel je dan geen luchtvochtigheid hebt maar ook daar moet iets voor te vinden zijn). Met andere woorden, een Tech Edge controller, een 4.9D en Maarten's systeem zouden genoeg moeten zijn. Tech Edge had ook wat suggesties voor het schoonhouden van de sensor - ook hier nog niet mee gespeeld. Heb contact gehad met Bosch voor de 4.9D maar nog geen reactie op bestelling. Onderdeelnummer voor 4.9D is 0281 004 135. Als je zonder laptop wil werken, kan je een metertje/schermpje voor de Tech Edge bestellen.
Gebruikersavatar
RuudBalk
Berichten: 114
Lid geworden op: 21 feb 2012, 12:29

Re: Arduino houtkachel monitor systeem

Bericht door RuudBalk »

Ha Vincent, je bent er weer.

Je hebt toch niets voor mij besteld!?

Ik twijfel nog tussen die 'Lambdacheck' weliswaar met een LSU4.9 en wat anders. Kennelijk kan LSU4.9D niet.
Het voordeel van de 'Lambdacheck' is voor mij het contact dat ik ter plaatse kan hebben.

Groet,
Ruud.
Gebruikersavatar
ready to burn
Berichten: 174
Lid geworden op: 28 aug 2014, 18:59
Locatie: mauie stad achteâh duh duine

Re: Arduino houtkachel monitor systeem

Bericht door ready to burn »

Nog even voor de duidelijkheid. ..
Ik heb geen houtkachel met warmtewisselaar. :oops: :| :roll: :( :shock:
Ik had de StoveThingy een paar jaar geleden willen hebben, maar heb het toen dus in Excel gedaan.
Ik wacht nog wel even af welke lambdasonde en controller het gaat worden als jij hem getest "goedgekeurd" hebt. :D
Dan ga ik wel tot aanschaf over.

Als StoveThingy helemaal gereed is, zet ik hem denk ik maar hier op het forum te koop. :mrgreen:

Over de Stats:
Die zijn ZEER flexibel. Eerst maar eens alles aan zien te slingeren, en daarna tijdens het gebruik, de puntjes op de i zetten.
Ik heb nog een hoop ideeën om het e.e.a. grafisch te gaan weergeven.
En het is nu al mogelijk om de waarden die je wilt zien uit en aan te zetten.
Ik heb ze bewust op een aparte pagina gezet, zodat je met F11 een volledig scherm krijgt, en je tijdens de analyse/monitoren niet wordt afgeleid door allemaal windows,- en browserzooi.

Over de thermokoppels:
Er zijn er nu al 4 nodig.
Het zou mooi zijn als een shield zou zijn waar je er een stuk of 20 (of meer (kijk naar Kockie :mrgreen: )) op aan kan sluiten.
Je kan dan via 1 webpagina een prachtig overzicht krijgen van je hele huis, schuur, installatie....
Voor de code en grafieken maakt het niet veel uit, om dat nu gelijk mee te nemen.
Denk aan:
  • buffer 1
    buffer 2
    buffer 3
    buffer 4
    buffer 5
    buiten temp.
    aanvoer vanaf de buffer
    retour op de buffer
    T1 zonneboiler
    T2 zonneboiler
    T3
    T4
    enz..

Dus gewoon bovenop de Arduberry een shield klikken en dan met 2 draadsvoelers de boel aansluiten.
Lekker weinig onderdelen nodig en een kind kan de was doen.
Direct zichtbaar in de grafieken, zonder aan te melden of rebooten. :D
Maar geen idee of dat bestaat.....
Gebruikersavatar
kockie
Site Admin
Berichten: 8536
Lid geworden op: 28 jan 2006, 17:42
Locatie: Zeddam
Contacteer:

Re: Arduino houtkachel monitor systeem

Bericht door kockie »

Als je veel wilt meten met temperaturen tussen -55°C to +125°C zou ik niet met thermokoppels/pt100(0) gaan prutsen. Neem dan de ds18b20. 2(3)draads interface en eenvoudig te meten. 10 sensors aan 1 draad is geen probleem.

Bij mij loopt er een tot 3 aders gereduceerde utp kabel in een dompelbuis in mijn buffer.
Mensen zeggen wel eens dat ik troep verzamel; ik noem mezelf liever een industrieel-amateur-archeoloog die probeert waardevolle artefacten te behouden.
Why should I work harder when I can work smarter
Gebruikersavatar
ready to burn
Berichten: 174
Lid geworden op: 28 aug 2014, 18:59
Locatie: mauie stad achteâh duh duine

Re: Arduino houtkachel monitor systeem

Bericht door ready to burn »

@ Kockie
Hoe heb jij zo veel sensoren op 1 Arduino aangesloten?
Gebruikersavatar
kockie
Site Admin
Berichten: 8536
Lid geworden op: 28 jan 2006, 17:42
Locatie: Zeddam
Contacteer:

Re: Arduino houtkachel monitor systeem

Bericht door kockie »

Ze zitten inmiddels op 1 arduino en 1 raspberry

14 op de arduino en de rest op de raspberry

Allemaal parallel

Op deze manier op de arduino: (klikbaar)
Afbeelding
De sensoren worden eenvoudig parallel aangesloten. tot 15 gaat dat aardig goed.

Op de raspberry wordt een echte 1-wire bus opgebouwd met de:

Afbeelding

Die is veel stabieler volgens mijn mening.

Ik heb de arduino vlakbij de ketel hangen. De raspberry hangt in de meterkast in huis. Meet van daaruit de zonneboiler op 15 meter afstand en 1 sensor bij de ketel op ongeveer 25 meter afstand. Komende zomer wil ik de sensoren die nu op de arduino zitten op de raspberry in huis proberen aan te sluiten.
Mensen zeggen wel eens dat ik troep verzamel; ik noem mezelf liever een industrieel-amateur-archeoloog die probeert waardevolle artefacten te behouden.
Why should I work harder when I can work smarter
BuschBusch
Berichten: 29
Lid geworden op: 08 feb 2016, 11:23

Re: Arduino houtkachel monitor systeem

Bericht door BuschBusch »

@ Ruud en Maarten - ik heb er twee besteld voor het geval er een kapot gaat (had geen verdere bestellingen ontvangen). Stel voor dat jullie even wachten totdat ik een kans heb gehad om te kijken of de controller goed genoeg werkt. Ruud, vergeet niet dat je de Lambdacheck voor een breed lambdabereik moet kunnen instellen (tot 4-5).
Gebruikersavatar
ready to burn
Berichten: 174
Lid geworden op: 28 aug 2014, 18:59
Locatie: mauie stad achteâh duh duine

Re: Arduino houtkachel monitor systeem

Bericht door ready to burn »

De grafieken staan nu hier:
http://fulton.xs4all.nl:444/index.php/t ... e-grafiek/
Deze worden om de 1 minuut geupdate, en laten de laatste 48 uur zien.
Of beter gelijk in full screen: http://fulton.xs4all.nl:444/test4/graphs2.htm

Ik heb de sketch aangepast voor de juiste uitvoer naar de grafieken en er alvast alle berekeningen bijgezet.
Alleen de kamertemp. en luchtvochtingheid worden gemeten, de rest is gesimuleerd. 8)

Over de temp sensoren:
Ik denk eigenlijk dat het een goed idee zou zijn om een simpele shield te zoeken, waar minimaal 4 sensoren op aangesloten kunnen worden.
Het liefst zonder soldeerwerk, zodat een ieder, (ook zonder verstand van de Arduino) dit alles makkelijk kan samenstellen.
Een daarna/daarnaast Kockie zijn systeem gaan na-apen. Het is tenslotte goedkoop leren van andermans fouten. :fff
De Arduino heeft nu al moeite met de hoeveelheid aan gegevens. En ik denk dat het idd beter zou zijn dit door de Rpi te laten doen.
Dus een aparte module er voor maken, met aparte grafieken, met oneindig veel sensoren als je wilt.

Nu ik wat beter begrijp hoe de grafieken werken ben ik opnieuw begonnen met die grafieken,, en hoop dit weekend nieuwe klaar te hebben.
Alles krijgt dan een wat duidelijkere naam, en dan is het ook wat makkelijker er een NL versie van te maken.
De volgende stap wordt dan de PeterMeter, hopelijk gaan deze elke seconde worden ververs, en laten dan maximaal 2 uur zien.
Maar dat gaat nog even een hoop uitzoekwerk geven..

@ Vince
Je hoeft dus alleen nog maar voor 02 te zorgen, en dan kan daarna "systeem Hans" worden toegevoegd...

Code: Selecteer alles

/*************************
StoveThing Uitvoer Eenheid
ruimte temp. AMBIENTTEMP �C
relatieve luchtvochtigheid AMBIENTHUMIDITY %
rookgastemp voor de wisselaar PREEXCHTEMP �C
rookgastemp. na de wisselaar POSTEXCHTEMP �C
o2 percentage OXYGENPERCENT %
Excess air EXCESSAIR 
co2 percentage CO2PERCENT %
totaal rendement TOTALEFFICIENCY ? %
rendement voor de wisselaar EXCHEFFICIENCY ? %
rendement kachel STOVEEFFICIENCY ? %
schoorsteenverlies HEATLOSSEXHAUST %
luchtovermaat EXCESSAIR 

Systeem Hans 
aanvoertemp. FLOWTEMPERATUREOUT �C
retourtemp. FLOWTEMPERATURERETURN �C
volumestroom in de installatie WATERFLOW L/uur
Massa water WATERVOLUME kg
vermogen van de warmtewisselaar EXCHOUTPUT kW

StoveThing & Systeem Hans 
totale vermogen TOTALPOWER kW
vermogen van de kachel ( afgifte ruimte) STOVEPOWER kW
belasting TOTALLOAD kW
hout WOODCONSUMPTIONKGH kg/uur
hout WOODCONSUMPTIONGM gram/min.
verhouding ruimte/CV SPACECENTRALHEATING 

koolmonoxide Nog niet in gebruik 
CO percentage COPERCENT %
koolmonoxide ppm COPPM ppm
Giftigheidsindex TOXICITY


********************************************/


/*************************************************** 
 * 
 * ST_version_1.0 - 15 April 2016
 * 
 * Some of the following code and associated libraries were written by Limor Fried and Ladyada for Adafruit. This code is used to obtain data from the Adafruit Amplifier Board (MAX31855). The board is available from https://www.adafruit.com/products/269 - BSD license. Other bits of the code were written by Nathan Seidle for SparkFun Electronics. His code (and libraries) are used to obtain data from the Sprakfun HTU21D temperature & humidity sensor. The rest of the code was cobbled together by Vincent Busch for the stovething project. 
 * 
 * ST version 1.0 outputs lambda, AFR, oxygen percentage, excess air percentage, carbon dioxode percentage and stove efficiency. NOTE: THE FORMULAS USED HERE HAVE KNOWN FLAWS AND SHORTCOMINGS - THESE ARE EXPLAINED IN THE SKETCH. THE SKETCH IS PROVIDED FOR EXPERIMENTAL PURPOSES ONLY. WITH THE EXCEPTION OF LAMBDA, THE ACCURACY OF THE DATA HAS NOT BEEN VERIFIED. Hopefully that's enough of a disclaimer. 
 * 
 ***************************************************/

#include <Wire.h>
#include <SparkFunHTU21D.h>
#include <SPI.h>
#include "Adafruit_MAX31855.h"

/*-------DEFINE TEMPERATURE & HUMIDITY SENSOR-------*/

//Create an instance for the temperature/humidity sensor

HTU21D myHumidity;

/* Version 1.0 uses two thermocouples (software SPI on any four digital IO pins). The CLK (clock) and CS (chip select) are shared; thermocouple 1 is assigned DO1 (data out) while thermocouple 2 uses DO 2. Pins and thermocouples are defined below. */

/*-------DEFINE THERMOCOUPLES-------*/

#define DO1 10
#define DO2 11
#define CS 12
#define CLK 13
Adafruit_MAX31855 thermocouple1(CLK, CS, DO1);
Adafruit_MAX31855 thermocouple2(CLK, CS, DO2);

/*-------SETUP SECTION-------*/

void setup() {

  Serial.begin(9600);

  delay(1000);

  // Start Sprakfun HTU21D temperature & humidity sensor

  myHumidity.begin();

  delay(1000);

}

/*-------LOOP SECTION-------*/

void loop() {


  /*-------HUMIDITY AND TEMPERATURE SENSOR-------*/

  /* The code below retrieves temeprature and humidity data from the Sparkfun sensor. */

  float AMBIENTTEMP = myHumidity.readTemperature(); 
  float AMBIENTHUMIDITY = myHumidity.readHumidity();


  /*-------THERMOCOUPLE 1-------*/

  /* The following code reads the on-board temperature module on the Adafruit MAX31855 for thermocouple 1 - it is not used here. Instead the temperature is derived from the SparkFun chip. */

  // Serial.print("Internal Temp = ");
  // Serial.println(thermocouple1.readInternal());

  /* The code below reads the temperature from thermocouple 1, in Celsius. */

  double c1 = thermocouple1.readCelsius();

  /* If you prefer the temperature to be displayed in Fahrenheit, uncomment the code below (and comment out the code above). */

  // double f1 = thermocouple1.readFahrenheit();

  /* This sketch formats and outputs data for processing in MakerPlot. If you intend to use the Arduino serial monitor, you may wish to uncomment the following (and comment out the MakerPlot section). Note: if you have changed the temperature setting to Fahrenheit, remember to adjust the below code accordingly (to f1). */

  // if (isnan(c1)) {
  // Serial.println("T1 not working!");
  // } else {
  // Serial.print("T1 = "); 
  // Serial.println(c1);
  // }

  /*-------THERMOCOUPLE 2-------*/

  /* The following code reads the on-board temperature module on the Adafruit MAX31855 for thermocouple 2 - it is not used here. */

  // Serial.print("Internal Temp = ");
  // Serial.println(thermocouple2.readInternal());

  /* The code below reads the temperature from thermocouple 2, in Celsius. */

  double c2 = thermocouple2.readCelsius();

  /* If you prefer the temperature to be displayed in Fahrenheit, uncomment the code below (and comment out the code above). */

  // double f2 = thermocouple2.readFahrenheit();

  /* This sketch formats and outputs data for processing in MakerPlot. If you intend to use the Arduino serial monitor, you may wish to uncomment the following (and comment out the appropriate lines of the MakerPlot section). Note: if you have changed the temperature setting to Fahrenheit, remember to adjust the code below accordingly (to f2). */

  // if (isnan(c2)) {
  // Serial.println("T2 not working!");
  // } else {
  // Serial.print("T2 = "); 
  // Serial.println(c2);
  // }

  /*-------WIDEBAND OXYGEN SENSOR------------*/

  /* The signal from the wideband oxygen controller is sent to analog pin 0 (A0). */

  int sensorValue = analogRead(A0);

  /* LAMBDA - the sensor controller is programmed to output 0 volts at lambda 0.80 and 5 volts at lambda 8.19. The difference is 7.39. These numbers are included in the formula below, and should be changed if the sensor settings are changed (read: if the controller is re-programmed). */

  float LAMBDA = 0.80 + (sensorValue * (7.39 / 1023.0));

  /* AFR - the AFR figure shown is a multiple of the AFR figure defined in the LM software (set to 6.4, the setting for methanol). Based on the above lambda settings, the AFR is 5.12 at 0 volts and 52.41 at 5 volts. The difference is 47.29. These numbers are included in the formula below and should be changed if the sensor controller settings are changed/reprogrammed via LM Programmer. Please note that the controller can be set to a user-defined AFR multiple.*/

  float AFR = 5.12 + (sensorValue * (47.29 / 1023.0));

  /* OXYGEN PERCENTAGE - the lambda value can be used to calculate the oxygen percentage in the exhaust gas. Please note that the formula used here was developed for the lean part of the lambda range (where lambda <1). Future versions of the system will retrieve the oxygen percentage directly from the controller/sensor. The formula used for now is x02=3*(La-1)/(1+3*K*La), where x02 = oxygen percentage, La = lambda, and K is either 4.76 or 4.77. The correction factor of 2.68 is compensated proportionally for values in excess of lambda 1.0. This is done in the output section (it is assumes that lambda will never be less than 1 in a woodstove). This is very much a patch! For reference purposes: outside air contains 20.95% oxygen.*/

  //float OXYGENPERCENT = (3 * ((LAMBDA - 1) / (1 + 3 * 4.765 * LAMBDA)) * 100);
  //float OXYGENPERCENT = 13.7; //Dit is een vaste waarde
  float OXYGENPERCENT = AMBIENTHUMIDITY / 3.5714; // Dit is een dynamische waarde
  
  /* EXCESS AIR - there are various ways to calculate access air. As the lambda value is obtained directly from the sensor (as opposed to being calculated) it is used here. The formula used is: lambda = (percentage excess air / 100) + 1. Or, expressed in terms of excess air: percentage excess air = (lambda - 1) * 100. */

  float EXCESSAIR = (((LAMBDA) - 1) * 100);




  /*-------STOVE EFFICIENCY -------*/

  /* The flue gas temperature, the ambient temperature and the carbon dioxide (CO2) percentage can be used to obtain some indication of the woodstove's efficiency. The formula is: stove efficiency = 100 - ((MeanFlueTemp - MeanRoomTemp) x (A1 / CO2%)), where A1 is 0.65. As thermocouple 1 is attached to the flue, MeanFlueTemp = (c1) while MeanRoomTemp (temp, 1). */

  //float STOVEEFFICIENCY = 100 - (((c1) - (AMBIENTTEMP, 1)) * (0.65 / CO2PERCENT)); // Deze heb ik uit gezey en naar beneden verplaatst





  /*-------DATA OUTPUT TO MAKERPLOT-------*/

/*
  {
    // The code below outputs data in comma delimited form. This allows it to be read in MakerPlot.

    Serial.print(c1); // temperature reading thermocouple 1, displayed in Celsius
    // Serial.print(f1); // temperature reading thermocouple 1, displayed in Fahrenheit 
    Serial.print(","); // comma delimiter
    Serial.print(c2); // temperature reading thermocouple 2, displayed in Celsius
    // Serial.print(f2); // temperature reading thermocouple 2, displayed in Fahrenheit 
    Serial.print(","); // comma delimiter
    Serial.print(AMBIENTTEMP, 1); // ambient temperature from SprakFun temperature & humidity sensor
    Serial.print(","); // comma delimiter
    Serial.print(AMBIENTHUMIDITY, 1); //humidity reading from SprakFun temperature & humidity sensor
    Serial.print(","); // comma delimiter
    Serial.print(LAMBDA);
    Serial.print(","); // comma delimiter
    Serial.print(AFR);
    Serial.print(","); // comma delimiter
    if ((OXYGENPERCENT < 0) && (LAMBDA >1))
    {
      Serial.print(0.00);
      Serial.print(","); // comma delimiter
    }
    else
    {
      Serial.print(OXYGENPERCENT + (LAMBDA * (2.61/7.99)));
      Serial.print(","); // comma delimiter
    }
    if (EXCESSAIR > 100)
    {
      Serial.print(100);
      Serial.print(","); // comma delimiter
    }
    else
    {
      Serial.print(EXCESSAIR);
      Serial.print(","); // comma delimiter
    }
    if (CO2PERCENT < 0)
    {
      Serial.print(0.00);
      Serial.print(","); // comma delimiter
    }
    else
    {
      Serial.print(CO2PERCENT);
      Serial.print(","); // comma delimiter
    }
    if (STOVEEFFICIENCY < 0)
    {
      Serial.print(0.00);
      Serial.print(","); // comma delimiter;
    }
    else
    {
      Serial.print(STOVEEFFICIENCY);
      Serial.print(","); // comma delimiter;
      Serial.println();

    }
    
    */

    /*-------DATA OUTPUT SERIAL-------*/
/*
    
{
     Serial.print("Thermocouple 1: "); // label thermocouple 1
     Serial.print(c1); // temperature reading thermocouple 1, displayed in Celsius
     // Serial.print(f1); // temperature reading thermocouple 1, displayed in Fahrenheit 
     Serial.println(); // new line.
     Serial.print("Thermocouple 2: "); // label thermocouple 2
     Serial.print(c2); // temperature reading thermocouple 2, displayed in Celsius
     // Serial.print(f2); // temperature reading thermocouple 2, displayed in Fahrenheit 
     Serial.println(); // new line.
     Serial.print("Ambient temperature: "); // label ambient temperature
     Serial.print(AMBIENTTEMP, 1); // ambient temperature from SprakFun temperature & humidity sensor
     Serial.println(); // new line
     Serial.print("Ambient humidity: "); // label ambient humidity
     Serial.print(AMBIENTHUMIDITY, 1); //humidity reading from SprakFun temperature & humidity sensor
     Serial.println(); // new line
     Serial.print("Lambda: "); // lambda label
     Serial.print(LAMBDA);
     Serial.println(); // new line
     Serial.print("Air Fuel Ratio: "); // AFR label 
     Serial.print(AFR);
     Serial.println(); // new line
     if ((OXYGENPERCENT < 0) && (LAMBDA >1))
     {
     Serial.print("Oxygen percentage: "); // label oxygen percentage
     Serial.print(0.00);
     Serial.println(); // new line
     }
     else
     {
     Serial.print("Oxygen percentage: "); // label oxygen percentage
     Serial.print(OXYGENPERCENT + (LAMBDA * (2.61/7.99)));
     Serial.println(); // new line
     }
     if (EXCESSAIR > 100)
     {
     Serial.print("Excess Air percentage: "); // label excess air percentage
     Serial.print(100);
     Serial.println(); // new line
     }
     else
     {
     Serial.print("Excess Air percentage: "); // label excess air percentage
     Serial.print(EXCESSAIR);
     Serial.println(); // new line
     }
     if (CO2PERCENT < 0)
     {
     Serial.print("CO2 percentage: "); // label CO2 percentage
     Serial.print(0.00);
     Serial.println(); // new line
     }
     else
     {
     Serial.print("CO2 percentage: "); // label CO2 percentage
     Serial.print(CO2PERCENT);
     Serial.println(); // new line
     }
     if (STOVEEFFICIENCY < 0)
     {
     Serial.print("Stove efficiency (%): "); // label stove efficiency
     Serial.print(0.00);
     Serial.println();
     }
     else
     {
     Serial.print("Stove efficiency (%): "); // label stove efficiency
     Serial.print(STOVEEFFICIENCY);
     Serial.println();
     Serial.println();
     }
     
     */
     
// Dit is wat gesimuleerde output en alvast de berekeningen
  
       /* CO2 PERCENTAGE - the oxygen percentage can also be used to estimate the carbon dioxide percentage in the exhaust gas. The formula is: CO2% = maximum CO2 for fuel type * ((20.95 - %O2) / 20.95). Please note that the figure for maximum CO2 for wood tends to vary, and is generally quoted for dry wood (wood rarely is). I have encountered 19.2 as well as 19.7. I have used 19.5. There are other shortcomings. */
       float CO2PERCENT = 19.5 * ((20.95 - OXYGENPERCENT) / 20.95); 
       float PREEXCHTEMP = 789.8; //gemeten en nu ff gesimuleerd.........
     //float PREEXCHTEMP = c1; //gemeten en nu ff gesimuleerd.........
       float POSTEXCHTEMP = 140.2; //gemeten en nu ff gesimuleerd.........
     //float POSTEXCHTEMP = c2; //gemeten en nu ff gesimuleerd.........
       float TOTALEFFICIENCY = 100 - ((POSTEXCHTEMP - AMBIENTTEMP) * (0.650 / CO2PERCENT));
       float STOVEEFFICIENCY = 100 - ((PREEXCHTEMP - AMBIENTTEMP) * (0.650 / CO2PERCENT)); 
       float EXCHEFFICIENCY = TOTALEFFICIENCY - STOVEEFFICIENCY;
       float HEATLOSSEXHAUST = 100 - TOTALEFFICIENCY;
       float FLOWTEMPERATUREOUT = AMBIENTTEMP * 3 -16; // Ook even dynamische gemaakt
     //float FLOWTEMPERATUREOUT = 54.9; // Gaat worden gemeten door Hans en nu ff gesimuleerd.........
       float FLOWTEMPERATURERETURN = AMBIENTTEMP * 2; // Ook even dynamische gemaakt
     //float FLOWTEMPERATURERETURN = 47.0; // Gaat worden gemeten door Hans en nu ff gesimuleerd.........
       float WATERFLOW = 1000; // Gaat worden gemeten door Hans en nu ff gesimuleerd.........
       float EXCHOUTPUT = (WATERFLOW *(FLOWTEMPERATUREOUT - FLOWTEMPERATURERETURN) * (4186/1000)) / 3600;
       float TOTALPOWER = EXCHOUTPUT / EXCHEFFICIENCY * 100;
       float STOVEPOWER = TOTALPOWER - EXCHOUTPUT;
       float TOTALLOAD = TOTALPOWER / TOTALEFFICIENCY * 100;
       float WOODCONSUMPTIONKGH = TOTALLOAD / 5 / 100 * TOTALEFFICIENCY; // Calorische waarde misschien uit Mysql halen ??
       float WOODCONSUMPTIONGM = WOODCONSUMPTIONKGH * 1000/60;
       float COPPM = 4321; // DIt is voor later als er een CO cel is....   

// Zo moet het er ongeveer uitzien voor de grafieken     
        Serial.print(AMBIENTTEMP, 1); // ambient temperature from SprakFun temperature & humidity sensor
	Serial.print(" \t"); //tab
        Serial.print(AMBIENTHUMIDITY, 1); //humidity reading from SprakFun temperature & humidity sensor
        Serial.print(" \t"); //tab
        Serial.print(PREEXCHTEMP, 1); //Rookgastemp voor de wisselaar
        Serial.print(" \t"); //tab
	Serial.print(POSTEXCHTEMP, 1); //Rookgastemp na de wisselaar
        Serial.print(" \t"); //tab
	Serial.print(OXYGENPERCENT, 1); //Zuurstof percentage 
        Serial.print(" \t"); //tab
	Serial.print(EXCESSAIR, 1); //Lambda
        Serial.print(" \t"); //tab
	Serial.print(CO2PERCENT, 1); //CO2 percentage
        Serial.print(" \t"); //tab
	Serial.print(TOTALEFFICIENCY, 1); //Totaal rendement
        Serial.print(" \t"); //tab
	Serial.print(EXCHEFFICIENCY, 1); //Rendement voor de wisselaar
        Serial.print(" \t"); //tab
	Serial.print(STOVEEFFICIENCY, 1); //Rendement van de kachel naar de ruimte
        Serial.print(" \t"); //tab
	Serial.print(HEATLOSSEXHAUST, 1); //Schoorsteenverlies
        Serial.print(" \t"); //tab
	Serial.print(FLOWTEMPERATUREOUT, 1); //Aanvoer temp.
        Serial.print(" \t"); //tab
	Serial.print(FLOWTEMPERATURERETURN, 1); //Retour temp.
        Serial.print(" \t"); //tab
	Serial.print(WATERFLOW, 0); //Watervolume
        Serial.print(" \t"); //tab
	Serial.print(EXCHOUTPUT, 1); //Vermogen van de wisselaar
        Serial.print(" \t"); //tab
	Serial.print(TOTALPOWER, 1); //Totaal vermogen
	Serial.print(" \t"); //tab
	Serial.print(STOVEPOWER, 1); //Vermogen naar de ruimte
	Serial.print(" \t"); //tab
	Serial.print(TOTALLOAD, 1); //Belasting
	Serial.print(" \t"); //tab
	Serial.print(WOODCONSUMPTIONKGH, 2); //Hout verbruik in kg
	Serial.print(" \t"); //tab
	Serial.print(WOODCONSUMPTIONGM); //Hout verbruik in kg
	Serial.print(" \t"); //tab
	Serial.print(COPPM, 0); //CO in PPM
	Serial.println(" \t"); //tab

    // the delay below defines how often data is sent to MakerPlot (once a second = 1000).

    delay(2000);

  }
 // remember to change this when uncommenting/commenting out
 //}
Gebruikersavatar
kockie
Site Admin
Berichten: 8536
Lid geworden op: 28 jan 2006, 17:42
Locatie: Zeddam
Contacteer:

Re: Arduino houtkachel monitor systeem

Bericht door kockie »

ready to burn schreef:Een daarna/daarnaast Kockie zijn systeem gaan na-apen. Het is tenslotte goedkoop leren van andermans fouten. :fff
Zeker doen... De kinderziektes zijn er al wel uit denk ik. Systeem draait al op meerdere plekken. Ik moet me alleen eens gaan verdiepen in het maken van betere/handigere/snellere grafieken software. Ik gebruik het (enorm verouderde) dtgraph, maar heb geen zin om helemaal uit te zoeken hoe ik een ander pakket aan het werk krijg.
Mensen zeggen wel eens dat ik troep verzamel; ik noem mezelf liever een industrieel-amateur-archeoloog die probeert waardevolle artefacten te behouden.
Why should I work harder when I can work smarter
MaartenB
Berichten: 282
Lid geworden op: 04 dec 2013, 20:46
Locatie: Prov Groningen

Re: Arduino houtkachel monitor systeem

Bericht door MaartenB »

Wellicht interessant voor de knutselaar hier. Sinds kort de esp8266 (eigenlijk de nodemcu) ontdekt. Dit is een microcontroller met (de meest ganbare iig) 80Mhz, 4mb opslag, en ingebouwde wifi. Voor 5 dollar/5 euro heb je een nodemcu, dat is een klein bordje met een esp8266, een usb aansluiting met omvormer (de esp werkt op 3.3V), en dupont pins. De nodemcu kan je in lua programmeren, maar sinds enige tijd is hij ook prima met Arduino software te programmeren. Je kan dus zonder veel problemen overstappen van een arduino naar een esp8266, als je de nodemcu koopt heb je alleen maar een usb kabel nodig.
Gebruikersavatar
ready to burn
Berichten: 174
Lid geworden op: 28 aug 2014, 18:59
Locatie: mauie stad achteâh duh duine

Re: Arduino houtkachel monitor systeem

Bericht door ready to burn »

kockie schreef:Ik moet me alleen eens gaan verdiepen in het maken van betere/handigere/snellere grafieken software.
Misschien kunnen we een deal maken ?
Wij een beetje code, jij een beetje grafieken? :mrgreen: :fff :geek:
Gebruikersavatar
kockie
Site Admin
Berichten: 8536
Lid geworden op: 28 jan 2006, 17:42
Locatie: Zeddam
Contacteer:

Re: Arduino houtkachel monitor systeem

Bericht door kockie »

Ik heb een ander deal voorstel: ik onderhoud het forum, jullie doen de rest :geek: :geek:
Mensen zeggen wel eens dat ik troep verzamel; ik noem mezelf liever een industrieel-amateur-archeoloog die probeert waardevolle artefacten te behouden.
Why should I work harder when I can work smarter
BuschBusch
Berichten: 29
Lid geworden op: 08 feb 2016, 11:23

Re: Arduino houtkachel monitor systeem

Bericht door BuschBusch »

De Tech Edge controller werkt. Het doe-het-zelf pakket is weliswaar betaalbaar, maar het solderen vergt (karrenladingen) geduld en tijd. Om zeker te zijn dat je geen fouten maakt, moet je ieder component voor en na het solderen doormeten. Monnikenwerk. De software is gelukkig een stuk eenvoudiger. Dat geldt zowel voor het laden van de meest recente firmware, als voor het programmeren van de outputkanalen. Met de software kan je - bijvoorbeeld - een outputkanaal simuleren (en testen) en de sensor opnieuw kalibreren. Veel leermomentjes, maar al met al precies wat ik had gehoopt. Kwaliteit is goed.

De controller genereert twee signalen: één voor lambda en één voor het zuurstofpercentage. Om de controller te testen heb ik een eenvoudige Arduino sketch geschreven die analoog kanalen A0 (lambda) en A1 (zuurstof) uitleest en de meetgegevens op een LCD scherm laat zien (dit met de benodigdheden van Ruud in het achterhoofd - de Tech Edge controller heeft een 5 volt uitgang die ik heb gebruikt om de Arduino te voeden. Zo doende krijg je een 'stand-alone' systeem - zie foto).

Hoewel de Tech Edge controller een stabiel signaal geeft, wordt het binnen de Arduino allemaal wat rommeliger. Voor hogere zuurstofpercentages (boven 12%) is het meetverschil ongeveer 0.2% (dus 13.4% op de Arduino komt overeen met nagenoeg 13.2% op de Tech Edge - de Arduino geeft altijd een hoger percentage aan). Voor lagere zuurstofpercentages is het verschil een stuk kleiner. Het aardige van de Tech Edge controller is dat je deze meetverschillen via de software handmatig kan corrigeren (wat ik niet ga doen want voor houtkachel-doeleinden maken ze voorlopig niets uit).

Ik heb tijdelijk een Kane May zuurstofmeter weten te bemachtigen waarmee ik kan verifiëren of de meetgegevens nauwkeurig zijn. Daarvoor heb ik een testkachel nodig, en dat wordt mijn volgende project.

@ Maarten en Hans: ik heb de Arduino sketch aangepast voor de nieuwe controller. Aan de formule's in de sketch heb ik verder niets veranderd. De sketch is bijgevoegd maar nog niet getest. [sorry, .ino is niet toegestaan als extensie, dus toegevoegd aan het eind van dit bericht].

@ Ruud - als je het aandurft, kan je de onderstaande sketch gebruiken. Aan een Funduino met LCD scherm ben je ongeveer 20 euro ex. kwijt. Wellicht een goed idee om even te wachten tot ik de gegevens heb geverifieerd. Voorlopig staat de kachel toch uit, verwacht ik.
ST_TE_LCD_light.JPG

Code: Selecteer alles

/*
This sketch is intended for use with the Tech Edge 2Y2 controller (and Bosch LSU 4.9 sensor). Output device is an LCD screen. Analogue pin A0 is connected to WBlin+; pin A1 is connected to NB SIM. Please note that the GND to WBlin- shunt (on the controller) is in place and that WBlin- is connected to the Arduino ground. This setup only works for the LCD configuration, where the Arduino and the controller share the same ground. The Arduino is powered via 5 volt feed on the 2Y2 controller.
  
*/

#include <SPI.h>
#include <LiquidCrystal.h>

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

void setup() {

  Serial.begin(9600);
  lcd.begin(16, 2);
  lcd.print("ST_TE_LCD");
  delay(4000);
  lcd.clear();

}

void loop() {
 
  int lambdaValue = analogRead(A0);
  int oxygenValue = analogRead(A1);
  

  float oxygenvoltage = oxygenValue * (5.0 / 1023.0);
  float lambdavoltage = lambdaValue * (5.0 / 1023.0);
  
  // OXYGEN PERCENTAGE //

 /* The Tech Edge 2Y2 controller measures an oxygen% range between -4.8294 (0 volts) and 18.7761 (4.99 volts). These settings can be adjusted and tested via the Tech Edge software prior to implementation. */
  
  float oxygenpercent = -4.8294 + (oxygenValue * ((18.7761 - -4.8294) / 1023));
  
  if (oxygenvoltage < 0.1)
  {
  lcd.setCursor(0,0);
  lcd.print("O2%: N/S");  // N/S = No Signal
  }
  else if (oxygenvoltage < 4.95)
  {
  lcd.setCursor(0,0);
  lcd.print("O2%: ");
  lcd.print(oxygenpercent);
  }
  else
  {
  lcd.setCursor(0,0);
  lcd.print("O2%: O/R");  // O/R = Outside Range
  }
  
  //  LAMBDA  //

  /* The controller measures a lambda range between 0.80 (0 volts) and 10.00 (4.99 volts). These settings can be adjusted and tested via the Tech Edge software prior to implementation. */
  
  float lambda = 0.80 + (lambdaValue * ((10 - 0.80)/ 1023));
  
  if (lambdavoltage < 0.1)
  {
  lcd.setCursor(0,1);
  lcd.print("Lambda: N/S");  // N/S = No Signal
  }
  else if (lambdavoltage < 4.90)
  {
  lcd.setCursor(0,1);
  lcd.print("Lambda: ");
  lcd.print(lambda);
  }
  else
  {
  lcd.setCursor(0,1);
  lcd.print("Lambda: O/R");  // O/R = Outside Range
  }

  delay(2000);       
  lcd.clear();

}
Dit is de versie voor Maarten en Hans:

Code: Selecteer alles



/*************************************************** 
  
 ST_TE_version_1.0 - 25 May 2016
  
  Some of the following code and associated libraries were written by Limor Fried and Ladyada for Adafruit. This code is used to obtain data from the Adafruit Amplifier Board (MAX31855). Other bits of the code were written by Nathan Seidle for SparkFun Electronics. His code (and libraries) are used to obtain data from the Sprakfun HTU21D temperature & humidity sensor. The rest of the code was cobbled together by Vincent Busch. 

ST_TE version 1.0 is intended for use with a Tech Edge 2Y2 WBO2 controller and a Bosch LSU 4.9 WBO2 sensor. The sketch outputs the following data: lambda, oxygen percentage, excess air percentage, carbon dioxode percentage and stove efficiency. AFR (Air Fuel Ratio) is not included in this sketch. The values for lambda and oxygen percentage are retrieved directly from the sensor/controller, all other values are calculated using publicly available formulas. Please note that these formulas are provided for experimental purposes only - at this stage, they should NOT be relied on to provide accurate data.
  
 ***************************************************/

#include <Wire.h>
#include <SparkFunHTU21D.h>
#include <SPI.h>
#include "Adafruit_MAX31855.h"

/*-------DEFINE TEMPERATURE & HUMIDITY SENSOR-------*/

//Create an instance for the temperature/humidity sensor

HTU21D myHumidity;

/* ST_TE version 1.0 uses two thermocouples (software SPI on any four digital IO pins). The CLK (clock) and CS (chip select) are shared; thermocouple 1 is assigned DO1 (data out) while thermocouple 2 uses DO 2. Pins and thermocouples are defined below. */

/*-------DEFINITION OF THERMOCOUPLES-------*/

#define DO1  10
#define DO2  11
#define CS   12
#define CLK  13
Adafruit_MAX31855 thermocouple1(CLK, CS, DO1);
Adafruit_MAX31855 thermocouple2(CLK, CS, DO2);

/*-------SETUP SECTION-------*/

void setup() {
  
  Serial.begin(9600);
  delay(1000);

// Start Sprakfun HTU21D temperature & humidity sensor
  
  myHumidity.begin();
  delay(1000);
  
}

/*-------LOOP SECTION-------*/

void loop() {

/*-------HUMIDITY AND TEMPERATURE SENSOR-------*/

/* The code below retrieves temeprature and humidity data from the Sparkfun sensor. */

float temp = myHumidity.readTemperature(); 
float humd = myHumidity.readHumidity();

/*-------THERMOCOUPLE 1-------*/
  
 /*  The following code reads the on-board temperature module on the Adafruit MAX31855 for thermocouple 1 - it is not used here. Instead the temperature is obtained from the SparkFun chip. */ 
 
   //Serial.print("Internal Temp = ");
   //Serial.println(thermocouple1.readInternal());

/* The code below reads the temperature from thermocouple 1, in Celsius. */

   double c1 = thermocouple1.readCelsius();

/* If you prefer the temperature to be displayed in Fahrenheit, uncomment the code below (and comment out the code above). */

  //double f1 = thermocouple1.readFahrenheit();

/* This sketch formats and outputs data for processing in MakerPlot. If you intend to use the Arduino serial monitor, you may wish to uncomment the following (and comment out the MakerPlot section). Note: if you have changed the temperature setting to Fahrenheit, remember to adjust the below code accordingly (to f1). */

   /*
    if (isnan(c1)) {
    Serial.println("T1 not working!");
    } else {
    Serial.print("T1 = "); 
    Serial.println(c1);
    }
 */
   
/*-------THERMOCOUPLE 2-------*/

 /* The following code reads the on-board temperature module on the Adafruit MAX31855 for thermocouple 2 - it is not used here. */ 

  //Serial.print("Internal Temp = ");
  //Serial.println(thermocouple2.readInternal());

/* The code below reads the temperature from thermocouple 2, in Celsius. */

   double c2 = thermocouple2.readCelsius();

/* If you prefer the temperature to be displayed in Fahrenheit, uncomment the code below (and comment out the code above). */

  //double f2 = thermocouple2.readFahrenheit();

/* This sketch formats and outputs data for processing in MakerPlot. If you intend to use the Arduino serial monitor, you may wish to uncomment the following (and comment out the MakerPlot section). Note: if you have changed the temperature setting to Fahrenheit, remember to adjust the below code accordingly (to f2). */
   
/*  
 *   if (isnan(c2)) {
    Serial.println("T2 not working!");
    } else {
    Serial.print("T2 = "); 
    Serial.println(c2); 
    } 
  */

/*-------WIDEBAND OXYGEN SENSOR------------*/

/* The signal from the WBlin+ output on the Tech Edge 2Y2 controller relates to lambda and is sent to analog pin 0 (A0). */

  int lambdaValue = analogRead(A0);
  int oxygenValue = analogRead(A1);
  float oxygenvoltage = oxygenValue * (5.0 / 1023.0);
  float lambdavoltage = lambdaValue * (5.0 / 1023.0);
  
/* LAMBDA - the 2Y2 controller is programmed to output 0 volts at lambda 0.80 and 5 volts at lambda 10.00. These numbers are included in the formula below, and should be changed if the controller settings are changed. */

  float lambda = 0.80 + (lambdaValue * ((10 - 0.80)/ 1023));

/* OXYGEN PERCENTAGE - the oxygen percentage in obtained directly from the 2Y2 controller. Minimum (0 volt) is -4.83%, maximum (5 volts) is 18.77%. These numbers should be changed if the 2Y2 controller settings are changed. */

  float oxygenpercent = -4.8294 + (oxygenValue * ((18.7761 - -4.8294) / 1023));
  
/* EXCESS AIR - there are various ways to calculate access air. One is to use the lambda value, where the excess air percentage = (lambda - 1) * 100. Another method is the use the oxygen percentage, whereby excess air is defined as the oxygen not used. */
  
  float excessair = (((lambda) - 1) * 100);

/* CO2 PERCENTAGE - the oxygen percentage can also be used to estimate the carbon dioxide percentage in the exhaust gas. The formula is: CO2% = maximum CO2 for fuel type * ((20.95 - %O2) / 20.95). Please note that the figure for maximum CO2 for wood tends to vary, and is generally quoted for dry wood. Some sources quote 19.2 while others use 19.7. The formula used here uses 19.5. It is noted that wood is generally not dry and that a moisture percentage of 15% is more realistic. */

  float CO2percent = 19.5 * ((20.95 - oxygenpercent) / 20.95); 


/*-------STOVE EFFICIENCY -------*/

/* The flue gas temperature, the ambient temperature and the carbon dioxide percentage can be used to obtaine some indication of the system's efficiency. The formula is: stove efficiency = 100 - ((MeanFlueTemp - MeanRoomTemp) x (A1 / CO2%)), where A1 is 0.65. As thermocouple 1 is attached to the flue, MeanFlueTemp = (c1) while MeanRoomTemp = (temp, 1). */

  float stoveefficiency =  100 - (((c1) -  (temp, 1)) * (0.65 / CO2percent));


/*-------DATA OUTPUT TO MAKERPLOT-------*/

/* 
{
  // The code below outputs data in comma delimited form. This allows it to be read in MakerPlot.
  
  Serial.print(c1);  //temperature reading thermocouple 1, displayed in Celsius
// Serial.print(f1);  // temperature reading thermocouple 1, displayed in Fahrenheit       
  Serial.print(",");          // comma delimiter
  Serial.print(c2);   // temperature reading thermocouple 2, displayed in Celsius
// Serial.print(f2);  // temperature reading thermocouple 2, displayed in Fahrenheit  
  Serial.print(",");          // comma delimiter
  Serial.print(temp, 1); // ambient temperature from SprakFun temperature & humidity sensor
  Serial.print(",");          // comma delimiter
  Serial.print(humd, 1); //humidity reading from SprakFun temperature & humidity sensor
  Serial.print(",");          // comma delimiter
  if (lambdavoltage < 0.1)
  {
  Serial.print("Lambda: no signal");
  }
  else if (lambdavoltage < 4.95)
  {
  Serial.print(lambda);
  }
  else
  {
  Serial.print("Lambda: outside range");
  Serial.print(",");          // comma delimiter
  if (oxygenvoltage < 0.1)
  {
  Serial.print("O2%: no signal");
  }
  else if (oxygenvoltage < 4.95)
  {
  Serial.print(oxygenpercent);
  }
  else
  {
  Serial.print("O2%: outside range");
  }
  Serial.print(",");          // comma delimiter
  }
  if (excess > 100)
  {
  Serial.print(100);
  Serial.print(",");          // comma delimiter
  }
  else
  {
  Serial.print(excessair);
  Serial.print(",");          // comma delimiter
  }
  if (CO2percent < 0)
  {
  Serial.print(0.00);
  Serial.print(",");          // comma delimiter
  }
  else
  {
  Serial.print(CO2PERCENT);
  Serial.print(",");          // comma delimiter
  }
  if (stoveefficiency < 0)
  {
  Serial.print(0.00);
  Serial.print(",");          // comma delimiter;
  }
  else
  {
  Serial.print(stoveefficiency);
  Serial.print(",");          // comma delimiter;
  Serial.println();
  
  }

*/

/*-------DATA OUTPUT SERIAL-------*/

{
  Serial.print("Thermocouple 1: ");  // label thermocouple 1
  Serial.print(c1);   // temperature reading thermocouple 1, displayed in Celsius
// Serial.print(f1);  // temperature reading thermocouple 1, displayed in Fahrenheit       
  Serial.println();          // new line.
  Serial.print("Thermocouple 2: ");  // label thermocouple 2
  Serial.print(c2);   // temperature reading thermocouple 2, displayed in Celsius
// Serial.print(f2);  // temperature reading thermocouple 2, displayed in Fahrenheit  
  Serial.println();          // new line.
  Serial.print("Ambient temperature: ");  // label ambient temperature
  Serial.print(temp, 1); // ambient temperature from SprakFun temperature & humidity sensor
  Serial.println();          // new line
  Serial.print("Ambient humidity: ");  // label ambient humidity
  Serial.print(humd, 1); //humidity reading from SprakFun temperature & humidity sensor
  Serial.println();          // new line
  if (lambdavoltage < 0.1)
  {
  Serial.print("Lambda: no signal");  //label lambda
  }
  else if (lambdavoltage < 4.95)
  {
  Serial.print("Lambda: ");   //label lambda
  Serial.print(lambda);  //lambda value
  }
  else
  {
  Serial.print("Lambda: outside range");   //label lambda
  }
  Serial.println();  // new line.
  if (oxygenvoltage < 0.1)
  {
  Serial.print("O2%: no signal");  //label oxygen percentage
  }
  else if (oxygenvoltage < 4.95)
  {
  Serial.print("O2%: ");  //label oxygen percentage
  Serial.print(oxygenpercent);  //oxygen percentage
  }
  else
  {
  Serial.print("O2%: outside range");  //label oxygen percentage
  }
  Serial.println();
  }
  if (excessair > 100)
  {
  Serial.print("Excess Air percentage: ");  //label excess air percentage
  Serial.print(100);
  Serial.println();          //new line
  }
  else
  {
  Serial.print("Excess Air percentage: ");  //label excess air percentage
  Serial.print(excessair);
  Serial.println();          //new line
  }
  if (CO2percent < 0)
  {
  Serial.print("CO2 percentage: ");  //label CO2 percentage
  Serial.print(0.00);
  Serial.println();          //new line
  }
  else
  {
  Serial.print("CO2 percentage: ");  //label CO2 percentage
  Serial.print(CO2percent);
  Serial.println();          //new line
  }
  if (stoveefficiency < 0)
  {
  Serial.print("Stove efficiency (%): ");  //label stove efficiency
  Serial.print(0.00);
  Serial.println();
  }
  else
  {
  Serial.print("Stove efficiency (%): ");  //label stove efficiency
  Serial.print(stoveefficiency);
  Serial.println();
  Serial.println();
  }

//the delay below defines how often data is sent to MakerPlot (once a second = 1000).
  
  delay(3000);

}  

Gebruikersavatar
ready to burn
Berichten: 174
Lid geworden op: 28 aug 2014, 18:59
Locatie: mauie stad achteâh duh duine

Re: Arduino houtkachel monitor systeem

Bericht door ready to burn »

Hi Busch, mooi dat je indruk van Tech Edge goed is.

Even een kleine kanttekening wat betreft de Kane.
Kane wordt ook onder de naam Brigon verhandeld.
Ik heb hier een Brigon liggen, een waardeloos ding.
Na een uurtje meten is de afwijking al gauw 10 tot 20 % !!
Na aanschaf is hij een paar keer terug naar de importeur gegaan voor calibratie en het vervangen van cellen, maar hij heeft nooit goed gefunctioneerd.
Het is zelfs zo erg dat een goed werkende ketel in storing slaat na afstellen met de Brigon !!!

Om even te testen of die van jou wel goed werkt kan je de Kane na het "nullen" een uurtje aan laten staan.
Dan zou die nog steeds een zuurstof percentage van 20.9% aan moeten geven.

Ik heb die van mij net nog even afgestoft en van nieuwe batterijen voorzien, en na 10 minuten is hij al gezakt naar 20.5% :(

Hiermee wil ik niet zeggen dat het allemaal troep is, maar voor mij niet betrouwbaar genoeg....

Tis maar even dat je het weet.
Plaats reactie