Arduino som styrkort i pelletsbrännaren.

Torsdagen 16/2 – 2017 när jag kom hem ifrån jobbet så var det lite kallt inne, ca 19 grader enligt innetermometern. Trodde att jag glömt fylla på pellets och att det var därför den stannat. Gick ner i källaren och kom in i pannrummet och såg att det visst fanns pellets i veckoförrådet. Pannan och pelletsbrännare var dock svarta!! En känsla av att det nu var stora fel dök upp i mitt huvud eftersom säkringen till hela pannan hade gått. Började genast att skruva bort huven på brännare och felsöka vad som kan ha hänt. Ganska omgående när jag lyft på huven till pelletsbrännare såg jag att styrkortet hade brunnit.

Styrkort pelletsbrännaren.
Styrkort pelletsbrännaren.

Som tur är har man en oljebrännare som reserv, så att man i alla fall kan få upp värmen i huset tills man löst problemet med pelletsbrännare. Efter att ha kört oljebrännare i ett dygn så såg jag att detta är dyrt. Brännaren drog ca 20,5 liter diesel på 24 timmar!!! Literpriset på diesel är idag 13,80 kr litern, så priset för att värma upp huset 24 timmar landa på 20,5 x 13,8 ~ 283 kr!!! Detta går ju inte så började titta efter ett nytt styrkort till brännaren så jag kan komma igång med att elda pellets igen. Styrkortet kostade ca 4000 kr och hade några veckors leveranstid. Började då leta efter en begagnad likadan pelletsbrännare på blocket. Hade tur och hittade en identisk bara några mil hemifrån, men tyvärr så blev den såld innan jag hann ringa på annonsen.

Efter detta bakslag så började jag fundera på att göra mitt eget styrkort. En microprocessor som styr lite in och utgångar är ju allt som behövs. Har under några år programmerat ett flertal varianter av microprocessorkort, så programmeringen skulle inte bli nåt problem. Började fundera på hur en lösning skulle kunna se ut.

Pelletsbrännaren som jag har är ganska enkelt uppbyggt kring ett styrkort som styr 1 st fläkt, 1 st värmespiral, 1 st skruvmotor och har 1 st fotocell eller eldgivare eller vad man skall kalla det. Jag hade ett flertal microprocessorkort av typen arduino hemma så jag valde att använda ett sånt. Men eftersom sakerna som styrkortet ska styra behöver starkström (220v) så måste (inte måste,men enklaste & billigaste lösningen) jag använda mig utav ett reläkort som microprocessorkortet sedan styr. Fotocellen eller eldgivaren kan jag koppla direkt till arduino kortet för att läsa värdet.

Gick in på kjell & companys sida för att se om jag kunde hitta ett reläkort som mitt arduino kort kunde styra. Kjell & company hade en flertal varianter men valde  ett som jag tyckte skulle fungera bra.

reläkortet jag hittade på kjell & company.
reläkortet jag hittade på kjell & company.

Fredag kväll så letade jag fram ett arduino uno kort som jag kopplade till min stationära dator och började att fundera hur man skulle programmera det. Gick ner till källaren för att skruva bort fotocellen (eldgivaren) för att kunna testa lite med givarvärdet. Efter ca 4-5 timmars testande och programmerande så hade jag ett brännarprogram som skulle fungera precis som det gamla styrkortet.

Lördag förmiddag så vart det en snabb tur till kjell & company för att inhandla reläkortet och lite kablar som jag behövde för att förverkliga min styrenhet till pelletsbrännaren. När jag kom hem så koppla jag in det inhandlade reläkortet till mitt arduinokort för att testa mitt program som jag skrivit kvällen innan. Reläna slog i sekvensen jag programmerat och allt såg bra ut. Nu var det bara lite tider och givarvärden som skulle justeras i programmet.

Hur skulle jag nu montera och koppla in allt i pelletsbrännaren? Korten måste ju sitta fast eller vara monterade i en låda. Valde att skruva fast dom på en bit plywood som jag sedan kunde skruva fast i pelletsbrännare. Öppnade coreldraw och började rita upp en fyrkant med lite hål för att fästa kretskorten.

Hållaren för kretskorten.
Hållaren för kretskorten ritad i coreldraw.

 

Gick sen ner i källaren och startade upp lasern för att skära ut den.
Här nedan ser vi korten fastskruvade på plywooden:

Reläkortet och arduinokortet fastskruvade på den laserskurna plywooden.
Reläkortet och arduinokortet fastskruvade på den laserskurna plywooden.

 

Innan montering så behövdes arduinokortet modifieras lite för givarsignalen och för signalen ifrån termostaten. I den här pelletsbrännaren så var det en kabel som kom ifrån termostaten som det var 220v (Fasen endast)  i när termostaten slog till. Jag ville bara använda den som en trigger för programmet, så jag löste det genom att bygga om en gammal 5v strömadapter som jag koppla till termostatkabeln. När termostaten slog till så vart min adapter strömsatt och jag fick 5v ut som jag sedan kunde använda som signal till arduinokortet.

En bild på den modifierade adaptern och hur det såg ut vid lödningen.
En bild på den modifierade adaptern (bredvid taperullen till vänster)  och hur det såg ut vid lödningen.

 

När allt var färdiglött och korten testkörda ännu en gång så var det dags att börja montera delarna i brännaren. Tyvärr så glömde jag ta kort på monteringen, men här kan vi se när allt är monterat i pannan och jag håller på att testköra samt justera mjukvaran.

Kretskort och allt inkopplat. Testkörning pågår med datorn inkopplad för ev. justering av mjukvaran.
Kretskort monterat och allt inkopplat. Testkörning pågår med datorn inkopplad för ev. justering av mjukvaran.

 

Bild på hur det såg ut när jag testkörde brännaren.
Bild på hur det såg ut när jag testkörde brännaren.

 

Här ser vi lite av programmeringen utav arduinokortet.
Här ser vi lite av programmeringen utav arduinokortet.

 

Alla möjliga olika saker som kan hända när brännaren är igång testades för att se så allt fungerade som det var tänkt. Efter lite mindre justeringar utav tider och värden för fotocellen (eldgivaren) så verkar allt fungera precis som det skall. Nu var det dags att koppla ur datorn och skruva dit huven igen. Lät pelletsbrännare fortsätta i drift som vanligt resten av kvällen. Var ner några ggr och titta till den under kvällen, allt fungerade som det skulle.  Eftersom allt fungerade så bra, så lät jag den sitta kvar under natten.

Pelletsbrännaren med huven monterad.
Pelletsbrännaren med huven monterad.

Pelletsbrännaren gick fint under natten och har nu i skrivandes stund varit i drift ca 24 timmar utan problem.

Förhoppningsvis håller och fungerar allt som det ska tills det blir dags att byta ut värmesystemet om några månader.  Detta var en billig tillfällig lösning på problemet, kostade mig ca 500 kr att bygga styrenheten istället för 4000 kr som ett nytt styrkort från återförsäljaren hade kostat.

 

4 kommentarer

  1. Hej. Du verkar vara en mkt klurig kille.
    Har ett kretskort till Iwabo som det inte är ngt liv i.
    En Tv kille har kollat på det och mätt upp vissa komponenter. Han gav upp.
    Troligen en microprossesor som är kass var beskedet jag fick.
    Fråga. 1. Var finns du
    Går det att konsultera dig vid ev. Problem

    M.v.h Jan Olof i Falkenberg
    0706171351

    • Hej Jan Olof,

      Detta var bara en tillfällig lösning på problemet jag hade med brännaren. Har du ett trasigt styrkort rekommenderar jag att du byter ut det mot ett nytt ifrån tillverkaren.

      Eftersom jag svarar lite sent så hoppas jag att du löst dina problem med styrkortet till din iwabo brännare nu innan kylan kommer.

      Mvh
      admin

  2. Hej!

    Jag håller på att bygga en egen pelletsanläggning utifrån en skrotad Pellx PX20 brännare. Som det verkar så är styrkortet väck på den, och min tanke for då direkt mot en PLC istället ( typ Siemens !LOGO ), eftersom styrkortet verkar vara en svaghet på PellX, men då det handlar om både analoga I/O som digitala I/O så är LOGO´n rätt begränsad.

    Din variant med Arduino är väldigt intressant, jag har några arduino UNO kort som jag experimenterar med för en komplett pannstyrning/övervakning.

    Att låta Arduinokortet styra brännaren i detta läge vore väldigt intressant!

    Finns det möjlighet att få ta del av din programmering?

    Med vänlig hälsning Patrik

    • Hej Patrik,
      Arduino som styrkort fungerar riktigt bra. Hade mitt bygge igång i 6 månader innan jag bytte värmesystem. Det enda som strula för mig var att reläna inte höll mer än ca 3 månader, men det var förväntat. Förutom att reläna gav upp så fungerade det klockrent.

      Visst kan du få ta del av programmeringen. Vet dock inte om det är senaste versionen.

      ————————-
      //Skriven 2017-02 av admin på vurmstan.se för styrning utav en
      //iwabo pelletsbrännare med arduino.

      int firesensor = A0;
      int fan = 2;
      int heatspiral = 3;
      int screwmotor = 4;

      int counter1 = 0;
      int counter2 = 0;

      void setup() {

      pinMode(firesensor,INPUT); //analog input A0 = eldgivare
      pinMode(fan,OUTPUT); // Relä nr 1 till fläkt
      pinMode(heatspiral,OUTPUT); // Relä nr 2 till värmespiral
      pinMode(screwmotor,OUTPUT); // relä nr 3 till skruvmotor

      Serial.begin(9600);
      Serial.println(”Pellets brännare v0.01.”);
      Serial.println(”Skriven av admin vurmstans.se”);
      Serial.println(””);
      }

      void loop()
      {
      startsekvens();

      }

      void startsekvens()
      {

      counter1 = 0;

      digitalWrite(fan,LOW); //Slår av fläkt
      Serial.println(”Sekvens start: Turn off fan”);
      digitalWrite(screwmotor,LOW); //Slår av skruvmotorn
      Serial.println(”Sekvens start: Turn off screwmotor”);
      digitalWrite(heatspiral,LOW); //slår av glödspiral
      Serial.println(”Sekvens start: Turn off heatspiral”);

      while (counter2>2)
      {
      delay(3600000);
      counter2=0;
      }

      delay(1000);

      while(digitalRead(7)!=1){}

      digitalWrite(fan,HIGH); // slår på fläkten
      Serial.println(”Turn on fan”);

      digitalWrite(heatspiral,HIGH); //slår på värmespiral
      Serial.println(”Turn on heatspiral”);

      Serial.println(”Waiting 30 sek…..”);
      delay(30000); //Tid för att blåsa ut all eventuell rök från pannan

      while(analogRead(A0)>200){} //om givaren ser ljus från eld vänta tills det slutat brinna.

      digitalWrite(fan,LOW); //Slår av fläkt
      Serial.println(”Turn off fan”);

      digitalWrite(screwmotor,HIGH); //Slår på skruvmotorn och börjar mata in pellets
      Serial.println(”Turn on screwmotor”);

      Serial.println(”Waiting 70 sek…..”);
      delay(70000); //Väntar 70 sekunder

      digitalWrite(screwmotor,LOW); //Slår av skruvmotorn
      Serial.println(”Turn off screwmotor”);

      digitalWrite(fan,HIGH); // slår på fläkten
      Serial.println(”Turn on fan”);

      Serial.println(”Wait until firesensor sense fire…..”);
      while(analogRead(A0)<250) //väntar till givaren ser ljus från eld eller högst 180 sek
      {

      delay(1000);
      counter1 = counter1 + 1;
      if (counter1>180)
      {
      counter2 = counter2 + 1;
      startsekvens();
      }

      }

      counter1 = 0; //nollställ räknaren så att vi kan använda den igen

      Serial.println(”Waiting 10 sek…..”);
      delay(1000); //väntar 10 sek

      Serial.println(”Check if still burning”);
      while(analogRead(A0)<250) // Kollar om det fortfarande brinner om det fortfarande brinner, gå till eldsekvens
      {
      if (counter1>60) {startsekvens();}
      delay(1000);
      counter1++;
      }

      eldsekvens();

      }

      void eldsekvens()
      {

      Serial.println(”eldsekvens”);
      delay(1000);

      digitalWrite(heatspiral,LOW); //slår av värmespiral
      Serial.println(”Turn off heatspiral”);

      for(int x = 0;x<5;x++)
      {
      digitalWrite(screwmotor,HIGH); //Slår på skruvmotorn och börjar mata in pellets
      Serial.println("Turn on screwmotor");
      delay(2000);
      digitalWrite(screwmotor,LOW); //Slår av skruvmotorn
      Serial.println("Turn off screwmotor");
      delay(10000);
      }

      while(digitalRead(7)==1 && analogRead(A0)>150)
      {
      digitalWrite(screwmotor,HIGH); //Slår på skruvmotorn och börjar mata in pellets
      Serial.println(”Turn on screwmotor – continous”);
      delay(3800);
      digitalWrite(screwmotor,LOW); //Slår av skruvmotorn
      Serial.println(”Turn off screwmotor – continous”);
      delay(10000);
      }

      //kollar varför eldsekvens avbröts
      if(digitalRead(7)==0)
      {
      slutsekvens();
      }

      if(analogRead(A0)<200)
      {
      counter2 = counter2 + 1;
      startsekvens();
      }

      Serial.println("end in eldsekvens");
      delay(10000);
      }

      void slutsekvens()
      {
      counter2 = 0;

      Serial.println("Slutsekvens");
      Serial.println("Waiting to finish burning");
      while(analogRead(A0)>200) {}
      delay(160000); //Blås ut röken i 160 sekunder efteråt

      digitalWrite(fan,LOW); //Slår av fläkt
      Serial.println(”Turn off fan”);

      startsekvens(); //Gå till startsekvens och vänta på trigger från pannan.

      }

      Lycka till med bygget.

      Mvh Admin
      vurmstan.se

Lämna ett svar