Bilder på CNC-fräs

Robot, CNC, Pneumatik, Hydraulik, mm
Användarvisningsbild
arvidb
Inlägg: 4537
Blev medlem: 8 maj 2004, 12:56:24
Ort: Stockholm

Inlägg av arvidb »

Servomotorerna är riktigt trevliga 3-fas 200 W servomotorer av industrikvalitet - begagnade såklart annars hade jag aldrig haft råd - med tillhörande drivsteg. Jag har lagt ner *mycket* tid på att få tag på dem, till rätt pris. Inte så lite nervositet heller, när man köper från USA och Singapore och inte kan vara riktigt säker på att allt kommer att passa ihop :roll:

Jag har inga linjärgivare utan använder motorernas kvadraturgivare.

Jag skissar på ett styrkort som läser av kvadratursignalerna från motorerna och step-/dir-signaler från parallellporten och räknar hur mycket "fel" motorerna ligger. Sen kör jag felet genom en PID-kontroller för att få fram med vilken hastighet servona ska korrigera.

Jag tänkte använda en FPGA som styrkrets - det råkar inte finnas någon expert på programmerbar logik (VHDL eller liknande) här? Jag är nämligen nybörjare :D

Arvid
Användarvisningsbild
strombom
Inlägg: 3305
Blev medlem: 27 maj 2003, 10:50:20
Ort: Sollentuna / Stockholm
Kontakt:

Inlägg av strombom »

Blir ett rejält bygge då med såna motorer! :)

Du ska alltså implementera en PID-regulator i en FPGA, har jag förstått rätt då ? Jag förmodar att det är ungefär så de gör i "riktiga" cnc-maskiner också.

Om du styr tre motorer samtidigt med din metod, kan du då vara säker på att den går genom en rät linje ?

För min maskin gjorde jag ett enkelt styrprogram för Windows som läser in HPGL och gerber-kod. Det programmet spottar ut en koordinat i taget genom serieporten till en enchipsdator. Enchipsdatorn räknar sedan själv ut hur den ska stega fram motor för att till slut säga ok när den har kommit fram.

Jag har aldrig sysslat med programmerbar logik men har anmält mig till ett par kurser i höst, ska nog börja lite smått själv i sommar också :) Jag kommer dock använda CPLD istället för FPGA. Tänkte beställa den där boken de tipsade om i en annan tråd också, VHDL för konstruktion tror jag den hette.

Du kan ju kanske ladda hem webpack från xilinx om du inte gjort det, det är ju gratis
http://www.xilinx.com/xlnx/xil_prodcat_ ... SE+WebPack
Det verkar finnas många olika sätt att programmera logik, vissa metoder är helt grafiska och kräver ingen programmering, bara att göra ett blockschema :)

/Johan
Användarvisningsbild
arvidb
Inlägg: 4537
Blev medlem: 8 maj 2004, 12:56:24
Ort: Stockholm

Inlägg av arvidb »

Tack för tipsen, Johan! Jag använder utvecklingsmiljön "Quartus II" från Altera nu, men den är ganska buggig tyvärr. Så det kanske vore idé att titta på Xilinx Webpack också. Jag är inte så förtjust i Xilinx hemsida, lite svårt att hitta det man letar efter där...

Det stämmer att jag tänkte mig en PID-regulator i en FPGA (eller CPLD). Det blir upp till datorn att synka axlarna, så om jag lyckas ställa in PID-regulatorn rätt så bör väl precisionen bli ungefär som med stegmotorer, d.v.s. den räta linjen kanske bli lite stegformad. Men om ett steg = 0.01 mm så märks det nog inte :)

Det riktigt proffsiga vore ju att skriva en g-kodstolk i FPGAn, och ladda över G-koden allteftersom via serieport eller liknande. Då skulle man verkligen kunna se till att maskinen rörde sig "snyggt" - och bara skicka statusdata tillbaka till datorn så man ser i realtid vad som händer. Men eftersom det finns färdiga gratisprogram (typ EMC) för step-/dir-signaler så tänkte jag börja så. Det går ju alltid att förbättra senare :) .

Vad/var pluggar du?

Arvid
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg av cyr »

Jag har använt både full och gratisversionerna av både Alteras och Xilinx program, tycker nog inte den ena är mer buggig än den andra. Vilket man använder styrs ju å andra sidan av vilka chip man tänkt använda...

Men är programmerbar logik verkligen rätt grej till en PID-regulator? Känns som en processor (kanske en DSP med inbyggda A/D och D/A omvandlare) vore bättre.
Användarvisningsbild
strombom
Inlägg: 3305
Blev medlem: 27 maj 2003, 10:50:20
Ort: Sollentuna / Stockholm
Kontakt:

Inlägg av strombom »

Jag läser andra året på Automation & Mekatronik på Chalmers. Läser grundkurs i reglerteknik just nu så jag börjar väl få lite koll på PID-regulatorer antar jag :) Jag byggde dock maskinen förra året och då kunde jag ju inget sånt!

Att tolka rå g-kod i en FPGA:n känns lite jobbigt... Jag använder en ATMega16 till min maskin och den tar som sagt in koordinater den ska gå till, jag kör den i 16 MHz och varje Hz utnyttjas ;) Jag anser dock den delen av maskinen som färdig och nöjer mig med hur den funkar nu. Lite vibrationer uppstår p.g.a att jag bara har halvsteg, vore trevligt med mikrosteg, men det klarar inte mina drivkretsar och mikroprocessorn skulle inte hinna med det...

Det jag kan förbättra är windowsprogrammet som tolkar gerberkoden, den stöder inte så många kommandon. En bättre jog-funktion skulle jag även behöva, men den skulle man helst ha i hårdvara med några fina knappar och en display.

Just nu fungerar fräsen bra ihop med filerna man kan få av Eagle och CorelDraw. Jag har även använt http://www.deskproto.com/ som funkar riktigt bra och kan användas för 3D objekt (även 4D om man lägger till en roterande axel) !

/Johan
Användarvisningsbild
strombom
Inlägg: 3305
Blev medlem: 27 maj 2003, 10:50:20
Ort: Sollentuna / Stockholm
Kontakt:

Inlägg av strombom »

vad ska man med A/D omvanlare till ?

En DSP låter ju lite lättare. Hur som helst måste det ju vara något som kan räkna väldigt snabbt, en vanlig enchipsdator lär inte räcka till...

/Johan
Användarvisningsbild
arvidb
Inlägg: 4537
Blev medlem: 8 maj 2004, 12:56:24
Ort: Stockholm

Inlägg av arvidb »

Ja nu är ju inte jag någon expert men...

det trevliga med programmerbar logik som jag har förstått det är ju att man kan få den att fungera som DSP om man vill det, eller mikrokontroller om man vill det, eller en kombination. Och så kan den ta hand om RS232, räkna kvadratursignaler o.s.v. parallellt.

Den PID-regulator jag har skrivit multiplicerar t.ex. felet (16 bitar signed) med tre olika konstanter (som motsvarar Kp, Ki, Kd) som ska sättas via dator/RS232. Konstanterna är unsigned 16 bit. Resultatet av multiplikationen blir då är 32-bitars signed. Detta vore lite jobbigt i en normal mikrokontroller, men görs på en instruktion i FPGAn. Jag är faktiskt rätt impad :) . Jag hade lite problem ett tag med att den envisades med att göra alla tre multiplikationer parallellt (inom samma klockcykel!), men det tog lite väl mycket logik så jag har lyckats få den att lugna ner sig lite nu, så den tar en i taget :) .

Jag har ingen erfarenhet av DSPer, men om jag fattat rätt funkar de ungefär som en mikrokontroller med avancerad hårdvara för multiplikation och division? Vad använder man för typ av programmeringsspråk?

Arvid
Användarvisningsbild
arvidb
Inlägg: 4537
Blev medlem: 8 maj 2004, 12:56:24
Ort: Stockholm

Inlägg av arvidb »

Johan:

Det skulle kännas nyttigt att få lite kommentarer om min PID-implementering av nån som har gått reglerteknik. Jag har försökt läsa på själv med hjälp av internet.

Insignal till regulatorn i detta fall är ju positionsfelet. Utsignal är hastighet. Så jag valde den inkrementella varianten av PID-regulator. Motorn fungerar som en integrator i detta fall, där hastighet integreras till position.

I en diskret PID-regulator:

Om:
y[n] är utsignal (position) vid steg n
dy[n] är ändringen av positionen (d.v.s. hastigheten)
e[n] är felet (position) vid steg n
Kp är "proportional constant" (proportionella konstanten? svårt med svenskan här :))
Ti, Td är tidskonstanterna för integrerande och differentiella termerna.

så har vi

y[n] = Kp * (e[n] + h/Ti*Sigma(i=0->n av e) + Td/h*(e[n] - e[n-1]).
dy[n] = y[n] - y[n-1] = (med lite trixande och Ki=Kp*h/Ti, Kd=Kp*Td/h) =
dy[n] = Kp*(e[n] - e[n-1]) + Ki*e[n] + Kd*(e[n] - 2*e[n-1] + e[n-2]).

*puh*

Den sista algoritmen är den jag har valt att implementera, fast jag har förenklat den lite till. Tror du jag har fattat teorin rätt??? :?

Arvid
danei
EF Sponsor
Inlägg: 26335
Blev medlem: 2 juni 2003, 14:21:34
Ort: Östergötland
Kontakt:

Inlägg av danei »

strombom skrev:(även 4D om man lägger till en roterande axel) !
Hur menar du med fyra dimensioner?
Användarvisningsbild
strombom
Inlägg: 3305
Blev medlem: 27 maj 2003, 10:50:20
Ort: Sollentuna / Stockholm
Kontakt:

Inlägg av strombom »

arvidb:
din ekvation såg ju enkel och fin ut men det svåra med regulatorer är väl hur man ska dimensionera dem antar jag...

jag skrev ett litet program som använde din ekvation: http://193.11.236.26:1234/projekt/upload/servo.exe

Det funkade ju riktigt bra men när man ställer in parametrarna blir det ju lite klurigt eftersom motorn i verkligheten både har integralverkan och tidskonstant...

danei:
ok kanske inte 4 dimensioner då :) jag menade bara att man kommer åt från fler vinklar än med bara tre axlar...

/Johan

Edit: kanske bör tillägga att man ska klicka på den svarta linjen för att ange referens!
Användarvisningsbild
Chribbe76
EF Sponsor
Inlägg: 1167
Blev medlem: 17 januari 2004, 22:43:17
Ort: Stockholm

Inlägg av Chribbe76 »

Jag har väldigt länge varit sugen på att bygga en servo-kontroller med ds-PIC.

Ta en titt på databladen (jag får iaf ståfräs :oops: )
http://ww.microchip.com/ParamChartSearc ... &pageId=75
Användarvisningsbild
arvidb
Inlägg: 4537
Blev medlem: 8 maj 2004, 12:56:24
Ort: Stockholm

Inlägg av arvidb »

Johan:

coolt program :)

Vad gäller att hitta rätt parametrar så tänkte jag bygga in en funktion där man kör servot open-loop och kan läsa tillbaka positionen. Då bör man kunna se vad varje axel på maskinen har för stegsvar (= hur lång tid det tar för motorn att komma upp i hastighet). Sen har jag för mig att det finns metoder för att räkna ut parametrarna utifrån det? Har inte läst på så mycket om det dock...

Arvid
Skriv svar