Hoe plaats je een foto op dit forum, klik hier voor nadere uitleg.

Steun het forum. Koop via deze links: Nederlandstalige bierboeken, Engelstalige bierboeken, een bierig artikel of een ander artikel van bol.com

Auteur Topic: PID controller voor maischen of andere dingen (Arduino)  (gelezen 5962 keer)

0 leden en 1 gast bekijken dit topic.

Offline Biertje1985

  • Super lid
  • *****
  • Berichten: 1.421
  • Land: nl
  • Uit iedere brouw, komen weer nieuwe recepten.
PID controller voor maischen of andere dingen (Arduino)
« Gepost op: 04-12-2015 21:16 u »
Omdat er in mijn andere post, waarin ik een brewcontroller aan het maken ben, er veel interesse is in een PID circuit heb ik deze even opgestart.
Als je een arduino een temperatuursensor en een (SSR)Relais dan kan je met deze sketch gemakkelijk een PID controller opzetten welke zr precies je temperatuur van
bijvoorbeeld je maisch proces kan regelen.

Voor dat de vraag komt zal ik deze maar vast beantwoorden, ja het is mogelijk om een gasbrander te regelen met een PID, alleen hardwarematig is dit een grotere uitdaging,
omdat ik puur elektrisch werk ga ik hier verder niet op in.

De PID controller bevat :

- Ondersteuning diverse sensoren, K-type analoge NTC, ds18b20 digitale sensoren
- Output naar SSR relais
- Kan op alle Arduino's draaien
- Autotuning om de regeling stabiel en snel te maken zonder veel rekenen.

Optioneel kan je aansluiten, dit zit al in de sketch :

- Een LCD schermpje 16x2 of 20x4 (Je krijgt dan ook een menu om alles in te stellen)
- Knopjes om het programma te regelen (4 Stuks) of een touchpad met knopjes.
- Meerdere sensoren (voor een gemiddelde waarde)


Succes met deze sketch, graag even een reactie wanneer je deze gaat downloaden en gebruiken, ik waardeer het erg wanneer ik feedback krijg.
Bekijk ook mijn post over de Brewcontroller wanneer je meer wilt dan alleen PID.

Wanneer er veel interesse is dan zal ik ook een kleine oplage professionele printplaatjes laten maken voor deze controller, zodat je het allemaal makkelijk in een procesbehuizing kan zetten.
Kosten hiervoor zullen erg laag zijn ik schat zo een 5 euro. Exclusief de Arduino, LCD en sensoren, maar die koop je overal voor een prikkie. Ik hoef er zelf niets op te verdienen uiteraard.





Heb je iets nodig dat je bij Bol.com wil kopen? Zoek het op met de bovenstaande advertentie en bestel. Pas het zoekwoord aan. Je kunt zoeken in de volledige catalogus van Bol. Door de spullen van Bol te kopen via onderstaande advertentie steun je het forum en het kost je niets extra. Voor de bierliefhebber hebben ze overigens meer spullen dan je zou verwachten. Zoek maar eens.

Offline McMelloW

  • Super lid
  • *****
  • Berichten: 727
  • Land: nl
  • Huysbrouwerij 'Op Zuylen'
Re: PID controller voor maischen of andere dingen (Arduino)
« Reactie #1 Gepost op: 04-12-2015 22:26 u »
Hoi Jelle,

Bedankt voor het plaatsen van de code.

Drie buttons gebruiken allemaal zelfde pin A0.  Typo neem ik aan

...
#define setupBtn A0     //setupBtn
#define upBtn A0          //upBtn
#define downBtn A0     //downBtn
...

Offline Biertje1985

  • Super lid
  • *****
  • Berichten: 1.421
  • Land: nl
  • Uit iedere brouw, komen weer nieuwe recepten.
Re: PID controller voor maischen of andere dingen (Arduino)
« Reactie #2 Gepost op: 05-12-2015 00:37 u »
Hoi Jelle,

Bedankt voor het plaatsen van de code.

Drie buttons gebruiken allemaal zelfde pin A0.  Typo neem ik aan

...
#define setupBtn A0     //setupBtn
#define upBtn A0          //upBtn
#define downBtn A0     //downBtn
...

Nee hoor, deze buttons zijn analoog, zie de weerstandwaarde achter de button zie bijv.
while (analogRead(setupBtn) == 640);
Die 640 is de weerstand. Dit word soms gebruikt om pinnetjes te sparen.
Het is inderdaad beter om om te bouwen naar gewone digitale poortjes, al is dit best wat werk.

Offline Biertje1985

  • Super lid
  • *****
  • Berichten: 1.421
  • Land: nl
  • Uit iedere brouw, komen weer nieuwe recepten.
Re: PID controller voor maischen of andere dingen (Arduino)
« Reactie #3 Gepost op: 05-12-2015 00:41 u »
Printplaat, eerste design (niet definitief uiteraard) Feedback altijd welkom.





Offline hansHalberstadt

  • Super lid
  • *****
  • Berichten: 7.880
  • Land: nl
  • meten is weten
Re: PID controller voor maischen of andere dingen (Arduino)
« Reactie #4 Gepost op: 05-12-2015 09:26 u »
Wat komt er als info uit het SSR. Is dat aan/uit of is dat PWM met lange periodetijd of kun je dat kiezen? Ik gebruik zelf een Eberle PID regelaar waar je dit kunt kiezen.
Voor mijn eigen situatie wil ik het gas via aan/uit gaan regelen. Op dit moment doe ik dat al via aan oud systeem wat nog onder MSDOS werkt (hardware bitjes van de seriele poort direct aangestuurd, ja dat kon nog met MSDOS), stuurt een gasklep aan van een oude CV en werkt perfect.

Offline koffie

  • Super lid
  • *****
  • Berichten: 2.057
  • Land: nl
  • Wat in het vat zit, verzuurt wel zeker!
Re: PID controller voor maischen of andere dingen (Arduino)
« Reactie #5 Gepost op: 05-12-2015 10:02 u »
Waarom neem je niet een LCD met knoppen via I2C ? Ben je met 2 draden klaar voor zowel je scherm als je knoppen.

Offline luc b

  • Junior lid
  • **
  • Berichten: 54
  • Hobbybrouwen.nl is mijn informatiebron
Re: PID controller voor maischen of andere dingen (Arduino)
« Reactie #6 Gepost op: 05-12-2015 10:28 u »
Bedankt biertje1985. Ik heb nog enorm veel te leren hieromtrent, maar het is een echte uitdaging. Bedankt.

Offline Biertje1985

  • Super lid
  • *****
  • Berichten: 1.421
  • Land: nl
  • Uit iedere brouw, komen weer nieuwe recepten.
Re: PID controller voor maischen of andere dingen (Arduino)
« Reactie #7 Gepost op: 05-12-2015 10:46 u »
Wat komt er als info uit het SSR. Is dat aan/uit of is dat PWM met lange periodetijd of kun je dat kiezen? Ik gebruik zelf een Eberle PID regelaar waar je dit kunt kiezen.
Voor mijn eigen situatie wil ik het gas via aan/uit gaan regelen. Op dit moment doe ik dat al via aan oud systeem wat nog onder MSDOS werkt (hardware bitjes van de seriele poort direct aangestuurd, ja dat kon nog met MSDOS), stuurt een gasklep aan van een oude CV en werkt perfect.
Dat kan je instellen op je regelaar, hoe snel deze regelt en aan de hand daarvan krijg je een aan/uit of PWM signaal.

Offline Biertje1985

  • Super lid
  • *****
  • Berichten: 1.421
  • Land: nl
  • Uit iedere brouw, komen weer nieuwe recepten.
Re: PID controller voor maischen of andere dingen (Arduino)
« Reactie #8 Gepost op: 05-12-2015 10:48 u »
Waarom neem je niet een LCD met knoppen via I2C ? Ben je met 2 draden klaar voor zowel je scherm als je knoppen.
Klopt dat is helemaal waar, dat is wel wat ik wou gaan doen, maar I2C library neemt veel recources in, dit vertraagt de boel behoorlijk.

Offline pipsie

  • Boven 10 berichten
  • *
  • Berichten: 15
  • Land: be
  • Hobbybrouwen.nl is mijn informatiebron
Re: PID controller voor maischen of andere dingen (Arduino)
« Reactie #9 Gepost op: 05-12-2015 13:39 u »
- Autotuning om de regeling stabiel en snel te maken zonder veel rekenen.
Ik vraag me af hoe je dit voor elkaar krijgt? Laat je de controller zelf temperatuurstappen (puls, ramp,X) genereren en opmeten om zo de gain te bepalen voor de P,I,D acties?

Offline Biertje1985

  • Super lid
  • *****
  • Berichten: 1.421
  • Land: nl
  • Uit iedere brouw, komen weer nieuwe recepten.
Re: PID controller voor maischen of andere dingen (Arduino)
« Reactie #10 Gepost op: 05-12-2015 19:09 u »
Ik vraag me af hoe je dit voor elkaar krijgt? Laat je de controller zelf temperatuurstappen (puls, ramp,X) genereren en opmeten om zo de gain te bepalen voor de P,I,D acties?
Bekijk de PID sketch maar even, maar het zal daarop gebaseerd zijn, autotune is ook een aparte library, werk goed moet ik zeggen, alleen kan je soms je actie wat sneller instellen
dit vertraagt wat door de autotune. Nadeel is dat je aan het begin wat meer overshoot heb.

Offline pipsie

  • Boven 10 berichten
  • *
  • Berichten: 15
  • Land: be
  • Hobbybrouwen.nl is mijn informatiebron
Re: PID controller voor maischen of andere dingen (Arduino)
« Reactie #11 Gepost op: 06-12-2015 10:02 u »
Ik heb dit inderdaad even bekeken en ik wil je wijzen op deze opmerking van de ontwikkelaar van de PIDAutotune functie:
Citaat
You should also know
The number of cycles performed will vary between 3 and 10.
The algorithm waits until the last 3 maxima have been within 5% of each other.
This is trying to ensure that weve reached a stable oscillation and theres no external strangeness happening. This leads me to

Im not the biggest fan of Autotune. Ive often said, and still believe, that a moderately trained person will beat an Autotuner every day of the week.
Theres just so much that can go wrong without the algorithm knowing about it.
That being said, Autotune is a valuable tool to help the novice get into the ballpark.

Bron: http://brettbeauregard.com/blog/2012/01/arduino-pid-autotune-library/
De kans is groot dat de autotune functie dus niet praktisch zal blijken voor een proces dat zeer langzaam verloopt (opwarmen van grotere hoeveelheden water).
Want de tijd om een aantal keer (tussen 3en10) een groote 'zwaai' aan de uitgang te produceren (bv +- 10C) zal vrij lang zijn.
En ik vrees dat je voor een goede PID regeling ook rekening zal moeten houden met de hoeveelheid water, 10 L tov 30 L zou wel eens andere gain parameters kunnen opleveren (maar dit ben ik niet zeker).

Ik hou dit topic zeker in het oog want ik ben benieuwd hoe moeilijk/makkelijk het tunen van de PID in praktijk zal zijn  :)

Offline Henielma

  • Super lid
  • *****
  • Berichten: 5.150
  • Land: nl
  • Eerste glas eigen bier!
    • Henielma
Re: PID controller voor maischen of andere dingen (Arduino)
« Reactie #12 Gepost op: 06-12-2015 10:18 u »
Voor mijn brouwinstallatie met een proportionele gasklep die door een PC aangestuurd wordt ben ik toentertijd begonnen met een PID regeling maar deze blijken voor dergelijke toepassingen in de praktijk toch niet zo handig. Na veel ge-experimenteer ben ik uitgekomen op een proportionele functie gecombineerd met een stukje feed forward sturing. Deze sturing gebruik ik nu al jaren en bevalt goed. De proportionele regeling verhoogt het PWM percentage wanneer je nog ver van je doeltemperatuur bent en wordt lager wanneer je in de buurt komt. De feed forward sturing verlaagt het PWM percentage nog extra wanneer je in de buurt komt van je doeltemperatuur maar is hierbij afhankelijk van de toegevoerde warmte in de laatste paar minuten. Dit beperkt de overshoot flink.

Later ben ik een aan/uit regeling gaan maken voor de vergisting (Tcontrol met Tcontrol-IO) en hier is het ook goed mogelijk om mee te maischen. Het hoeft allemaal niet zo spannend om gecontroleerd en reproduceerbaar te maischen. De beschrijving van deze aan/uit regeling is te vinden in de handleiding van Tcontrol.

Het is overigens voor veel mensen leuk om zelf een sturing te maken en laat je daar zeker niet van weerhouden door mij.

Offline koffie

  • Super lid
  • *****
  • Berichten: 2.057
  • Land: nl
  • Wat in het vat zit, verzuurt wel zeker!
Re: PID controller voor maischen of andere dingen (Arduino)
« Reactie #13 Gepost op: 06-12-2015 10:35 u »
Ik heb dit inderdaad even bekeken en ik wil je wijzen op deze opmerking van de ontwikkelaar van de PIDAutotune functie:De kans is groot dat de autotune functie dus niet praktisch zal blijken voor een proces dat zeer langzaam verloopt (opwarmen van grotere hoeveelheden water).
Want de tijd om een aantal keer (tussen 3en10) een groote 'zwaai' aan de uitgang te produceren (bv +- 10C) zal vrij lang zijn.
En ik vrees dat je voor een goede PID regeling ook rekening zal moeten houden met de hoeveelheid water, 10L tov 30L zou wel eens andere gain parameters kunnen opleveren (maar dit ben ik niet zeker).

Ik hou dit topic zeker in het oog want ik ben benieuwd hoe moeilijk/makkelijk het tunen van de PID in praktijk zal zijn  :)
Dat is mijn ervaring met de PID voor arduino ook. Schitterend goed op 1 temp te blijven, maar veel te terughoudend om even gas op de plank te geven tussen 2 maischstappen.
Ik overweg om de PID uit te sluiten bij alles wat meer dan x graden verschil is - sowieso al gedaan voor het koken.

Offline hansHalberstadt

  • Super lid
  • *****
  • Berichten: 7.880
  • Land: nl
  • meten is weten
Re: PID controller voor maischen of andere dingen (Arduino)
« Reactie #14 Gepost op: 06-12-2015 10:44 u »
Later ben ik een aan/uit regeling gaan maken voor de vergisting (Tcontrol met Tcontrol-IO) en hier is het ook goed mogelijk om mee te maischen. Het hoeft allemaal niet zo spannend om gecontroleerd en reproduceerbaar te maischen.

Ik gebruik voor het maischen ook een aan /uit regeling met een kleine verfijning. Als input voor de aan/uit vergelijker gebruik ik niet direct de temperatuur, maar de temperatuur + een constante x de afgeleide van de temperatuur. De afgeleide (gedifferentieerde) is dan een maat voor hoever te gemeten temperatuur feitelijk naijlt op de werkelijke temperatuur. Als je die constante goed afstemt op je maischketel dan is de overshoot vrijwel 0 omdat gat gas al uitgaat terwijl de temperatuur nog aan het stijgen is en nog onder de gewenste temperatuur zit. Deze besturing werkt al meer dan 25 jaar naar behoren. Zie hieronder een essentieel stukje code in pascal.

a1,a2 zijn calibratiewaardes voor de sensor, waarde is de digitale AD waarde. temp is de temperatuur, dtempdt is de afgeleide temperatuur (moving average filtert de storing uit)
met daarbij een clamp op +3 en -0.2 C 

const K =60;

 temp:=temperatuur(a1,b1,waarde);
 dtempdt:=0.99*dtempdt+0.01*((temp-oudetemp)/(tijd(dag,intern)-oudetijd));
 if dtempdt*60 > 3 then dtempdt:=3/60;
 if dtempdt*60 < -0.2 then dtempdt:=-0.2/60;

procedure tempregelen(var regeltijdstip :real);
begin
if (temp+K*dtempdt)<setpoint then
if totaaltijd-regeltijdstip>10 then
begin gasaan(aan);regeltijdstip:=tijd(dag,intern)-starttijd; end;

if (temp+K*dtempdt)>setpoint then
if totaaltijd-regeltijdstip>10 then
begin gasuit(aan);regeltijdstip:=tijd(dag,intern)-starttijd; end;
end;

Offline pipsie

  • Boven 10 berichten
  • *
  • Berichten: 15
  • Land: be
  • Hobbybrouwen.nl is mijn informatiebron
Re: PID controller voor maischen of andere dingen (Arduino)
« Reactie #15 Gepost op: 06-12-2015 12:12 u »
Zoals bovenstaande reacties aantonen en ik zelf al vermoedde is het afregelen van de PID vaak iets moeilijker dan een autotune-functie laten lopen (maar ik wil je zeker niet weerhouden om zelf te experimenteren en proberen).
Als je graag met een PID controller wil werken en interesse hebt in de/het techniek/afregelproces zou ik de controller zelf afregelen.
Het kan je een goed inzicht geven in de PID controller zelf, en volgens mij een grote voldoening geven als je het geheel afgeregeld krijgt :)

Je hebt een vrij eenvoudig proces dat niet kan oscilleren en vrij traag verloopt en dit zorgt ervoor dat de berekeningen zeer eenvoudige worden.
Via een stapresponsie zal je zelf relatief makkelijk de parameters kunnen bepalen.
Onderstaande link legt (volgens mij) zeer goed uit hoe je dit doet, en het is dan ook nog eens geschreven voor de toepassing die je zelf voor ogen hebt (bier brouwen).
http://www.vandelogt.nl/nl_regelen_pid.php#PID3

Offline Biertje1985

  • Super lid
  • *****
  • Berichten: 1.421
  • Land: nl
  • Uit iedere brouw, komen weer nieuwe recepten.
Re: PID controller voor maischen of andere dingen (Arduino)
« Reactie #16 Gepost op: 06-12-2015 16:58 u »
Ook een PID kan je snel maken, dat de load pas minder wordt wanneer setpoint bijna bereikt is. Het is een kwestie van afstellen. Je kan bij een langzaam proces als verwarmen de PID agressief afstellen om een zo hoog mogelijke snelheid te krijgen.

Tags: