Bio printer tool changer
Hello everyone, first of all excuse my English, it is not my native language. I am developing my own tool changer but oriented to a bio 3d printer. Unlike a conventional 3d printer, my idea is to have a single head with an extrusion system (with a leadscrew) that chooses between different heads (syringes), but only the head has the extrusion system. The problem is that in a printing process the machine must grab and release different heads over and over again but as they are passive heads (without independent extrusion motors) I need that when leaving a head in the bay it saves the information of how far the extruder advanced in that head for when it is picked up again, the main head motor knows the starting point. I hope it is understood. Thanks!
Sounds really interesting... Looking forward to finding out more on how to achieve this.
@roken22 interesting! In RRF 3.3 you will have the ability to use variables to store information and you can use the object model to query the extruder drive position. the logic could look something like this as part of each tool change macro:
- get and store extruder drive position for tool 1
- free tool 1
- Set extruder drive position for next extruder, tool 2
- pickup tool 2
Do you need to physically move the extruder motor to the right position to match up with the point that the syringe plunger is at, or simple keep a log of how far down the syringe each tool is at?
@t3p3tony I need to physically move the extruder motor to the last position of the plunger. It would be much easier to have each head with an extrusion system but in this way I reduce the amount of hardware.
I already built and programmed a core xy system with two bays and the exchange works fine, but I still don't know how to save the information on the advance of the syringes.
You need to be running RepRapFirmware version 3.3b2, have a look at:
along with the object model keys:
changing the "0" to the extruder drive number you want if its not 0.
Once you know you can get the right numbers out you can save this number to a variable during the tfreeN.g and restore it during the tpreN.g sequences. You will need one variable per syringe tool.
Are the variables persistent through a power cycle? Just thinking that a partly used "plunger" might be used after a reboot.
Would they also be stored for recovery after a power outage?
Just interested for now lol.
@cncmodeller, variables are not current persistent through a power cycle. I plan to add them to the data saved when resume-after-power-fail is used (see M911).
To save them always, I would need to add a parameter to M911 to specify that certain parameters are to be saved to SD card even when no SD card print is in progress.
Just a thought, could you use a homing switch to register when the drive plunger contacts the diaphragm in the swappable element?
Like a homing sequence for the plunger every time a change has occurred.
I'm imagining a plunger that drives up behind the back of the diaphragm in a large syringe after you remove the diaphragm stem.
@cncmodeller It's not a bad idea! you say like in the photo? the active head searches for the start of travel after each exchange, and then begins pressing until endstop B encounters the plunger, then the tool is carried away. Maybe I could use an optical endstop so I don't put pressure on the plunger. It would be a "design solution", this is getting interesting. I will also investigate the function of variables.
Yep that's about it!
Not sure how that'd work from a setup / gcode perspective.
I've been toying with a clay extruder for ages (just because it's cool lol) but couldn't figure out how to get enough clay in an off the shelf syringe to make it useful. However if I could just pick up the next one off a carousel and carry on printing, that'd work!
Please keep us updated I'd love to follow along with your build.
All the best
o_lampe last edited by
Wouldn't it be possible to home the tool to top position before changing the tool and after toolchange you home it with sensorless homing to the bottom. With reduced current, you won't push the diaphragm too hard and still "know" your plunger is in contact.
It sounds like there are potential mechanical solutions to this using endstops/sensor less homing that might make saving the positions, certainly through a power cycle, redundant.
Another point is you could log the variable on every tool change and pause using M118 L command. While that wont tell you the position of the tool that's currently operating, so some manual intervention will be required in the case of a power cut, In the case of manually advancing extruder until its in contact with the plunger, the other inactive tools positions can be read from the log file and then entered in the console. That would probably be enough of a work around until the power fail resume logic @dc42 mentioned is implemented.
@t3p3tony yes, I think it can be solved mechanically with endstop. How does the sensorless work on a leadscrew? you have to reduce the current a lot, right?
MikeS last edited by
@roken22 maybe use a magnet on each syringe and an hall sensor on the "extruder". That will allow also for adusting the switching distance without mechanical parts.