Övervakning av pelletsbrännare och förbränning.

Ved, pellets, gengas, m.m.

Övervakning av pelletsbrännare och förbränning.

Inläggav McB 01 jul 2014 18:07

Har börjat plocka ihop en Arduino Mega med nätverk och SD-kort.

När det blir färdigt ska det övervaka och larma när det behövs

- Kontroll av pelletsnivå
- Mätning av panntemp, rökgastemp, tanktopp, tankbotten, utomhus temp, framledningstemp, returledningstemp till att börja med.
- Mäta pelletsförbrukning genom varvräkning på matarskruv.

Larm via visuell display, mail/twitter vid låg pelletsnivå eller onormalt höga/låga temperaturer.

På sikt kommer det byggas på något slags interface till brännaren då den har 8 I/O portar för styrning & larm via en GSM-modul,
mest för att plocka upp larm signalerna.

Sen kan man göra en massa med all data man samlar in, tex statistik direkt på webben.

Labbar för fullt.

DSC_0441e.jpg
Avståndsmätning med ultraljud
DSC_0441e.jpg (151.94 KB) Visad 11499 gånger

DSC_0442e.jpg
fotoresistor och tempresistor
DSC_0442e.jpg (144.17 KB) Visad 11451 gånger
Om Jesus Kristus skulle återuppstå och se allt som görs i hans namn, så skulle han aldrig sluta spy.

- Woody Allen
Användarvisningsbild
McB
 
Inlägg: 683
Blev medlem: 19 jun 2009 11:48
Ort: Några mil väster om Vättern.

Re: Övervakning av pelletsbrännare och förbränning.

Inläggav McB 19 jul 2014 12:14

Om Jesus Kristus skulle återuppstå och se allt som görs i hans namn, så skulle han aldrig sluta spy.

- Woody Allen
Användarvisningsbild
McB
 
Inlägg: 683
Blev medlem: 19 jun 2009 11:48
Ort: Några mil väster om Vättern.

Re: Övervakning av pelletsbrännare och förbränning.

Inläggav McB 20 jul 2014 09:28

Hittade mer kul, en robotklippare byggd på arduino
http://www.ardumower.de
Om Jesus Kristus skulle återuppstå och se allt som görs i hans namn, så skulle han aldrig sluta spy.

- Woody Allen
Användarvisningsbild
McB
 
Inlägg: 683
Blev medlem: 19 jun 2009 11:48
Ort: Några mil väster om Vättern.

Re: Övervakning av pelletsbrännare och förbränning.

Inläggav McB 29 dec 2014 00:39

Pysslandet fortgår :D
Skrotade all kod och började om från noll, det var för rörigt att få grepp om när nya delar skulle in.
Så här ser det ut nu med underrutiner som kallas upp en efter en
Kod: Markera allt

// Connect the two ground pins to ground pin of Arduino
// board

// connect the US-100 trigger pin
// to pin 6 of Arduino board
const int trigger = 22;//6
// connect the US-100 echo pin
// to pin 7 of Arduino board
const int echo = 23;//7
float distance;
int sensorTemp1;
int sensorTemp = A15;



void setup() {
// initiates serial communication between
// Arduino board and Arduino Software
// Serial monitor
Serial.begin(9600);
// Comment out if you don't need
// this serial.begin ek ek.
pinMode(trigger,OUTPUT);
pinMode(echo,INPUT);


}

void loop () {
  LeveL();
  TemP();
  Serial.println(sensorTemp1);
  Serial.println(distance);
  delay (2000);
}



void LeveL () {
// Set the trigger
digitalWrite(trigger, LOW);
delayMicroseconds(10);

// Start measurement
digitalWrite(trigger, HIGH);
delayMicroseconds(50);
digitalWrite(trigger, LOW);

// Acquire data and convert it to meters
distance = pulseIn(echo,HIGH); // data acquisition
distance = distance * 26 / 100 / 2 / 1000; // data converstion

// Sent result to Serial monitor
// Again, comment this out if you don't feel the
// need or will never use it.
//Serial.println(distance);
//delay(1000); // one second delay to
// prevent receiving massive amount of data.

}
void TemP () {
sensorTemp1 = analogRead (sensorTemp);
//Serial.println(sensorTemp1);
}


Nu behövs en räknare till skruvvarv och en annan lösning för att mäta temperaturen på flera olika ställen, vet inte riktigt vilken givare som blir bäst?
Om Jesus Kristus skulle återuppstå och se allt som görs i hans namn, så skulle han aldrig sluta spy.

- Woody Allen
Användarvisningsbild
McB
 
Inlägg: 683
Blev medlem: 19 jun 2009 11:48
Ort: Några mil väster om Vättern.

Re: Övervakning av pelletsbrännare och förbränning.

Inläggav McB 13 jan 2015 13:48

Går det bland olika 1wire kretsar på samma datakabel?
Skulle vilja blanda DS18B20 och MAX31850, inte för att det tar slut på ingångar utan det blir smidigare med kabeldragning.
Lär nog bli 2 olika 1wire kablar men åt olika håll i pannrummet.
Om Jesus Kristus skulle återuppstå och se allt som görs i hans namn, så skulle han aldrig sluta spy.

- Woody Allen
Användarvisningsbild
McB
 
Inlägg: 683
Blev medlem: 19 jun 2009 11:48
Ort: Några mil väster om Vättern.

Re: Övervakning av pelletsbrännare och förbränning.

Inläggav McB 15 jan 2015 00:28

Nu så är det 10st DS18B20 1-wire på väg hem, tar väl en månad som vanligt :(
Men letar efter 2st MAX31850 till ett rimmligt pris, helst färdigt kort då det ligger lite utanför mina lödkunskaper att plocka ihop ett.
Kommer köra 3 trådar i slingan (VCC, DATA, GND) för att snabba upp det lite och öka säkerheten, det gör att jag kan skicka konventering/beräknings kommando till alla enheter samtidigt och sen begära data från varje enhet när jag behöver den.
Ska man köra ström och data på samma tråd blir det lite långsamt då det tar 750 ms per enhet vid högsta upplösning. 750 *10 = 7500ms= 7,5 sekunder. Då är risken stor att man missar något annat.
Om Jesus Kristus skulle återuppstå och se allt som görs i hans namn, så skulle han aldrig sluta spy.

- Woody Allen
Användarvisningsbild
McB
 
Inlägg: 683
Blev medlem: 19 jun 2009 11:48
Ort: Några mil väster om Vättern.

Re: Övervakning av pelletsbrännare och förbränning.

Inläggav McB 25 jan 2015 16:14

Är svårt att hitta MAX31850 till rimliga priser, så jag kanske får överge one wire tanken vid mätning av hög temperatur.
MAX31855 ligger nog närmast att ta till.

Vad finns det mer att välja på när det gäller typ-K givare?
Analogt kan funka men jag är rädd för störningar som kan bli ganska stora på grund av långa kablar och en massa motorer i samma rum.

Ögonen är blodröda efter att ha läst det mesta som google har att erbjuda på ämnet :x
Om Jesus Kristus skulle återuppstå och se allt som görs i hans namn, så skulle han aldrig sluta spy.

- Woody Allen
Användarvisningsbild
McB
 
Inlägg: 683
Blev medlem: 19 jun 2009 11:48
Ort: Några mil väster om Vättern.

Re: Övervakning av pelletsbrännare och förbränning.

Inläggav Bittämjaren 25 jan 2015 19:37

Nu är det temperaturmätning det gäller och då behöver det inte vara så korta mätintervall
7,5 sek är ganska snabbt när du mäter rökgastemp på din panna, på bilden kan du se det snabbaste förloppet på temperaturen (röd linje) som inträffar när brännaren har startart hemma hos mig, diagrammet är på 2min. D.v.s. från 50 gr till 116 gr på c:a 50 sek
Trendvisning_rökgastemp_detalj.jpg
Trendvisning_rökgastemp_detalj.jpg (4.94 KB) Visad 10657 gånger

Det blir nog att göra en analog förstärkare med kompensering för kalla punkten före analogingången på arduino'n.
Är det inte elektriskt !?!... Då är inte jag inblandad
Användarvisningsbild
Bittämjaren
 
Inlägg: 307
Blev medlem: 23 maj 2013 19:15
Ort: FRISTAD

Re: Övervakning av pelletsbrännare och förbränning.

Inläggav McB 25 jan 2015 20:14

Bittämjaren skrev:Nu är det temperaturmätning det gäller och då behöver det inte vara så korta mätintervall
7,5 sek är ganska snabbt när du mäter rökgastemp på din panna, på bilden kan du se det snabbaste förloppet på temperaturen (röd linje) som inträffar när brännaren har startart hemma hos mig, diagrammet är på 2min. D.v.s. från 50 gr till 116 gr på c:a 50 sek
Trendvisning_rökgastemp_detalj.jpg

Det blir nog att göra en analog förstärkare med kompensering för kalla punkten före analogingången på arduino'n.


7½ sekund stör inte på annat sätt än att man kan tappa ett varv på matarskruven, det vill jag helst undvika och om det bara kostar en extra kabel till one wire slingan för att undvika så är det små potatis.
En analog lösning kan funka och den tar ingen tid att läsa in då den alltid är redo till skillnad mot one wire som måste få convert T kommando för att uppdatera sig med nya data, först där efter kan man läsa den nya datan i chipet. Utan det får du förra uppdateringen igen.

Slänger in ett utkast på koden just nu, inget testat bara skrivet.
Kod: Markera allt
#include <SD.h>

#include <EthernetServer.h>
#include <util.h>
#include <Ethernet.h>
#include <Dns.h>
#include <EthernetUdp.h>
#include <Dhcp.h>
#include <EthernetClient.h>



#include <LiquidCrystal.h>

/*

  The circuit:

* LCD RS pin to digital pin 27*2*

* LCD Enable pin to digital pin 28*3*

* LCD D4 pin to digital pin 32*4*

* LCD D5 pin to digital pin 31*5*

* LCD D6 pin to digital pin 30*6*

* LCD D7 pin to digital pin 29*7*

* LCD R/W pin to ground

* 10K resistor:

* ends to +5V and ground

* wiper to LCD VO pin (pin 3)

*/
//LCD
LiquidCrystal lcd(27, 28, 32, 31, 30, 29); // Testing might be switched for serial.

//  Start Number Storage
int TempBoilier = 0; //DS18B20
int TempTopTank = 0; //DS18B20
int TempBottomTank = 0; //DS18B20
int TempSupplyLine = 0; //DS18B20
int TempReturnLine = 0; //DS18B20
int TempOutSide = 0; //DS18B20
int TempInside = 0; //DS18B20
int TempFire = 0; //MAX31850+K thermocouple
int TempSmoke = 0; //MAX31850+K thermocouple
int AugerTurnCount = 0; // Feedauger turns
int FuelLevel = 0; // Level in fuel silo
// End Number Storage
//FuelLevel
const int trigger = 22;
const int echo = 23;
float distance;
//FuelLevel End
// AugerTurnCount Start
const int  TurnSwitch = 2;    // the pin that the switch is attached to
// Variables will change:
int TurnSwitchCounter = 0;   // counter for the number of switch presses
int TurnSwitchState = 0;         // current state of the switch
int TurnSwitchLastState = 0;     // previous state of the switch
//AugerTurnCount End

void setup() {
  Serial.begin(9600);
 
  lcd.begin(16, 2);
//FuelLevel Start
pinMode(trigger,OUTPUT);
pinMode(echo,INPUT);
//FuelLevel End
//Auger turn start 
  pinMode(TurnSwitch, INPUT); // initialize the switch pin as a input:
//Auger turn end

  // put your setup code here, to run once:

}

void loop() {
  // Debugg start
      Serial.print("number of button pushes:  ");
      Serial.println(TurnSwitchCounter);
      Serial.print("meters:      ");
      Serial.println(distance);
      Serial.print("centimeters:       ");
      Serial.println(FuelLevel);
      //more will come when it arrives.
//Debugg end
Convert_All ();
AugerTurn_Count ();
Temp_In_Out ();
Temp_Sup_Ret ();
Temp_Tank ();
Temp_Boilier ();
Summary ();
Write_SD ();
Update_Web();
Twitter();
Fuel_Level();
LCD_Print();
}


void LCD_Print (){ // Update LCD.
}
void Convert_All (){ //OneWire messuare, convert, get ready to deliver. Will be 3 wire setup(VCC,DATA,GND).
}
void Fuel_Level () { //Get distance in silo
// Set the trigger
digitalWrite(trigger, LOW);
delayMicroseconds(10);

// Start measurement
digitalWrite(trigger, HIGH);
delayMicroseconds(50);
digitalWrite(trigger, LOW);

// Acquire data and convert it to meters.
distance = pulseIn(echo,HIGH); // data acquisition.
distance = distance * 26 / 100 / 2 / 1000; // data converstion.
FuelLevel = distance * 100; // convert to centimeters and avoid more float.
}

void Twitter () { // Send status and alarms on interval and direct.
}
void Update_Web () { //Send to/Update webserver internal/external?
}
void Write_SD () { //Write to SD card, use Summary.
}
void Summary () { //Put it together for statistics.
}
void Temp_Boilier () { //All in boilier water,fire,smoke.
}
void Temp_Tank () { //All in tank top,bottom.
}
void Temp_Sup_Ret () { //All lines supply,return. Maybe put this in Temp_Tank
}
void Temp_In_Out () { //All outside,inside

}

void AugerTurn_Count () { //Turn counter auger

      TurnSwitchState = digitalRead(TurnSwitch); // read the switch input pin:

 
  if (TurnSwitch != TurnSwitchLastState) { // compare the switchState to its previous state
   
    if (TurnSwitch == HIGH) {  // if the state has changed, increment the counter
     
       
      TurnSwitchCounter++;// if the current state is HIGH then the switch wend from off to on:
     // Serial.println("on");
      //Serial.print("number of button pushes:  ");
      //Serial.println(TurnSwitchCounter);
    }
    else {
      // if the current state is LOW then switch
      // wend from on to off:
      //Serial.println("off");
    }
  }
 
 
  TurnSwitchLastState = TurnSwitchState; // save the current state as the last state,for next time through the loop
  AugerTurnCount = TurnSwitchLastState; // Update for statistics



 
 
 


Hittat en bugg på sista raden AugerTurnCount = TurnSwitchCounter; ska det vara .....
Om Jesus Kristus skulle återuppstå och se allt som görs i hans namn, så skulle han aldrig sluta spy.

- Woody Allen
Användarvisningsbild
McB
 
Inlägg: 683
Blev medlem: 19 jun 2009 11:48
Ort: Några mil väster om Vättern.

Re: Övervakning av pelletsbrännare och förbränning.

Inläggav Fritte 26 jan 2015 00:54

Ett tips är att inte använda int om du kan använda byte istället. En int använder dubbelt så mycket minne som en byte.
Det är inget som spelar så stor roll när man gör program för en vanlig dator då det oftast finns gott om arbetsminne.
Men dessa små tingestar har inte riktigt samma kapacitet och rätt vad det är så slår man i taket för mängden SRAM vilket jag fick erfara i mitt projekt.
Här finns lite att läsa om minnesoptimering.
Fritte
 
Inlägg: 206
Blev medlem: 09 sep 2008 18:13
Ort: Linköping

Re: Övervakning av pelletsbrännare och förbränning.

Inläggav McB 26 jan 2015 20:23

Jag har Arduino MEGA 2560 med 8kB Sram så det blir nog inget problem än ska väl sägas.

Tack ögonöppnaren, efter lite läsande inser jag att många av mina värden passar i byte då dom är mellan 0-255.
Så där kan jag halvera minnes användningen om jag behöver.
Efter omräkning från meter till centimeter passar även fuellevel i en byte
Kod: Markera allt
FuelLevel = distance * 100;
Om Jesus Kristus skulle återuppstå och se allt som görs i hans namn, så skulle han aldrig sluta spy.

- Woody Allen
Användarvisningsbild
McB
 
Inlägg: 683
Blev medlem: 19 jun 2009 11:48
Ort: Några mil väster om Vättern.

Re: Övervakning av pelletsbrännare och förbränning.

Inläggav McB 01 apr 2015 10:09

Nu har jag kommit en bit till,
Har fått hem 7 av 9 temperaturgivare och koden verkar funka.
Nu saknas 1-wire enheter som kan ta typ K givare till rökgas och förbränning.
Dessa är inte lätta att hitta till en rimmlig peng när temperaturen stiger över 1000 grader.
Varvräkningen på skruven har jag inte fått till än, får nog skriva om den biten kod tips och ideer mottages tacksamt.
Avståndsmätningen i silon verkar stabil även om toleransen är lite stor,
men där ändras inget snabbt och det ska mest användas som indikator för påfyllning.
Får nog bli att byta LCD på sikt, svårt att få informationen lätt läst på 2 rader med 16 tecken.
Kod: Markera allt
#include <SPI.h>

#include <DallasTemperature.h>
#include <OneWire.h>

#include <SD.h>

#include <EthernetServer.h>
#include <util.h>
#include <Ethernet.h>
#include <Dns.h>
#include <EthernetUdp.h>
#include <Dhcp.h>
#include <EthernetClient.h>



#include <LiquidCrystal.h>

/*

  The circuit:

* LCD RS pin to digital pin 27*2*

* LCD Enable pin to digital pin 28*3*

* LCD D4 pin to digital pin 32*4*

* LCD D5 pin to digital pin 31*5*

* LCD D6 pin to digital pin 30*6*

* LCD D7 pin to digital pin 29*7*

* LCD R/W pin to ground

* 10K resistor:

* ends to +5V and ground

* wiper to LCD VO pin (pin 3)

*/
//LCD
LiquidCrystal lcd(27, 28, 32, 31, 30, 29); // Testing might be switched for serial.

//  Start Number Storage
byte TempBoiler = 0; //DS18B20
byte TempTopTank = 0; //DS18B20
byte TempBottomTank = 0; //DS18B20
byte TempSupplyLine = 0; //DS18B20
byte TempReturnLine = 0; //DS18B20
int TempOutSide = 0; //DS18B20 needs to handle -value
byte TempInSide = 0; //DS18B20
int TempFire = 0; //MAX31850+K thermocouple
int TempSmoke = 0; //MAX31850+K thermocouple
int AugerTurnCount = 0; // Feedauger turns
int FuelLevel = 0; // Level in fuel silo
float test = 0;
// End Number Storage
//FuelLevel
const int trigger = 22;
const int echo = 23;
float distance;
//FuelLevel End
// AugerTurnCount Start
const int  TurnSwitch = 53;    // the pin that the switch is attached to
// Variables will change:
int TurnSwitchCounter = 0;   // counter for the number of switch presses
int TurnSwitchState = 0;         // current state of the switch
int TurnSwitchLastState = 0;     // previous state of the switch
//AugerTurnCount End

//Temperature gathering
#define ONE_WIRE_BUS 10 // Data wire is plugged into pin ? on the Arduino
OneWire oneWire(ONE_WIRE_BUS);// Setup a oneWire instance to communicate with any OneWire devices
DallasTemperature sensors(&oneWire);// Pass our oneWire reference to Dallas Temperature.
// Assign the addresses of your 1-Wire temp sensors. Inspration from http://www.hacktronics.com/
DeviceAddress insideTemp = { 0x28, 0xFF, 0xA0, 0x36, 0x66, 0x14, 0x03, 0x7B };
DeviceAddress outsideTemp = { 0x28, 0xFF, 0x41, 0xB6, 0x66, 0x14, 0x02, 0xEB };
DeviceAddress supplyTemp = { 0x28, 0xFF, 0x51, 0x3E, 0x66, 0x14, 0x03, 0x0C };
DeviceAddress returnTemp = { 0x28, 0xFF, 0xA9, 0x37, 0x66, 0x14, 0x03, 0x07 };
DeviceAddress boilerTemp = { 0x28, 0xFF, 0xF3, 0xA7, 0x66, 0x14, 0x02, 0x90 };
DeviceAddress topTemp = { 0x28, 0xFF, 0x4C, 0x36, 0x66, 0x14, 0x03, 0x80 };
DeviceAddress bottomTemp = { 0x28, 0xFF, 0xFE, 0x38, 0x66, 0x14, 0x03, 0x59 };
//DeviceAddress fireTemp = { 0x28, 0xFF, 0x51, 0x3E, 0x66, 0x14, 0x03, 0x0C }; NEED UPDATE
//DeviceAddress smokeTemp = { 0x28, 0xFF, 0x51, 0x3E, 0x66, 0x14, 0x03, 0x0C }; NEED UPDATE


void setup() {
  Serial.begin(9600);
 
  lcd.begin(16, 2);
//FuelLevel Start
pinMode(trigger,OUTPUT);
pinMode(echo,INPUT);
//FuelLevel End
//Auger turn start 
  pinMode(TurnSwitch, INPUT); // initialize the switch pin as a input:
//Auger turn end
// Tempsensors
// Start up the library
  sensors.begin();
  // set the resolution to 10 bit (good enough?)
  sensors.setResolution(insideTemp, 9);
  sensors.setResolution(outsideTemp, 9);
  sensors.setResolution(supplyTemp, 9);
  sensors.setResolution(returnTemp, 9);
  sensors.setResolution(boilerTemp, 9);
  sensors.setResolution(topTemp, 9);
  sensors.setResolution(bottomTemp, 9);
  //sensors.setResolution(fireTemp, 9);
  //sensors.setResolution(smokeTemp, 9);

  // put your setup code here, to run once:

}
void printTemperature(DeviceAddress deviceAddress)
{
  float tempC = sensors.getTempC(deviceAddress);
  if (tempC == -127.00) {
    Serial.print("Error getting temperature");
  } else {
    //Serial.print("C: ");
    //Serial.print(tempC);
   test = tempC;
    //Serial.print(" F: ");
    //Serial.print(DallasTemperature::toFahrenheit(tempC));
  }
}

void loop() {
  // Debugg start
      Serial.print("number of button pushes:  ");
      Serial.println(TurnSwitchCounter);
      Serial.print("meters:      ");
      Serial.println(distance);
      Serial.print("centimeters:       ");
      Serial.println(FuelLevel);
      Serial.print("1 Inside  ");
      Serial.println(TempInSide);
      Serial.print("2 Outside  ");
      Serial.println(TempOutSide);
      Serial.print("3 Supplyline  ");
      Serial.println(TempSupplyLine);
      Serial.print("4 Returnline  ");
      Serial.println(TempReturnLine);
      Serial.print("5 Boiler  ");
      Serial.println(TempBoiler);
      Serial.print("6 Top Tank  ");
      Serial.println(TempTopTank);
      Serial.print("7 Bottom Tank  ");
      Serial.println(TempBottomTank);
      //more will come when it arrives.
//Debugg end
Convert_All ();
AugerTurn_Count ();
Temp_In_Out ();
Temp_Sup_Ret ();
Temp_Tank ();
Temp_Boilier ();
Summary ();
Write_SD ();
Update_Web();
Twitter();
Fuel_Level();
LCD_Print();
}


void LCD_Print (){ // Update LCD.
lcd.setCursor(0,0);
lcd.print("                ");
lcd.setCursor(0,1);
lcd.print("                ");
lcd.setCursor(1,0);
lcd.print("PL");
lcd.print(FuelLevel);
lcd.setCursor(6,0);
lcd.print("TT");
lcd.print(TempTopTank);
lcd.setCursor(10,0);
lcd.print(TempBottomTank);
lcd.setCursor(14,0);
lcd.print("S");
lcd.print(TempSupplyLine);
lcd.setCursor(0,1);
lcd.print("R");
lcd.print(TempReturnLine);
lcd.setCursor(4,1);
lcd.print("OS");
lcd.print(TempOutSide);
lcd.setCursor(9,1);
lcd.print("IS");
lcd.print(TempInSide);


}
void Convert_All (){
Serial.print("Getting temperatures...\n\r");
  sensors.requestTemperatures();
delay(5000); //OneWire messuare, convert, get ready to deliver. Will be 3 wire setup(VCC,DATA,GND).
}
void Fuel_Level () { //Get distance in silo
// Set the trigger
digitalWrite(trigger, LOW);
delayMicroseconds(10);

// Start measurement
digitalWrite(trigger, HIGH);
delayMicroseconds(50);
digitalWrite(trigger, LOW);

// Acquire data and convert it to meters.
distance = pulseIn(echo,HIGH); // data acquisition.
distance = distance * 26 / 100 / 2 / 1000; // data converstion.
FuelLevel = distance * 100; // convert to centimeters and avoid more float.
}

void Twitter () { // Send status and alarms on interval and direct.
}
void Update_Web () { //Send to/Update webserver internal/external?
}
void Write_SD () { //Write to SD card, use Summary.
}
void Summary () { //Put it together for statistics.
}
void Temp_Boilier () { //All in boilier water,fire,smoke.
  printTemperature(boilerTemp);
TempBoiler = test;
}
void Temp_Tank () { //All in tank top,bottom.
printTemperature(topTemp);
TempTopTank = test;

  printTemperature(bottomTemp);
TempBottomTank = test;
}
void Temp_Sup_Ret () { //All lines supply,return. Maybe put this in Temp_Tank
printTemperature(supplyTemp);
TempSupplyLine = test;

  printTemperature(returnTemp);
TempReturnLine = test; 

}
void Temp_In_Out () { //All outside,inside
  printTemperature(insideTemp);
TempInSide = test;

printTemperature(outsideTemp);
TempOutSide = test;
}

void AugerTurn_Count () { //Turn counter auger

      TurnSwitchState = digitalRead(TurnSwitch); // read the switch input pin:

 
  if (TurnSwitch != TurnSwitchLastState) { // compare the switchState to its previous state
   
    if (TurnSwitch == HIGH) {  // if the state has changed, increment the counter
     
       
      TurnSwitchCounter++;// if the current state is HIGH then the switch wend from off to on:
     // Serial.println("on");
      //Serial.print("number of button pushes:  ");
      //Serial.println(TurnSwitchCounter);
    }
    else {
      // if the current state is LOW then switch
      // wend from on to off:
      //Serial.println("off");
    }
  }
 
 
  TurnSwitchLastState = TurnSwitchState; // save the current state as the last state,for next time through the loop
  AugerTurnCount = TurnSwitchCounter; // Update for statistics




Måste klura ut något filter för loggningen,
vet inte riktigt hur än men tankarna går mot dubbla numeriska register för att jämföra med och sållningen sker med +/- toleranser ?
Det ligger en del pauser (delay) inlagt för att inte överbelasta LCD och seriella monitorn när det testkörs,
dom ska bort sen när sållningen funkar.
Om Jesus Kristus skulle återuppstå och se allt som görs i hans namn, så skulle han aldrig sluta spy.

- Woody Allen
Användarvisningsbild
McB
 
Inlägg: 683
Blev medlem: 19 jun 2009 11:48
Ort: Några mil väster om Vättern.

Re: Övervakning av pelletsbrännare och förbränning.

Inläggav McB 24 jun 2015 18:30

Har på börjat ett skarpt test av ned bantat program, har kört 1 månad utan att hitta några buggar eller problem.
Så nu ska jag bygga på lite i taget och se hur det funkar och gör som jag vill :D
Om Jesus Kristus skulle återuppstå och se allt som görs i hans namn, så skulle han aldrig sluta spy.

- Woody Allen
Användarvisningsbild
McB
 
Inlägg: 683
Blev medlem: 19 jun 2009 11:48
Ort: Några mil väster om Vättern.

Re: Övervakning av pelletsbrännare och förbränning.

Inläggav McB 30 okt 2015 12:07

Hej.
Nu behöver jag lite hjälp att hitta rätt kabel.
Kabeln bör vara 0,75mm2 eller mer per ledare och helst 8 flertrådiga ledare.
Funkar med 4 ledare med, men blir lite jobbigare att dra då det måste borras i 30cm betongvägg.
Har provat med nätverkskabel vilket man tycker borde räcka men förlusterna blir förstora för att driva ultraljudssensorn.
Alternativet är att sätta displayen på passande plats med nätverkskabel, det funkar men helst inte.

Ska stycka upp 1-wire kretsen till 3 för att minska svarstiderna och kunna styra hur ofta dom blir avlästa.
Kan nog bli lagom att läsa av dom var 50:e programrunda eller mer får testa mig fram där.
Men räknaren för antalet skruvvarv måste läsas varje runda men inte pelletsnivån, den skulle klara sig med 6 gånger per dygn.
Undrar hur man ska får fram en genomsnittlig tid per programvarv så man kan räkna fram ungefärligt antal per timme.

Många tankar/frågor blev det visst!
Om Jesus Kristus skulle återuppstå och se allt som görs i hans namn, så skulle han aldrig sluta spy.

- Woody Allen
Användarvisningsbild
McB
 
Inlägg: 683
Blev medlem: 19 jun 2009 11:48
Ort: Några mil väster om Vättern.

Re: Övervakning av pelletsbrännare och förbränning.

Inläggav RÖD@nörd 30 okt 2015 15:45

Hur lång kabel behöver du?

Jag har haft en rätt stor rulle 8 x 0,75 eller 1,00 + jord svart markkabel och det kan finnas någon bit kvar av den men det måste jag kolla i så fall.

Då det är markkabel är det entrådiga ledare men kabeln är ganska böjlig ändå eftersom det är många mindre ledare i den.
Användarvisningsbild
RÖD@nörd
 
Inlägg: 1701
Blev medlem: 06 mar 2009 19:37

Nästa

Återgå till Biobränslen

Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 1 gäst