Author |
Topic |
sladdbarn
Member
2846 Posts |
Posted - 2021/03/09 : 20:15:34
|
quote: Det är här THC kommer in:
Mycket intressant, följer med spänning. |
Drömmer om bra ljud... |
|
|
solhaga
100.000-klubben
2674 Posts |
|
solhaga
100.000-klubben
2674 Posts |
Posted - 2021/03/12 : 16:45:00
|
Första testen av Z-axeln. Motorn skall vara en NEMA23 (1,26 Nm), den som syns i videon är lite klen.
Resten av plåtarna för Z-axeln:
Jag var tvungen att göra om Y-vagnen. Resten av plåtarna är för att kunna få Z-axeln i upprätt position. Så det blir en del svetsning.
Tyvärr var 2 mm-plåten lite böjd, så en hel del hål blev inte bra. Visar verkligen på att THC behövs! Jag gör nog om dom med den nya CNC:n.
För min gamla MPCNC hade jag en induktiv givare (PINDA från Prusa) för Z = 0 detektering, men den har gett mig en del trubbel och den ger ju inte samma resultat för tjockare plåtar eller rentav för aluminium. Så jag hade tänkt att för detta bygge använda en BLTouch som är en mekanisk givare med en servostyrd känselpinne. Men det blir lika problematisk med den; skulle pinnen hamna i ett redan hål exempelvis så är ju det kört.
Så det blir en så kallad ohmsk sköld, helt enkelt så dras ett relä eller lysdioden i en optokopplare när denna sköld får kontakt med plåten. Det ger också den fördelen att jag kan detektera kollisioner med plåten under skärningen om det uppkommer slagg. |
Medlemspresentation. Senast lyssnat. Instagram. |
|
|
solhaga
100.000-klubben
2674 Posts |
Posted - 2021/03/13 : 09:51:03
|
Plåtarna tänkte jag svetsa ihop så här (ena gaveln inte ditlagd här):
Den undre vågräta plattan skall alltså skruvas fast i Y-vagnen.
Men jag ser nu att det blir problem med motorfästet, två skruvhål hamnar mitt i den vertikala plåten:
Så antingen gör jag urtag för muttrarna i den vertikala plåten eller så gör jag ett topp/motorfäste i plast. En fördel med det senare är mindre vikt, en annan är att en komplicerad (?) svetsning av små vinkelstöd inte behövs. En nackdel är att jag måste cadda denna detalj, men det är ju meningen med livet, och att den lär ta tid att printa ut. Men, jag väntar ju ändå på den nya motorn. |
Medlemspresentation. Senast lyssnat. Instagram. |
|
|
solhaga
100.000-klubben
2674 Posts |
|
solhaga
100.000-klubben
2674 Posts |
|
solhaga
100.000-klubben
2674 Posts |
Posted - 2021/03/18 : 08:50:07
|
Så då är Z-axeln klar:
Här är ett farttest. Maxfarten är 90 mm/s vid de stora förflyttningarna och 140 mm/s vid de små. Det bör räcka för THC; maxhastigheten är ju 140 mm/s i X/Y-led och höjdskillnaden på grund av skevad plåt lär inte överstiga 1 mm/mm. |
Medlemspresentation. Senast lyssnat. Instagram. |
Edited by - solhaga on 2021/03/18 10:30:25 |
|
|
govinda
Med nytt namn
2290 Posts |
Posted - 2021/03/18 : 14:09:18
|
Wow Fantastiskt kul |
Music Isn`t my hobby It`s my passion
Professionell Musiklyssnare Musik-Tantriker |
|
|
solhaga
100.000-klubben
2674 Posts |
Posted - 2021/03/18 : 16:45:43
|
Ja, visst är det. Jag har ju hållt på ett tag nu och det är skönt nu när allt det mekaniska är klart.
Så till lite elektronik. Jag tänker ju skippa både induktiv givare och mekanisk till förmån för en elektrisk för Z=0 detektering. IHS, Initial Height Sensing, avser användandet av en så kallad ohmsk probe, ohmic probe på originalspråket. Den ohmska proben gör att man kan detektera Z=0, alltså kontakt med plåten som man just skall till att skära.
Men det är inte så hälsosamt för övrig elektronik att vara i kontakt med "plasmajorden", så någon slags isolation behövs. En enkel relälösning kan ju fungera, det är bara att låta inaktiverad PLASMA START styra att proben är inkopplad. Men det förutsätter även en gemensam jord, så det går åt ett relä till för att koppla bort den. En annan nackdel med en relälösning är jag inte kan få kollisionsdetektering.
Så det får bli en optokopplarlösning med en 4N35. Som spänningskälla tänker jag mig ett 12-voltsbatteri, LR23, med en kapacitet på 38mAh. Det dras ju ström 10 mA enbart vid själva nolldetekteringen, så det skall nog räcka ett tag.
Vo kopplas till en ingång på kontrollerkortet. Jag vet inte om det interna ryckuppmotståndet räcker för optokopplarens emitter, men det är väl bara att testa. Jag får se hur jag behöver använda basen, men jag börjar med 0,1 nF mellan bas och emitter som lågpassfiltrering.
Sedan är ju det frågan var jag placera optokopplaren, vid plasmaskäraren eller i kontrollerlådan? |
Medlemspresentation. Senast lyssnat. Instagram. |
Edited by - solhaga on 2021/03/18 22:58:41 |
|
|
peterh
Semesterfirare
1056 Posts |
Posted - 2021/03/18 : 22:14:46
|
Detta är imponerande. Fanns det något innovationspris att nominera skulle jag inte tveka ! |
|
|
solhaga
100.000-klubben
2674 Posts |
Posted - 2021/03/21 : 10:33:41
|
Nja, någon direkt verkshöjd är ju det inte.
Nåväl, det fungerade och hela elektroniken hamnade i kontrolllådan.
Som underrede tänker jag mig något väldigt enkelt; gavlar av Lecablock med fyra stycken 60x40x2 mm stålprofiler liggande ovanpå:
Givetvis så får jag förankra profilerna sinsemellan och mot Lecablocken. Ovanpå detta lägger jag en MDF-skiva och sedan det gamla bordet på det. |
Medlemspresentation. Senast lyssnat. Instagram. |
Edited by - solhaga on 2021/03/21 10:34:24 |
|
|
solhaga
100.000-klubben
2674 Posts |
Posted - 2021/03/25 : 17:33:57
|
Då var det dags att ta sig an THC:n.
Spänningarna jag kan förvänta mig är upptill 200 V, men plasmabrännaren har en 1:50 skalning så 4 V är maximum. Men det är en flytande potential som måste hållas isolerad från kontrollerlådan så jag använder en isolationsförstärkare ACPL-790B för det. Den har dock ett begränsad linjärt omfång, så jag måste ytterligare skala ned 1:10 med en potentiometer på ingången. Normalt sett så skulle utgångarna gå via en differentialförsärkare samt ytterligare ett steg, men jag kopplar utgångarna direkt till SKR:ens AD-ingångar. Jag har tidigare lyckats att få en acceptabelt upplösning med en Arduinos 8 bitars AD, så SKR:ens 12 bitar kan ju bara bli bättre, eller.
ADC:ns Vref är 3,3 V, så 3,3/1024 ger 3,2 mV per bit som gånger 10 och sedan gånger 50 ger 1,6 V, dvs i storleksordningen 1 % av 200 V. Jag har en obekräftad uppgift om att 1 V innebär 0,4 mm ändring av gapet, så jag skulle i så fall hamna på en minsta justering baserat på avläst värde om 0,6 mm. Sedan kan man ju medelvärdesbilda samt titta på långsiktiga trender; plåtens derivata i höjdled är ju inte så stor, så det kanske räcker till än bättre.
Först måste jag klura ut hur jag får läst in THC-värdena; det är en ganska långa ISR... Men jag ju åtminstone gjort den delen förut, värre blir det med att få till korrektionsvärdet i stepper-ISR:en. |
Medlemspresentation. Senast lyssnat. Instagram. |
Edited by - solhaga on 2021/03/25 17:34:33 |
|
|
solhaga
100.000-klubben
2674 Posts |
Posted - 2021/03/31 : 00:15:06
|
Efter en djupdykning i en annan ISR, den för temperaturinläsning, har jag där lyckats läsa in de två spänningarna, kolla skillnaden och polariteten mot förväntat värde för att sedan använda ett API för babystep i samma ISR.
Inläsning:
#if COREXY_PLASMA
case PrepareTHC_1: HAL_START_ADC(VOLTAGE_DIVIDER_PLUS_PIN); break;
case MeasureTHC_1:
voltage_plus = HAL_READ_ADC();
WRITE(PLASMA_VD_UPDATES_PIN, HIGH);
break;
case PrepareTHC_0: HAL_START_ADC(VOLTAGE_DIVIDER_MINUS_PIN); break;
case MeasureTHC_0:
voltage_minus = HAL_READ_ADC();
WRITE(PLASMA_VD_UPDATES_PIN, LOW);
actualThcVoltage = ((voltage_plus - voltage_minus) - OFFSET)/SLOPE;
plasmaManager.setActualThcVoltage(actualThcVoltage);
break;
#endif
PLASMA_VD_UPDATES_PIN togglar jag för att kunna se samplingsfrekvensen.
Uträkning:
#if COREXY_PLASMA && ENABLED(BABYSTEPPING) && DISABLED(INTEGRATED_BABYSTEPPING)
// Check if THC is enabled
if (plasmaManager.isThcEnabled() == true) {
// Check hysteresis
if (abs(plasmaManager.getWantedThcVoltage() - plasmaManager.getActualThcVoltage()) > 1) {
// Calculate direction
if (plasmaManager.getWantedThcVoltage() > plasmaManager.getActualThcVoltage()) {
babystep_position += BABYSTEP;
if (babystep_position > 20.0) { // check max limit, should be 20!
babystep_position = 20.0;
} else {
babystep.add_mm(Z_AXIS, BABYSTEP);
}
} else {
babystep_position -= BABYSTEP;
if (babystep_position < -20.0) { // check min limit, should be -20
babystep_position = -20.0;
} else {
babystep.add_mm(Z_AXIS, -BABYSTEP);
}
}
}
}
#endif
Kodsnutten ovan får jag nog fila på lite; det är lite för många if-nivåer för min smak.
Sättning:
#if ENABLED(BABYSTEPPING) && DISABLED(INTEGRATED_BABYSTEPPING)
babystep.task();
#if COREXY_PLASMA
babystep.task();
babystep.task();
babystep.task();
#endif
#endif
Babystep är normalt en ganska långsam funktion som används för "first layer calibration", så jag fann att multipla anrop till babystep.task() var nödvändiga för att få en vettig derivata för höjdjusteringen. Jag vill naturligtvis ha en bättre lösning.
Jag har simulerat bågspänningen, som alltså visar på höjden mellan munstycket och plåten, med ett varierbart spänningsaggregat. Z-axeln har då gått upp och ner, men med fulla utslag eftersom jag inte hinner att göra så korta felspänningar med potentiometern; spänningen läses av 200 ggr i sekunden. Så loopen måste slutas i verkligheten; bågspänningen sjunker och ökar då med minskat respektive ökat avstånd när skärmunstycket far över plåten. Som mest är hastigheten 140 mm/s och skäraren måste kunna kompensera i höjdled för böjda och ojämna plåtar samt att plåten kan böjas vid själva skärningen. |
Medlemspresentation. Senast lyssnat. Instagram. |
Edited by - solhaga on 2021/03/31 00:16:37 |
|
|
peterh
Semesterfirare
1056 Posts |
Posted - 2021/03/31 : 09:09:02
|
EN liten synpunkt : du gör "plasmaManager.getWantedThcVoltage() - plasmaManager.getActualThcVoltage()" 2 ggr, jag vet inte hur långsam den är men jag skulle göra det en gång och sätta värdena i en variabel Variabel1=plasmaManager.getWantedThcVoltage(); variabel2=lasmaManager.getActualThcVoltage(); för att sedan gör abs(variabel1) och resten .
Men antalet nästlade "if" ser jag inget problem med.
Är det en arduino ?
|
|
|
solhaga
100.000-klubben
2674 Posts |
Posted - 2021/03/31 : 10:32:21
|
Att använda mellanvariabler skulle nog göra det mer ineffektivt plus potentiellt göra koden mer svårläst. Dessutom så skulle "Variabel1=plasmaManager.getWantedThcVoltage()" sabotera hela klasstänket. Eftersom plasmaManager.getWantedThcVoltage() faktiskt kan ändras mellan beräkningarna, så skulle den andra beräkningen kunna gå åt fel håll. Om det spelar någon roll i praktiken låter jag vara osagt.
Nej, det är en SKR 1.4 Turbo baserad på 32-bitars 120 MHz LPC1769 Arm Cortex. För menyhantering använder jag en TFT35. De är mycket trevliga att arbeta med och tillsammans med VSCode och insticksmodulerna PlatformIO samt Auto Build Marlin blir cykeltiden kort.
En ren total kompilering tar 53 sekunder, har du bara ändrat i en fil tar det 6 sekunder. Uppladdning till SKR:ens SD-kort tar 7 sekunder. Sedan måste SKR:en återställas två gånger, en gång för att ladda in binären till minnet och en gång för att starta med den nya binären. Det tar 24 sekunder.
Liknade tider för programvaran för TFT:en, men där måste man överföra binären till TFT:ns SD-minneskort "off-line". Om man bara skall ändra på TFT:ns menyer, så behöver man bara ändra i en klartext
|
Medlemspresentation. Senast lyssnat. Instagram. |
|
|
peterh
Semesterfirare
1056 Posts |
Posted - 2021/03/31 : 10:50:05
|
Nja, det kan nog diskuteras. Att anropa en rutin ( vars flöde vi inte vet) 2 ggr i tät följd drar mer resurser än att anropa en gång och spara i en variabel. Hela sekvensen skall ju operera på ögonblicksvärdet. Om den dessutom skulle ändras mellan anrop 1 och anrop 2 så invalideras ju den första if-satsen och man kan ta fel väg.
Nej, läs en gång och agera därefter tycker jag. Men det är ju en mindre optimering och ditt första inlägg var ju avsett att få det mera lättläst, så där har du rätt.Att vara lättläst är ett bra steg till att få det korrekt.
|
|
|
FForsman
100.000-klubben
2593 Posts |
Posted - 2021/03/31 : 11:07:46
|
Vilket kul projekt. Önskar att jag hade förmågan att ge mig i kast med dylika konstruktioner men det är inte inom räckhåll. Imponerande! |
Ett forum blir till det som medlemmarna bidrar med. Skriv! |
|
|
solhaga
100.000-klubben
2674 Posts |
Posted - 2021/03/31 : 12:30:40
|
quote: Att anropa en rutin ( vars flöde vi inte vet) 2 ggr i tät följd
Det är bara en getter:
quote: Getters and setters are ONLY for incapsulating the data, and the access to it. There is NO performance overhead, simple getters and setters are inlined by the compiler.
quote: Om den dessutom skulle ändras mellan anrop 1 och anrop 2
Det inte möjligt eftersom vi redan är i en ISR, så min kommentar var felaktig. Om inte ISR:en är preemptiv förstås.
@FForsman: Och jag önskar att jag hade din "finish". |
Medlemspresentation. Senast lyssnat. Instagram. |
|
|
FForsman
100.000-klubben
2593 Posts |
Posted - 2021/03/31 : 17:19:25
|
quote: @FForsman: Och jag önskar att jag hade din "finish".
Det måste vara Pix du syftar på |
Ett forum blir till det som medlemmarna bidrar med. Skriv! |
|
|
solhaga
100.000-klubben
2674 Posts |
Posted - 2021/04/13 : 19:17:52
|
Dags att riva ut den gamla plasma CNC:n:
Och mura upp ett fundament för den nya samt svetsa ihop ett underrede:
IHS mankerade, antagligen så hade den legat an min dummyplåt och dragit ur batteriet. Så när jag skulla testköra någon dag senare körde Z-led i botten och detta hände:
Så nu har jag bytt ut batteriet mot en vårta och bytt ut Z-kopplingen mot en "claw"-typ:
|
Medlemspresentation. Senast lyssnat. Instagram. |
Edited by - solhaga on 2021/04/13 19:20:05 |
|
|
solhaga
100.000-klubben
2674 Posts |
|
solhaga
100.000-klubben
2674 Posts |
Posted - 2021/04/21 : 09:31:41
|
Bordet färdigt, jag lade dit en 12 mm formplyfa som bordsskiva som fästes med silikon. CNC:en ovanpå det; den skruvades och silikonades fast i bortskivan. Jag upptäckte att samma problem som jag hade med Y-axeln också fanns på X-axeln. Så den har fått demonteras och skruvhålen borrats större i släden för större spel så att lagren kunde bli mer samspelta. Sedan har en sarg för vattentråget silokonats.
I sargen lägger jag sedan en gummiduk. |
Medlemspresentation. Senast lyssnat. Instagram. |
Edited by - solhaga on 2021/04/21 18:59:49 |
|
|
solhaga
100.000-klubben
2674 Posts |
Posted - 2021/04/21 : 18:57:30
|
För att skydda gummiduken från plasman, så har jag lagt klinkers i botten:
På min förra plasmaskärare hade jag en plåt, men den var bara 100x50 cm.
Ett bärlager raster bestående av 25x25x3 T-profil:
Topprastret av samma material:
I detta tråg skall Borax utblandat i vanligt vatten hällas. |
Medlemspresentation. Senast lyssnat. Instagram. |
|
|
solhaga
100.000-klubben
2674 Posts |
Posted - 2021/04/22 : 19:42:24
|
Upptäcker när jag har spänt bältena att plåten för rullhållarna är alldeles för klen:
Det gör att varje start och stopp av framförallt X-axeln blir lite ryckig eftersom plåten flexar. Jag såg givetvis detta förut, men det rangliga bordet på hjul som jag har i labbet maskerade effekten av det en hel del.
Nåväl, en bit av T-profilen ovan gör nog susen:
Det blir till att svetsa dit en på varje sida i morgon. |
Medlemspresentation. Senast lyssnat. Instagram. |
|
|
Pac
200.000-klubben
22004 Posts |
Posted - 2021/04/23 : 07:59:46
|
När jag jobbade på Lidköping-Machine tools för eoner av år sedan så var det elektronik för positionering av slädar jag bland annat utvecklade. Vi positionerade slädar som vägde upp emot 700-750 kilo och vi använde glas-skalor med lasermätning så vi positionerade med ytterst små toleranser. En nyckel till att kunna göra det är att man har en positionering som har låg friktion och att man inte "skakar" fundamentet. Man måste kunna rampa upp momemntet långsamt och när man väl brutit genom friktionen sänka farten och gå långsamt in emot sitt börvärde.
Det där är ingen "space age science" utan ett ganska vanligt förfarande så din mjukvara borde kunna bistå så att du slipper bygga ett fundament som måste förankras i urberget...???
P.S. De maskinerna jag var med och byggde var tvugna att vara frikopplade från varandra(inte stå på samma gjutna golv) för om de gjorde det blev sluttoleransen lidande eftersom de "skakde" varandra så hårt att toleransen på slutprodukten blev sämre. Så vibrationskontroll är MYCKET viktigt för att få de toleranserna man eftersträvar vid mekanisk tillverkning. |
// Per Adelsson, pac(a)hififorum.nu, Admin och ägare HiFiForum.nu // HiFiForum.nu's regler, Artikelregister
|
|
|
Topic |
|