PID-reglering + stanna motor exakt
PID-reglering + stanna motor exakt
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
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
-
victor_passe
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
Re: PID-reglering + stanna motor exakt.
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.
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.
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?
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.
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.
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.
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.....
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.
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:
För att stanna vid rätt spalt:
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
.
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;Kod: Markera allt
fel = önskad spalt - passerade spalter;
P = fel * Pgain;
I = ackumulerat fel * Igain;
D = (fel - förra fel) * Dgain;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
- Swech
- EF Sponsor
- Inlägg: 4767
- Blev medlem: 6 november 2006, 21:43:35
- Ort: Munkedal, Sverige (Sweden)
- Kontakt:
Re: PID-reglering + stanna motor exakt.
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
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
- prototypen
- Inlägg: 11108
- Blev medlem: 6 augusti 2006, 13:25:04
- Ort: umeå
Re: PID-reglering + stanna motor exakt.
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
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.
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,

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,
Re: PID-reglering + stanna motor exakt.
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!
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.
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...
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.
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
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.
Om inte annat kunde du ju köra med tex 73-215-57 tycker de är himlans trevliga 
Re: PID-reglering + stanna motor exakt.
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 ?
Om "många" hinner man då med med 200 pulser/varv att göra interupt och beräkningar ?
Re: PID-reglering + stanna motor exakt.
är detta ett projekt för att använda en elmotor istf stegmotor?
