Thanks.
Worked right away!
How do I mark this post as solved?
Thanks.
Worked right away!
How do I mark this post as solved?
Final Update:
The only way I got it to work was to ignore the LED function of the limit switch PCB.
Just treat it as a pure limit switch. No LED.
Wire it in a way where the switch would connect GND and SIG.
Where 3.3V is supposed to go in the limit switch is where ground would be.
Disconnect the 3.3V wire from the Duet side.
M591 P1 C"e0stop" S1 D0
I am currently testing a newly built printer's motions.
After a successful sensorless home sequence, the driver would get burning hot to the touch after a few seconds.
Soon after, I would get driver temperature warnings, then driver short to ground warning and finally, the motors are disabled in the span of 20 seconds. BOTH drivers get hot.
Originally, the motor current settings was set to 1800, I dropped to 1300 and the problem did not get any better.
I had initially got the wiring incorrect for both the motors. supposed to be AABB, but It was wired as ABAB. I got the driver short warning, swapped to the correct wiring and movement works properly now (except for the rapid overheating issue). Maybe I damaged the driver by having the wire issue.
config.g
; Drive direction
M569 P0 S0 V60 ; Drive 0 X
M569 P1 S0 V60 ; Drive 1 Y
M569 P2 S1 ; Drive 2 Z
M569 P3 S0 ; Drive 3 E0
M584 X0 Y1 Z2 E3 ; drive mapping
M208 X0:250 Y0:250 Z0:250 ; Set axis maxima & minima
M92 X100 Y100 Z1600 E690 ; Set steps per mm assuming x16 microstepping
M350 X16 Y16 Z16 E16 I1 ; Configure microstepping with interpolation
M566 X400 Y400 Z8 E300 ; Set maximum instantaneous speed changes (mm/min)
M203 X35000 Y35000 Z1200 E3600 ; Set maximum speeds (mm/min)
M201 X6000 Y6000 Z400 E1000 ; Set accelerations (mm/s^2)
M906 X1300 Y1300 Z1330 I30 ; Idle motion motors to 30%
M906 E450 I10 ; Idle extruder motors to 10%
; Endstops
M574 X1 Y1 S3 ; Set X / Y endstop stall detection
M574 Z0 ; No C Z endstop
;Stall Detection
M915 X Y S3 F0 H400 R0 ; X / Y Axes
homex.g
; homex.g
; called to home the x axis
G91 ; use relative positioning
G1 H2 X0.5 Y-0.5 F10000 ; energise motors to ensure they are not stalled
M400 ; make sure everything has stopped before we change the motor currents
M913 X20 Y20 ; drop motor currents to 25%
M915 H200 X Y S3 R0 F0 ; set X and Y to sensitivity 3, do nothing when stall, unfiltered
G1 H2 Z3 F5000 ; lift Z 3mm
G1 H1 X-400 F3000 ; move left 400mm, stopping at the endstop
G1 H1 X2 F2000 ; move away from end
G1 H2 Z-3 F1200 ; lower Z
G90 ; back to absolute positioning
M400 ; make sure everything has stopped before we reset the motor currents
M913 X100 Y100 ; motor currents back to 100%
@dc42 said in Induce Control delay and latency?:
@likevvii, adding latency is not currently supported in the firmware. It would be possible to support in principle, which the proviso that for each board in the CAN-connected system, all drivers connected to that board use the same latency.
As @o_lampe says, this will only work well if the added latency for the servo drivers is fixed.
Thank you for the explanation. I do understand the latency is technically not fixed and can vary from maybe 1~5ms. But at the least, I was hoping I could be somewhere at the middle of the standard deviation.
This seems backwards but, Are there some multiplexers out there that take in step/dir signals and then converts it into the things that communicate over ethernet cables to sync everything up? Of course, the drivers will all have to be compatible with the protocol.
Is there a way to induce latency (2~6ms) for the E and Z axis steppers on controllers? X and Y operate normally.
I'm currently experimenting with servos (clearpath) and 5-phase steppers (oriental motor)
Both of these systems offer an optional control smoothing mode. Typically, drivers need to react instantaneously with the step/dir signals. This causes unmanaged vibrations in the micro scale. By adding control smoothing, instead of instantaneously reacting to the step/dir signals, they will have a set buffer of 5ms in order to plan and prepare an optimal trajectory and power for movements. This results in extremely quiet and smooth movement at the cost of latency.
My XY axis will be controlled with a latency using the control smoothing motioned above. Is there a way to account for this latency for my Z and E axis since they are using the built-in drivers on the duet 2 wifi and duet 3 mini controller? I had some stringing and cornering problems when I adjusted from instantaneous reaction to a 5ms buffer. I print at around 100mm/s so in 5ms, that is potentially already a 0.5mm desync.
Final Update:
The only way I got it to work was to ignore the LED function of the limit switch PCB.
Just treat it as a pure limit switch. No LED.
Wire it in a way where the switch would connect GND and SIG.
Where 3.3V is supposed to go in the limit switch is where ground would be.
Disconnect the 3.3V wire from the Duet side.
M591 P1 C"e0stop" S1 D0
Update:
When measuring GND and Sensor I get:
NO filament = 3.3V
Filament loaded = 1.3V
When I set:
M591 P2 C"e0stop" S1 D0
I can start the print and correctly trigger the sensor when I remove filament from sensor. However, once I add the filament back, it will not detect a loaded filament anymore.
I am guessing 1.3V is still too high for it to be considered as low?
I want to add a basic limit switch style filament sensor to my duet wifi 2.
The switch is called "trianglelab filament sensor"
This switch is OPEN when filament is not present, CLOSED when filament is loaded.
I want to double check if my code is correct:
; Filament sensor
M591 P2 C"e0stop" S1 D0
Do I need to add code anywhere else? If it senses a filament out, will it enter into "pause" mode, similar to when I press the "pause print" button?
Based on this guide:
https://duet3d.dozuki.com/Wiki/Connecting_and_configuring_filament-out_sensors
It says "S1" will enable filament sensing when printing from SD card. I normally print by uploading to the ip address on the browser "upload and print" button. Is this also considered as printing from SD card?
I plan to put this above my heater parameters in config.g
; Heaters
M308 S0 P"spi.cs2" Y"rtd-max31865" ; configure sensor 0 as thermocouple via CS pin spi.cs2
M950 H0 C"bedheat" T0 ; create bed heater output on bedheat and map it to sensor 0
M143 H0 S120 ; set temperature limit for heater 0 to 120C
M307 H0 B0 S1.00 ; disable bang-bang mode for the bed heater and set PWM limit
M140 H0 ; map heated bed to heater 0
M308 S1 P"e0temp" Y"thermistor" T100000 B4138 ; configure sensor 1 as thermistor on pin e0temp
M950 H1 C"e0heat" T1 ; create nozzle heater output on e0heat and map it to sensor 1
M143 H1 S280 ; set temperature limit for heater 1 to 280C
M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit
Thank you
I don't fully recall the exact values, but I did some math when doing a simultaneous (~150mm/s) X and Y move paired with extruder working and mesh bed leveling + sometimes Z hop it would pass 85KHz step rate (I am using duet wifi 2) and would get some stutters.
So I thought getting Z microstepping to as low as possible would be a good idea to help out with the reducing step commands since my mechanical resolution was so good anyways.
I would also love to double my X and Y microstepping rates too. Just not enough commands to keep up sadly!
Thank you for the suggestions.
Fixed the issues and followed your recommendations.
I changed Z accel:
3000 to 300
My Cura slicer shows zero signs of bands or imperfections.
I wont touch step width and pulse timing for now since I don't fully understand it yet.
Regarding the Z, I'm afraid it would be detrimental to my performance due to step rate maxing out. But I guess i'm just paranoid since a little timeout would barely be noticeable.
I will see what happens for my future prints!
Thank you for the suggestions. I personally don't know what would a high value for Z is. Hopefully I can get some recommendations.
I am using external drivers for X and Y axis
Z and E axis are using the built in duet drivers.
X and Y driver:
orientalmotor 5-phase stepper driver
I am not sure exactly what pulse timing I will need for these drivers.
I played around with the microstepping of the X Y Z and E axis to not get any stuttering as my X and Y axis are very high resolutions at 1 full step per 0.01mm
Z axis is also 1 full step per 0.01mm
I used M122 to check if I was getting any timeouts.
Linear advance + mesh bed compensation is on.
Sorry if I am missing any other info you need. Please let me know.
Thank you for taking a look at my issue!
Config.G
; Drives
M569 P5 S0 T3 ; physical drive 0 goes forwards
M569 P6 S1 T3 ; physical drive 1 goes forwards
M569 P2 S1 ; physical drive 2 goes forwards
M569 P3 S1 ; physical drive 3 goes forwards
M584 X5 Y6 Z2 E3 ; set drive mapping
M350 X1 Y1 Z4 I0 ; configure microstepping without interpolation
M350 E16 I1 ; configure microstepping with interpolation
M92 X200.00 Y200.00 Z400.00 E402.00 ; set steps per mm
M566 X450.00 Y450.00 Z18.00 E70.00 ; set maximum instantaneous speed changes (mm/min)
M203 X15000.00 Y15000.00 Z180.00 E3600.00 ; set maximum speeds (mm/min)
M201 X2400.00 Y2400.00 Z3000.00 E2000.00 ; set accelerations (mm/s^2)
M906 X800 Y800 Z1000 E1000 I30 ; set motor currents (mA) and motor idle factor in per cent
M84 S30 ; Set idle timeout
; Axis Limits
M208 X0 Y0 Z0 S1 ; set axis minima
M208 X200 Y200 Z180 S0 ; set axis maxima
: LCD
M575 P1 S1 B57600
; Endstops
M574 X1 S1 P"!xstop" ; configure active-high endstop for low end on X via pin xstop
M574 Y1 S1 P"!ystop" ; configure active-high endstop for low end on Y via pin ystop
M574 Z1 S2 ; configure Z-probe endstop for low end on Z
; Z-Probe
M950 S0 C"!exp.heater7" ; create servo pin 0 for BLTouch
M558 P9 C"^zprobe.in" H5 F120 T5000 ; set Z probe type to bltouch and the dive height + speeds C"zprobe.in+zprobe.mod"
G31 P500 X0 Y-35.4 Z3.75 ; set Z probe trigger value, offset and trigger height
M557 X20:180 Y20:180 S20 ; define mesh grid
; Heaters
M308 S0 P"spi.cs2" Y"rtd-max31865" ; configure sensor 0 as thermocouple via CS pin spi.cs2
M950 H0 C"bedheat" T0 ; create bed heater output on bedheat and map it to sensor 0
M143 H0 S120 ; set temperature limit for heater 0 to 120C
M307 H0 B0 S1.00 ; disable bang-bang mode for the bed heater and set PWM limit
M140 H0 ; map heated bed to heater 0
M308 S1 P"e0temp" Y"thermistor" T100000 B4138 ; configure sensor 1 as thermistor on pin e0temp
M950 H1 C"e0heat" T1 ; create nozzle heater output on e0heat and map it to sensor 1
M143 H1 S280 ; set temperature limit for heater 1 to 280C
M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit
; Fans
M950 F0 C"fan0" Q6000 ; create fan 0 on pin fan0 and set its frequency
M106 P0 C"FAN0 E0 Blower" S0 H-1 ; set fan 0 name and value. Thermostatic control is turned off
M950 F1 C"fan1" Q500 ; create fan 1 on pin fan1 and set its frequency
M106 P1 C"FAN1 E0 Heatsink" S1 H1 T45 ; set fan 1 name and value. Thermostatic control is turned on
M950 F2 C"fan2" Q500 ; create fan 2 on pin fan2 and set its frequency
M106 P2 C"FAN2 E0 Heatsink" S1 H1 T45 ; set fan 2 name and value. Thermostatic control is turned on
; Tools
M563 P0 D0 H1 F0 ; define tool 0
G10 P0 X0 Y0 Z0 ; set tool 0 axis offsets
G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C
; Custom settings are not defined
M501 ; Enable config.g override
M572 D0 S0.042 ; PRESSURE ADVANCE
HomeAll.g
; homeall.g
; called to home all axes
;
; generated by RepRapFirmware Configuration Tool v2.1.8 on Thu May 21 2020 14:14:26 GMT-0700 (Pacific Daylight Time)
G91 ; relative positioning
G1 H2 Z5 F6000 ; lift Z relative to current position
G1 H1 X-205 Y-205 F3000 ; move quickly to X and Y axis endstops and stop there (first pass)
G1 H2 X5 Y5 F6000 ; go back a few mm
G1 H1 X-205 Y-205 F360 ; move slowly to X and Y axis endstops once more (second pass)
G90 ; absolute positioning
G1 X100 Y135.4 F6000 ; go to first bed probe point and home Z
G30 ; home Z by probing the bed
G29 S1 ; LOAD MESH COMP
M376 H5 ; MESH COMP HEIGHT
; Uncomment the following lines to lift Z after probing
;G91 ; relative positioning
;G1 Z5 F100 ; lift Z relative to current position
;G90 ; absolute positioning
M122
m122
=== Diagnostics ===
RepRapFirmware for Duet 2 WiFi/Ethernet version 3.1.1 running on Duet WiFi 1.02 or later
Board ID: 08DGM-9T6BU-FG3S0-7J1F0-3S06K-KA43D
Used output buffers: 3 of 24 (10 max)
=== RTOS ===
Static ram: 27980
Dynamic ram: 93968 of which 44 recycled
Exception stack ram used: 304
Never used ram: 8776
Tasks: NETWORK(ready,424) HEAT(blocked,1224) MAIN(running,1824) IDLE(ready,80)
Owned mutexes: WiFi(NETWORK)
=== Platform ===
Last reset 00:05:13 ago, cause: power up
Last software reset at 2020-11-06 17:41, reason: User, spinning module GCodes, available RAM 8520 bytes (slot 0)
Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0441f000 BFAR 0xe000ed38 SP 0xffffffff Task MAIN
Error status: 0
MCU temperature: min 24.1, current 32.8, max 32.9
Supply voltage: min 24.2, current 24.3, max 24.5, under voltage events: 0, over voltage events: 0, power good: yes
Driver 0: standstill, SG min/max not available
Driver 1: standstill, SG min/max not available
Driver 2: standstill, SG min/max not available
Driver 3: standstill, SG min/max not available
Driver 4: standstill, SG min/max not available
Date/time: 2020-11-13 18:51:54
Cache data hit count 544101499
Slowest loop: 5.80ms; fastest: 0.12ms
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.3ms, write time 0.0ms, max retries 0
=== Move ===
Hiccups: 0(0), FreeDm: 169, MinFreeDm: 169, MaxWait: 0ms
Bed compensation in use: none, comp offset 0.000
=== MainDDARing ===
Scheduled moves: 0, completed moves: 0, StepErrors: 0, LaErrors: 0, Underruns: 0, 0 CDDA state: -1
=== AuxDDARing ===
Scheduled moves: 0, completed moves: 0, StepErrors: 0, LaErrors: 0, Underruns: 0, 0 CDDA state: -1
=== Heat ===
Bed heaters = 0 -1 -1 -1, chamberHeaters = -1 -1 -1 -1
=== 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
Daemon is idle in state(s) 0
Autopause is idle in state(s) 0
Code queue is empty.
=== Network ===
Slowest loop: 150.97ms; fastest: 0.00ms
Responder states: HTTP(2) 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 0
WiFi firmware version 1.23
WiFi MAC address 84:f3:eb:42:b4:ca
WiFi Vcc 3.33, reset reason Unknown
WiFi flash size 4194304, free heap 23880
WiFi IP address 192.168.50.138
WiFi signal strength -55dBm, reconnections 0, sleep mode modem
Socket states: 4 0 0 0 0 0 0 0
M98
M98 P"config.g"
HTTP is enabled on port 80
FTP is disabled
TELNET is disabled
Error: Driver 5 does not support x1 microstepping
Driver 6 does not support x1 microstepping
Error: Bad command: : LCD
Warning: Heater 0 appears to be over-powered. If left on at full power, its temperature is predicted to reach 365C
Warning: Heater 0 appears to be over-powered. If left on at full power, its temperature is predicted to reach 284C
Hello, I am using prusament galaxy black filament with duet wifi V2.
I got two bands on my print.
This is the second time it happened out of about 70 prints on this machine. All other prints are flawless.
I was not able to watch it live as it happened.
The other time it happened was long ago at 10mm heigjt and I think the printer moved 20% the speed than usual.
Please help me find out what may have caused this.
This may be totally unrelated events.
I can provide more details as needed
Thank you