@dc42 OK great thanks! I must have made an error, I'll try again.
Posts made by Jasperg
-
RE: Can anyone using rotational axis help me?
-
RE: Can anyone using rotational axis help me?
@dc42 I have read the documentation you linked. The scenario I have is similar to A:
"A. For motion involving one or more of the X, Y, and Z axes (with or without simultaneous rotational axis motion), the feed rate means length units per minute along the programmed XYZ path, as if the rotational axes were not moving."
But I was hoping to have 2 or more rotational axes, with feed rate calculation based on a solo linear axis. From what I am reading it seems there is not a clear definition for what happens when more than one rotational axes is running at the same time as some linear axes. I had assumed any additional rotational axis would all be calculated independently to finish rotation at the end of the linear movement. But in my testing it seems that with 2 or more rotational axes moving with a linear axis they all start to be calculated as the square root of the sum of squares of all moving axes. Is this correct? Thanks!
-
Can anyone using rotational axis help me?
I am completely stuck. I have been trying on and off for months to work out how to control multiple rotational axes on a machine I am prototyping.
In this post https://forum.duet3d.com/topic/30981 I asked about it before, but I have still not got any further.
In another post I am reading a reference to what I think I am doing. They say;
"I'm assuming the rotation rate is applied to the axis with the greatest travel?"
https://forum.duet3d.com/post/216949But in all my tests no matter what I do, whether I use rotational or not, the travel speed of each axis seems to be the calculated as if I was calculating the speed needed for the square root of the sum of the of the square of the distance moved by all the moving axis, which I think is the correct calculation for a linear axis.
I have so far been reversing the calculation by setting the feed rate to the square root of the sum of the squares of all axes I am moving. This works, But when they are moving difference distances this is very time consuming and hard to keep track of.
I would Ideally like each axis speed to just scale as a % of the axis with the longest travel, which is what I expected from the rotational axis.
I think I have tried every combination of using the predefined rotational axis, adding R1 adding S1 to the M584, but it seems to make no difference.
Am I missing the point of a rotational axis completely? The only thing I can think of that is quite abnormal is that I have a rotational axis that uses 4 motors. Would this be an issue? I have not tested this yet as it only just occurred to me while writing this. But I feel like if this was the issue it would be an unintentional bug in the firmware. If no one has any better Ideas I’ll have to take my machine apart to test this possibility.
Thanks for any help!
-
RE: rotational axis seem to be acting like linear axis
@JoergS5 Thanks so much for your advice! I'll read over this more, these posts look like they will help me get my head around it better
-
RE: rotational axis seem to be acting like linear axis
I realised I never mentioned what firmwhere or hardwhere I am using
M115 FIRMWARE_NAME: RepRapFirmware for Duet 2 WiFi/Ethernet FIRMWARE_VERSION: 3.4.1 ELECTRONICS: Duet WiFi 1.02 or later + DueX5v0.11 FIRMWARE_DATE: 2022-06-01 21:05:38
-
RE: rotational axis seem to be acting like linear axis
@JoergS5 do you know what (r)(c) mean in the out put form the Console below?
if I type M584 into the terminal I get
Driver assignments: X2:7 Y3:8 Z4:9 (r)(c)V0:5 (r)(c)W1:6, 5 axes visible
while my drive mapping is like this
M584 V0:5 R1 S1 ; set drive mapping M584 W1:6 R1 S1 M584 X2:7 R1 S1 M584 Y3:8 R1 S1 M584 Z4:9 R1 S1
then I get
Driver assignments: X2:7 Y3:8 Z4:9 (c)V0:5 (c)W1:6, 5 axes visible
with drive mapping like this
M584 V0:5 R1 ; set drive mapping M584 W1:6 R1 M584 X2:7 R1 M584 Y3:8 R1 M584 Z4:9 R1
and I get
Driver assignments: X2:7 Y3:8 Z4:9 (r)V0:5 (r)W1:6, 5 axes visible
with mapping like this
M584 V0:5 S1 M584 W1:6 S1 M584 X2:7 S1 M584 Y3:8 S1 M584 Z4:9 S1 ; set drive mapping
I am still trying anything I can to understand what is going on. I am beginning to think there is a bug in the source code that means rotational axis are not working I assuming the (r) and (c) are something to do with rotational and linear axis, but no matter what I do it dose not seem to effect the speed of axis movement.
-
RE: rotational axis seem to be acting like linear axis
Hi @JoergS5 ,
Thanks for the advice, but I am not sure it is a speed limit that is causing it... as I am able to get AB to run at the same speed as A alone, but only by scaling up the feed rate when running them both at once, which will be OK as a workaround for what I am doing. But makes it harder to trouble shoot. I will have a look at the kinematics setting you mentioned though, but ideally I would like each axis to be calculated individually.
Do you know am I correct that in theory that rotation axis do not influence each others speed calculation other than scaling them to finish at the same time?
-
rotational axis seem to be acting like linear axis
Hi all,
I am trying to understand if I am using rotational axis correctly.
As I understand it, when moving from point 1 to point 2 (blue line) in the drawing below linear axis calculate the X and Y contribution to that move and scale each to the correct amount. But when if I was moving along red line the distance traveled is less.
This means moving 2 axis at one time will result in the each individual axis running slower than if I was running each on its own.G0 X2 Y2 f80000
will result in each axis moving slower than
G0 X2 f80000
But if I use rotational axis they do not impact on each other in the same way. So in the example below if I rotate A 90 or both A and B 90 both they will run at the same speed?
But when I set up the axis below, they seem to behave like linear axis, as in moving 2 axis at one time by the same amount results in slower movement for both of them, even though from the reference it looks like A,B,C are all treated as rotational axis
M584 A0:2:5:7 B1:3:6:8 M584 C4:9
I have also tried
M584 A0:2:5:7 B1:3:6:8 M584 C4:9 R1
and
M584 A0:2:5:7 R1 M584 B1:3:6:8 R1 M584 C4:9 R1
and
M584 X0:2:5:7 R1 M584 Y1:3:6:8 R1 M584 Z4:9 R1
my complete config file looks like this at the moment
; Configuration file for Duet WiFi (firmware version 3.3) ; executed by the firmware on start-up ; ; for feeder 01-01-2023 ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"chip-chop" ; set printer name ; Network M552 S1 ; enable network M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet ; Drives M569 P0 S0 ; physical drive 0 goes backwards M569 P1 S0 ; physical drive 1 goes backwards M569 P2 S0 ; physical drive 2 goes backwards M569 P3 S0 ; physical drive 3 goes backwards M569 P4 S0 ; physical drive 4 goes backwards M569 P5 S1 ; physical drive 5 goes forwards M569 P6 S6 ; physical drive 6 goes forwards M569 P7 S1 ; physical drive 7 goes forwards M569 P8 S1 ; physical drive 8 goes forwards M569 P9 S9 ; physical drive 9 goes forwards M584 A0:2:5:7 B1:3:6:8 ; set drive mapping M584 C4:9 R1 ; M350 C16 A16 B16 I1 ; E6:6:6 ; configure microstepping with interpolation M92 C40.00 A40.00 B40.00 ; set steps per mm M566 C180.00 A180.00 B180.00 ; set maximum instantaneous speed changes (mm/min) M203 C350000.00 A350000.00 B350000.00 ; set maximum speeds (mm/min) M201 C34000.00 A34000.00 B34000.00 ; set accelerations (mm/s^2) M906 C1800 A1800 B1800 I10 ; set motor currents (mA) and motor idle factor in per cent M84 S1 ; Set idle timeout ; RepRapFirmware applies the M204 accelerations to the move as a whole, and also applies the limits set by M201 to each axis and extruder ; Axis Limits M208 C-10000 A-10000 B-10000 S1 ; set axis minima M208 C10000 A10000 B10000 S0 ; set axis maxima ; Heaters M140 H-1 ; disable heated bed (overrides default heater mapping)
so when running
G92 A0 B0 C0 ;reset cutter motor position to 0 G0 C4000 B4000 f80000 G92 A0 B0 C0 G0 A4000 C4000 f80000 G92 A0 B0 C0 G0 A4000 f80000 G92 A0 B0 C0
I was expecting that moving C and B or A and C would result in a move that is the same speed as just moving A, but it dose not
I think I am missing something? Although I cannot see what!
Any help is much appreciated!
-
RE: x and y axis speed limit?
@dc42 what I did is set the length of the move to 180 and put a very high rate. With what i think are exactly the same settings on each axis. Then gradually up the acceleration that I set in the config file on each new test, originally I was doing this to test at what point the motor stalls, as I wanted to see how effective using 2 motors driving the same belt was at increasing power and speed but at one point the x and y axis stop accelerating any faster, yet the z will continue to do so. I can't find anything that is set any differently between each axis at the moment.
-
RE: x and y axis speed limit?
I have updated the config to have M350 16 micro stepping and M566 180 maximum instantaneous speed change. but did not see any difference.
; Configuration file for Duet WiFi (firmware version 3.3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.3.10 on Sat Jul 02 2022 12:58:01 GMT+0800 (Singapore Standard Time) ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"chip chop" ; set printer name ; Network M552 S1 ; enable network M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet ; Drives M569 P0 S1 ; physical drive 0 goes forwards M569 P1 S1 ; physical drive 1 goes forwards M569 P2 S1 ; physical drive 2 goes forwards M569 P3 S1 ; physical drive 3 goes forwards M569 P4 S1 ; physical drive 4 goes forwards M569 P5 S1 ; physical drive 5 goes forwards M569 P6 S1 ; physical drive 6 goes forwards M584 X0:4 Y1:5 Z2:3 ; set drive mapping E3:4:5 M584 U6 M350 X16 Y16 Z16 U16 I1 ; E6:6:6 ; configure microstepping with interpolation M92 X40.00 Y40.00 Z40.00 U40.00 ;E40.00:40.00:40.00 ; set steps per mm M566 X180.00 Y180.00 Z180.00 U180.00 ;E3.00:3.00:3.00 ; set maximum instantaneous speed changes (mm/min) M203 X350000.00 Y350000.00 Z350000.00 U350000.00 ;E350000.00:350000.00:350000.00 ; set maximum speeds (mm/min) M201 X34000.00 Y34000.00 Z34000.00 U34000.00 ;E29000.00:29000.00:29000.00 ; set accelerations (mm/s^2) M906 X1800 Y1800 Z1800 U1800 I10 ;E1800:1800:1800 I0.1 ; set motor currents (mA) and motor idle factor in per cent M84 S5 ; Set idle timeout ; RepRapFirmware applies the M204 accelerations to the move as a whole, and also applies the limits set by M201 to each axis and extruder ; Axis Limits M208 X0 Y0 Z0 U-5000 S1 ; set axis minima M208 X180 Y180 Z180 U 5000 S0 ; set axis maxima ; Endstops M574 X1 S1 P"xstop" ; configure switch-type (e.g. microswitch) endstop for low end on X via pin xstop M574 Y1 S1 P"ystop" ; configure switch-type (e.g. microswitch) endstop for low end on Y via pin ystop M574 Z1 S1 P"zstop" ; configure switch-type (e.g. microswitch) endstop for low end on Z via pin zstop ; Z-Probe ;M558 P0 H0 F120 T4800 ; disable Z probe but set dive height, probe speed and travel speed ;M557 X0:0 Y0:0 S20 ; define mesh grid ; Heaters M140 H-1 ; disable heated bed (overrides default heater mapping) ; Fans ; Tools ; Custom settings are not defined
-
RE: x and y axis speed limit?
@dc42 at the moment I am just testing each axis with 2 motors mounted on a 2020 with linear rail running back and forth on a belt with T40 pulleys connected to the the motors. I am just sending the gcode below at the moment
g00 x0 y0 z0 f170000 g00 x0 y180 z0 g00 x0 y0 z0 g00 x0 y180 z0 g00 x0 y0 z0 g00 x0 y180 z0 g00 x0 y0 z0 G4 P10 g00 x00 y00 z00 g00 x0 y0 z180 g00 x00 y00 z00 g00 x0 y0 z180 g00 x00 y00 z00 g00 x0 y0 z180 g00 x00 y00 z00 G4 P10 g00 x00 y00 z00 g00 x180 y0 z0 g00 x00 y00 z00 g00 x180 y0 z0 g00 x00 y00 z00 g00 x180 y0 z0 g00 x00 y00 z00 G4 P10
-
RE: x and y axis speed limit?
M98 P"config.g" HTTP is enabled on port 80 FTP is disabled TELNET is disabled M122 === Diagnostics === RepRapFirmware for Duet 2 WiFi/Ethernet version 3.4.1 (2022-06-01 21:05:28) running on Duet WiFi 1.02 or later + DueX5 Board ID: 08DGM-956GU-DJ3SJ-6J1FD-3S06T-9ANZG Used output buffers: 3 of 26 (23 max) === RTOS === Static ram: 23860 Dynamic ram: 74216 of which 0 recycled Never used RAM 13836, free system stack 120 words Tasks: NETWORK(ready,13.3%,203) HEAT(notifyWait,0.0%,388) Move(notifyWait,0.0%,294) DUEX(notifyWait,0.0%,24) MAIN(running,86.6%,384) IDLE(ready,0.0%,30), total 100.0% Owned mutexes: WiFi(NETWORK) === Platform === Last reset 01:47:11 ago, cause: power up Last software reset at 2022-07-09 14:09, reason: User, GCodes spinning, available RAM 10580, slot 1 Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0041f000 BFAR 0xe000ed38 SP 0x00000000 Task MAIN Freestk 0 n/a Error status: 0x00 Step timer max interval 0 MCU temperature: min 37.8, current 41.3, max 42.3 Supply voltage: min 23.8, current 24.3, max 24.6, under voltage events: 0, over voltage events: 0, power good: yes Heap OK, handles allocated/used 0/0, heap memory allocated/used/recyclable 0/0/0, gc cycles 0 Events: 0 queued, 0 completed Driver 0: standstill, SG min 0 Driver 1: standstill, SG min 0 Driver 2: standstill, SG min 0 Driver 3: standstill, SG min 0 Driver 4: standstill, SG min 0 Driver 5: standstill, SG min 0 Driver 6: standstill, SG min n/a Driver 7: standstill, SG min n/a Driver 8: standstill, SG min n/a Driver 9: standstill, SG min n/a Driver 10: Driver 11: Date/time: 2022-07-12 19:29:29 Cache data hit count 4294967295 Slowest loop: 20.39ms; fastest: 0.18ms I2C nak errors 0, send timeouts 0, receive timeouts 0, finishTimeouts 0, resets 0 === Storage === Free file entries: 10 SD card 0 detected, interface speed: 20.0MBytes/sec SD card longest read time 1.5ms, write time 2.0ms, max retries 0 === Move === DMs created 83, segments created 7, maxWait 1448437ms, bed compensation in use: none, comp offset 0.000 === MainDDARing === Scheduled moves 18, completed 18, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === AuxDDARing === Scheduled moves 0, completed 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === Heat === Bed heaters -1 -1 -1 -1, chamber heaters -1 -1 -1 -1, ordering errs 0 === GCodes === Segments left: 0 Movement lock held by null HTTP is idle in state(s) 0 Telnet is idle in state(s) 0 File is idle in state(s) 0 USB is idle in state(s) 0 Aux is idle in state(s) 0 Trigger is idle in state(s) 0 Queue is idle in state(s) 0 LCD is idle in state(s) 0 Daemon is idle in state(s) 0 Autopause is idle in state(s) 0 Code queue is empty === DueX === Read count 0, 0.00 reads/min === Network === Slowest loop: 199.84ms; fastest: 0.08ms Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0), 0 sessions HTTP sessions: 1 of 8 - WiFi - Network state is active WiFi module is connected to access point Failed messages: pending 0, notready 0, noresp 2 WiFi firmware version 1.26 WiFi MAC address 60:01:94:73:5b:e4 WiFi Vcc 3.34, reset reason Turned on by main processor WiFi flash size 4194304, free heap 24240 WiFi IP address 192.168.103.167 WiFi signal strength -58dBm, mode 802.11n, reconnections 0, sleep mode modem Clock register 00002002 Socket states: 0 0 0 0 0 0 0 0
-
RE: x and y axis speed limit?
@jay_s_uk Oh yes I must have deleted the 1 on each of them some how. I though I had set it to 16.
M203 is set high on all axis as did not want that to be the limiting factor when I am testing.
I should probably explain what I am trying to do.
I have 2 motors on each axis each are the ones spec'd in the the voron 2 designI am using T40 pully with a belt connecting each motor. And I have just mounted them 2020 with a linear rail. between them and I am just running them back and forth at higher and higher accelerations till they stall, just to see what the limit in speed is over the distance.
With a requested speed of 2833 mm/s I get 1897.4 on X and Y but 2473.9 on Z.
As Increase the acceleration on each axis I get a faster and faster speed on Z but X and Y seem to have hit a limit that I cannot see. I added a U axis as well with just one motor, not attached to anything but the same settings as the others, and it has the same top speed as Z over the same distance.I then tried adding the Y motors on to the U axis and they were then moving at the same speed as the Z as well.
It seems like there is something I have not found that is limiting the acceleration when it is on the X and Y axis
motor spec
Electrical Specification
Inductance(mH) 3
Phase Resistance(ohm) 1.4
Rated Current(A) 2
Step Angle(deg.) 1.8 Bipolar
Holding Torque(Ncm) 59Physical Specification
IP Rating 40
Frame Size Nema 17 -
RE: x and y axis speed limit?
@jay_s_uk hey thanks for the advice, ill try something much higher. you meant M566 right? I have not tried changing it as i didn't think it would affect different axis in different ways. As they are all set to 3. I can't think why the speed is limited only on the x and y. As far as I know I have set up x,y,z all with exactly the same settings.
I am still quite new to this. -
RE: x and y axis speed limit?
@jay_s_uk hey thanks for the advice. You mean M566 right?
-
x and y axis speed limit?
Hi all,
I am testing my boards and trying to work out what is limiting the speed of the x and y axis.
As far as I can tell x , and z are all set up the same. But X and Y do not ever seem to get to the requested speed, while Z will do. I even tried replacing moving the Y motors to the U axis and they started working the same as the Z but as soon as I move them back to the Y they are limited again.
Then I added a new motor to U and it will get to speed I request or stall trying.
below is my current config file.
Thanks for any help!
; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.3.10 on Sat Jul 02 2022 12:58:01 GMT+0800 (Singapore Standard Time) ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"chip chop" ; set printer name ; Network M552 S1 ; enable network M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet ; Drives M569 P0 S1 ; physical drive 0 goes forwards M569 P1 S1 ; physical drive 1 goes forwards M569 P2 S1 ; physical drive 2 goes forwards M569 P3 S1 ; physical drive 3 goes forwards M569 P4 S1 ; physical drive 4 goes forwards M569 P5 S1 ; physical drive 5 goes forwards M569 P6 S1 ; physical drive 6 goes forwards M584 X0:4 Y1:5 Z2:3 ; set drive mapping E3:4:5 M584 U6 M350 X6 Y6 Z6 U6 I1 ; E6:6:6 ; configure microstepping with interpolation M92 X40.00 Y40.00 Z40.00 U40.00 ;E40.00:40.00:40.00 ; set steps per mm M566 X3.00 Y3.00 Z3.00 U3.00 ;E3.00:3.00:3.00 ; set maximum instantaneous speed changes (mm/min) M203 X350000.00 Y350000.00 Z350000.00 U350000.00 ;E350000.00:350000.00:350000.00 ; set maximum speeds (mm/min) M201 X34000.00 Y34000.00 Z34000.00 U34000.00 ;E29000.00:29000.00:29000.00 ; set accelerations (mm/s^2) M906 X1800 Y1800 Z1800 U1800 I10 ;E1800:1800:1800 I0.1 ; set motor currents (mA) and motor idle factor in per cent M84 S5 ; Set idle timeout ; RepRapFirmware applies the M204 accelerations to the move as a whole, and also applies the limits set by M201 to each axis and extruder ; Axis Limits M208 X0 Y0 Z0 U-5000 S1 ; set axis minima M208 X180 Y180 Z180 U 5000 S0 ; set axis maxima ; Endstops M574 X1 S1 P"xstop" ; configure switch-type (e.g. microswitch) endstop for low end on X via pin xstop M574 Y1 S1 P"ystop" ; configure switch-type (e.g. microswitch) endstop for low end on Y via pin ystop M574 Z1 S1 P"zstop" ; configure switch-type (e.g. microswitch) endstop for low end on Z via pin zstop ; Z-Probe ;M558 P0 H0 F120 T4800 ; disable Z probe but set dive height, probe speed and travel speed ;M557 X0:0 Y0:0 S20 ; define mesh grid ; Heaters M140 H-1 ; disable heated bed (overrides default heater mapping) ; Fans ; Tools ; Custom settings are not defined code_text
-
Controlling a delta robot inverted tetrahedron
Hi I am wandering if this is a possible layout configuration to use with a duet? I thought I found a setting that was for angle of rails, but I think it is for position around a circle, not the angels they are at to eachother. Is this something I can implement as it is? Or is there a good place to look to customise the source code to make this an option? I have only just started thinking about this, but it seem like it might be quite useful for a cheeper pick and place robot and not so complicated to add as an option.
-
RE: Using Duet 2 and DueX5 just to control motor speeds?
@o_lampe thank you so much for the tips! I am going try this weekend. With our your suggestions I think I would have given up.
-
RE: Using Duet 2 and DueX5 just to control motor speeds?
@o_lampe hey thanks for the tip! That sounds like a convincing option. I had pretty much given up on using the Duet, but I'll have one more try. I wonder if changing steps/mm while the motors are running will only come into effect after after an new movement?
-
Using Duet 2 and DueX5 just to control motor speeds?
I am not sure if what I am trying to do is possible. I have 5 (for now, I would like to use 6 or 8 ) stepper motors working together on a design I am making. This is not a printer, they are free to rotate independently, I just want to coordinate them together, for different effects.
I currently have some Python code running on a Raspberry pi that is calculating a speed for each motor based on inputs from an xbox controller, at the moment it is sending the required motor speeds to an Arduino with stepper drivers attached.
I am hoping to use my Duet 2 with a DueX5 instead of the Arduino. Would it be possible to set up each motor on the Duet 2 + x5 to just run, and continually adjust each of the motor speeds using Gcode? (sent from the Raspberry Pi)
It seems like this might be possible, but I cannot quite figure it out, as most information I am reading is assuming you will be building a printer and need end stops etc. Also I cannot tell from what I read If it is possible to use gcode just to input a speed, without it being linked to a location and an acceleration. All I need is to be able to set the speed of each motor, as all the other calculations are done on the Raspberry pi
Any hints on how to try this are much appreciated!