Teoretisk maximal matningshastighet.

Robot, CNC, Pneumatik, Hydraulik, mm
Användarvisningsbild
SeniorLemuren
Inlägg: 8332
Blev medlem: 26 maj 2009, 12:20:37
Ort: Kristinehamn

Teoretisk maximal matningshastighet.

Inlägg av SeniorLemuren »

Just nu är det en Arduino Mega som driver X,Y,Z på min CNC-fräs.

Den skall alltså läsa in gcoden från min laptop via usd-porten, förvandla den till koordinater och flytta axlarna med att styra stegmotorerna. Stegmotorerna kräver 200 x 16 pulser per varv. (microstegning = 16 steg/hel puls)

Ett varv flyttar varje axel 4 mm. alltså 800 pulser per mm, när alla axlar flyttas samtidigt så blir det 3 x 800 = 2400 pulser per mm. Säg att man har en matning på 2000 mm/min. Det innebär att Megan skall spotta ur sig 2400x2000/60= 80.000 pulser/s utan avbrott medan den samtidigt läser in gcoderna från USB-porten, räknar ut koordinaterna för varje gcode och omsätter det till pulser som matas ut på tre pinnar plus tre pinnar för rotationsriktning.

Vore intressant att se en uträkning på vilken maximal matningshastighet Megan (16MHz) klarar utan att missa coordinater. Jag upplever det som att det blir problem om jag överstiger 1200 mm/min. Håller därför på att byta ut Megan mot en ESP32 och closed loop.
Användarvisningsbild
SeniorLemuren
Inlägg: 8332
Blev medlem: 26 maj 2009, 12:20:37
Ort: Kristinehamn

Re: Teoretisk maximal matningshastighet.

Inlägg av SeniorLemuren »

Snabba svar med AI :
Bedömning av Kodens Effektivitet
Varje gång Arduino Mega genererar en puls, behöver den:

Läsa in kommandon från USB (G-code).
Utföra nödvändiga beräkningar för att omvandla G-code till koordinater.
Generera pulserna för varje axel (X, Y, Z).
Eventuellt uppdatera stegmotorns riktning.
Med en enkel avbrottshanterare och låg overhead kan varje puls genereras med ett par dussin maskininstruktioner. Men när man tar hänsyn till avbrott, koordinatberäkningar, och USB-inläsningar, kan varje puls kosta betydligt fler klockcykler.

Steg 4: Analysera Begränsningar
Antag att varje puls kräver mellan 50 och 150 klockcykler för att hantera all nödvändig bearbetning:

Vid 50 cykler per puls:
Max pulser/sekund = 16,000,000 cykler/sekund 50

klockcykler per puls = 320,000 pulser/sekund
Max pulser/sekund=50 klockcykler per puls 16,000,000cykler/sekund​
=320,000pulser/sekund

Detta skulle teoretiskt möjliggöra en matningshastighet på:
Max hastighet= 320,000 pulser/sekund
2400 pulser/mm × 60 sekunder/min
= 8,000 mm/min
Max hastighet= 2400 pulser/mm
320,000pulser/sekund × 60sekunder/min=8,000mm/min

Vid 150 cykler per puls:
Max pulser/sekund
= 16,000,000 klockcykler/sekund 150

klockcykler per puls = 106,666 pulser/sekund
Max pulser/sekund= 150klockcykler per puls
16,000,000 klockcykler/sekund = 106,666pulser/sekund

Detta skulle teoretiskt möjliggöra en matningshastighet på:
Max hastighet = 106,666 pulser/sekund
2400 pulser/mm × 60 sekunder/min ≈2,666 mm/min

Max hastighet= 2400 pulser/mm
106,666pulser/sekund × 60sekunder/min ≈2,666mm/min

Steg 5: Jämförelse med Dina Observationer
Du nämnde att problem börjar uppstå vid hastigheter över 1200 mm/min. Detta tyder på att den effektiva klockcykelförbrukningen per puls ligger närmare 133 klockcykler (med hänsyn till overhead från avbrott och andra operationer).

Detta är konsistent med en bedömning där varje steg involverar avsevärd bearbetning och att overhead från inläsning av G-code och konvertering spelar en roll.

Slutsats
För att undvika problem vid högre hastigheter kan du:

Med en Arduino Mega kan du förvänta dig en praktisk maximal matningshastighet runt 1200-1600 mm/min utan att missa koordinater, vilket är ungefär i linje med dina observationer.
hawkan
Inlägg: 3326
Blev medlem: 14 augusti 2011, 10:27:40

Re: Teoretisk maximal matningshastighet.

Inlägg av hawkan »

När jag höll på med laser så var max kring 30.000 steg/sek för en arduino mega (16 MHz) och 90.000 steg/sek för en 32-bit arduino zero (48 MHz).
I runda slängar. Med Marlin 1.x.
Iaf en jämförelsepunkt även om det är en del annat.
Skriv svar