Sida 1 av 4

PID-reglering + stanna motor exakt

Postat: 20 november 2011, 12:23:25
av squiz3r
En PID-regulator implementerad i en PIC (18F4620) kommer att användas för att styra en elmotor med en spaltskiva på. 200 spalter per varv läses av med hjälp av en läsgaffel (bara en läsgaffel, så rotationsriktningen läses ej av). Motorn kommer först eftersträva att snurra med ett konstant varvtal, oavsett belastning, tills den snurrat ett visst antal varv. Efter det skall den stanna, helst på rätt spalt, dvs en precision på ett 200-dels varv.

Så är min tanke, men då detta är mitt första projekt med PID-reglering är jag lite osäker på hur jag bäst löser det. Skall jag köra PID-reglering sålänge som jag vill ha konstant varvtal och sedan byta till någon annan algoritm när den skall börja retardera? Eller kan jag först köra en PID-regulator med varvtalet som variabel och sedan en PID-regulator med vinkelpositionen som variabel? Känns som om det kan bli klurigt om man får "overshoot" på vinkelpositionen eftersom jag inte kan avgöra rotationsriktningen, utan bara anta att den är på det håll jag driver motorn...

Låter det rimligt att ställa in en belastad oväxlad elmotor till ett 200-dels varv på detta sättet? Förloppet får inte ta för lång tid heller, men det är väll ingen risk då motorn är oväxlad och måste hålla ett någorlunda högt varvtal för att orka?

Kom med tankar, idéer och tips!

Mvh. Daniel

Re: PID-reglering + stanna motor exakt.

Postat: 20 november 2011, 12:46:46
av victor_passe
Låter som att en stegmotor skulle vara lämpligare.
Och ja, du kan först reglera mot varvtal sedan mot position.
Och att anta att motorn snurrar åt samma håll som du driver den kommer nog inte funka så bra.
För du kan ju bara se den relativa positionen, så du får integrera fram din absoluta position och då får du aldrig missa en enda spalt. Och om du tolkar bak som fram en gång ligger du ju 2 spalter fel.

Re: PID-reglering + stanna motor exakt.

Postat: 20 november 2011, 13:06:51
av squiz3r
Att byta till en stegmotor är inte aktuellt, några hårdvaruförändringar över huvud taget känns som en absolut sista utväg om jag inte lyckas få till något bra med den hårdvara jag har idag. Men jag är tacksam för inputen!

Jag glömde nämna i det tidigare inlägget att motorn lär inte utsättas för någon kraft som kan få den att ofrivilligt rotera, utan bara ett bromsande moment. Detta gör att jag tycker att man borde kunna lägga in ett villkor som gör att motorn inte börjar driva på motsatt håll fören den har bromsats ner till stillastående, på detta vis bör man ju kunna vara helt säker på att motorn snurrar på det håll man faktiskt driver den?

Re: PID-reglering + stanna motor exakt.

Postat: 20 november 2011, 13:44:42
av H.O
Hastigheten är ju inget problem att reglera på med bara en läsgaffel men jag är ytterst tveksam till att att du kan positionera den på tillfredställande sätt. Sorry, men jag är tveksam....

Kan du verkligen inte få dit en läsgaffel till? Jag tror det gynnar dig i slutänden.

Jag brukar köra "moving target principen" dvs regulatorn använder position som indata, om jag sedan vill köra en specifik hastighet så ökar eller minskar jag "target position" med ett visst värde varje gång regulatorn körs (typ 1500ggr/sek eller så), ju högre värde som adderas (eller subtraheras) till target position desto högre blir hastigheten. Men det är bara ett sätt.

Re: PID-reglering + stanna motor exakt.

Postat: 20 november 2011, 14:03:27
av svanted
har du bara en enkel spaltskiva?
med en lite mera avancerad och två läsgafflar kan du utläsa rotaitonsriktning, och låt sedan avläsningen driva en räknare upp eller ner...
räknaren anger då "är" värdet på motorn som jämförs med börvärdet till den position du vill nå och differensen styr utspänningen
till motorn.
med minst 2 kvadrantdrivning för motorn som då även bromsas.....

Re: PID-reglering + stanna motor exakt.

Postat: 20 november 2011, 15:05:38
av squiz3r
Yes, jag har bara en enkel spaltskiva och en läsgaffel. Motorn är kopplad så att jag kan bromsa den också. Läsgaffeln är kopplad till en ingång som triggar ett interrupt där en räknare ökar och tiden sedan förra interruptet noteras. PID-regulatorn har jag väll tänkt att implementera som följande:

För konstant varvtal:

Kod: Markera allt

önskad dT = 1/(önskat varvtal[rpm]/60)*1/200;
fel = dT - önskad dT;
P = fel * Pgain;
I = ackumulerat fel * Igain;
D = (fel - förra fel) * Dgain;

Out = P + I + D;
För att stanna vid rätt spalt:

Kod: Markera allt

fel = önskad spalt - passerade spalter;
P = fel * Pgain;
I = ackumulerat fel * Igain;
D = (fel - förra fel) * Dgain;
Har jag tänkt rätt då?

Jag förstår att ni är skeptiska över att jag inte kan läsa av rot. riktningen, men jag vill göra ett försök i alla fall. Misslyckas jag så har jag lärt mig en massa och lyckas jag så har jag sparat på hårdvara :).

Re: PID-reglering + stanna motor exakt.

Postat: 20 november 2011, 15:21:51
av Swech
Vid inbromsningen bör du skifta system x antal pulser i förväg, t.ex. 100 st. (halvt varv)
Då drar du ned hastigheten till den lägsta där ett stopp från din PIC ser till att stoppa motorn
direkt, och så låter du motorn ta sig fram till den punkten. Att PID reglera den sista biten
verkar vara "overkill"

Swech

Re: PID-reglering + stanna motor exakt.

Postat: 20 november 2011, 16:08:19
av prototypen
Undrar bara vad det är för motor utan växellåda som du tror du kan positionera på ca 2 grader.
Om du sagt 60 grader, 6 spalter per varv hade jag inte skrivit detta inlägget.

Det finns ju styrningar som klarar detta t.ex. C-axel på en NC-svarv för att positionera spindeln när man fräser med drivna verktyg, men där är det nog lite mera mekanik än bara motorn.

Protte

Re: PID-reglering + stanna motor exakt.

Postat: 20 november 2011, 16:21:04
av grym
prova manuellt först och kolla om det funkar i praktiken först

en vanlig likströms motor med kol har inte ett jämt moment varvet runt, så då kanske inte rekleringen fungerar

ev att att man kan låta den gå så långsmat man får den att fungera och sedan låser motorn elektroniskt

men prova manuellt först, det brukar hjälpa myyycket , mången gång bygger man för avancerade saker som inte fungerar i praktiken, :vissla: :wall: :eh:

Re: PID-reglering + stanna motor exakt.

Postat: 20 november 2011, 17:18:30
av squiz3r
Jag testade med en elmotor och labbaggregatet nu, och jag förstår vad ni menar.. Först händer inget alls, sen tjoff, så har den snurrat flera varv.. En PID-regulator är i och för sig snabbare än jag, men det blir nog svårt..

Ett annat alternativ kanske kan vara att köra med konstant hastighet tills ett visst läge innan målet, och sedan slå av PWM och låta PID-regulatorn styra bromsen istället? Men vad händer då om det ligger ett väldigt högt bromsmoment på axeln...? Kanske ingen bra idé.. :)

Kanske får jag acceptera som ni säger att jag inte kan få den upplösningen på en sådan här motor och nedgradera mig till några tiondelars varv..

Det var i alla fall intressant med "moving target" principen, så jag ska läsa mer om den och se om det är något jag fattar tycke för!

Re: PID-reglering + stanna motor exakt.

Postat: 20 november 2011, 17:33:46
av H.O
Alltså jag tror att du kan få den att stanna på 1/200 varv under förutsättning att du har en läsgaffel till så att du får ut riktning också, varför skulle inte det gå? Om du sätter dit en läsgaffel till så 4-dubblas ju upplösningen om du läser alla fyra flankerna så då har du 800 "steg" på ett varv.

Här är en länk till det som var grunden och "utveklingsplatformen" för min servomodul. På videon får den hastighetskommandon över RS485 som den sedan kör med "moving-target-principen", det betyder också att den håller positionen när den står still.

Men jag vet, det hjälper dig inte ett dugg om du inte kan montera en läsgaffel till... :?

Re: PID-reglering + stanna motor exakt.

Postat: 20 november 2011, 17:59:26
av grym
det går att göra om motorn är bra nog

läs, mer än tre poler på kollektorn

även dom gamle gamle asea styrningarna kunde man få bra styrning på motorerna
det var verkligen gamla häckar med gjutjärnskåpor, och bara en tacho på motorn, men man kunde ha dom till duglig cncfräsning
dock jobbade thyristorstyrningen hårt ibland, så det gällde att man hadde trimmat in servona bra

Re: PID-reglering + stanna motor exakt.

Postat: 20 november 2011, 23:53:08
av v-g
Om inte annat kunde du ju köra med tex 73-215-57 tycker de är himlans trevliga ;)

Re: PID-reglering + stanna motor exakt.

Postat: 21 november 2011, 03:38:42
av BMI
Hur många varv i sekunden är det tänkt att det snurrar med som mest ?

Om "många" hinner man då med med 200 pulser/varv att göra interupt och beräkningar ?

Re: PID-reglering + stanna motor exakt.

Postat: 21 november 2011, 08:12:22
av svanted
är detta ett projekt för att använda en elmotor istf stegmotor?