[WIP] Egenbyggd shuntstyrning

latis
Gallringsobjekt
Inlägg: 25
Blev medlem: mån 17 jan, 2011 17:37

[WIP] Egenbyggd shuntstyrning

Inlägg av latis »

Kan börja med att skriva att WIP = Work In Progress.

Projektets delar:
Bygga relästyrning till skrivarporten.
Styra motor med reläerna.
Bygga en enkel programvara för att styra motorn efter temp.

Projektet änsålänge:
Har fått en gammal dator (nån Celeron på 2.5Ghz med 512Mb RAM och 40Gb HDD) som nu är installerad med Ubuntu och allt funkar, apache, php snurrar som det ska.

Väntar på delar för temperaturövervakning (både inomhus samt övervakning av shuntvatten etc etc).

Har byggt ett kort som kopplas till parallellporten med 2st optokopplare som isolation mot datorn.

C program för att shunta upp samt ner (drar de olika reläerna) är klart. körs med ./shuntup 1000 1 för att motorn skall snurra under 1000ms (1s). andra siffran är för att styra hur många gånger den skall köras den angivna tiden (ex 1000 2 ger 1000ms draget relä, 1000ms ej draget och sedan 1000ms draget igen). Anledningen är att jag skall trimma in så att jag kan styra den i olika steg, jag har 0-10 på shunten, kommer ställa så att en ändring skall motsvara 0.1 på shunten.

Enkelt php script för att se temp samt kunna styra shunten manuellt via datorn är klart.

Script som kommer köras med cron en gång i halvtimmen (tror ni det är för mycket/lite?) som kommer kolla tempen och justera shunten för att alltid hålla mellan 20 och 20.5 är klart.

Det jag nu väntar på är en motor med växel som jag skall få av en kollega, en 230V motor med 1rpm (riktigt bra till detta projektet, långsam motor ger enkel finjustering av shunten).

Jag kommer lagra shuntinställningen i en databas och lägga till/dra bort från den varje gång jag shuntar för att datorn alltid skall veta vart shunten är.

När det börjar närma sig lite mer färdig status så kan jag kasta ut lite bilder på det hela.

Kommer logga temp på:
Vatten efter shunten, returvatten, panntemp, inomhustemp i kallaste rummet (vardagsrummet).

Första stadiet kommer bli att endast styra manuellt via dator för att sedan föra in det automatiska efter hand. Skall framöver även styra en motor som ändrar pelletsbrännaren från läge 3 till 1 (kan med fördel shunta ner till 0 och ställa brännaren på 1 när jag eldar i kaminen och det inte är kallare än 5 minus ute).
johano
Lärjunge!
Inlägg: 364
Blev medlem: tor 25 okt, 2007 09:25
Ort: Sollentuna
Kontakt:

Inlägg av johano »

Script som kommer köras med cron en gång i halvtimmen (tror ni det är för mycket/lite?) som kommer kolla tempen och justera shunten för att alltid hålla mellan 20 och 20.5 är klart.
Vet inte riktigt vilken "algoritm" scriptet jobbar efter, men utan en PID-reglering finns stor risk att du får stora svängningar i temperaturen, alternativt för långsam respons på temperaturändringar.

/johan
Funkishus från -41, 140m2 på två plan + 70m2
Nibe Alpha Combi, Baxi Eurofire 20kw
Första brännaren på Twitter?@pelletstat
latis
Gallringsobjekt
Inlägg: 25
Blev medlem: mån 17 jan, 2011 17:37

Inlägg av latis »

Tänkte mest att eftersom det tar en stund att värma luften i ett rum 0.5 grader till exempel så kan man ju inte läsa av den och ändra shunten för ofta?!
johano
Lärjunge!
Inlägg: 364
Blev medlem: tor 25 okt, 2007 09:25
Ort: Sollentuna
Kontakt:

Inlägg av johano »

Varför inte? Ska inte datorn göra något annat så spelar det väl ingen roll om du samplar temperaturen i princip "hur ofta som helst"..?!

Med PID-reglering kommer ändringarna på shunten vara mycket små,om ens några, när är-värdet ligger nära bör-värdet.

/johan
Funkishus från -41, 140m2 på två plan + 70m2
Nibe Alpha Combi, Baxi Eurofire 20kw
Första brännaren på Twitter?@pelletstat
latis
Gallringsobjekt
Inlägg: 25
Blev medlem: mån 17 jan, 2011 17:37

Inlägg av latis »

Har rotat runt lite och kommer nog försöka göra någon form av PID reglering i linuxmaskinen. Tempen kan jag polla en gång i sekunden utan att processorn kommer märka det.

Funderar dock lite, i PID beräkningen får man ta med tempen inne, önskad temp inne och shuntvatten tempen antar jag va?
AnaMatronic
Lärjunge!
Inlägg: 324
Blev medlem: tor 14 okt, 2010 16:14
Ort: Kristianstad

Inlägg av AnaMatronic »

Jag tror att du klarar dig bra med en PI-reglering så slipper du jobba med D-funktionen.
Ariterm Biomatic+ 20UL med Bequem 20D. 5,5 meter skorsten dim 125 med Tigex 25 i botten.
Pelletsförråd MAFA 300l m. Ecotec matarskruv
1 1/2 plansvilla på 200m2 från 1897.
latis
Gallringsobjekt
Inlägg: 25
Blev medlem: mån 17 jan, 2011 17:37

Inlägg av latis »

PID = GainP * nuvarande fel + GainI * Föregående fel + GainD * (Nuvarande fel - Senaste fel)

Denna formel borde kunna funka va?

så har man gjort 10 mätningar sedan förra justeringen så tar man snittet av det felet som Föregående fel?

Eventuellt scenario:
Så om jag kör mitt script var 10:e minut:
GainP = 2
GainI = 0.01
GainD = 2
Startshunt = 1.5 (påhittat värde)
aktuell temp inne = 19.7
Önskad temp = 20.2
Aktuellt fel = 0.5
Sedan senaste ändringen har tempen till exempel gått från 19.9-19.7
Föregående fel = 0.25
(2*-0.5=-1)+(0.01*-0.24=-0.02)+(2*(-0.5-0.24)=-1.48) = Shunta upp 0.25

Efter 10 minuter
Aktuell temp 19.9
Önskad Temp 20.2
Aktuellt fel = -0.3
Föregående fel = 0.35
(2*-0.3=-0.6)+(0.01*-0.35=-0.035)+(2*(-0.3-0.35)=-0.65) = Shunta upp 0.12

Efter 20 minuter
Aktuell temp = 20.1
Önskad Temp = 20.2
Aktuellt fel = -0.1
Föregående fel = 0.25
(2*-0.1=-0.2)+(0.01*-0.25=-0.025)+(2*(-0.1-0.25)=-0.7)=0.9 = shunta upp 0.09

Efter 30 minuer
Akutuell temp = 20.4
Önskad temp = 20.2
Aktuellt fel = 0.2
Föregående fel = 0.1
(2*0.2=0.4)+(0.01*-0.1=-0.02)+(2*(0.2-0.1)=-0.2) 0.6 = shunta ner 0.06

Efter 40 minuer
Aktuell temp = 20.6
Önskad temp ? 20.2
Aktuellt fel 0.4
Föregående fel = 0.2
(2*0.4=0.8)+(0.01*-0.2=0.02)+(2*(0.4-0.2)=-0.4) = 1.2 = shunta ner 0.12

Efter 50 minuter
Aktuell temp = 20.2
Önskad temp = 20.2
Aktuellt fel = 0
Föregående fel = 0.2
(2*-0=0)+(0.01*-0.2=-0.02)+(2*(0-0.2)=-0.4) = 0.4 = shunta ner 0.04

Efter 60 minuter
Aktuell temp = 20.1
Önskad temp = 20.2
Aktuellt fel = 0.1
Föregående fel = 0
(2*-0.1=-0.2)+(0.01*0=0)+(2*(0.1-0)=-.2) = -0,3 shunta upp 0.03

Efter 70 minuter
Aktuell temp = 20.2
Önskad temp = 20.2
Aktuelt fel = 0
Föregående fel = 0.05
(2*0=0)+(0.01*-0.05=-0.0025)+(2*(0-0.05)=0.1) = 0.1 shunta upp 0.01

Känns det inte som att denna kurvan skulle bli någorlunda rätt?
latis
Gallringsobjekt
Inlägg: 25
Blev medlem: mån 17 jan, 2011 17:37

Inlägg av latis »

Om man ökar GainI så borde man få en snabbare förändring, men ökar man den för mycket så kommer tempen att börja svänga som en sinusvåg.
AnaMatronic
Lärjunge!
Inlägg: 324
Blev medlem: tor 14 okt, 2010 16:14
Ort: Kristianstad

Inlägg av AnaMatronic »

Det där går över mitt förstånd... :)
Ariterm Biomatic+ 20UL med Bequem 20D. 5,5 meter skorsten dim 125 med Tigex 25 i botten.
Pelletsförråd MAFA 300l m. Ecotec matarskruv
1 1/2 plansvilla på 200m2 från 1897.
johano
Lärjunge!
Inlägg: 364
Blev medlem: tor 25 okt, 2007 09:25
Ort: Sollentuna
Kontakt:

Inlägg av johano »

Jag tycker det ser ganska bra ut, när felet blir mindre minskar också styrutslaget!

/johan
Funkishus från -41, 140m2 på två plan + 70m2
Nibe Alpha Combi, Baxi Eurofire 20kw
Första brännaren på Twitter?@pelletstat
AnaMatronic
Lärjunge!
Inlägg: 324
Blev medlem: tor 14 okt, 2010 16:14
Ort: Kristianstad

Inlägg av AnaMatronic »

Nu har jag läst på lite och ja det ser ju ut som helt korrekta formler för en PID-regulator. Men jag vidhåller, ta bort D-regulatorn. Den behövs inte i en värmereglering och den kommer att ställa till problem. Den är känslig för alla typer av förändringar (även brus) och används inte i 90% av alla reglerfall.
Ariterm Biomatic+ 20UL med Bequem 20D. 5,5 meter skorsten dim 125 med Tigex 25 i botten.
Pelletsförråd MAFA 300l m. Ecotec matarskruv
1 1/2 plansvilla på 200m2 från 1897.
latis
Gallringsobjekt
Inlägg: 25
Blev medlem: mån 17 jan, 2011 17:37

Inlägg av latis »

Men frågan är om 10 minuter kanske är för snabb tid för att egentligen göra förändringar?
AnaMatronic
Lärjunge!
Inlägg: 324
Blev medlem: tor 14 okt, 2010 16:14
Ort: Kristianstad

Inlägg av AnaMatronic »

latis skrev:Om man ökar GainI så borde man få en snabbare förändring, men ökar man den för mycket så kommer tempen att börja svänga som en sinusvåg.
Det är P-bandet (GainP) som gör att man får självsvängningen. Det får du vid för hög Förstärkning (Gain).

Vid kort I-tid får du snabb regulator. Vid Hög I-tid långsam regulator. Men det kanske du har bättre koll på än jag. :)
Jag tror att det är så att om du har en för kort I-tid så hinner inte regleravvikelsen gå färdigt. Det är alltså en fördel (om jag förstått det rätt ) ätt ha en ganska långsam reglerverkan här.
Ariterm Biomatic+ 20UL med Bequem 20D. 5,5 meter skorsten dim 125 med Tigex 25 i botten.
Pelletsförråd MAFA 300l m. Ecotec matarskruv
1 1/2 plansvilla på 200m2 från 1897.
AnaMatronic
Lärjunge!
Inlägg: 324
Blev medlem: tor 14 okt, 2010 16:14
Ort: Kristianstad

Inlägg av AnaMatronic »

Har du läst om Ziegler-NIchols?
http://en.wikipedia.org/wiki/Ziegler%E2 ... ols_method
För injustering av PI-kretsen.
Ariterm Biomatic+ 20UL med Bequem 20D. 5,5 meter skorsten dim 125 med Tigex 25 i botten.
Pelletsförråd MAFA 300l m. Ecotec matarskruv
1 1/2 plansvilla på 200m2 från 1897.
latis
Gallringsobjekt
Inlägg: 25
Blev medlem: mån 17 jan, 2011 17:37

Inlägg av latis »

Nu funkar automatiken. 230V motor på 1rpm monterad och inkopplad. Eldade upp till 22.4C i huset, sedan kopplade jag inte styrningen, på 1 timme gick den ner till 20.9 och har legat där nu i en timme, får se imorgon om den håller sig inom mina satta gränser (20.8-21.2).

Tack för info ang. PID regleringen, den funkar kanon nu när jag trimmat in den. Mitt nästa projekt som kommer bli klart i veckan är loggning av elmätaren, efter det så skall pellets skruven loggas, sen är jag nöjd en stund :)

Grymt smidigt att plocka fram mobilen, surfa in på shuntdatorn och skriva in vilken temp man vill ha i huset :) Bara att sänka till 18 när man är iväg, ett par timmar innan man kommer hem ändrar man bara till 21 igen :D
Skriv svar