Welcome! Log In Create A New Profile


"Filament" sensing for syringe

Posted by benecito 
"Filament" sensing for syringe
March 29, 2020 06:51AM
Hey all of you,

Instead of using continuous filament I am using a syringe system. This means it has some sort of "home" position and an empty position. So far i did use the filament out function at the low end to pause the print (simple switch). But having it set up this way makes it a little hard to precisely reference the top position without manual interaction.
To make things easier I moved the switch to the top (home) position, but didn't find a way to get it working so far.

- My first Idea was to "home" E (move until "endstop" is triggered, stop and set the E value to 0) but did not find a way to do this. I also did not find a way to set am max for E.
- My second idea is to treat E as an additional axis wich does not move below a certain point.
So far I crated A as an additional axis using the E motor, which lets me home it and set a max, but when printing only the E value and not the A value change.
Is there a way to map the E values from a G-Code to another axis? I found Lnnn in M563 but did not get it working.
- The last option would be to use a switch at the low and top end but doing so would mean quite a bit of hardware work which I'd like to avoid.

Open for any suggestions!
It would also be great to always know the position of the extruder for checking if there is enough material left for the next print. I assume this could be done using relative extrusion moves but wanted to sort out the basics first.
Re: "Filament" sensing for syringe
March 29, 2020 10:03AM
... my strategy for "complex" tools is to arm them with small controllers (mostly Arduino Nano or Teensy), so they can behave on their own and communicate per I/O or serial port ...

Aufruf zum Projekt "Müll-freie Meere" - [reprap.org] -- Deutsche Facebook-Gruppe - [www.facebook.com]

Call for the project "garbage-free seas" - [reprap.org]
Re: "Filament" sensing for syringe
March 30, 2020 04:36AM
From your posts on the duet3d forum, I believe you are using RepRapFirmware. You can "home" an extruder using stall detection. This is typically used to load filament at high speed until it reaches the hot end, but you could use it to home the syringe to the full position without needing a switch.

To track how much paste has been dispensed since the start of the print, if you use a recent 3.01RC version of RRF then you can use object model variable move.extruders[0].rawPosition in your GCode. Here are two ways you could use that:

1. Arrange for your slicer to insert the following at each layer change:

if move.extruders[0]>321 ; replace 321 by a suitable value a little less that the capacity of the syringe
  M600  ; filament change pause

If your slicer can't handle the if-command, put those commands in a macro instead and have your slicer call that macro at layer change using M98.

2. Use a while-loop in your sys/daemon.g file to monitor the value of move.extruders[0].rawPosition and pause the print when it gets too high.

Edited 3 time(s). Last edit at 03/30/2020 04:38AM by dc42.

Large delta printer [miscsolutions.wordpress.com], Robotdigg SCARA printer, Crane Quad and Ormerod

Disclosure: I design Duet electronics and work on RepRapFirmware, [duet3d.com].
Re: "Filament" sensing for syringe
March 31, 2020 12:07PM
Sorry for posting in both forums, I didn't know both of them kind of belong together.
I spent some time Yesterday upgrading to RRF 3.01RC5 and implementing all the changes. So far everything is back up and running.
I also managed to set up homing to the top position both ways and will give it some more thought in the future.

Regarding the low position I am a little stuck:
Since the printer is supposed to go on sale I'd prefer the second option implemented within the printers firmware.
In terms of coding I am not jet sure how to set up the daemon.g so it does what I want it to do. I tried different things within a macro for easier control, but still getting only error messages.

Using M117 {move.extruders[0].rawPosition} in the Macro I took a look at the values and it looks like they are only the moves within on printing file. Is that right? If so I also need another parameter that outputs the actual position because of manual pre dosing and printing multiple files after each other.
Re: "Filament" sensing for syringe
April 25, 2020 02:54AM
After doing some more research I think I got the basic functionality up and running.
But what I still see is, that "move.extruders[0].rawPosition" is not the value I need. It is sort of a "filament used in this print", but I need something like the overall position of the extruder (like treating it as an axis). I have about 150mm of travel and a print job for example needs 60mm with 4 similar objects in it , I can run 2,5 Jobs (10 objects) and the Point which stops the print should be at 150mm. Using "move.extruders[0].rawPosition" it starts counting from 0 with every new print.
Is there a list somewhere which lists all the "Object model Properties" (which I believe "move.extruders[0].rawPosition" is) so I can sort out which one works best for my use case?
Re: "Filament" sensing for syringe
April 27, 2020 08:15AM
Extrusion in RRF is always relative, apart from the "Virtual extruder position" which is used to handle GCode files sliced in absolute extrusion mode. So I think you need to accumulate the extrusion done on each print, and reset the accumulator when you reset the syringe. However, the "rawExtruderPosition" doesn't take account of changes to the extrusion factor using M221.

For faster response, I suggest you discuss this on the forum at duet3d.com.

Edited 1 time(s). Last edit at 04/27/2020 08:22AM by dc42.

Large delta printer [miscsolutions.wordpress.com], Robotdigg SCARA printer, Crane Quad and Ormerod

Disclosure: I design Duet electronics and work on RepRapFirmware, [duet3d.com].
Sorry, only registered users may post in this forum.

Click here to login