command/G-code for the extrusion controller
-
Hello
Recently i have been testing the clay extruder connected to the Driver0 on Duet 3 Mainboard 6HC. I have been clicking the 'retract' and 'extrude' button multiple times to push the plunger down to the correct position and to retract the plunger from the bottom of the cylinder after the print. Is there a command/G-code I can send instead? I've tried G1 E500 F1000, but nothing happened.
Here is my set up.
Best
Sophia -
@Sophiechka We could really do with seeing your configuration files (config.g). But it could just be that you need to send M302 P1 before the G1 Enn command. On a "normal" printer, extrusion commands are inhibited until the extruder is heated. Sending M302 P1 will allow cold extrude.
-
Here is my config.g file. I have commented out the heater, fan and thermistors as I don't have any of them. With M302 P1 command, if it works with my config.g sending e.g M302 P1 G1 E500 F1000 will retract the extruder?
; Communication and general
G21 ; Work in millimetres
G90 ; Send absolute coordinates...
M83 ; ...but relative extruder moves; Kinematics
G4 S1 ; Wait 1 second because expansion boards might not be ready to receive CAN signal yet.
M584 X40.0 Y41.0 Z42.0 U43.0 P4 ; map ABCD-axes to CAN addresses, and set four visible axes. Please excuse that ABCD motors are called XYZU here.
M584 E0:1:2:3:4:5 ; Regard all built in stepper drivers as extruder drives
M669 K6 ; "This is a Hangprinter"
M669 P2000.0 ; Printable radius (unused by Hangprinters for now)
M669 S430 T0.1 ; Segments per second and min segment length; Output of auto calibration script for Hangprinter
M669 A0.0:-1610.98:-131.53 B1314.22:1268.14:-121.28 C-1415.73:707.61:-121.82 D-0.00:0.01:2299.83
M666 Q0.128181 R75.546:75.659:76.128:75.192
; Explanation:
; ; M669 defines the positions of the anchors, expressed as X:Y:Z distances between a line's pivot points, when the machine is homed.
; ; M666 sets Q=spool buildup, R=spool radii (incl buildup, when homed)M208 Z2000.00 ; set maximum Z somewhere below D anchor. See M669 ... D<number>
M208 S1 Z-10.0 ; set minimum Z; The following values must also be in the auto calibration script for Hangprinter (if you plan to use it)
M666 U2:2:2:4 ; Mechanical advantages on ABCD
M666 O1:1:1:1 ; Number of lines per spool
M666 L20:20:20:20 ; Motor gear teeth of ABCD axes
M666 H255:255:255:255 ; Spool gear teeth of ABCD axes; Flex compensation
M666 W1.0 ; Mover weighs 1 kg. Set to 0 to disable flex compensation.
M666 S20000.0 ; Spring constant (rough approximation) for Garda 1.1 mm line (unit N/m).
; The real value is somewhere between 20k and 100k.
; Lower value gives more flex compensation.
M666 I0.0:0.0:0.0:0.0 ; Min planned force in four directions (unit N).
; This is a safety limit. Should affect only exceptional/wrong moves,
; for example moves outside of the reachable volume.
M666 X70.0:70.0:70.0:70.0 ; Max planned force in four directions (unit N)
; This is a safety limit. Will affect moves close to
; the limits of the reachable volume.
M666 T10.0 ; Desired target force (unit N).
; The flex compensation algorithm aims for at least
; this amount of fource in the ABC line directions at all times.
; It can be thought of as a minimum pre-tension value.
; It's recommended to set it around 10 times higher
; than your W (mover weight in kg) value.; Guy wire lengths. Needed for flex compenation.
; Guy wires go between spool and final line roller.
; If your spools are all mounted on the D-anchor, on the ceiling plate, then you're all good,
; and you don't need to configure M666 Y values explicitly.
; If your spools are not all on the D-anchor then you must measure guy wire
; lengths and set them here.
; If your spools are all mounted on their respective anchors, so that you have no guy wires,
; then you should configure zeroed guy wire lengths M666 Y0.0:0.0:0.0:0.0.
;M666 Y-1.0:-1.0:-1.0:-1.0; Torque constants. These are required for reading motor forces from ODrives
; They are the same values as is configured in the ODrives themselves (8.27/330 for motors in the standard HP4 BOM)
;M666 C0.025061:0.025061:0.025061:0.025061; Uncomment M564 S0 if you don't want G0/G1 moves to be be limited to a software defined volume
; M564 S0; Drives
M666 J25:25:25:25 ; Full steps per ABCD motor revolution (match with ODrives...)M569 P0 S1 ; Drive 0 goes forwards
M569 P1 S1 ; Drive 1 goes forwards
M569 P2 S1 ; Drive 2 goes forwards
M569 P3 S1 ; Drive 3 goes forwards
M569 P4 S1 ; Drive 4 goes forwards
M569 P5 S1 ; Drive 5 goes forwards;; Warning: On a Hangprinter, ABCD motor directions shouldn't be changed, at least not
;; via this config.g file.
;; They are duplicated and hard coded into the firmware
;; to make ODrive's torque mode go the right way.
;; Please connect BLDC wires, from left to right, looking at the board
;; from the front, so that ODrive silk screen is readable from left to right:
;; |---------------------------------------------------------------|
;; |DC |
;; |- ODrive |
;; |+ |
;; | AUX |
;; |--||---||---||------------------------------------||---||---||-|
;; || || || || || ||
;; ALT 1: Black, Red, Blue Black, Red, Blue
;; ALT 2: Yellow, Black, Red Yellow, Black, RedM569 P40.0 S1 ; Drive 40.0 (A) goes forwards
M569 P41.0 S1 ; Drive 41.0 (B) goes forwards
M569 P42.0 S0 ; Drive 42.0 (C) goes backwards
M569 P43.0 S0 ; Drive 43.0 (D) goes backwards; Speeds and accelerations
M201 X10000 Y10000 Z10000 U10000 E1000 ; Max accelerations (mm/s^2)
M203 X36000 Y36000 Z36000 E3600 ; Max speeds (mm/min)
M204 P2000 T4000 ; Accelerations while printing and for travel moves
M566 X240 Y240 Z1200 E1200 ; Maximum instant speed changes mm/minute; Currents
M906 E1400 I60 ; Set motor currents (mA) and increase idle current to 60%; Endstops
M574 X0 Y0 Z0 ; set endstop configuration (no endstops); Thermistors and heaters
;M308 S1 P"temp0" Y"thermistor" T100000 B3950 ; Configure sensor 1 as thermistor on temp1
;M950 H1 C"out1" T1 ; create nozzle heater output on out1 and map it to sensor 1
;M307 H1 B0 S1.00 ; disable bang-bang mode for nozzle heater and set PWM limit
;M307 H1 A1271.9 C432.5 D8.2 V24 ; Set heater parameters (for Super Volcano 80W. You probably want to tune this yourself with M303.)
;M143 H1 S280 ; set temp limit for nozzle heater to 280C
;M570 S180 ; Hot end may be a little slow to heat up so allow it 180 seconds; Fans
;M950 F1 C"out7"
;M106 P1 X255 T45 H1 ; Enable Fan 1 thermostatic mode for sensor or heater 1 at 45 degrees
;M950 F0 C"out8" ; Defines a part cooling fan; Find "temp0" and "out7" pins in the wiring diagram:
; https://duet3d.dozuki.com/Wiki/Duet_3_Mainboard_6HC_Wiring_Diagram; Bltouch
; If you have a bltouch, see
; https://duet3d.dozuki.com/Wiki/Connecting_a_Z_probe#Section_BLTouch
; for how to install it
; Some of the commands below here might be different for you
; (eg if you don't have a Duet3 board, don't use the io7 headers, or have your bltouch mounted differently than me)
;M950 S0 C"io7.out"
;M558 P9 C"io7.in" H5 F120 T6000
;G31 X15 Y27 Z8 P25 ; Measure these values in your own setup.; These affect how you create and your mesh/grid bed compensation heightmap.csv values
; M557 X-200.001:200 Y-277.001:277 S80 ; Define a A2 sized grid with 1 cm margin...
; M376 H20 ; Taper the mesh bed compensation over 20 mm of z-height
; G29 S1 ; Load the default heightmap.csv and enable grid compensation; Tool definitions
M563 P0 D0 H1 ; Tool number 0, with extruder drive 0 uses heater 1 and no fan
G10 P0 S0 R0 ; Set initial tool 0 active at standby temperature 0; Miscellaneous
M92 E415 ; Set extruder steps per mm
M911 S10 R11 P"M913 X0 Y0 Z0 G91 M83 G1 Z3 E-5 F1000" ; set voltage thresholds and actions to run on power loss
T0 ; Select tool 0 -
@Sophiechka said in command/G-code for the extrusion controller:
Here is my config.g file. I have commented out the heater, fan and thermistors as I don't have any of them. With M302 P1 command, if it works with my config.g sending e.g M302 P1 G1 E500 F1000 will retract the extruder?
Have you tried it? You probably need to use two commands rather than combining them. So first send M302 P1. This will enable cold extrude so you only need to send it once. In fact as you have no heater, then it might be better to added that command to the end of your config.g file so that cold extrude is enabled whenever you apply power to the board. Once you've enabled cold extrude, then G1 E500 should extrude, and G1 E-500 should retract.
-
@Sophiechka your sole M563 tool definition command includes parameter H1 meaning that is uses heater 1. If it doesn't really have a heater, remove that H1 parameter and it should work. If it does have a heater then you will need to use the M302 command either to enable cold extrusion or to change the minimum allowed temperatures for extrusion and retraction.
-
hi,
Sorry about the late reply. Thank you for the advice. i've sent M302 P1 and then G1 E2000 F1000 it worked.
It's a bit of a different question is it possible to bypass the homeing function? I am printing a shape on top of the printed shape. And when I tried to print the second shape on top of the first shape after the first shape was finished, I got an error saying, "Error: G0/G1: insufficient axes homed". I could send G92 X0 Y0 Z0, but wouldn't this command make the printer think its position is the home position in the config.g? making it poor calibration?
-
@Sophiechka You can use G92 to set any position, it doesn't have to be X0 Y0 Z0. But you need to know the position of the nozzle to set it.
Usually at the end of gcode jobs, the nozzle is moved away from the print, motors are turned off with M18 and axis position is lost, so the machine needs to be homed. You can change this behaviour if you need to, so the motors keep their position, by removing M18 from the end gcode. Then the axes will not need to be homed, though make sure G28 is not in the start gcode of the next gcode file.
If the second gcode file has been sliced starting at Z0, but you want to print on top of the existing print, send G92 Z0 to reset the Z position at the height of the first print. There may be a move at the end of the first gcode file to lift the nozzle, which you will need to take into account.
If you still want to turn the motors off after each job, you can 'park' the extruder at a known point at the end of the first gcode file, eg X100 Y100 Z100, though make sure it isn't in the way of the print. Then when you want to print the next shape on top (assuming the gcode for this starts at Z0, and the nozzle hasn't moved), send G92 X100 Y100 Z100 to set the current position. Note that when energised, stepper motors move to the closest full step, so it is possible there will be a small change in the position. You will still need to move the nozzle to the Z height of the first print, then send G92 Z0 so the second print can start on top.
Ian