Stuurautomaat boot


Kompas word 1x per cyclus uitgelezen en na 10 metingen word er een gemiddelde genomen. Weet niet hoe snel die Arduino loopt, maar ik zal dat, denk ik, nog gaan aanpassen naar een gemiddelde over 100 samples. Het gaat om een motorboot, een beetje zeegang zoek ik niet op, dus een beetje helling is hier niet in het spel.

Lambiek, begrijp niet wat je bedoeld met stuur verdraaien. Pomp is aangesloten op een hydraulische stuurinrichting. Met het stuur kan ik sturen als de pomp niet draait. Het systeem is gewoon zo, en wel zo veilig om niet afhankelijk te zijn van electronica.

Gr.

Erik

ik weet niet hoelang een cyclus duurt. maar om een stabiele waarde te hebben zit je toch rond de 10hz.
en ik weet niet of het handig is om een gemiddelde van 10 metingen te nemen. aangezien dit dan om de 1 seconden gerefresht wordt krijg je alsnog een afwijking. nu weet ik ook niet of je een 10de achter de komma kijkt maar hier zit je dan al snel aan een verschil met een kleine slinger in je boot.

zeegang zal je dan zeker niet echt veel krijgen. maar dan is het ook niet nodig om hem boven in de mast te zetten. het is geen gps kompas

lambiek bedoeld wat gebeurt er als je de autopiloot bekrachtigt. kan je dan nog steeds met het handwheel sturen? dit moet namelijk niet mogelijk zijn. het roer moet vastgehouden worden door de stuurmachine.

als dit dus niet gebeurt loopt je roer vrij op het moment dat je hem niet aanstuurt. dan is het ook niet mogelijk om je boot goed op koers te houden aangezien je roer een eigen leven gaat lijden.

hoe hoger in de mast aan het werk, hoe mooier het uitzicht
Lambiek

Special Member

Op 25 november 2013 20:14:28 schreef erik1234:
Lambiek, begrijp niet wat je bedoeld met stuur verdraaien.

Als je autopiloot aanstaat, zou je het stuur niet mogen/kunnen verdraaien. Als het goed is wordt het een soort servo systeem.

Pomp is aangesloten op een hydraulische stuurinrichting. Met het stuur kan ik sturen als de pomp niet draait.

Dat is als de autopiloot uit staat.

Het systeem is gewoon zo, en wel zo veilig om niet afhankelijk te zijn van electronica.

Dat moet ook, je moet niet afhangkelijk zijn van de elektronica.
Dat is in dit geval een hulp middel.

Maar leg nu eens uit hoe je het precies gedaan hebt met de hydraulische stuur inrichting/pomp.
Heb je een aparte stuurpomp en een aparte hydrauliek pomp?

Als je haar maar goed zit, GROETEN LAMBIEK.
EricP

mét CE

Er is niet één specifieke roerstand is waarbij een boot rechtuit vaart. Om de invloeden van wind en stroming te compenseren zal je de roerstand telkens daarop moeten aanpassen.

Dat is dus ook een doorlopend proces... Anders zou het niet zo spannend zijn natuurlijk.

Niet alle professionele stuur automaten werken met een roerstand feedback.

Welke niet??

voor je kompas zou ik hem op deze hoogte houden of anders op de waterlijn. dit omdat hoe hoger je hem hangt (zeker op een zeilboot) hoe meer hij last van schommelingen dus afwijkingen heeft.

Als het goed is, dus niet... Maar dat hangt sterk af van de kwaliteit kompas. Als-ie er wel veel last van heeft, dan is-ie dus niet geschikt voor gebruik aan boord...

dit moet namelijk niet mogelijk zijn. het roer moet vastgehouden worden door de stuurmachine.

Dat hangt sterk van je stuursysteem af. Ik ken genoeg semi-professionele automaten die een roeruitslag afdwingen. Draai jij met je (nood)stuurpompje de boel ergens anders heen, dan draait de automaat het ding vrolijk weer terug. erg handig als je kinderen wilt laten sturen: zet je seastatefilter op 10 graden. Zolang ze min of meer rechtuit varen, dan sturen ze zelf. Zitten ze er naast, dan tikt de stuurautomaat ff terug. Paar graden van koers kan meestal voor een half uurtje geen kwaad :)
Het hele verhaal gaat natuurlijk niet op als geen mechanische (nood)pomp hebt, maar altijd 'drive by wire' hebt omdat je roer bijvoorbeeld te groot is om op de hand te kunnen draaien bij een beetje zeegang. Voor een jacht niet van toepassing.

Ik ken fatsoenlijk sturende stuurautomaten niet anders dan 'zelf lerend' en een roeruitslag forcerend (die afhankelijk is van wat ze geleerd hebben over het stuurgedrag van het schip). Zodra je richting de gewenste koers gaat, dan verminderen ze roeruitslag en als je er bent, staat het roer weer zo als waar je voor dat de correctie begon mee rechtuit voer - ook als dat betekent dat je 10o roeruitslag nodig hebt om onder die omstandigheden min of meer rechtuit te varen.

Als je dit voor elkaar hebt, dan kun je nog een stukje verder: laat het ding naar een waypoint toe sturen. Er handig als je in een TSS strak langs de tonnenlijn wilt varen. Maar goed... eerst maar eens rechtdoor.

Heb dat documentje van dropbox eens doorgelezen, halverwege ben ik afgehaakt. Staat allemaal zeer mooi beschreven, maar veel gaat mijn pet te boven. PID snap ik in de basis wel.

Denk dat ik toch maar met PID aan de slag moet. Er staat een PID library op de Arduino site waar ik meer vertrouwen in heb dan mijn eigen programmeerkunsten. Dit is een library voor 1 relais om bijv. een temperatuur te regelen, maar volgens mij moet 'ie om te bouwen zijn naar 2 relais'

code:

void loop()
{
  Input = analogRead(0);
  myPID.Compute();

  /************************************************
   * turn the output pin on/off based on pid output
   ************************************************/
  unsigned long now = millis();
  if(now - windowStartTime>WindowSize)
  { //time to shift the Relay Window
    windowStartTime += WindowSize;
  }
  if(Output > now - windowStartTime) digitalWrite(RelayPin,HIGH);
  else digitalWrite(RelayPin,LOW);

}

Maar daar gaan we als er een roersensor toegevoegd moet worden. "Input = analogRead(0);" is natuurlijk om te bouwen naar de waarde van de kompassensor. Maar hoe krijg je de roersensor er dan ook nog in verwerkt?

Gr.

Erik

Niet alle professionele stuur automaten werken met een roerstand feedback.
Welke niet??

bijna alle kunnen zonder feedback werken. ze sturen dan alleen een analoog signaal naar het stuursysteem en daar zit dan een feedback in. hij kijkt dan zelf niet naar het roer. (maar weet inprincipe wel wat de roerstand is omdat hij dat analoog uitstuurt.

voor je kompas zou ik hem op deze hoogte houden of anders op de waterlijn. dit omdat hoe hoger je hem hangt (zeker op een zeilboot) hoe meer hij last van schommelingen dus afwijkingen heeft.

Als het goed is, dus niet... Maar dat hangt sterk af van de kwaliteit kompas. Als-ie er wel veel last van heeft, dan is-ie dus niet geschikt voor gebruik aan boord...

heeft opzich niet zo heel veel met de kwaliteit te maken. ik heb het genoeg mee gemaakt dat als de kompassen te hoog geplaatst zijn ze hier zodanig last van hebben met sturen op de piloot dat het niet bij te regelen is. (maar ik kijk denk ik nu te veel naar de zeevaart)

dit moet namelijk niet mogelijk zijn. het roer moet vastgehouden worden door de stuurmachine.

en ook hier weer ben ik teveel zeevaart georiënteerd. ik kan als ik beneden op het stuursysteem direct de solenoids aanstuur terwijl de piloot aanstaat max 1 a 2 graden uitslaan en dan wordt die direct bijgeregeld.

ook ik ken genoeg adaptive(zelf lerende) piloten en werk daar ook genoeg mee. maar die hebben eigenlijk allemaal ook nog de mogelijkheid om als pid regelaar te werken.
ik denk eerst dat je toch de PID regeling goed aan de gang moet hebben voordat je dan naar de adaptive mogelijkheid gaat kijken. dan kan je het best met de kalman filter werken (staat een stuk in het document). maar dat is een stap verder

Maar daar gaan we als er een roersensor toegevoegd moet worden. "Input = analogRead(0);" is natuurlijk om te bouwen naar de waarde van de kompassensor. Maar hoe krijg je de roersensor er dan ook nog in verwerkt?

ik durf hier geen duidelijke uitspraken over te doen aangezien ik hier zelf software matig ook niet echt mee bezig ben geweest, maar denk dat je dit apart moet regelen ten opzichte van je koers. uiteindelijk moet je ze wel combineren. maar moet me daar ook nog weer eens goed op inlezen

[Bericht gewijzigd door leip11 op 25 november 2013 23:33:23 (26%)]

hoe hoger in de mast aan het werk, hoe mooier het uitzicht

Op 25 november 2013 16:55:19 schreef erik1234: Maar hoe krijg je de roersensor er dan ook nog in verwerkt?

Door 2 regelkringen in cascade te plaatsen.

-1ste regelkring: Setpoint = gewenste koers, terugkoppeling = kompasuitlezing
-2de regelkring: Setpoint = gewenste stand roer, terugkoppeling = feedback roerstand

Uitgang 1ste regelkring => ingang 2de.

Begin eerst met de laatste zonder je iets aan te trekken van de rest maw maak een regelkring die het roer correct positioneert aan de hand van een setpoint, bv -45 tot +45 graden.

Op 25 november 2013 20:14:28 schreef erik1234:Weet niet hoe snel die Arduino loopt,

Dit principe heeft ook zo zijn tekortkomingen. Een meting is beter niet afhankelijk van een cyclustijd. Een betere manier van werken is softwarematig of via interrupts een timer in te bouwen die op vaste tijdstippen een meting doet.

EricP

mét CE

bijna alle kunnen zonder feedback werken. ze sturen dan alleen een analoog signaal naar het stuursysteem en daar zit dan een feedback in. hij kijkt dan zelf niet naar het roer. (maar weet inprincipe wel wat de roerstand is omdat hij dat analoog uitstuurt.

Waarom staat er dan in elke installation manual dat 'rudder feedback mandatory is for accurate steering'? Kun je me dat uitleggen? Of zouden ze gewoon graag rudder feedback sensors verkopen en daar hun brood mee verdienen??

heeft opzich niet zo heel veel met de kwaliteit te maken. ik heb het genoeg mee gemaakt dat als de kompassen te hoog geplaatst zijn ze hier zodanig last van hebben met sturen op de piloot dat het niet bij te regelen is. (maar ik kijk denk ik nu te veel naar de zeevaart)

Ik kijk uitsluitend naar de zeevaart. Op binnenwater is de hele discussie niet van toepassing - geen waterdiepte, dus geen zeegang (alhoewel sommige mensen 50cm golven op het IJsselmeer ook al 'zeegang' noemen :)). Die dingen zitten allemaal ter hoogte van de brug - en dat is al snel tussen de 5 en 15 meter boven water. Toegegeven, vaak een gyro kompas, GPS kompas zie je ook steeds meer, maar een fluxgate is niet zelden aanwezig als 'backup'. Die hangen dan wel in hun eigen dome cardanisch - iets met stabiel blijven in de veldlijnen van het aardmagnetisch veld. en ze krijgen het volgens de documentatie moeilijker op hogere breedte - wat op zich niet raar is.

en ook hier weer ben ik teveel zeevaart georiënteerd. ik kan als ik beneden op het stuursysteem direct de solenoids aanstuur terwijl de piloot aanstaat max 1 a 2 graden uitslaan en dan wordt die direct bijgeregeld.

Precies. Dan praat je dus over een bekrachtigd stuurwerk, wat op wat alles boven een meter of 40, 50 wel standaard is. En waarom wordt er bij geregeld? Omdat de stuurautomaat graag een bepaalde roerstand ziet - en weet dat het roer anders staat via z'n rudder feedback.

ook ik ken genoeg adaptive(zelf lerende) piloten en werk daar ook genoeg mee. maar die hebben eigenlijk allemaal ook nog de mogelijkheid om als pid regelaar te werken.
ik denk eerst dat je toch de PID regeling goed aan de gang moet hebben voordat je dan naar de adaptive mogelijkheid gaat kijken. dan kan je het best met de kalman filter werken (staat een stuk in het document). Maar dat is een stap verder

Adaptive is noodzakelijk om onder 'alle' omstandigheden redelijk te kunnen sturen. Ben het wel met je eens dat eerst eens op vlak water zonder wind recht uit varen noodzakelijk is.

Overigens is een 'Kalman filter' een dure naam voor een fatsoenlijke middeling van je input.

ik durf hier geen duidelijke uitspraken over te doen aangezien ik hier zelf software matig ook niet echt mee bezig ben geweest, maar denk dat je dit apart moet regelen ten opzichte van je koers. uiteindelijk moet je ze wel combineren. maar moet me daar ook nog weer eens goed op inlezen

Ik ben wel eens met een niet nader te noemen autopilot boer hierover in discussie geweest. Veel van geleerd, maar hoe ze het precies doen, daar kwam ik niet achter - werd erg omheen gepraat, blijkbaar werd het als 'bedrijfsgeheim' beschouwd. Gezien de openheid op andere vlakken, is te verwachten dat het bij hun ingewikkelder is dan een simpele PID regelaar.

Voor de TS niet zo zeer van toepassing: Met grotere roeren zie je ook regelmatig beperkingen in de roeruitslag afhankelijk van de snelheid (die input hebben die automaten ook, meer snelheid, minder roeruitslag nodig voor hetzelfde effect; dat is evt. voor een jacht wel interessant).
De beperking in de roeruitslag is noodzakelijk om te voorkomen dat de boel kapot gaat - je kunt je wellicht voorstellen hoe groot de krachten op een roerblad zijn als je 30 graden uitslag zou geven bij 25 knopen. Voor een jacht niet relevant.

Om overigens nog even op 'adaptive' terug te komen: je merkt dat ook als mensen op de hand staan te sturen onder wat moeilijkere omstandigheden: als ze er net staan, dan slingeren ze nogal. Dat wordt na 10 minuten beter - ze beginnen de beweging aan te voelen. Om na een half uur tot een uur weer te te nemen omdat ze hun concentratie beginnen te verliezen. Mensen met meer ervaring hebben meestal een kortere 'adaption time' dan relatief onervaren mensen.

Waarom staat er dan in elke installation manual dat 'rudder feedback mandatory is for accurate steering'? Kun je me dat uitleggen? Of zouden ze gewoon graag rudder feedback sensors verkopen en daar hun brood mee verdienen??

nu klopt het inderdaad dat een autopilot een feedback zou willen hebben van het roer(rond 80% van de gevallen is dat ook zo) nu zijn er een paar uitzonderingen.
voorbeeld is een thruster. die draaien 360 graden rond. en is dat niet met autopilot feedback terug te lezen. hier wordt dus een analoog signaal naar het stuursysteem gestuurd en die regelt dan het roer in zo'n bereik dat je er mee op de piloot kan sturen (zeg 35stb to 35port)

ander voorbeeld is een proportioneel roer. dit systeem zelf kijkt naar het roer en naar de inkomende roeruitslag gegeven door de autopilot/dp/hand order. is het verschil dusdaning groot dan gaat het systeem het roer sneller draaien en bouwt hem af op het moment dat het roer bij zijn ingestelde waarde is.
ook hier komt een analoog signaal vanaf de piloot omdat de piloot dit zelf niet regelt maar apart geregeld wordt.

dit zijn effe 2 voorbeelden.

het analoog signaal naar de roeren toe moet wel gekalibreerd worden. je kan dus eigenlijk zeggen dat de piloot dus wel een soort feedback terugkrijgt omdat hij zelf weet hoeveel hij uit wilt sturen.

kompas

hier kijk ik dan toch inderdaad naar de gyro en gps kompassen. tegenwoordig is het een stuk minder bij de gyro's dat ze echt op de waterlijn van het schip geplaats moeten worden. maar je ziet het vooral bij feederschepen (smalle schepen, relatief hoge opbouw) dat deze behoorlijk kunnen slingeren bovenin. daar moet het kompas toch echt zo laag mogelijk geplaats worden.

dan heb je het gps kompass. op grotere schepen mag dit alleen als backup gebruikt worden maar is niet verplicht om te hebben. zit je ook met het probleem dat als het te hoog geplaats is het behoorlijk kan slingeren. slepers hebben hier regelmatig last van. (ik krijg dan de piloot niet goed afgeregeld als ik niet een betrouwbare heading heb).

een magneet kompas is altijd aanwezig op schepen en die hangen inderdaad cardanisch maar ook daar zie je dat die op zulke hoogte met slinger gedrag niet altijd stabiel zijn(scheeps afhankelijk)

Precies. Dan praat je dus over een bekrachtigd stuurwerk, wat op wat alles boven een meter of 40, 50 wel standaard is. En waarom wordt er bij geregeld? Omdat de stuurautomaat graag een bepaalde roerstand ziet - en weet dat het roer anders staat via z'n rudder feedback.

dit hoeft niet uit de stuur automaat te komen (zie bovenstaande tekst)

Ik ben wel eens met een niet nader te noemen autopilot boer hierover in discussie geweest. Veel van geleerd, maar hoe ze het precies doen, daar kwam ik niet achter - werd erg omheen gepraat, blijkbaar werd het als 'bedrijfsgeheim' beschouwd. Gezien de openheid op andere vlakken, is te verwachten dat het bij hun ingewikkelder is dan een simpele PID regelaar.

ik heb zeer regelmatig contact met verschillende autopilot boeren en inderdaad heb ik nog nergens een zeer precieze formule van hun gekregen hoe zij het doen. maar ze werken wel allemaal volgens het zelfde principe. voor de adaptive mode gebruiken ze allemaal het kalman filter principe.
maar het verscheelt wel tussen de fabrikanten hoe een piloot stuurt.
punt is dat ze allemaal aan de IMO regels moeten voldoen dus niet heel veel van elkaar afwijken met betrekking tot het regelen hiervan.

Voor de TS niet zo zeer van toepassing: Met grotere roeren zie je ook regelmatig beperkingen in de roeruitslag afhankelijk van de snelheid (die input hebben die automaten ook, meer snelheid, minder roeruitslag nodig voor hetzelfde effect; dat is evt. voor een jacht wel interessant).
De beperking in de roeruitslag is noodzakelijk om te voorkomen dat de boel kapot gaat - je kunt je wellicht voorstellen hoe groot de krachten op een roerblad zijn als je 30 graden uitslag zou geven bij 25 knopen. Voor een jacht niet relevant.

dit klopt en 95% van de tijd wordt er op piloot ook niet verder dan 15 graden uitgestuurd. heeft er ook mee te maken om het schip rustiger te laten varen. afgezien van de krachten die bij 30 graden 25knopen op het materiaal komt vaart het een een stuk onrustiger.

over de adaptive mode heb je ook gelijk en het werkt ook zeker een stuk simpeler. maar als een autopiloot goed ingeregeld is dan kan je in PID mode met zwaar weer nog prima varen zonder al te veel rare dingen. (regelmatig meegemaakt)

hoe hoger in de mast aan het werk, hoe mooier het uitzicht

Door 2 regelkringen in cascade te plaatsen.

-1ste regelkring: Setpoint = gewenste koers, terugkoppeling = kompasuitlezing
-2de regelkring: Setpoint = gewenste stand roer, terugkoppeling = feedback roerstand

Uitgang 1ste regelkring => ingang 2de.

Begin eerst met de laatste zonder je iets aan te trekken van de rest maw maak een regelkring die het roer correct positioneert aan de hand van een setpoint, bv -45 tot +45 graden.

Dat betekend dus 2x een PID regelaar in Cascade? En hoe word dan de gewenste roerstand rekenkundig bepaald? Uiteraard proefondervindelijk, maar uiteindelijk zal het in een formule gegoten moeten worden. Uitgang eerste regelkring = gewenste koers, ingang tweede regelkring = gewenste roerstand, daar zit een significant verschil tussen.

Wat betreft roeruitslag op m'n 9 meter jachtje; Ik denk dat met rechtuitvaren op rustig water 2 graden roeruitslag niet gehaald word. Max. is overigens +/- 35 graden.

Gr.

Erik

als het goed is staat die formule in het document wat ik je heb gestuurd. moet je effe zoeken

hoe hoger in de mast aan het werk, hoe mooier het uitzicht
Lambiek

Special Member

@ leip11,

Zou je die ook naar mij willen sturen, ben daar zeer benieuwd naar.

Als je haar maar goed zit, GROETEN LAMBIEK.

dropbox link is nog steeds beschikbaar ergens in een bovenstaand bericht

hoe hoger in de mast aan het werk, hoe mooier het uitzicht
Lambiek

Special Member

Als je haar maar goed zit, GROETEN LAMBIEK.

Aan de slag gegaan met de PID library van Arduino. Hoewel het werkt op een breadbordje, 2 leds en een handbediende potmeter vrees ik toch dat dit projectje te hoog gegrepen gaat worden voor mij. De tijd tussen omschakelen stuurboord/bakboord is veel te kort, dat trekt die arme pomp niet. Ook word het setpoint nooit bereikt, er staat altijd 1 led/relais aan. Ik geef het nog niet op met de PID library en ga nog wel wat puzzelen ermee. Heb ook het ideetje om de relais-aan-tijd afhankelijk te maken van de afwijking, dat krijg ik met mijn steenkolenprogrammeerkunsten nog wel voor elkaar.

Gr.

Erik

begin is er :)

je kan het best met een hysterisch werken om het hunten tegen te gaan.

dat er nu een led aan blijft staan heeft dan waarschijnlijk ook te maken met je deadband die te laag is en je het niet fysiek stuurt. je geeft wel een feedback maar wordt nog niet aangestuurd door je piloot

hoe hoger in de mast aan het werk, hoe mooier het uitzicht
EricP

mét CE

Precies. Normaal heb je een 'seastate filter' achtig iets. Vrij vertaald, komt het er op neer dat de boel pas gecorrigeerd wordt als je meer dan een bepaalde afwijking (of een afwijking langer dan een bepaalde tijd) hebt. Het voorkomt dat een roer gaat staan klapperen op elke golf, hetgeen doorgaans overcorrigeren tot gevolg heeft.

Vrij vertaald komt het er op neer dat je rustig een paar graden van koers mag liggen (mits niet te lang) zonder dat er ingegrepen wordt.
Die 'dead band' (om de terminologie hierboven te gebruiken) is noodzakelijk. Anders zul je een erg zenuwachtig stuursysteem krijgen (wat waarschijnlijk ook niet tot rust gaat komen).

Voor wat betreft de IMO-eisen: ik weet er (in deze context) te weinig van om er een oordeel over te hebben. Meestal komt het er op neer dat je een stapel safeguards hebt om 'auto-pilot assisted accidents' in elk geval moeilijk te maken. Ik denk dat het min of meer op elkaar lijken van de algoritmes er meer mee te maken heeft dat ze allemaal een wiel uitgevonden hebben en dat al die wielen min of meer rond zijn...

Overigens bevestigt leip min of meer wat ik al eerder riep mbt. rudder feedback: de autopilot weet waar het roer staat. Toegegeven, dat hoeft niet altijd via feedback te zijn - al ken ik het uit de praktijk niet anders.

Voor wat betreft kompassen: Gyro moet inderdaad zo rustig mogelijk hangen - en heeft ook geen link met een magnetisch veld. Da's dus relatief 'eenvoudig' - hang dat ding op het punt waar het schip om draait (jammer dat zich dat met belading verplaatst, maar je kunt niet alles hebben :) ). Voor zover ik weet mag een GPS kompas ook als 'main' gebruikt worden (mits voorzien van wheelmark, uiteraard, want anders kan het nooit goed zijn...), maar moet er een backup zijn (met name om te voorkomen dat als GPS er mee stopt, je helemaal niks meer hebt). Dat als achtergrond informatie.

Voor wat betref het project van de TS: het is niet eenvoudig. Bootjes zijn nou eenmaal niet zo makkelijk in wiskunde te vatten. Ik denk dat je met die dubbele PID regeling wel een eind moet komen, maar je zult het ook 'self learning', zo je wilt 'adaptive' moeten maken om te voorkomen dat je continu parameters aan het tunen bent tijdens het varen - omdat de omstandigheden nou net weer iets anders zijn dan de vorige keer. Een 9m jacht is toch iets 'zenuwachtiger' dan een 200m vrachtschip. Een sleper is een verhaal apart.

//tell the PID to range between 0 and the full window size
* myPID.SetOutputLimits(0, WindowSize);

* Input: The variable we're trying to control (double)
* Output: The variable that will be adjusted by the pid (double)
* Setpoint: The value we want to Input to maintain (double)
* Kp, Ki, Kd: Tuning Parameters. these affect how the pid will chage the output. (double>=0)
* Direction: Either DIRECT or REVERSE. determines which direction the output will move when faced with a given error. DIRECT is most common.

* SetSampleTime()

Bovenstaand zijn de parameters die te beinvloeden zijn van deze Arduino library. Ik neem aan dat dat voldoende moet zijn.

Deadband had ik ook begrepen, maar ik dacht dat dat nu juist niet nodig zou zijn met PID met de juiste instellingen van Kp, Ki, Kd.

Alvast bedankt weer voor het meedenken, word zeer gewaardeerd.

Gr.

Erik

Roerstand kun je gewoon meenemen in de PID lus. Zou je PPID kunnen noemen: kompassignaal-PID + roerstand-P samen geven je stuursignaal naar de kleppen.
Flink deadband bij slecht weer kan geen kwaad, omdat de I-term uiteindelijk toch de gemiddelde koers steady gaat houden. Je ziet dan dat het roer een stukje verzet wordt en daar weer blijft staan; het schip gaat dan om de juiste koers verder gieren.
Het is maar wat voor yaw je zelf toelaatbaar vindt.

De P factor is gemakkelijk uit te vinden als je even met de hand stuurt: hoeveel neem je zelf? De D-tijdconstante ligt ergens in de seconden; die van de I enkele tientallen seconden, tot minuten voor grotere schepen.

Keramisch, kalibratie, parasitair: woordenlijst.org

Op 27 november 2013 22:15:56 schreef EricP:
Voor wat betreft de IMO-eisen: ik weet er (in deze context) te weinig van om er een oordeel over te hebben. Meestal komt het er op neer dat je een stapel safeguards hebt om 'auto-pilot assisted accidents' in elk geval moeilijk te maken. Ik denk dat het min of meer op elkaar lijken van de algoritmes er meer mee te maken heeft dat ze allemaal een wiel uitgevonden hebben en dat al die wielen min of meer rond zijn...

een vorm van safegaurds is de mogelijkheid om ten alle tijden het roer zelf te kunnen bedienen. dit houdt in dat er een NFU unit ergens staat die je ten alle tijden kan bedienen. hij gaat dan uit autopilot en schakelt hier als override naar over. ben je klaar zet je hem weer terug in pilot

Voor wat betreft kompassen: Gyro moet inderdaad zo rustig mogelijk hangen - en heeft ook geen link met een magnetisch veld. Da's dus relatief 'eenvoudig' - hang dat ding op het punt waar het schip om draait (jammer dat zich dat met belading verplaatst, maar je kunt niet alles hebben :) ). Voor zover ik weet mag een GPS kompas ook als 'main' gebruikt worden (mits voorzien van wheelmark, uiteraard, want anders kan het nooit goed zijn...), maar moet er een backup zijn (met name om te voorkomen dat als GPS er mee stopt, je helemaal niks meer hebt). Dat als achtergrond informatie.

je mag een gps kompas als main gebruiken tot een bepaalde grote schip(tonnage weet ik niet uit mijn hoofd) daarboven moet het een gyrocompass zijn

Voor wat betref het project van de TS: het is niet eenvoudig. Bootjes zijn nou eenmaal niet zo makkelijk in wiskunde te vatten. Ik denk dat je met die dubbele PID regeling wel een eind moet komen, maar je zult het ook 'self learning', zo je wilt 'adaptive' moeten maken om te voorkomen dat je continu parameters aan het tunen bent tijdens het varen - omdat de omstandigheden nou net weer iets anders zijn dan de vorige keer. Een 9m jacht is toch iets 'zenuwachtiger' dan een 200m vrachtschip. Een sleper is een verhaal apart.

ik zou denk ik nog wachten met een adaptive mode. het vaart inderdaad een stuk rustiger. maar let wel dat dit behoorlijk ingewikkeld in elkaar zit.

hoe hoger in de mast aan het werk, hoe mooier het uitzicht

Deadband zit al in de huidige code verwerkt. Omdat die PID toch erg moeilijk word voor mij besloten om een "poor man's PID" in te bouwen en kijken of het werkt. Volgende keer ga ik eerst maar eens hiermee testen, als het hoopvol stemt kan het misschien verbeterd worden.

relais tijd aan = abs(gewenste koers - gemeten koers) * correctietijd;

correctietijd kan "on the fly" aangepast worden.

Gr.

Erik

-Edit- Een mooi linkje van iemand gekregen over PID; http://www.inpharmix.com/jps/PID_Controller_For_Lego_Mindsto...obots.html Het P-gedeelte zit nu in ieder geval goed geimplementeerd in mijn code. Als er weinig wind staat de volgende proefvaart maken en kijken wat het doet en wat er verbeterd moet worden.

[Bericht gewijzigd door erik1234 op 1 december 2013 00:18:19 (28%)]

Inmiddels een poos verder en besloten eerst maar wat te gaan meten.

Onderstaand grafiekje is gemaakt terwijl er ouderwets met de hand werd gestuurd bij rechtuit varen. Om te beginnen rustig water, geen wind.

http://i59.tinypic.com/9s57a9.jpg

Bovenste lijntje - Gevaren koers
Middelste lijntje - Afwijking van het roer t.o.v. middenstand
Onderste lijntje - Afwijking van de actuele koers t.o.v. gewenste koers.

Ziet er dramatisch uit, maar het is allemaal sterk uitvergroot. Tussentijden van de log 200 ms. Dit is maar een deel van de grafiek (geimporteerd in Excel), totaal is er 8 minuten aan data. Duidelijk te zien is het verband tussen de onderste 2 grafieken.

Op welke manier kan ik een formule vinden tussen de onderste 2 grafiekjes? Gewenste roerstand = x * (afwijking koers). Ik ben al aan het stoeien geweest met trendlijnen in Excel maar kom daar niet echt verder mee.

Gr.

Erik

Hallo Erik,

Ik kan je wel helpen denk ik, maar niet met de grafieken en data die je nu hebt gemaakt. Ik zou je willen vragen het volgende te doen: pas je computerprogramma aan zodat jij de roerstand in kan toetsen. Ga dan varen en pas de roerstand enige keren handmatig aan. Wacht na elke roerstand een tijdje om het effect op de koers te zien. Sla vervolgens die data op in een Excel bestand en gebruik deze tool:
http://www.dotxcontrol.com/nl/downloads/software.html
Dan moet je computerprogramma wel een PID regelaar hebben, maar die is eenvoudig te programmeren. Als je P actie kan realiseren, kan de I and D actie ook. Ik help je graag als je er niet uitkomt.

Op 26 mei 2014 07:12:40 schreef regelspecialist:
Dan moet je computerprogramma wel een PID regelaar hebben,

Dat is nu juist waar het naartoe moet. Als ik het goed begrijp is dat programmaatje om een PID te tunen. Ik zoek juist de manier om daar te komen.

Gr.

Erik

Hallo Erik,

Waar zit em de kneep: weet je niet hoe de PID te programmeren? Of weet je niet welke stappen je moet ondernemen om em te tunen? In het eerste geval: kun je je code die je al hebt geschreven delen?