<HTML><HEAD></HEAD>
<BODY dir=ltr>
<DIV dir=ltr>
<DIV style="FONT-FAMILY: 'Calibri'; COLOR: #000000; FONT-SIZE: 12pt">
<DIV>
<DIV style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: ">I have 
tried my ‘advance’ idea (see below for those that missed it) - t</DIV>
<DIV style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: ">he short 
report is: it works!</DIV></DIV>
<DIV>
<DIV 
style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: "> </DIV></DIV>
<DIV>
<DIV style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: ">So I now 
have a firmware without a ‘steps_to_prime’ and associated feedrate magic 
numbers, but with an ‘extruder_k’ magic number instead – for what it is worth, 
my magic number is 0.02 (although I think that is a little high).</DIV></DIV>
<DIV>
<DIV 
style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: "></DIV></DIV>
<DIV>
<DIV 
style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: "></DIV></DIV>
<DIV>
<DIV 
style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: "> </DIV></DIV>
<DIV>
<DIV 
style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: ">Pictures</DIV></DIV>
<DIV>
<DIV style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: ">All 
taken with a low light source to make the texture obvious</DIV></DIV>
<DIV>
<DIV style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: ">The 
object is the y-motor-bracket from a mendel.</DIV></DIV>
<DIV>
<DIV style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: ">The 
first layer is printed at 1000mm/min, the second at 2000mm/min, and the third 
(partial) layer at 4000mm/min.</DIV></DIV>
<DIV>
<DIV 
style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: "></DIV></DIV>
<DIV>
<DIV 
style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: "></DIV></DIV>
<DIV>
<DIV style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: ">Here is 
an aborted print, with acceleration, no ‘advance’ and extruder 
priming:</DIV></DIV>
<DIV>
<DIV style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: "><A 
href="http://reprap.org/wiki/File:Mattroberts_DSCF6676.JPG">http://reprap.org/wiki/File:Mattroberts_DSCF6676.JPG</A></DIV></DIV>
<DIV>
<DIV style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: "><A 
href="http://reprap.org/wiki/File:Mattroberts_DSCF6677.JPG">http://reprap.org/wiki/File:Mattroberts_DSCF6677.JPG</A></DIV></DIV>
<DIV>
<DIV 
style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: "></DIV></DIV>
<DIV>
<DIV 
style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: "></DIV></DIV>
<DIV>
<DIV style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: ">And here 
is the same (aborted) print with acceleration, ‘advance’ and no extruder 
priming(*):</DIV></DIV>
<DIV>
<DIV style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: "><A 
href="http://reprap.org/wiki/File:Mattroberts_DSCF6679.JPG">http://reprap.org/wiki/File:Mattroberts_DSCF6679.JPG</A></DIV></DIV>
<DIV>
<DIV style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: "><A 
href="http://reprap.org/wiki/File:Mattroberts_DSCF6678.JPG">http://reprap.org/wiki/File:Mattroberts_DSCF6678.JPG</A></DIV></DIV>
<DIV>
<DIV style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: ">(the 
obvious warping of the part was caused by me using a paint scraper to remove it 
from my heated bed – it was only a test after all.  Also some of the first 
layer didn’t stick that well as I started to print with the bed at only 
80*C)</DIV></DIV>
<DIV>
<DIV 
style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: "></DIV></DIV>
<DIV>
<DIV 
style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: "></DIV></DIV>
<DIV>
<DIV 
style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: "></DIV></DIV>
<DIV>
<DIV 
style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: "> </DIV></DIV>
<DIV>
<DIV style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: ">tuning 
extruder_k seems to be quite easy:</DIV></DIV>
<DIV>
<DIV 
style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: ">(assuming 
that the perimeter is printed anticlockwise)</DIV></DIV>
<DIV>
<DIV style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: ">if you 
set it to zero then you get lumps on the left hand side of the 
corners</DIV></DIV>
<DIV>
<DIV style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: ">if you 
set the value to high, then you get lumps on the right hand side of the corners 
(I have a third print that makes this behaviour clear)</DIV></DIV>
<DIV>
<DIV style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: ">so you 
can easily find a goldilocks value that gives corners that are 
correct.</DIV></DIV>
<DIV>
<DIV 
style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: "></DIV></DIV>
<DIV>
<DIV 
style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: "></DIV></DIV>
<DIV>
<DIV 
style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: "></DIV></DIV>
<DIV>
<DIV 
style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: "></DIV></DIV>
<DIV>
<DIV 
style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: "></DIV></DIV>
<DIV>
<DIV 
style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: "> </DIV></DIV>
<DIV>
<DIV style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: ">* – 
well... the extruder does prime, but only as a result of the 
‘advance’.</DIV></DIV>
<DIV>
<DIV 
style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: "> </DIV></DIV>
<DIV>
<DIV 
style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: "> </DIV></DIV>
<DIV>
<DIV 
style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: "> </DIV></DIV>
<DIV>
<DIV 
style="DISPLAY: inline; FONT-FAMILY: ; COLOR: ; TEXT-DECORATION: ">Previously, I 
said.... <SPAN 
style="LINE-HEIGHT: normal; WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; FONT-FAMILY: ; WHITE-SPACE: normal; ORPHANS: 2; COLOR: ; WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" 
class=Apple-style-span></DIV></DIV><PRE style="WHITE-SPACE: pre-wrap"><FONT style="FONT-SIZE: 13.6pt">I have been playing with a simple mathematical model of the problem - and I 
think a first order approximation is easy.

Basically I can model the model the extruder as a spring followed by a flow 
of (incompressible) fluid through a nozzle (as Leo suggested).
Hooke's law models the spring as: f = constant * displacement
Bernoulli's principle models the fluid as: v^2/2 + g.h + pressure / density 
= constant

So... If we ignore the flow itself (i.e. the output of the E axis from the 
line drawing algorithm); we can calculate a concept that I'll call 
'advance'.
Basically we always have the E axis a number of steps ahead of the line 
drawing algorithm output.  'advance' can be calculated from the extrusion 
speed:

advance (in steps) = steps_per_cubic_mm * extruder_k * cubic_mm_per_second^2

steps_per_cubic_mm is a concept we all have in our firmware's anyway 
(assuming we know cross sectional area, which our slicers know).
cubic_mm_per_second is easy to calculate on the fly.
extruder_k is a new constant that'll change with extruder designs. (working 
backwards from my auto-priming numbers: I think that extruder_k has a value 
around 0.1 for my extruder)

---

missing steps...
force from Hooke's law (or pressure in Bernoulli's principle) is 
proportional to 'advance'
flow rate through a nozzle squared is proportional to pressure (Bernoulli's 
principle) - only true when firing the nozzle into 0 pressure, but that's 
probably true enough.

interestingly, the effect of moving from incompressible fluids to 
compressible fluids usually has a linear effect on flow rate squared: 
<A href="http://en.wikipedia.org/wiki/Orifice_plate#Flow_of_gases_through_an_orifice">http://en.wikipedia.org/wiki/Orifice_plate#Flow_of_gases_through_an_orifice</A>

---

sanity check:

when stationary 'advance' is 0 steps.
when moving at a constant rate 'advance' is, constant at, say, 0.75 mm3 
worth of steps.
so drawing a single line at a constant rate means that the E axis gets 
primed and un-primed automatically.
so it looks like the mathematics is sane for the simple case - which is 
good.

---

So now, I just need to code it, try it and report back.

Matt
</FONT></PRE></SPAN>
<DIV> </DIV></DIV></DIV></BODY></HTML>