I have a 3D printer that I built and I'm having trouble with some g code. I have to stop and start the extrude motor when the z axis moves up to the next layer. When I do this the 3D pen I am using goes back a little bit to prevent dripping. When the motor starts again the filament is not at the tip yet and I am trying to add a dwell time before it starts moving again to give the filament time to come out. When I enter G04 P100 after each M3 command (the code I have to use to start my motor) it dwells way longer than 100ms and P10 seems to take around 10 seconds. On Wikipedia it states the control parameters for ms is P and the one for seconds is X however the reprap wiki states the proper control parameter for seconds is S. So my question is what is the correct parameter and how precise can I be with seconds i.e. .0000 how many zeros can I have after the decimal. I am trying to calibrate and get accurate prints so any help would be greatly appreciated. I am using grbl version .8 with and arduino uno. The software I am using is Grbl Controller 3.6.1

  • 1
    $\begingroup$ The problem you face is more likely to be in the firmware running inside the printer, rather than the control software. I am most familiar with the RepRap firmware, which handles retraction and restart without G-code impact (other than perhaps some start-up configuration). Trying to address this in the G-code seems difficult, and requires knowledge that the printer itself has access to. My counter-question: what firmware are you running in your printer? $\endgroup$
    – cmm
    Nov 11, 2017 at 18:45
  • $\begingroup$ I have an arduino uno loaded with grbl i think its version .8 but its technically a milling software. Its made from dvd rom drives and a 3d pen. I'm buying an anet a8 next $\endgroup$ Nov 11, 2017 at 19:47
  • $\begingroup$ You may do better with one of the Arduino firmwares for 3D printing. Although there are many things in common, managing the extruders is unique to extrusion 3D printing. $\endgroup$
    – cmm
    Nov 12, 2017 at 2:15

1 Answer 1


Basically you are fighting against oozing. So a retraction, or as you call it:

the 3D pen I am using goes back a little bit to prevent dripping

needs to be undone. You can do this by extruding an amount to get the filament back at the tip. Command G1 Exx.xx where xx.xx is a number where the retraction is is added on top of the existing value. Furthermore, most slicing software have parameters available to influence the extrusion/retraction. E.g. "coasting" is an option to prematurely stop extruding and make use of the pressure buildup in the nozzle (this prevents blobs where perimeter end meets the perimeter begin), "extra length on restart" (replenish the nozzle chamber with extra filament) or "Retract on layer change". In principle all these actions are set and handled by the slicer you use for making a print file. There is no need for a "dwell time", in fact dwell is just a pauze. It seems a bit strange that you want to control the filament flow yourself, while all this is done for you by the slicer software.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .