Het MBSE-ArdRims Arduino software topic

Gestart door mbroek, 29-04-2016 21:51 u

Vorige topic - Volgende topic

0 leden en 1 gast bekijken dit topic.

terragady

Cool, dutch works too if i can translate it. Do not use sophisticated expressions ;)

I think the arduino soft works just great now, no need for much improvements there.

Yes ESP sound good so I am waiting for new firmware for it and some schematics so can try it :)

mbroek

Heel stiekem staat versie 0.2.0 op github. Veel verbeteringen deze keer, een aantal kwamen aan het licht met het ontwikkelen van de nieuwe WiFi versie op een D1 mini pro.
Na veel uitzoekwerk blijkt dat de manier waarop de Arduino PID bibliotheek gebruikt wordt in de originele ArdBir software, en ook in de afgeleide MBSE-ArdRims software nooit goed kan werken. Deels had ik de problemen weggewerkt door die log-factor in te bouwen, maar dat was niet de juiste manier.

De belangrijkste wijzigingen:
  • Het instelbereik van de PID is vergroot, P van 0 tot 2048 in stappen van 0,03125. I van 0 tot 128 in stappen van 0.002. En D van 0 tot 32768 in stappen van 0.5. De default waardes zijn 150.0 1.5 15000.0
  • De logfactor is verdwenen, die is niet meer nodig.
  • De WindowSize instelling is verdwenen, alleen de SampleTime is er nog.
  • De SampleTime is nu in te stellen tussen 1 en 20 seconden, default is 5 seconden.
  • Met handbediening van de maisch ketel gaat zodra de ingestelde temperatuur is bereikt een klok lopen. Kun je gebruiken als hulp bij het schoonmaken (CIP).
  • De laatst ingestelde temperatuur tijdens handbediening wordt opgeslagen.
  • Regels 2 en 3 van het display zijn opnieuw ingedeeld.

Na de upgrade heb je nieuwe PID instellingen. Na een downgrade zijn de oude weer terug inclusief de logfactor.
Na een upgrade gebruik NIET je oude PID instellingen, dat gaat niet werken. Begin met de default 150 1.5 150000. Je kunt wat variëren maar het beste kun je de I op 1/100 van P houden en D op 100 maal P.
Bij mij werkt 200 2.0 20000 behoorlijk goed. Bij mij schiet de temperatuur iets minder dan 1 graad door en heb ik een opwarmtijd tussen de maisch stappen van 1 graad per minuut. Met de oude PID duurde dat zeker twee maal zo lang.
Volgens mij is het doorschieten van minder dan 1 graad geen probleem voor het maischen. Zou je gaan voor een instelling die minder doorschiet, dan zal de opwarmtijd onnodig lang gaan duren.

Voor goede informatie over de PID en het tunen zie http://www.wescottdesign.com/articles/pid/pidWithoutAPhd.pdf. Met dank aan McMelloW voor deze link. Lees dit eerst goed door voor je handmatig gaat tunen.

Autotune. Ik heb het geprobeerd en mede door autotune kwam ik de fouten van de oorspronkelijke implementatie op het spoor. Toch is dit niet betrouwbaar in te bouwen. De waardes die autotune vond kwamen toch wel in de richting van de huidige default waardes.

De handleiding (eindelijk) is bijna klaar en zal ook op github verschijnen, ik meld het wel als die daar staat.

Chiel.

terragady

In new soft from github I have errors when I change to english language, with LangNL true it compile fine though:

In file included from C:\Users\marcinmi\Dropbox\Arduino\ArdBir\MBSE-ArdRims-Netherlands\MBSE-ArdRims\MBSE-ArdRims.ino:272:0:

sketch\setup.h: In function 'void set_PID()':

setup.h:285: error: too few arguments to function 'void editUint(const char*, int, int, float, int)'

   editUint("PID kP"      , EM_PID_Kp, 200, 100);

                                               ^

sketch\setup.h:65:6: note: declared here

 void editUint(const char *label, int address, int max, float step, int div) {

      ^

setup.h:286: error: too few arguments to function 'void editUint(const char*, int, int, float, int)'

   editUint("PID kI"      , EM_PID_Ki, 250,   0);

                                               ^

sketch\setup.h:65:6: note: declared here

 void editUint(const char *label, int address, int max, float step, int div) {

      ^

setup.h:287: error: too few arguments to function 'void editUint(const char*, int, int, float, int)'

   editUint("PID kD"      , EM_PID_Kd, 200, 100);

                                               ^

sketch\setup.h:65:6: note: declared here

 void editUint(const char *label, int address, int max, float step, int div) {

      ^

exit status 1
too few arguments to function 'void editUint(const char*, int, int, float, int)'

terragady

OK I see there is error in your code, in the void set PID in setup.h should be:

void set_PID(void) {
#if langNL == true
  editUint("PID kP"      , EM_PID_Kp, PID_Kp_max, PID_Kp_step, PID_Kp_div);
  editUint("PID kI"      , EM_PID_Ki, PID_Ki_max, PID_Ki_step, PID_Ki_div);
  editUint("PID kD"      , EM_PID_Kd, PID_Kd_max, PID_Kd_step, PID_Kd_div);
  editByte("SampleTime"  , EM_SampleTime, 20000 / 250, 1000 / 250, & displayMultiply250);
  editByte("Temp Offset" , EM_TempOffset, 100, 0, & displayTempShift50Divide10);
  editByte("Heat in Boil", EM_BoilHeat, 100, 20, & displayPercentage);
#if USE_HLT == true
  editByte("HLT temp."   , EM_TempHLT, 95, 0, & displaySimpleTemperature);
#endif
#else
  editUint("PID kP"      , EM_PID_Kp, PID_Kp_max, PID_Kp_step, PID_Kp_div);
  editUint("PID kI"      , EM_PID_Ki, PID_Ki_max, PID_Ki_step, PID_Ki_div);
  editUint("PID kD"      , EM_PID_Kd, PID_Kd_max, PID_Kd_step, PID_Kd_div);
  editByte("SampleTime"  , EM_SampleTime, 20000 / 250, 1000 / 250, & displayMultiply250);
  editByte("Temp Offset" , EM_TempOffset, 100, 0, & displayTempShift50Divide10);
  editByte("Heat in Boil", EM_BoilHeat, 100, 20, & displayPercentage);
#if USE_HLT == true
  editByte("HLT temp."   , EM_TempHLT, 95, 0, & displaySimpleTemperature);
#endif
#endif
}


You have also different values in 301 and 318 line

mbroek

Citaat van: terragady op 28-02-2017  17:18 uOK I see there is error in your code, in the void set PID in setup.h should be:

You have also different values in 301 and 318 line

Of course, I never compile the English version. I will fix them soon. Thanks for the report.

mbroek

Vandaag heb ik versie 0.2.1 op github gezet. Hierin zit eindelijk de Nederlandse documentatie. Met dank aan McMellow voor het proeflezen en tips.

Er  zijn ook enige prompts verbeterd en de Engelse versie werkt nu ook (still one minor issue).
Board type 3 is aangepast, die zou nu meteen moeten werken (staat niet in de wijziging berichten).

Als er behoefte is dan kunnen we in het eerste bericht van dit topic de PID instellingen gaan zetten van de verschillende installaties.


Pimmels

Vraagje, werkt de software ook nog met bordje 6?
Ik heb geen behoefte aan wifi, maar een verbeterde pid controller is  zeer interessant!

mbroek

Citaat van: Pimmels op 20-03-2017  18:28 uVraagje, werkt de software ook nog met bordje 6?
Ik heb geen behoefte aan wifi, maar een verbeterde pid controller is  zeer interessant!

Daar is niets aan veranderd, alle bordjes horen gewoon te werken. Als je vorige versie werkt met jouw bord, dan hoort deze het ook gewoon te doen.

Pimmels

Citaat van: mbroek op 20-03-2017  19:26 uDaar is niets aan veranderd, alle bordjes horen gewoon te werken. Als je vorige versie werkt met jouw bord, dan hoort deze het ook gewoon te doen.

Dank je het is weer gelukt!  :groots:
Nu nog instellen...

McMelloW

Citaat van: mbroek op 20-03-2017  17:55 uVandaag heb ik versie 0.2.1 op github gezet. Hierin zit eindelijk de Nederlandse documentatie. Met dank aan McMellow voor het proeflezen en tips.

Er  zijn ook enige prompts verbeterd en de Engelse versie werkt nu ook (still one minor issue).
Board type 3 is aangepast, die zou nu meteen moeten werken (staat niet in de wijziging berichten).

Als er behoefte is dan kunnen we in het eerste bericht van dit topic de PID instellingen gaan zetten van de verschillende installaties.

Bedankt Chiel, mooi werk.  :groots: :petje-af: :groots: :petje-af:  :biersmile: :biersmile:

De eerste compilatie verliep vlekkeloos.  het is misschien wel handig om in het eerst bericht de nieuwste versie /datum te vermelden.  Eventueel de link naar github.  De PID instellingen wordt misschien een hele lijst wat dat is natuurlijk afhankelijk van de combinatie bordje / installatie.

Ik wil vrijdag of zaterdag een nieuw Prinsesje gaan brouwen.  :brouwen: :brouwen:  Hopenlijk kan ik voor die tijd nog een test doen met andere PiD instellingen.

mbroek

Citaat van: McMelloW op 21-03-2017  11:07 uBedankt Chiel, mooi werk.  :groots: :petje-af: :groots: :petje-af:  :biersmile: :biersmile:

De eerste compilatie verliep vlekkeloos.  het is misschien wel handig om in het eerst bericht de nieuwste versie /datum te vermelden.  Eventueel de link naar github.  De PID instellingen wordt misschien een hele lijst wat dat is natuurlijk afhankelijk van de combinatie bordje / installatie.

Ik wil vrijdag of zaterdag een nieuw Prinsesje gaan brouwen.  :brouwen: :brouwen:  Hopenlijk kan ik voor die tijd nog een test doen met andere PiD instellingen.

Het eerste bericht krijgt nog wel een aanpassing, maar een actueel versie nummer wordt wat lastig. Een van de beheerders kan het alleen nog aanpassen. In dat aangepaste bericht wordt een link naar een google spreadsheat gemaakt, en dan ook (goed idee) een link naar github. In ieder geval kan ik het zo aanpassen dat je in github de actuele versie kunt zien.

De PID gegevens zijn voor de huidige versie en het toekomstige Brewboard gelijk. Gisteravond daar nog wat mee gedaan, het gedrag van de PID is gelijk aan de huidige Arduino's. Dus een tabel wordt wel handig.

mbroek

Nieuwe versie 0.2.2:

Voor HLT gebruikers, met handbediening was er een verkeerde beep.
Bij handbediening is op de bovenste regel nu te zien waarmee je bezig bent.
De seriële poort (voor debuggen) wordt nu altijd geïnitialiseerd.
De handleiding is bijgewerkt.
Tijdens de vraag Mout Storten (en nog ergens anders) wordt nu de temperatuur op het display bijgewerkt.
Fixed Boil Temp setup in English version.

Nieuwe versie 0.2.3:

Voor HLT gebruikers, de temperatuur voor het voorverwarmen wordt nu berekend in plaats van botweg op 10 graden voor het setpunt te gebruiken door rekening te houden met alle maisch rusttijden. Hierdoor wordt een brouwsessie 30 tot 60 minuten korter omdat het spoelwater nu tijdens het maischen wordt verwarmd.
Tijdens inmaischen als om Mout Storten wordt gevraagd, dan wordt het setpoint alvast gezet op de temperatuur van de 1e maisch stap. Hierdoor probeert de PID niet meer tijdens de stort de temperatuur teveel te verhogen.
De Maisch ketel opwarmfase is verdwenen, de PID doet nu het gehele opwarm proces en doet dat sinds versie 0.2.0 goed.
Verder nog enkele interne code wijzigingen die de werking niet beïnvloeden.


Chipmunk03

Ik heb afgelopen weekend gebrouwen met de 0.2.2 software. Ik heb een vraag over de PID instellingen. Ik heb ze op default gelaten. Bij het inmaisch had ik een overshoot van meer dan 20 graden Celsius. Ik had 63 graden ingesteld, maar ik zag tot mijn schrik dat de temperatuur was opgelopen tot 84.
Ik heb een Belgische Blond gebrouwen naar een recept uit BrouwHulp. 15,2 liter, spoel water ongeveer 10 liter. Ik heb een losse thermometer, die ik in het beslag heb gehangen. Ik heb daarna de thermometer tussen de kuip en de pijp gehangen. De stap van 63 naar 72 en van 72 naar uitmaischen verliep wel redelijk zonder veel overshoot. Het kook proces ging goed.
Ik was bang dat door de hoge temperaturen de enzymen hun werk niet meer zouden doen, maar ik mat een SG van 1074 aan het einde van het proces. De vergisting verliep ruig. Ik heb voor het eerst een blow off gebruikt. Het leek wel of het een aquarium pompje was. De kamertemperatuur was 20 graden. Na een dag was de temperatuur in het jongbier opgelopen naar iets over de 26 graden. Ik gebruik een Ispindle om het vergistingsproces in de gaten te houden.
Wat is een goede methode om de PID te tonen? Ik heb gelezen dat er ook een auto tune library is voor Arduino. Is dat een optie om in een volgende versie in te bouwen?


mbroek

De autotune heeft er bij mij ingezeten, 2 totaal verschillende versies. Beiden geven die geen goede resultaten voor een brouwinstallatie. Autotune komt er niet meer in.

20 graden overshoot is erg veel. Ik brouw zelf nu met 225.000, 2.250 en 22500.000. McMellow met een GF gebruikt nu 300.000, 3.000, 30000.000

Heb je ook overshoot tijdens de maisch stappen? En zie je de PID regelen boven de 63 graden?
En nog een vraag, waarmee brouw je.

Als je gaat tunen met water, gebruik je normale hoeveelheid water plus de hoeveelheid water wat normaal kg aan mout is. Voorlopig is mijn advies, maar daar wordt nog wat mee geëxperimenteerd, om de verhouding 1x, 0.01x en 100x aan te houden als basis.

Verder is mijn bedoeling een tabel aan het eerste bericht te hangen met de waardes die in de praktijk gebruikt worden, dus als je een goede waarde vind dan wil ik die graag weten voor die tabel.

Chipmunk03

Citaat van: mbroek op 13-04-2017  09:49 uDe autotune heeft er bij mij ingezeten, 2 totaal verschillende versies. Beiden geven die geen goede resultaten voor een brouwinstallatie. Autotune komt er niet meer in.

20 graden overshoot is erg veel. Ik brouw zelf nu met 225.000, 2.250 en 22500.000. McMellow met een GF gebruikt nu 300.000, 3.000, 30000.000

Heb je ook overshoot tijdens de maisch stappen? En zie je de PID regelen boven de 63 graden?
En nog een vraag, waarmee brouw je.

Als je gaat tunen met water, gebruik je normale hoeveelheid water plus de hoeveelheid water wat normaal kg aan mout is. Voorlopig is mijn advies, maar daar wordt nog wat mee geëxperimenteerd, om de verhouding 1x, 0.01x en 100x aan te houden als basis.

Verder is mijn bedoeling een tabel aan het eerste bericht te hangen met de waardes die in de praktijk gebruikt worden, dus als je een goede waarde vind dan wil ik die graag weten voor die tabel.


Ik brouw met een aangepaste VidaXL Gluhwein/Waterkoker. Ik gebruik die ketel voor het inmaischen en niet meer om er in te koken. Ik heb nu twee keer achter elkaar een aangebrande bodem gehad tijdens het koken in de zelfde ketel. De aangebrande laag werkt isolerend. De elementen kunnen de warmte niet kwijt en de ketel slaat af. Vervelend moment tijdens het brouwproces. Na het inmaischen, hevel ik het wort over naar een brouwketel alwaar ik het geheel afmaak.
Ook gebruik ik het Brewboard. Ik heb het bordje uitgebreid, zodat ik er ook een HLT mee kan aansturen. Ik heb daarvoor de MBSE-Ard-RIMS software wat aangepast.
Goed om te weten dat je getest hebt met de autotune library. Alleen jammer dat het niet werkt.

De overshoot is ontstaan, bedenk ik me achteraf, doordat ik de thermometer in het beslag had gehangen in de pijp (binnenketel). Ik heb naderhand de thermometer tussen de ketelwand en de pijp in het wort gehangen. Dat gaf een beter resultaat. Maar omdat de ketel goed geïsoleerd is, zakte de temperatuur maar heel langzaam, ondanks dat ik het wort rond pomp. Ik ben bang dat de hoge temperatuur invloed heeft op de smaak. Maar dat zal ik over een paar weken pas merken. Uiteindelijk had ik wel een vrij hoog SG; 1074. Wat ik niet verwacht had.
Ik had de Belgisch Blond met drie stappen ingesteld. Bij de eerste stap, opwarmen naar 63 graden ging het mis. De stappen erna verliepen wel heel goed, nadat ik de thermometer in het wort ipv het beslag had gedaan.

Bedankt voor de tip over het tunen. Laat ik dat eerst maar eens een keertje doen me je opgegeven instellingen.

mbroek

Als je aanbranden ontstaat tijdens het koken, de huidige versies kunnen tijdens het koken het vermogen reduceren. Als je ketel goed is geïsoleerd dan heb je geen 100% vermogen nodig om de boel aan de kook te houden.

Tijdens maischen laat ik de pomp altijd draaien, ik doe zelf niets meer met de pomp rust. Het is toch wel belangrijk om te blijven circuleren.

Ik heb ook gemerkt dat het meten tussen de ketels niet goed gaat tenzij je sensor vlak bij de kraan zit of waar dan ook je wordt weggezogen wordt. Maar het beste regelt het toch als de sensor ergens onderin de binnenketel zit. Jij hebt dus een andere ervaring, zo zie je maar dat het met verschillende ketels anders kan zijn.

Ik verwacht dat je met jouw ketel betere resultaten hebt met hogere waardes als de default waardes, de isolatie speelt ook een belangrijke rol.

Wat voor wijziging had je in de HLT software gemaakt?

Sinds ik deze opstelling gebruik is mijn rendement ook flink omhoog gegaan, dus ja verwacht hogere SG van je brouwsels.

Chipmunk03

Citaat van: mbroek op 14-04-2017  13:40 uWat voor wijziging had je in de HLT software gemaakt?


De code die ik heb aangepast zit in de #define regels en verder in de code heb ik de naam HeatControlPin veranderd in HLTHeatControlPin om onderscheid te kunne maken tussen de HLT en MLT

Ik gebruik Arduino pin 12 voor de HLT.

Ik heb deze wijzigingen aangebracht:
Lijn  18:
#define PCBType 6
lijn   28:
#define USE_HLT         true       // A HLT shared with the MLT.
Lijn 81-86:
#endif // USE_HLT
#elif PCBType == 6
const byte SensorMLTPin =  7;
#if USE_HLT == true
// Sensor for sparge water.
const byte SensorHLTPin = 10; // Pin 13 does not work. Don't know why. Hardware issue?
Lijn 111-127:
#define HeatControlPin   9
  #if USE_HLT == true
    // Heater for sparge water
    #define HLTHeatControlPin   10
#endif
#elif PCBType == 6
#define PumpControlPin   6
#define BuzzControlPin   11
#define HeatControlPin   9
  #if USE_HLT == true
     // Heater for sparge water
     #define HLTHeatControlPin 12 // This works
  #endif
#endif

// Keyboard buttons
#if (PCBType == 1 || PCBType == 5 || PCBType == 6)

Hier een plaatje van mijn ketel:


mbroek

Geen functionele wijziging in de code dus, dat dacht ik even. In de volgende WiFi software heet de pin ook al anders, HLTControlPin.

Mooie opstelling zo.

mbroek

In het allereerste bericht zit nu een link naar een Google spreadsheet waarin mijn huidige PID instellingen staan. Het zou mooi zijn als je een goede instelling gevonden hebt voor jouw installatie dat aan mij door te geven zodat ik die instellingen kan toevoegen.


Chipmunk03

Ik heb inmiddels het bier nu een week op fles. Eind SG was ongeveer 1020. Wat aan de hoge kant, maar het gisteren niet meer.
Ik krijg zo af en toe van familie uit Suriname een Parbo bier. Parbo is deels met rijst gemaakt. Ik wil proberen om een rijst bier te brouwen. Ik vind wel een recept op het forum van een Chinees bier. Maar ik ben benieuwd of iemand een recept heeft dat in de buurt van Parbo komt.

mbroek

Vandaag versie 0.2.4 op github gezet. Deze wijziging is alleen voor HLT gebruikers. De HLT blijft nu op temperatuur tijdens het inmaischen en verwijderen van de mout (spoelen).

Versie 0.2.5 voegt de HLT definities toe voor PCB type 6, het Brewboard. Met dank aan Chipmunk03. Ik heb de pinnen nog geen duidelijkere naam gegeven  :(


mbroek

Versie 0.2.7 is op github gezet.

In versie 0.2.6 is een instelling voor het Maisch vermogen toegevoegd.
In versie 0.2.7 is een nieuwe PID regeling toegevoegd. Die wordt alleen in de code gecompileerd als je de officiële PID bibliotheek gebruikt van de Arduino programmeer omgeving. Indien je in het verleden een versie met de hand geïnstalleerd had, en die kans is heel groot, dan moet je die eerst met de hand verwijderen. Dan met de bibliotheek beheerder PID 1.2.0 van Brett Beauregard installeren.
Standaard wordt de oude methode gebruikt, wil je de nieuwe methode gebruiken raadpleeg dan de bijgewerkte handleiding. Ik heb daar zelf nu diverse keren mee gebrouwen en het werkt beter. Sneller temperatuur verhogen met minder overshoot.

In de code kun je nu ook code compileren voor distilleren, dit is nog niet getest en daarom ook niet gedocumenteerd en ook niet standaard aangezet. Als je het wilt gebruiken om te testen, stuur me dan maar een PB.

En zoals al vermeld, de handleiding zou nu weer gelijk moeten zijn met de software  8)


Biertje1985

Chiel, ik sta te popelen, zal de nieuwe versie erin zetten aankomend weekend. Had toevallig wat overshoot problemen. (opeens?)

Top.

Kan ik de pid parameters gewoon overnemen?


mbroek

Citaat van: Biertje1985 op 02-04-2018  07:44 uChiel, ik sta te popelen, zal de nieuwe versie erin zetten aankomend weekend. Had toevallig wat overshoot problemen. (opeens?)

Top.

Kan ik de pid parameters gewoon overnemen?

Ja, mits: als je Klassiek UIT gaat gebruiken dan moet je de PID D waarde op 1 of 1.5 zetten of je brouw komt nooit tot een einde. Ik gebruik nu 200.000 2.000 1.500

Een keertje droog draaien, eventueel op handbediening, om het te proberen. Kun je gelijk schoonmaakmiddel in je systeem doen.

Biertje1985

Citaat van: mbroek op 02-04-2018  10:11 uJa, mits: als je Klassiek UIT gaat gebruiken dan moet je de PID D waarde op 1 of 1.5 zetten of je brouw komt nooit tot een einde. Ik gebruik nu 200.000 2.000 1.500

Een keertje droog draaien, eventueel op handbediening, om het te proberen. Kun je gelijk schoonmaakmiddel in je systeem doen.
Hoe weet jij vanaf daar dat mijn ketel vies is. :nut:

Ik ga ermee experimenteren, nat droog draaien zeg maar.  :proost:


Zoeken met Google op deze site.
Brouwspullen zijn ook te koop via Bol.com.
Als je iets bestelt bij Bol.com (ook andere zaken dan brouwspullen) via deze link steun je het forum.


Het boek van de beheerder van deze site.