@oliof I like that idea, but how do I query the piezo and change the sensitivity in gcode?
Posts made by RandyL00123
-
RE: orien piezo z sensor requires power cycle
-
RE: orien piezo z sensor requires power cycle
@droftarts It's like the electrical noise increases once everything is homed....I did decrease the sensitivity to 340, and that helps but doesn't eliminate the issue....I'm going to try having it power down all steppers etc then retrying...
-
orien piezo z sensor requires power cycle
I have my Orien Piezo sensor nicely configured, BUT if I do a homing macro, it works perfectly the first time but the second one will say already triggered while homing. Looking at the Z-Probe numbers on the display, it's 524 during the first z homeing, but will jump to 545 or higher following, forcing me to do that POWER reset to get it to settle down. My question is is there a way to reset the sensor only without a full power reset? OR, why am I getting higher numbers following the first homing operation?
btw, it's a home built idex corexy
Here's my homeall.g, config.g and bed.g
; homeall.g ; called to home all axes echo "running homeall.g" T0 P0 ;select tool 1 but don't run any tool change macro files M140 S80 ;heat the bed M109 S210 ;heat the hotend and wait ;Z HOMING SECTION - this just gets the bed out of the way and will not be used in any calculations ;lower the bed to the bottom G1 H1 Z300 F800 ;home Z quickly down, set current position to ZMax based on M208 in config.g or config-override.g ;G91 ; relative positioning ;G1 Z-5 F800 ; lift Z relative to current position ;G90 ;G1 H1 Z300 F100 ;rehome slowly down and set Z to M208 S0 = 220 as previous line ;Y HOMING SECTION G1 H1 Y-300 F4600 ;home y quickly G91 G1 H0 Y5 ;back off 5mm G90 G1 H1 Y-300 F200 ;rehome Y slowly ;X HOMING SECTION G1 H1 X-500 F4600 ; move quickly to X or Y endstop and stop there (first pass) G91 G1 H0 X5 F200 ;back off a few mm G90 G1 H1 X-500 F200 ; home X axis slowly ;U HOMING SECTION G1 H1 U650 F4600; home U axis quickly G91 G1 H0 U-5 F200 ; go back a few mm G90 G1 H1 U650 F200 ;rehome slowly ;DETERMINE MAX Z HEIGHT G1 X150 Y150 F3600 ;move probe over the bed M291 S3 P"Clip any ooze from the bottom of the X hotend" G1 Z35 G30 ;home Z by probing the bed to find Z0 G92 Z15; ;G1 H3 Z300 F1000 ;update maximum Z G32 ;run bed.g M500 P10:31 ;save config-override.g M501 ;load config-override.g G29 S1 ;load heightmap echo "finished homeall.g"
Bed.g
;G28 ;home all so it's out of the way ;M190 S80 ; set target temperature for bed to 80 degrees and do nothing until reached ;zmotor order is 2 (front left),5(center rear),6(front right) ;G30 S-2 ; Probe the bed at the current XY position. When the probe is triggered, adjust the Z offset of the current tool to make the current position Z=0. ;G1 Z10 ;move the bed to within probing distance G30 P0 X20 Y40 Z-99999 ;probe the left front near the leadscrew and set the offset (driver motor 2) G30 P1 X150 Y290 Z-99999 ;probe the rear center near the leadscrew, set the offset and calculate three point compensation (Motor6) G30 P2 X270 Y40 Z-99999 S3 ;probe the right front near the leadscrew and set the offset (motor 5)
finally, because someone will ask, my config.g
; Configuration file for Duet WiFi (firmware version 3.4.5) ; Randy's corexy idex 17 February 2023 ;General preferences M111 S0 ;Debugging S1 on S0 off G21 ;Work in millimetres G90 ;send absolute coordinates... M83 ;...but relative extruder moves M555 P0 ;Set firmware compatibility to look like RepRap_Firmware to look like rrf M404 N1.75 D0.6 ;Set nominal filament diameter to 1.75 and nozzle width to 0.4 M575 P1 S1 ;General preferences M111 S1 ;Debugging G21 ;Work in millimetres G90 ;send absolute coordinates... M83 ;...but relative extruder moves M555 P0 ;Set firmware compatibility to look like RepRap_Firmware to look like rrf M404 N1.75 D0.6 ;Set nominal filament diameter to 1.75 and nozzle width to 0.4 M575 P0 B250000 ;Set baud rate for USB port for Octoprint M575 P1 S1 B57600 ;enable support for PanelDue (Default B57600) ;Network M550 P"Randy corexy idex" ;set printer name M552 S1 ;enable network M586 P0 S1 ;enable HTTP M586 P1 S1 ;enable FTP M586 P2 S0 ;disable Telnet M575 P1 B57600 S1 ;Set auxiliary serial port baud rate and require checksum (for PanelDue) ;Drives M569 P7 S0 ;Drive 9(X) M569 P8 S1 ;Drive 1(Y) M569 P9 S1 ;Drive 8(U) change to a 1 for forwards M569 P1 S0 ;Drive 1(V) M569 P2 S0 ;Drive 2(Z1) Right front lead screw driver 2 M569 P5 S0 ;Drive 5(Z2) Center rear lead screw driver 5 M569 P6 S1 ;Drive 6(Z3)Left front lead screw, driver 6 M569 P3 S1 ;Drive 3(e0) M569 P4 S1 ;Drive 4(e1) ;stepper drive configuration M669 K5 ; select 5=corexyu 8=CoreXYUV mode M584 X8 Y7 Z2:5:6 U9 V1 E4:3 P4 ;stepper motor assignments ;lead screws M671 X10:186:306 Y80:291:80 S5.0 ;F10 ;lead screws are located at drive 2 = front left, 5 at rear center, 6 at front right ;AXIS LIMITS ;M208 S0 X290 Y307 U423.4 Z225.00 ;set axis maxima S0 means maxima V350 - V240 ;M208 S0 X290 Y307 U423.4 Z179.00 M208 S0 X290 Y307 U393.82 Z179.00 M208 S1 X-130 Y0 U20.4 Z-2.5 ;set axis minima S1 means minima V80 ;ENDSTOPS M574 X1 S1 P"duex.e6stop" ;X homes to the low end of gantry M574 U2 S1 P"duex.e5stop" ;U homes to the high end of gantry M574 Y1 S1 P"ystop" ;Y min active high endstop switch=, home to low end of bed M574 Z2 S1 P"e1stop+zstop+duex.e2stop" ;configure active-high endstops for high end on Z - bed lowers to the three switches for initial self leveling ;FILAMENT SENSORS ;addinging BTT Smart filament sensors later, use this code ;https://forum.duet3d.com/topic/17107/how-to-setup-the-bigtreetech-smart-filament-sensor/42 ;DUEX5 does NOT support pulse filament sensors, MUST use estop connections on the Duet2 M591 D0 P7 C"e0stop" S1 E10 L9 R10:300 A0 ; X filament sensor bigtree smart filament sensor suggested code M591 D1 P7 C"xstop" S1 E8 L6.296 R30:300 A0 ; U filament sensor ;HEATERS ;Bed M140 H0 ;map heated bed to heater 0 M308 S0 P"bedtemp" Y"thermistor" T116000 B4138 ;configure sensor 0 as thermistor on pin bedtemp M950 H0 C"bedheat" T0 ;create bed heater output on bedheat and map it to sensor 0 M143 H0 S120 A2 ;set temperature limit for heater 0 to 120C M307 H0 R0.659 K0.294:0.000 D1.39 E1.35 S1.00 B0 ;bed tuning settings M570 H0 P10 T60 ;after a heater has been switched on, wait 120 seconds for it ;to get to the set temperature. If it takes longer, raise a heater fault. ;X carriage hotend sensors (E0) M308 S1 P"e0temp" Y"thermistor" T105500 B4680 C6.455513e-8 ;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 M307 H1 R2.170 K0.401:0.000 D10.44 E1.35 S1.00 B0 V24.1 ;disable bang-bang mode for heater and set PWM limit M143 H1 S285 A2 ;set temperature limit for heater 1 to 280C M570 H1 P30 T20 ;new heater faults for rff3.5 ;Hnnn Heater number Pnnn Time in seconds for which a temperature anomaly must persist on this heater before raising a heater fault (default 5 seconds) ;Tnnn Permitted temperature excursion from the setpoint for this heater (default 15C) ;Tnnn Permitted temperature excursion from the setpoint for this heater (default 15C) ;U carriage hotend sensors (E1) M308 S2 P"e1temp" Y"thermistor" T117200 B4680 C6.455513e-8 ; configure sensor 2 as thermistor on pin e1temp M950 H2 C"e1heat" T2 ;create nozzle heater output on e1heat and map it to sensor 2 M307 H2 R1.658 K0.406:0.000 D6.64 E1.35 S1.00 B0 V24.2 ;heater tuning parameters M143 H2 S285 A2 ;set temperature limit for heater 2 to 280C M570 H2 P30 T20 ;Hnnn Heater number Pnnn Time in seconds for which a temperature anomaly must persist on this heater before raising a heater fault (default 5 seconds) ;Tnnn Permitted temperature excursion from the setpoint ;M305 P2 X101 ;Use thermocouple for heater P2// note for when I upgrade ;to a K type thermocouple ;show the MCU and stepper driver temperature, send the following commands: M308 S10 Y"mcu-temp" A"MCU" M308 S11 Y"drivers" A"Steppers" ;TOOLS ;T0 (X carriage) M563 P0 S"X" D0 H1 F2 ;X0 Y1Fan0 is thermostatically controlled, F2 is gcode controlled by tool P0 G10 L1 P0 X0 Y0 Z0 ;X has no offsets M568 P0 R230 S235 ;set standby temperature at 230 and active temperature at 235 ;X hotend M307 H1 R2.366 K0.483:0.003 D5.16 E1.35 S1.00 B0 V24.1 M950 F0 C"duex.FAN6" ;create fan 0 on pin duex.FAN5 duex.FAN4 is dead. M106 P0 T40 S255 H1 ;when heater 0(XHotend) reaches 75 Celcius, turn on Fan0 at 100% (0-255) M950 F2 C"FAN2" ;H1 x part fan ;ORION2 PIEZO SENSOR ;https://www.precisionpiezo.co.uk/_files/ugd/e08222_cbf0c833679c42d9bb7d8fa12e2c09fb.pdf ;Use Mode P1, non inverted, Probe height 2mm, Delay 0.5s, Probe at 7mm/sec M558 P1 C"zprobe.in" H15 R1.0 F1000:900 A4 T5000 S5 ;Try up to 3 attempts, when two are within 5mm, average those two G31 P530 X0 Y0 Z-0.47 ;P=sensitivity up the number line to increase the gap. Reducee Z to loosen the gap ;0.18 too tight, 0.65 tighter, -0.47 almost perfect ;E0 Print settings M207 P0 S4.0 R0.0 F3600 Z0.15 ;Retraction M572 D0 S0.05 ;Set or report extruder pressure advance M592 D0 A0.06 B0.03 ;https://reprap.org/forum/read.php?262,802277 ;T1 (U carriage) M563 P1 S"U" F3 D1 H2 X3 Y1:4 ;Fan3 is thermostatically controlled, F3 is gcode controlled by tool P1 X mapped to U axis, Y mapped to Y axiswhere X=0, Y=1, Z=2, U=3 etc, not by driver number G10 L1 P1 U0 Y-1.0 Z0 ;use U_find_the_dot to tweak ;X change the U max axis limit. Higher U_max moves the U head further left. ;Y Y-9.20 E1 is too low by 1.5mm...Y-10.7 moved E1 in the increase Y direction ;Z: 0.00 was loose, 1.00 was tight, 0.50 was perfect.... M568 P1 R230 S235 ;initial tool set and stanby temperatures M307 H2 R2.505 K0.443:0.091 D7.04 E1.35 S1.00 B0 V24.1 M950 F1 C"FAN1" ;create fan 1 on pin fan1 M106 P1 T40 S255 H2 ;when heater 2(UHotend) reaches 40 Celcius, turn on Fan1 at 100%(255/256) M950 F3 C"duex.FAN8" ;H2 u part fan ;E1 Print settings M207 P1 S4.0 R0.0 F3600 Z0.2 ;Retraction M572 D1 S0.05 ;Set or report extruder pressure advance M592 D1 A0.06 B0.03 ;https://reprap.org/forum/read.php?262,802277 ;T2 (Copy mode) ;https://duet3d.dozuki.com/Wiki/ConfiguringMultipleIndependentXcarriagesCartesian ;M563 P2 S"copy" D0:1 H1:2 X0:3 F2:3 ;G10 P2 X50 Y0 U-50 S0 R0 ;M567 P2 E1:1 ; set mix ratio 100% on both extruders ;T3 (Mirror mode) ;M563 P3 S"Mirror" D0:1 H1:2 X8:9 Y7:1 F2:3 ;G10 P3 X0 Y0 U25 ; set tool offsets and temperatures ;M567 P2 E1:1 ; set mix ratio 100% on both extruders ;M568 P2 S1 ; turn on mixing for tool 2 ; ;chamber M308 S3 P"duex.e2temp" Y"thermistor" T100000 B4138 ;configure sensor 3 as thermistor on pin duex.e2temp M950 H3 C"duex.e2heat" T3 ;create chamber heater output on duex.e2heat and map it to sensor 3 M307 H3 B1 S1.00 ;enable bang-bang mode for the chamber heater and set PWM limit M141 H3 ;map chamber to heater 3 M143 H3 S150 ;set temperature limit for heater 3 to 100C ;machine M92 X160.213 Y160.213 U160.213 V160.213 Z809.69 ;set axis steps per mm M92 E228.964:228.964 ;set extruder steps per mm M350 X16 Y16 U16 V16 Z16 E16:16 I1 ;configure microstepping with interpolation M566 X500 Y500 U500 V500 Z20 E120:120 ;set maximum instantaneous speed changes (mm/min) M203 X4000 Y4000 U4000 V4000 Z1200 E1200:1200 ;set maximum speeds (mm/min) M201 X300 Y300 U300 V300 Z100 E250:250 ;set accelerations (mm/s^2) M906 X1100 Y1100 U1100 V1100 Z800 E800:800 I20 ;set motor currents (mA) and motor idle factor in per cent M84 S30 ;Set idle timeout M204 P600 T600 ;set print and travel accel M566 P1 ;uses jerk between all moves. yes or no. M593 F60 ;Configure Input Shaping - Dynamic acceleration ;CPU temp calibration M912 P0 S0 ;Automatic power saving M911 S22 R23 P"M913 X0 Y0 Z50 U0 G91 M83 G1 Z3 E-1 F1000" ;Set voltage thresholds and actions to run on power loss ;Miscellaneous ;G29 S1 ;Load the height map from file and activate mesh bed compensation. ;M501 ;load settings from /sys/config.override.g0 B250000 ; Set baud rate for USB port for Octoprint M575 P1 S1 B57600 ;enable support for PanelDue (Default B57600)
-
monitor extruder stepper voltage to detect filament errors
RandyL00123
RandyL00123
15 Mar 2023, 11:11I started thinking of how stall detection works, and I was wondering if it's possible to monitor the extruder stepper voltage. It seems to me that if you have a filament run out, the voltage would suddenly drop significantly as the motor force would drop. On the other end of the spectrum, a filament snag would cause the motor voltage to spike before the extruder started to grind, leading to a reduction in motor torque as the filament disappeared from under the drive gear. So, is it possible to monitor the extruder stepper voltage, and have an acceptable range? Any voltage outside of that range would trigger a problem.
-
RE: Detect Skipping Extruder?
I started thinking of how stall detection works, and I was wondering if it's possible to monitor the extruder stepper voltage. It seems to me that if you have a filament run out, the voltage would suddenly drop significantly as the motor force would drop. On the other end of the spectrum, a filament snag would cause the motor voltage to spike before the extruder started to grind, leading to a reduction in motor torque as the filament disappeared from under the drive gear. So, is it possible to monitor the extruder stepper voltage, and have an acceptable range? Any voltage outside of that range would trigger a problem.
-
RE: We need a verbose mode for general troubleshooting
@gloomyandy One other "wish list" item: a way to comment out blocks of code, rather than semi colon every single line...ie C++ uses // \ or /// / to comment out a larger block of code.
-
RE: We need a verbose mode for general troubleshooting
@randyl00123 I found the same confusions when trying to figure out what an 'axis' vs motor number vs drive axis, etc. I'm not new to programming, but I find it quite confusing trying to interpret what is being said. Personally, I'm finding that examples of code from other people to be more helpful when actually writing the code. The Gcode pages are ok once you actually understand what a gcode does, and it's particular switches.
Granted, I've decided to build one of the most complicated kinematics out there. I have a background that includes programming batch files back in DOS days, Qbasic, Pascal, C and C++ in College, so if I'm having a hard time understanding the nuances of the gcode explanation language, I can't even imagine the confusion of a nube.
-
RE: We need a verbose mode for general troubleshooting
@gloomyandy One thing I have always found confusing about the gcode explanations is the inconsistancy of definitions. For example, in M111, Pnn is the module number. What is a "module", how did it recieve a number, and what does that "number"refer to?
-
RE: We need a verbose mode for general troubleshooting
@chrishamm said in We need a verbose mode for general troubleshooting:
M111 P3 S1
Do I NEED to use a USB, or will the web interface not transmit the verbose? I've used M117, but wasn't aware of M111, which I'm trying at the moment. Thanks for the tip!
-
RE: We need a verbose mode for general troubleshooting
@phaedrux because I sometimes have gcodes run in other sub macros which have been called. For example, in my homeall.g, I call a file I've called Find_Z_Range.g. When things go ary, such as when the bed starts rising for no reason I can find, it's nice to know what command lead to it. I know from C++ coding, I would often insert line numbers or comments to help with troubleshooting. Just a way to have all macros and gcodes sent to console while running when in verbose mode. It should be able to be turned off when NOT troubleshooting.
-
We need a verbose mode for general troubleshooting
I think it would be nice if there was a verbose mode available in console which could be enabled via an Mnnn gcode. This verbose mode would cause the duet to echo EVERY gcode before it is executed. This would be immensely helpful for troubleshooting unwanted behaviours.
-
RE: Corexyuv vs corexy idex
@randyl00123 OK, here it is. I run G28 to home all, and I USED to have my find_Z_range macro called from the end of homeall.g, but after homeall.g, even if I manually call the macro find_Z_range.g, it doesn't move to bed center, but the bed starts rising slowly til it binds or causes other issues. Here are the error messages:
2022-02-04, 5:38:39 p.m. Emergency stop, attemping to reconnect...
2022-02-04, 5:38:24 p.m. M98 P"0:/macros/Find_Z_Range.g"
Error: G1/G2/G3: intermediate position outside machine limits
2022-02-04, 5:38:05 p.m. G28
Warning: the height map was loaded when the current Z=0 datum was not determined probing. This may result in a height offset.homeall.g
M117 S"about to run home Z"
;T-1 ;deselect all toolsM98 P"homez.g"
M117 S"back from home Z"M400
M117 S"about to run home y"
M98 P"homey.g"
M117 S"back from home y"M400 ;Wait for current moves to finish
M117 S"about to run home x"
M98 P"homex.g"M400
M117 S"about to run home U"
M98 P"homeU.g"
M117 S"back from home U"M400
;M98 P/macros/Find_Z_Range.g ;run find z range macro
M400 ;wait for movement to stop
G29 S1 ; load heightmapFind_Z_Range.g
;Find_Z_Range_Min-Max.g;T0 P0 ;select tool with X carriage but don't run the macro files associated
M117 S"about to run Find_Z_range"
M140 S80 ;heat the bed to 80C
;G31 X-38.32 Y-16.15 Z1.00 ;Z probe trigger sensitivity, offset in relation to nozzle. And trigger height adjustment
;decrease this number to lower the nozzle closer to the bed
;M117 S"T0";T0 ;select and prepare X hotend
M400 ;wait til everything stops
M117 S"move to bed center"
G1 X155.3 Y93.0 Z5 f4500 ;move to bed center for probing
M400 ;wait til everything stops
M117 S"probing"
G30 ;probe and set to zero
M117 S"reset Z max"
G1 H3 Z300 ;find z max and set it as M_max
G1 H3 Y300 ;rehome y gantry
G1 H3 X-300 ;rehome x carriage
M117 S"saving config_override"
M500 P10:31 ;save offsets etc to config-override.g
M117 S"exiting Find_Z_range"
homez.g
; homez.g
; called to home the Z axisG91 ; relative positioning
G1 H1 Z500 F1000 ; move Z down until the each motor endstop is triggered
G1 Z-5 F500 ; back off five mm
G1 H4 Z50 F200 ; move slowly back down to zstop switches and set this position as Z maxima that is declared in config.g
;G1 Z-10 ;move the bed up because with the T1 offsets, it confuses the max z fot T1
G90 ; absolute positioning;H1 means terminate move when endstop is hit.
;H2 individual motor mode either xy or z.
;H3 Terminate the move when endstop triggered and set the axis limit to the current position, orverriding the valuse set in M208.
;H4 - terminate the move when the endstop switch is triggered and update the current position (supported in RRF 3.2-b4 or newer)config.g (since I know you're gonna ask...lol)
; Configuration file for Duet WiFi (firmware version 3)
; executed by the firmware on start-up
;
; Randy's corexy idex 26 January 2022;General preferences
M111 S1 ; Debugging
G21 ; Work in millimetres
G90 ; send absolute coordinates...
M83 ; ...but relative extruder moves
M555 P0 ; Set firmware compatibility to look like RepRap_Firmware to look like rrf
M404 N1.75 D0.6 ; Set nominal filament diameter to 1.75 and nozzle width to 0.4
M575 P0 B250000 ; Set baud rate for USB port for Octoprint
M575 P1 S1 B57600 ; enable support for PanelDue (Default B57600);Network
M550 P"Randy corexy idex" ; set printer name
M552 S1 ; enable network
M586 P0 S1 ; enable HTTP
M586 P1 S1 ; enable FTP
M586 P2 S0 ; disable Telnet
M575 P1 B57600 S1 ; Set auxiliary serial port baud rate and require checksum (for PanelDue);Drives
M569 P7 S0 ;Drive 9(XX7)
M569 P8 S0 ;Drive 1(XY8)M569 P0 S0 ;Drive 8(UX) change to a 1 for forwards
M569 P9 S1 ;Drive 7(UY)M569 P2 S0 ;Drive 2(ZRR5) Right front lead screw driver 2
M569 P5 S0 ;Drive 5(ZCF2) Center rear lead screw driver 5
M569 P6 S0 ;Drive 6(ZRL6)Left front lead screw, driver 6M569 P3 S1 ;Drive 3(e0)
M569 P4 S1 ;Drive 4(e1);stepper drive configuration
M584 X8 Y7 Z2:5:6 U9 V1 E3:4 P4 ;this one works! X8 and Y7 are corexy X carriage. u9 (UX),v0 (UY) are the U carriage 2=ZRR5, 5=ZCF2,6=ZRL6;lead screws
M671 X300:120:-90 Y315:-60:315 F10 ;lead screws are located at drive 2 = back right corner, drive 5 at front center, drive 6 at left rearM669 K5 ; select 5=corexyu 8=CoreXYUV mode
;Axis Limits
M208 S0 X331 Y208 U451.00 Z268.35 ;set axis maxima S0 means maxima V350 - V240
M208 S1 X-98 Y0 U0 Z-2.00 ;set axis minima S1 means minima V80;endstops
M574 X1 S1 P"e0stop"
M574 U2 S1 P"xstop"
M574 Y2 S1 P"ystop" ;Y MAX active high endstop switchM574 Z2 S1 P"e1stop+zstop+duex.e2stop" ; configure active-high endstops for high end on Z - bed lowers to the three switches for initial self leveling
;M574 E0 S1 ;x filament sensor
;M574 E1 S1 ;U filament sensor;Heaters
M140 H0 ; map heated bed to heater 0
M308 S0 P"bedtemp" Y"thermistor" T100000 B4138 ; configure sensor 0 as thermistor on pin bedtemp
M950 H0 C"bedheat" T0 ; create bed heater output on bedheat and map it to sensor 0
M143 H0 S120 A2 ; set temperature limit for heater 0 to 120C
M307 H0 B0 R0.616 C164.1 D1.24 S1.00 V24.1 ;bed tuning settings
M570 S120 ;after a heater has been switched on, wait 120 seconds for it to get to the set temperature. If it takes longer, raise a heater fault.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
M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit
M143 H1 S275 A2 ; set temperature limit for heater 1 to 280CM308 S2 P"e1temp" Y"thermistor" T100000 B4138 ; configure sensor 2 as thermistor on pin e1temp
M950 H2 C"e1heat" T2 ; create nozzle heater output on e1heat and map it to sensor 2
M307 H2 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit
M143 H2 S275 A2 ; set temperature limit for heater 2 to 280C;M305 P2 X101 ;Use thermocouple for heater P2// note for when I upgrade to a K type thermocouple
;show the MCU and stepper driver temperature, send the following commands:
M308 S10 Y"mcu-temp" A"MCU"
M308 S11 Y"drivers" A"Steppers";Tools
;T0 (X carriage)
M563 P0 S"X" D0 H1 F2 ; X0 Y1Fan0 is thermostatically controlled, F2 is gcode controlled by tool P0
G10 L1 P0 X0 Y0 Z0 ;X has no offsets
M568 P0 R240 S250 ;set standby temperature at 240 and active temperature at 250
M307 H1 B0 R2.572 C150.0 D7.50 S1.00 V24.0 ;X hotend tuning parameters
M950 F0 C"duex.FAN4" ;create fan 0 on pin duex.FAN4 because fan0 on duet is always on
M106 P0 T75 S255 H1 ;when heater 1(XHotend) reaches 75 Celcius, turn on Fan0 at 100% (0-255)
M950 F2 C"FAN2" ;H1 x part fan;capacitive sensor
M558 P5 C"!zprobe.in" H10 F100 T2000 A3 S-1 ;enable pullup resistor(^), invert input (!), (H)Dive height 10mm,
;probing feed rate100mm/min
;travel speed between probe points 2000mm/min, A2 -probe each point twice
;M558 P9 means BLTouch P10 is stall detect. C" " is the pin input name, H5 means drop 5mm between points,
;A3 means probe three times S-1 means average the three probe distances
G31 X-38.32 Y-16.15 Z1.00 ;initial offsets to the center of the zprobe from X nozzle, redefined in find_Z_range.g which is called from homeall.gT1 (U carriage)
M563 P1 S"U" F3 D1 H2 X3 Y1:4 ;Fan1 is thermostatically controlled, F3 is gcode controlled by tool P1 X mapped to U axis, Y mapped to Y axiswhere X=0, Y=1, Z=2, U=3 etc, not by driver number
G10 L1 P1 X0.0 y1.5 Z-2.15 ;use U_find_the_dot to tweak
M568 P1 R240 S250 ;initial tool set and stanby temperatures
M307 H2 B0 R3.174 C186.4:172.2 D8.41 S0.50 V24.0 ;u hotend tuing parameters
M950 F1 C"FAN1" ;create fan 1 on pin fan1
M106 P1 T75 S255 H2 ;when heater 2(UHotend) reaches 75 Celcius, turn on Fan1 at 100%
M950 F3 C"duex.FAN3" ;H2 u part fan;T2 (Copy mode)
;M563 P2 S"copy" D0:1 H1:2 X0:3 Y1:4 F2:3 ; define tool 2
;G10 P2 X50 Y0 U-50 S0 R0 ; set tool offsets and temperatures
;M567 P2 E1:1 ; set mix ratio 100% on both extruders
;M568 P2 S1 ; turn on mixing for tool 2;T3 (Mirror mode)
;M563 P2 S"Mirror" D0:1 H1:2 X0:3 Y1:4 F2:3 ; define tool 3
;G10 P2 X50 Y0 U-50 S0 R0 ; set tool offsets and temperatures
;M567 P2 E1:1 ; set mix ratio 100% on both extruders
;M568 P2 S1 ; turn on mixing for tool 2;chamber
M308 S3 P"duex.e2temp" Y"thermistor" T100000 B4138 ; configure sensor 3 as thermistor on pin duex.e2temp
M950 H3 C"duex.e2heat" T3 ; create chamber heater output on duex.e2heat and map it to sensor 3
M307 H3 B1 S1.00 ; enable bang-bang mode for the chamber heater and set PWM limit
M141 H3 ; map chamber to heater 3
M143 H3 S100 ; set temperature limit for heater 3 to 100C;machine
M92 X80 Y80 U80 V80 Z1600 ; set axis steps per mm
M92 E428.46:428.46 ; set extruder steps per mm
M350 X16 Y16 U16 V16 Z16 E16:16 I1 ; configure microstepping with interpolation
M566 X1200 Y1200 U1200 V1200 Z12 E120:120 ; set maximum instantaneous speed changes (mm/min)
M203 X16000 Y16000 U16000 V16000 Z800 E1200:1200 ; set maximum speeds (mm/min)
M201 X600 Y600 U600 V600 Z500 E250:250 ; set accelerations (mm/s^2)
M906 X1100 Y1100 U1100 V1100 Z800 E800:800 I20 ; set motor currents (mA) and motor idle factor in per cent
M84 S30 ; Set idle timeout
M204 P666 T666 ; set print and travel accel
M566 P0 ; uses jerk between all moves. yes or no.;Print settings
;M207 S1.0 F3600 Z0.2 ; Retraction
;M572 D0:1 S0.05 ; Pressure advance
; M593 F60 ; Dynamic acceleration
; M592 D0 A0.03 B0.01 ; Non linear advance
; M592 D1 A0.06 B0.03 ; Non linear advance;CPU temp calibration
M912 P0 S-11;Automatic power saving
;M911 S22 R23 P"M913 X0 Y0 U800 G91 M83 G1 Z3 E-1 F1000" ; Set voltage thresholds and actions to run on power loss;Miscellaneous
;M911 S10 R11 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; set voltage thresholds and actions to run on power lossM501 ;load settings from /sys/config.override.g
-
RE: Corexyuv vs corexy idex
@droftarts said in Corexyuv vs corexy idex:
uld be. Can y
Like most things, it often takes longer to define the problem than to actually fix it. Yes, I think it would be a good idea to add more info to the M563 M669 and M584 page. Also, add how the V axis is added to the M584 command. You do need to be able to map the U and V axis to the U carriage for this kinematic to work. I finally got it to work with adding the U to the Y axis. This was after a LOT of guess work, and finally getting the X axis to work without the Y, then guessing and YAY it works....lol...When I figure out why my G30 command is giving this funky action (bed rising slowly beyond all limits with no carriage movements), I'll post it again. Thanks for all your help. I hope that I'm able to help with the overall movement toward better documentation etc. BTW, if I can be of any other assistance in writing, let me know...I know I've spent enough time with it now....lol....
-
RE: Corexyuv vs corexy idex
@droftarts https://duet3d.dozuki.com/Wiki/ConfiguringMultipleIndependentXcarriagesCartesian
It states: A machine with 2 independent X carriages needs 4 axis motors and 2 extruder motors, total 6, which is in fact, corexyuv, but using M669 K8 causes weird problems. K5 seems to work ok...anyway, in the very next chapter on this same page, it gives
M584 X0 Y1 Z2 U3 E4:5, which is only ONE motor for the U carriage.The required M584 for 2 independant x carriages in separate corexy configuration is:
M584 X8 Y7 Z2:5:6 U9 V0 E3:4 P4 (list four axis motors and two extruder motors = 6) XY for X carriage, and UV for U carriage.The corexy setup page is pretty confusing as well. M669 gcode explanation page is also confusing. It states this is the matrix, without explaining what the numbers in the matrix mean. Maybe I like to do things the hard way, but I've got a college background in programming C++, and have been building i3 style printers for about five years. I wanted a challenge.....lol....found it. This is the kinematics of my new machine.
https://forum.duet3d.com/assets/uploads/files/1599127658802-2a93244d-ec8d-4c50-b4ad-de97fdbcf33c-image.pngWhen people ask me what I make with my 3d printer, I usually say I make more 3d printers...lol...the technology is what interests me the most. Anyway, I FINALLY have things working mostly, but ONE more issue maybe you can help with. If a tool has been activated, G28 will refuse to run saying that
Warning: the height map was loaded when the current Z=0 datum was not determined probing. This may result in a height offset. sometimes when I run G30 (using a capacitive distance sensor) it refuses to run, but the bed slowly rises until it runs out of travel...ah well, one problem at a time eh? LOL -
RE: Corexyuv vs corexy idex
@deckingman said in Corexyuv vs corexy idex:
sing M58
The corexy and idex instructional pages truly suck. The instructions for configuring corexyuv states four motors, then go on to give M563 instructions for a different layout (corexyu). They say matrix without defining what the matrix IS. Anyway, after weeks of frustration, I FINALLY guessed and it worked. Here's the solution I came up with that WORKS for Corexyuv (Two independant corexy carriages on one X gantry using a Duet2 wifi and a duex5...
; Configuration file for Duet WiFi (firmware version 3)
; executed by the firmware on start-up
;
; Randy's corexy idex 26 January 2022; General preferences
M111 S1 ; Debugging
G21 ; Work in millimetres
G90 ; send absolute coordinates...
M83 ; ...but relative extruder moves
M555 P0 ; Set firmware compatibility to look like RepRap_Firmware to look like rrf
M404 N1.75 D0.6 ; Set nominal filament diameter to 1.75 and nozzle width to 0.4
M575 P0 B250000 ; Set baud rate for USB port for Octoprint
M575 P1 S1 B57600 ; enable support for PanelDue (Default B57600); Network
M550 P"Randy corexy idex" ; set printer name
M552 S1 ; enable network
M586 P0 S1 ; enable HTTP
M586 P1 S1 ; enable FTP
M586 P2 S0 ; disable Telnet
M575 P1 B57600 S1 ; Set auxiliary serial port baud rate and require checksum (for PanelDue); Drives
M569 P7 S0 ;Drive 7(XX7)
M569 P8 S0 ;Drive 8(XY8)M569 P0 S0 ;Drive 0(UX) change to a 1 for forwards
M569 P9 S1 ;Drive 1(UY);M569 P0 S0 ;Drive 0(UX) change to a 1 for forwards
;M569 P9 S1 ;Drive 1(UY)M569 P2 S0 ;Drive 2(ZRR5)
M569 P5 S0 ;Drive 5(ZCF2)
M569 P6 S0 ;Drive 6(ZRL6)M569 P3 S1 ;Drive 3(e0)
M569 P4 S1 ;Drive 4(e1);initial machine configuration
M584 X8 Y7 Z2:5:6 U9 V0 E3:4 P4 ;this one works! X0 and Y0 are corexy X carriage. 7,8 U carriage 2=ZRR5, 5=ZCF2,6=ZRL6M671 X300:120:-90 Y315:-60:315 F10 ;lead screws are located at drive 2 = back right corner, drive 5 at front center, drive 6 at left rear
M669 K5 ; select 5=corexyu 8=CoreXYUV mode
;Axis Limits
M208 S0 X331 Y208 U435.00 Z268.35 ;set axis maxima S0 means maxima V350 - V240
M208 S1 X-98 Y0 U0 Z-2.00 ;set axis minima S1 means minima V80
;endstops
M574 X1 S1 P"e0stop"
M574 U2 S1 P"xstop"
M574 Y2 S1 P"ystop" ;Y MAX active high endstop switch
;M574 Y2 S1 P"ystop" ;Y MAX active high endstop switchM574 Z2 S1 P"e1stop+zstop+duex.e2stop" ; configure active-high endstops for high end on Z
;M574 E0 S1 ;x filament sensor
;M574 E1 S1 ;U filament sensor; Heaters
M140 H0 ; map heated bed to heater 0
M308 S0 P"bedtemp" Y"thermistor" T100000 B4138 ; configure sensor 0 as thermistor on pin bedtemp
M950 H0 C"bedheat" T0 ; create bed heater output on bedheat and map it to sensor 0
M143 H0 S120 A2 ; set temperature limit for heater 0 to 120C
M307 H0 B0 R0.616 C164.1 D1.24 S1.00 V24.1
M570 S120 ;after a heater has been switched on, wait 120 seconds for it to get close to the set temperature. If it takes longer than this, raise a heater fault.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
M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit
M143 H1 S275 A2 ; set temperature limit for heater 1 to 280CM308 S2 P"e1temp" Y"thermistor" T100000 B4138 ; configure sensor 2 as thermistor on pin e1temp
M950 H2 C"e1heat" T2 ; create nozzle heater output on e1heat and map it to sensor 2
M307 H2 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit
M143 H2 S275 A2 ; set temperature limit for heater 2 to 280C;M305 P2 X101 ;Use thermocouple for heater P2// note for when I upgrade to a K type thermocouple
;show the MCU and stepper driver temperature, send the following commands:
M308 S10 Y"mcu-temp" A"MCU"
M308 S11 Y"drivers" A"Steppers";Tools
;T0 (X carriage)
M563 P0 S"X" D0 H1 F2 ; X0 Y1Fan0 is thermostatically controlled, F2 is gcode controlled by tool P0
;M563 P0 S"X" D0 H1 F2
G10 L1 P0 X0 Y0 Z0 ;X has no offsets
M568 P0 R240 S250 ;set standby temperature at 240 and active temperature at 250
;M568 P0 R0 S0 ;set standby temperature at 240 and active temperature at 250
M307 H1 B0 R2.572 C150.0 D7.50 S1.00 V24.0 ;X hotend tuning parameters
M950 F0 C"duex.FAN4" ;create fan 0 on pin duex.FAN4 because fan0 on duet is always on
M106 P0 T75 S255 H1 ;when heater 1(XHotend) reaches 75 Celcius, turn on Fan0 at 100% (0-255)
M950 F2 C"FAN2" ;H1 x part fan;capacitive sensor
M558 P5 C"!zprobe.in" H10 F100 T2000 A3 S-1 ;enable pullup resistor(^), invert input (!), (H)Dive height 10mm,
;probing feed rate100mm/min
;travel speed between probe points 2000mm/min, A2 -probe each point twice
;M558 P9 means BLTouch P10 is stall detect. C" " is the pin input name, H5 means drop 5mm between points,
;A3 means probe three times S-1 means average the three probe distances
G31 X-38.32 Y-16.15 Z1.00 ;initial offsets to the center of the zprobe from X nozzle, redefined in find_Z_range.g which is called from homeall.gT1 (U carriage)
;M563 P1 S"U" D1 H2 F3
M563 P1 S"U" F3 D1 H2 X3 Y1:4 ;Fan1 is thermostatically controlled, F3 is gcode controlled by tool P1 X mapped to U axis, Y mapped to Y axiswhere X=0, Y=1, Z=2, U=3 etc, not by driver number
;M563 P1 S"U" F3 D1 H2 X3 y4 ;Fan1 is thermostatically controlled, F3 is gcode controlled by tool P1 X mapped to U axis, Y mapped to Y axiswhere X=0, Y=1, Z=2, U=3 etc, not by driver number
G10 L1 P1 X0.0 y1.5 Z-2.15 ;use U_find_the_dot to tweak
;M568 P1 R0 S0 ;initial tool set and stanby temperatures
M568 P1 R240 S250 ;initial tool set and stanby temperatures
M307 H2 B0 R3.174 C186.4:172.2 D8.41 S0.50 V24.0
M950 F1 C"FAN1" ;create fan 1 on pin fan1
M106 P1 T75 S255 H2 ;when heater 2(UHotend) reaches 75 Celcius, turn on Fan1 at 100%
M950 F3 C"duex.FAN3" ;H2 u part fan;T2 (Copy mode)
;M563 P2 S"copy" D0:1 H1:2 X0:3 Y1:4 F2:3 ; define tool 2
;G10 P2 X50 Y0 U-50 S0 R0 ; set tool offsets and temperatures
;M567 P2 E1:1 ; set mix ratio 100% on both extruders
;M568 P2 S1 ; turn on mixing for tool 2;T3 (Mirror mode)
;M563 P2 S"Mirror" D0:1 H1:2 X0:3 Y1:4 F2:3 ; define tool 3
;G10 P2 X50 Y0 U-50 S0 R0 ; set tool offsets and temperatures
;M567 P2 E1:1 ; set mix ratio 100% on both extruders
;M568 P2 S1 ; turn on mixing for tool 2;chamber
M308 S3 P"duex.e2temp" Y"thermistor" T100000 B4138 ; configure sensor 3 as thermistor on pin duex.e2temp
M950 H3 C"duex.e2heat" T3 ; create chamber heater output on duex.e2heat and map it to sensor 3
M307 H3 B1 S1.00 ; enable bang-bang mode for the chamber heater and set PWM limit
M141 H3 ; map chamber to heater 3
M143 H3 S100 ; set temperature limit for heater 3 to 100C;machine
M92 X80 Y80 U80 V80 Z1600 ; set axis steps per mm
M92 E428.46:428.46 ; set extruder steps per mm
M350 X16 Y16 U16 V16 Z16 E16:16 I1 ; configure microstepping with interpolation
M566 X1200 Y1200 U1200 V1200 Z12 E120:120 ; set maximum instantaneous speed changes (mm/min)
M203 X16000 Y16000 U16000 V16000 Z800 E1200:1200 ; set maximum speeds (mm/min)
M201 X600 Y600 U600 V600 Z500 E250:250 ; set accelerations (mm/s^2)
M906 X1100 Y1100 U1100 V1100 Z800 E800:800 I20 ; set motor currents (mA) and motor idle factor in per cent
M84 S30 ; Set idle timeout
M204 P666 T666 ; set print and travel accel
M566 P0 ; uses jerk between all moves. yes or no.; Print settings
;M207 S1.0 F3600 Z0.2 ; Retraction
;M572 D0:1 S0.05 ; Pressure advance
; M593 F60 ; Dynamic acceleration
; M592 D0 A0.03 B0.01 ; Non linear advance
; M592 D1 A0.06 B0.03 ; Non linear advance; CPU temp calibration
M912 P0 S-11; Automatic power saving
;M911 S22 R23 P"M913 X0 Y0 U800 G91 M83 G1 Z3 E-1 F1000" ; Set voltage thresholds and actions to run on power loss; Miscellaneous
;M911 S10 R11 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; set voltage thresholds and actions to run on power lossM501 ;load settings from /sys/config.override.g
-
RE: Corexyuv vs corexy idex
@deckingman Sorry, I was referring to the other person that said your solution was more elegant than his. I was wondering what his solution was. I always thought that tools had to be defined in config.g. I wasn't aware that m584 could be used in a macro file.
-
RE: Corexyuv vs corexy idex
@o_lampe U is also a separate corexy hotend and uses motors 9 and 0 for U and V
-
RE: Corexyuv vs corexy idex
@deckingman That's an interesting workaround....I'll give that a try. BUT....will it work when the slicer asks for it....
-
RE: Corexyuv vs corexy idex
@deckingman That sounds right, but I have no idea how to do that....