ELS - Electronic leadscrew

Berätta om dina pågående projekt.
H.O
Inlägg: 5716
Blev medlem: 19 mars 2007, 10:11:27
Ort: Ronneby

ELS - Electronic leadscrew

Inlägg av H.O »

Min svarv, en VF290 med 160mm chuck, 38mm spindelgenomgång och 700mm dubbavstånd, är rätt OK men den har en stor nackdel. Växellådan har tre fasta lägen och om inget av de råkar vara "rätt" måste man byta kugghjul i utväxlingen mellan spindeln och växellådan för matning/gängning - brukligt på denna typ av maskiner Dessa kugghjul håller inte direkt Schweizisk kvalitét och det är pilligt att justera hela drivlinan för lagom kuggingrepp och det tenderar att skramla och rappla en del.

Lösningen, förutom att köpa en riktig svarv, är att helt skippa den mekaniska kopplingen mellan spindel och växellåda och istället ersätta denna med en enkoder på spindeln, elektronik som håller koll på spindelpositionen och driver en motor kopplad till ingående axel på växellådan.

Detta har gjorts av många före mig. Det finns kommersiella produkter att köpa från exempelvis Rocketronics och det finns open source projekt som t.ex det av/från Clough42. Vad dessa (och alla andra jag sett) har gemensamt är att de använder en stegmotor men eftersom jag har konstruerat min egna DC-servodrivare så tänkte jag att det vore kul att faktiskt använda den till nått och på så sätt kanske förbättra såväl hårdvara som kod - och så är det ju kul också.

Så här ser svarven ut när banjo och kuggdrev bortplockade:
1-Headstock.jpg
Steg 1 är att få dit en enkoder på spindeln. Valet föll på en 1:2 remtransmission och en enkoder med 500 cykler per varv. Totalt ger detta 4000 pulser per varv. Helst hade jag velat ha 1:1 men eftersom spindelaxeln är så pass stor hade det behövts ett väldigt stort remdrev på enkodern vilket i sin tur, troligtvis, hade behövt extra support i form av laget och annat så det fick bli en 1:2 uppväxling. I praktiken betyder det att jag inte kan använda index-pulsen på enkodern men jag har ÄNDÅ ingen ingång för den i nuvarande version av servo-drajven.

Så, ett remdrev för 10mm bred HTD-rem med 3mm pitch svarvades för att passa precis utanpå befintligt kuggdrev. Det hålls på plats av två stoppskruvar placerade 90° från varandra:
2-Spindle encoder pulley.jpg
Ett fäste för enkodern tillverkades (och här kom första misstaget men det får vara så). Enkoder med drev och rem monterades.
Det är tight mellan spindelns drivrem och enkoderhuset men det GÅR att tråckla ut remmen när man behöver.
3-Spindle encoder.jpg
Fortsättning följer...
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
H.O
Inlägg: 5716
Blev medlem: 19 mars 2007, 10:11:27
Ort: Ronneby

Re: ELS - Electronic leadscrew

Inlägg av H.O »

Steg 2 - Motorfäste.

DC-motorn jag tänkt använda är specad till max 4000rpm, vid 2500rpm ger den 0.5Nm kontinuerligt - i runda slängar 130W så inget monster. Kortvarigt kan man dock ledigt ta ut det tredubbla om drivsteget kan leverera ström så det räcker. Stigningen på skruven för gängskärning är 3mm och med växellådan i matningsläge rör sig X-axeln 2mm (hälften på Z) för varje varv på ingående axel, allt detta med växellådan i läge "A" som i mitt fall betyder 1:1. Det finns även 1:2 ("B") och 2:1 ("C").

Gängning kräver inte så mycket vridmoment men matning gör det, troligtvis pga höga förluster i drivlinan. Enklare svarvar använder skruven även för matning men min har separat drivning för matningen.

Efter mycket räknande och pusslande med olika utväxlingar och enkoderupplösningar föll valet på en remtransmission med utväxling 6.25:1 - i princip så mycket jag lyckades få plats med - och en enkoder för motorn med 600 cykler (2400 "pulser") per varv.

Motorfästet konstruerades för att fästas till ingående axel på samma sätt som banjon för kuggdreven:
4-Drivetrain.PNG
Fästet frästes sedan ut ur 12mm tjock aluminium i hembyggda minifräsen:
5-Motormount.jpg
6-Motormount.jpg
Och testmonterades efter lite handpåläggning:
7-Motormount.jpg
Remdrevet svarvades upp för att kunna monteras på ingående axel med en taperlock-bussning:
8-Drive pulley.jpg
Fortsättning följer...
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Kulla
Inlägg: 1269
Blev medlem: 7 januari 2010, 10:06:11
Ort: Sandared
Kontakt:

Re: ELS - Electronic leadscrew

Inlägg av Kulla »

Ser riktig bra ut, något jag vill också göra så fort jag har tid. Fortsätta med bilder :)
H.O
Inlägg: 5716
Blev medlem: 19 mars 2007, 10:11:27
Ort: Ronneby

Re: ELS - Electronic leadscrew

Inlägg av H.O »

Steg 3 - Färdigställa det elektromekaniska.

Kabeln på enkodrarna var naturligvis för korta så de behövde skarvas. Jag hade några stumpar tunn, smidig, PUR-mantlad CAT5-kabel som passade perfekt.
9-Encoder cable.jpg
Skärmningen återställd så gott det går. Detta fixeras med ett lager kaptontejp och sedan två lager krympslang.
10-Encoder cable.jpg
Det är tight. Den gamla skyddskåpan är "lite" för kort nu när DC-motorn sticker ut så den behöver moddas eller nytillverkas. Av den anledningen hade jag velat ha motorn under/bakom bädden - typ rakt under spindelmotorn men det hade inneburit krångligare motorfäste och att leda remmen dit hade börjat likna kamremmen på en bilmotor :-)
11-Headstock.jpg
Så för att utvärdera om detta ens fungerar med denna servomotorn och min egna servodrive får det här duga.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
H.O
Inlägg: 5716
Blev medlem: 19 mars 2007, 10:11:27
Ort: Ronneby

Re: ELS - Electronic leadscrew

Inlägg av H.O »

Systemuppbyggnad.

Här är en skiss på hur systemet i sin helhet ser ut:
12-Architecture.PNG
Servodrivaren styrs med steg- och riktning, som vilken stegmotordrivare som helst, så mellan spindelenkodern och serovdrivaren sitter en konverter. Denna klarar drygt 200.000 flanker per sekund vilket i mitt fall, med 4000 flanker per spindelvarv, innebär en maximal spindelhastighet på 3000rpm. Svarven, i originalutförande, maxar på 1800rpm men framtida uppgraderingar kan komma att öka på det lite.

I "vanliga fall" konfigureras servo-drivaren med hjälp av ett terminalprogram och en RS232<->TTL omvandlare eller USB UART (FTDI, CH340 etc). Detta görs en gång när den driftsätts men i den här applikationen måste parametern som styr "utväxlingen" mellan inkommande steg-pulser och det faktiska börvärdet kunna ändras på ett enkelt sätt baserat på vilken gängstigning eller matning/varv jag vill köra - en PC med terminalprogram duger inte.

Så här ser regulatorn i servodrivaren ut, bilden kommer från manualen till den "UHU uppgraderingsmodul" jag utvecklade och sålde för ett antal år sedan och det är alltså inställningen för "step multiplier" som måste ändras varje gång en ny gängstigning eller matning/varv väljs. Koden för "step-multiplier-blocket" i servodrivaren har modifierats från hur det fungerade initialt men mer om det senare.

13-Controler diagram.PNG
Förutom UART-linan mellan frontpanelen och servodrivaren finns också två diskreta I/O. En Fault-signal från och en Enable-signal till servodrivaren.
Användargränssnittet blir 4 tryckknappar och en 4x20 LCD, hjärnan bakom panelen en PIC18F25K22. Alltsammans (förutom spänningsaggregatet) förpackas i en gemensam låda. Layout av frontpanel för lådan:
14-UI Layout.PNG
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
säter
Inlägg: 32567
Blev medlem: 22 februari 2009, 21:16:35
Ort: Säter

Re: ELS - Electronic leadscrew

Inlägg av säter »

H.O skrev: 14 augusti 2023, 20:39:33 I praktiken betyder det att jag inte kan använda index-pulsen på enkodern men jag har ÄNDÅ ingen ingång för den i nuvarande version av servo-drajven.
Det var ju lite synd.
Det hade blivit en fin finess annars.
H.O
Inlägg: 5716
Blev medlem: 19 mars 2007, 10:11:27
Ort: Ronneby

Re: ELS - Electronic leadscrew

Inlägg av H.O »

Finess på vilket sätt?
Jag har funderat på om jag verkligen tappar någon funktionalitet genom att inte ha den tillgänglig men kan inte komma på vad.

På en CNC-maskin är den ju i princip nödvändig men detta är ju en manuell maskin.
X-IL
EF Sponsor
Inlägg: 8271
Blev medlem: 3 december 2008, 07:47:20
Ort: Hallstahammar

Re: ELS - Electronic leadscrew

Inlägg av X-IL »

Möjligen skulle man kunna få till flerstartsgängor? Alternativt synka en gänga mot nånting på delen så att man alltid fick start och slut på gängan på samma rotationsposition jämfört med spindeln.
H.O
Inlägg: 5716
Blev medlem: 19 mars 2007, 10:11:27
Ort: Ronneby

Re: ELS - Electronic leadscrew

Inlägg av H.O »

Fast det är ju jag som kopplar in/ur drivningen och det finns ju inte en möjlighet att jag skall kunna "pricka" indexpulsen vid hastigheter över 0.5rpm.

Jaja, det hade inte varit någon nackdel att ha den tillgänglig men vi får se. Jag tror att dess avsaknad är det minsta bekymret med den här lösningen :-)
jihe
Inlägg: 2411
Blev medlem: 24 april 2009, 20:16:03

Re: ELS - Electronic leadscrew

Inlägg av jihe »

Det är väl inte så krångligt att komplettera med en separat givare på spindeln för det sen när du har testat konceptet. Jag vet att jag skulle vilja ha det i alla fall. Det är ju en stor fördel att kunna låta elektroniken starta och avsluta gängning, så man slipper passa på spaken i tajta lägen.
H.O
Inlägg: 5716
Blev medlem: 19 mars 2007, 10:11:27
Ort: Ronneby

Re: ELS - Electronic leadscrew

Inlägg av H.O »

Sant, fast då är det inte långt till en fullfjädrad CNC med betydligt mer avancerat användargränssnitt än det jag planerar.
Systemen från Rocketronics spelar i den divisionen. Funkar inte min hembyggda lösning tillfredsställande blir det nog en ELS 4 Pro :-)
Användarvisningsbild
säter
Inlägg: 32567
Blev medlem: 22 februari 2009, 21:16:35
Ort: Säter

Re: ELS - Electronic leadscrew

Inlägg av säter »

H.O skrev: 16 augusti 2023, 10:55:38 Jag har funderat på om jag verkligen tappar någon funktionalitet genom att inte ha den tillgänglig men kan inte komma på vad.
Min tanke var att kunna backa gängmatningen utan att reversera spindeln.
Som du säger är det nog lite överkurs.
Användarvisningsbild
Mizzarrogh
Inlägg: 20344
Blev medlem: 10 september 2006, 12:32:49
Ort: Somewhere over the rainbow... (Hälsingeskogen)

Re: ELS - Electronic leadscrew

Inlägg av Mizzarrogh »

Jag har nog kvar litet CNC kablage om du behöver sedan.
H.O
Inlägg: 5716
Blev medlem: 19 mars 2007, 10:11:27
Ort: Ronneby

Re: ELS - Electronic leadscrew

Inlägg av H.O »

Frontpanelens elektronik får "tillsvidare" bo på en bit experimentort.

15-Electronics.jpg
Stiftlist för displayen, trimpot för kontrastjustering, skruvplintar för matningsspänning och I/O. Flätan sticker iväg till en 7805 som monteras mot baksidan av fronpanelen.
På baksidan, pullupmotstånd, ICSP-header för uC och point-to-point med virtård. Detta kort monteras bakom displayen som i sin tur monteras till frontpanlen i lådan.

16-Electronics.jpg


I botten på lådan sitter själva servodrivaren (med relevanta modifieringar), omvandlaren från "enkodersignal" till steg och riktning samt en DC/DC för frontpanelens och servodrivaren.
Själva effektdelen på servodrivaren matas med 48VDC (men klarar >60V).

17-Electronics.jpg

Längst ner till vänster kommer kabeln från drivmotorns enkoder in, kopplad direkt till servodrivaren. I mitten kommer kabeln från spindelenkodern in, via omvandlaren till steg och riktning och vidare till "styringången" på servodrivaren. Längst till höger har vi 48VDC in samt motorkablar ut. Uppe till vänster i bild går matningsspänning, UART-kommunikation och diskret I/O till frontpanelen (samt även till UART<->USB omvandlare och en omkopplaren enligt principschema). En ferritkärna visade sig behövas för att UART-kommunikationen mellan frontpanelen och servodrivaren skulle fungera när motorn var "i drift".
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
H.O
Inlägg: 5716
Blev medlem: 19 mars 2007, 10:11:27
Ort: Ronneby

Re: ELS - Electronic leadscrew

Inlägg av H.O »

Den elektroniska "växellådan":
När koden för servodrivaren först utvecklades för >10år sedan var blocket kallat "step multiplier" extremt simpelt. För varje puls in (n) flyttades motorns börvärdesposition med n * x (där x är "multiplikationsfaktorn" i form av ett heltal). Detta innebär att man kan ha en relativt högupplöst enkoder på motorn utan att behöva generera pulståg med relativt höga frekvenser (minns Mach3 med LPT-port etc).

I den här applikationen är detta inte tillräckligt.

Spindelenkodern genererar 4000 pulser varv (500x4x2).
Drivmotorns enkoder genererar 5000 pulser/mm (600x4x6.25/3) förutsatt att växellådan står i läge 1:1 ("A" i mitt fall).

Om vi helt enkelt flyttar drivmotorn ett "steg" för varje inkommande puls får vi en förflyttning (alltså stigning) på 4000/5000=0.8mm per spindelvarv. Vill vi ha 1.6mm stigning flyttar vi drivmotorn 2 "steg" per inkommande puls. Enkelt.

Men om vi vill ha, låt oss säga, 1mm stigning?

Då måste vi teoretiskt sett flytta drivmotorn 1.25 "steg" för varje inkommande puls. Detta är såklart inte möjligt eftersom vi inte kan interpolera linjärt mellan de diskreta "steg" som enkodern genererar. Men eftersom vi har så pass hög upplösning på såväl spindelrotation som drivmotor så fuskar vi lite. För 1mm stigning flyttar vi drivmotorns position 1,1,1,2,1,1,1,2 osv steg för respektive inkommande stegpuls - vilket i snitt ger 1.25 "steg" per inkommande puls.

Detta har implementerats i koden med 7.8 bitars fixed point aritmetik.
Det vill säga: En "multiplikationsfaktor" på 256 resulterar i en "utväxling" på 1:1. En "multiplikationsfaktor" på 128 resulterar i "utväxling" på 2:1. En "multiplikationsfaktor" på 320 resulterar i en "utväxling" på 1:1,25 osv.

På det här sättet och med det här valet av enkoderupplösning(ar) och mekaniska utväxlingar kan jag teoretiskt sett "träffa" alla standard metriska grov och fingängor (utom 0,62mm) från 0.2 till 6mm utan något ackumulerat fel. Tumgängor är inte lika bra...Den som är sämst är 18 gängor/tum med ett ackumulerat fel över en sträcka på 300mm på 0.42mm.

Men det finns begränsningar.....
Omvandlaren för spindelenkodern klarar maximalt 200kHz. Med 4000 pulser per spindelvarv motsvarar detta 3000rpm. (1: Spindeln får aldrig rotera fortare än 3000rpm) när ELS är aktiv.
Drivmotorn är specificerad till maximalt 4000rpm, min gräns går vid 3500rpm. (2: Drivmotorn får aldrig rotera fortare är 3500rpm, alltså aldrig generera en "pulsfrekvens" över 140kHz
Ackumulatorn för inkommande pulser är 7.8 bitar och den läses varje servo-loop (1500ggr/s). (3: Det får aldrig genereras inkommande börvärdespulser med högre frekvens än 127x1500=190.500Hz)

I praktiken innebär dessa begränsningar att varje stigning och matning har ett maximalt spindelvarvtal kopplat till sig. Detta varvtal (inkl lite mariginal) kommer visas utrustningens display.
Om detta spindelvarvtal överstigs med inkopplad matning eller gängning kommer inte längre matningsmotorn hinna med och och därför "larma ut".
Skriv svar