completely-blank

In the design process of our bioprinter, several engineering design cycles needed to be completed in order to create the most successful product possible.





Printer Hardware


Syringe Pump Design


Version 1

The first version of the syringe pump was made with a printed base that holds the motor (1), sliding plunger holder (2.1 & 2.2), and had a slot for the syringe to sit (3). A printed base was chosen because the geometry of the design makes it impossible to machine from stock materials. The plunger holder was designed to slide along the slots in the syringe pump base, and the motor would sit in the base. The syringe would sit in its place. The motor would push the plunger by moving the nut inside the plunger holder, extruding the bioink from the syringe. This syringe pump was also made with a plunger holder connector so the plunger holders could be pushed by one motor. It required a third motor mounting location, and channels in the middle for the duo connector to slide through.


anything


The design of this base meant that the print would require lots of supports, 3D-printed scaffolds that are made to break or dissolve off the piece, and allow the printer to make parts with overhangs, in addition to requiring a significant amount of filament and time. To review this first design, we met with Jim Alkins, the shop manager of Rettner Fabrication Studio, and had the print sliced; to slice a print means to convert the 3D model to a machine language recognized by the printer, which in this case is g-code. When viewing the 3D CAD model of the syringe pump, Mr. Alkins suggested a redesign of the printed base to cut manufacturing cost and time by using multiple parts made of machined stock material to make channels for sliding and for holding all of the parts together. Other feedback was to redesign the sketches, which are 2D drawings that can be used as a reference for making 3D modifications in a CAD design, so that there is tolerance, space between parts. This is important because tolerance accounts for ABS plastic shrinkage, as ABS plastic shrinks about 3% when cooling, and the printer’s slight deviance from exact dimensions since printers are not 100% accurate, even after being calibrated, so this has to be accounted for in design. The original design was made with parts being line to line without tolerance, which would have prevented the parts from sliding as they were supposed to. The design was tested using the assembly tool in CAD, and Mr. Alkins’ feedback taught us that we need to add more clearance in our design, and that we should consider using non-printed parts in addition to printed parts to lower the cost.


Version 2

After learning about the shortcomings of the first version of the syringe pump, the second syringe pump we designed used machined stock materials: plastic board (1) and aluminum channel extrusions (2) that had holes drilled into them using the drilling feature of a mill to secure them to the base using screws, and 3D-printed parts that were made to be using with the machined parts and had extra clearance. The aluminum channels were tapped, which adds threads so the right angle joints (3) can be secured to it using screws, and they were attached to 3D-printed right angle joints. These joints were attached to the polycarbonate base, and the plunger holder (4) would slide along the aluminum channels, because there were small extrusions on each side meant to sit in the channels. The syringe would be held by a slot in the syringe holder (5) based on the measurements from V1, except tolerance was given to ensure the syringe would fit. This was placed on an offset block (6), which is used to align the center of the plunger with the center of the syringe, and is based on the height of the plunger holder. This offset block is screwed into the base plate, which has tapped holes for the offset block. Additionally, a motor holder (7) was designed that could be screwed onto the base plate and the motor, keeping the motor in place. For added clearance, the sketches in the CAD models of all 3D printed parts were made with a 1 mm gap between parts.


anything


Once V2 was made, the design was tested after assembly. The plunger holder has notches that fit into the aluminum channels, so it can slide along the channels to push the plunger and extrude the bioink. The lead screw pushed the plunger holder like it did in V1, and the syringe holder also had the same function. One of the problems with the design was that the syringe was incorrectly held in the pump where the centerline of the syringe was not high enough to align with the syringe plunger, so it could not be pushed into the syringe. Mr. Alkins recommended spending the extra filament and time to create a syringe holder to meet the exact height of the syringe through printing the syringe holder with the offset, instead of adding an offset. Another problem was that 4-40 screws being used to hold the syringe holder to the base plate not be the best for resisting the force of the syringe plunger against the syringe holder as the threads made in the base plate from the tap are small and could be pulled from the board because they do not hold well under stress, which Mr. Alkins recommended to change. Another problem was that the plunger holder would jam in the aluminum channels due to the torsional force of the motor pushing on the plunger holder, and the plunger holder pushing on the bioink in the syringe. Because the syringe plunger is at a different height than the lead screw, the plunger holder adopts a small rotation, which jams the channel and prevents extrusion. The aluminum channels also created a lot of friction when the plunger holder was pushed along them. Both the syringe holder and the plunger holder were made with caps to further secure the components, but they did not appear to have any benefit, and were a waste of filament. Finally, the motor holder hole pattern for securing the motor holder to the base plate was not well aligned with the mount holes of the actual motor.

To improve this design, we met with Doug Chin, a consulting engineer at Immediate Semiconductor, for advice on designing devices with linear motion like our syringe pump. Mr. Chin has extensive engineering experience, multiple patents, and has been a founder of several successful startup companies, such as Blink, security cameras now owned by Amazon. In the design review with Chin, he suggested looking at what 3D printers and computer numerical control (CNC) machines typically use for linear motion, and suggested linear shaft and linear ball bearings as opposed to the aluminum extrusions and notched plastic from linear motion. This is due to the linear shaft and ball bearing’s extremely low friction, even under the torsional stress from the offset between the plunger and lead screw. Additionally, he showed the construction of different 3D printers, and suggested finding a lead screw and nut set that would be easier to incorporate into a design than in V1 and V2 plunger holder designs, in which the nut was sandwiched between the halves of the part. Additionally, Mr. Chin recommended pillow blocks, which are bearings in a mount housing that support lead screws and other rotating shafts, for added stability, and suggested that the motor holder needed more support due to the pressure of extrusion, which is caused by the high viscosity of the bioink.


Version 3

Based on the problems and performance of V2, and the recommendations from both Mr. Chin and Mr. Alkins, V3 was designed to include linear shaft and ball bearings for the syringe plunger to ride on so it could be smoothly extruded. Shaft holders (2) were designed to hold the linear shaft at the correct offsets, and a corresponding hole pattern was added to the base plate (8) to accommodate the length of the shaft. A 150mm shaft was chosen because it allowed for the plunger holder to have enough travel distance, but it is also more cost effective than longer lengths, and it is not obnoxiously oversized. A corresponding lead screw length was chosen, and the start of the lead screw was matched to the start of the linear shaft on the motor side of the syringe pump. The syringe holder (6) was made taller to align the center of the plunger and the center of the syringe, so the syringe can slide smoothly, and will not jam or break from misalignment. Additionally, slots in the syringe holder were added so that the base plate did not need to be tapped, and nuts could be slid into the syringe holder to screw it to the base plate. The plunger holder (4) was made to accommodate press fit linear ball bearings, and an additional hole pattern was added to accommodate the new lead nut. We designed the plunger holder so we could press fit the lead nut for a perfect alignment and to increase the range of motion compared to it being held on the outside of the plunger holder. When dealing with high pressures and glass syringes, alignment is extremely important so that the parts of the syringe pump and the syringe itself don’t break. Supportive mounts for the motor (1) and pillow blocks (3) were also CADed and 3D printed, and the angled supports used were also adapted for the shaft holders. A plate was hand drafted and hand drilled with the hole pattern, and a larger than necessary drill bit was used to provide clearance because hand drilling is not as accurate as using a mill. Hand drilling has the benefit of being quicker for our team because we did not have to wait to access the shop at specific open hours. The motor holder hole pattern was adjusted to more accurately reflect the mounting pattern on the motor.


anything

After the parts were printed and assembled, the pillow block supports were found to not fit the board well because the lead screw and shaft were the same length, and the pillow blocks were wide enough to interfere with the paths of the linear shaft, which was a problem that could not be solved because we were trying to save money with printing smaller components, and the offset needed to accommodate the pillow blocks was too large to be worth the small amount of extra stabilization. When the syringe pump was run without the pillow blocks, the plunger holder movement along the lead screw was very stable, so the pillow blocks were deemed unnecessary. The base plate lined the parts up well, except that the hole pattern was made to be used with the pillow blocks, and made it so the start and end of the lead screw didn’t line up well with the start and end of the linear shaft. All of the other parts fit well together, and the bearings held their positions well with just a press fit. The linear shaft and bearings prevented the jamming problems that were created by the V2 channel design. The syringe holder and plunger holder caps were also proven to not be necessary when the syringe pump was tested both with and without the caps. The syringe and plunger stayed well aligned because the parts fit them perfectly, so the caps will not be used in the future because they also add just more work for the user due to the user having to screw them down and remove the screws every time the syringe pump is used. Through our own testing, some minor changes still needed to be made for optimization of the syringe pump, which include changing the hole pattern to accommodate the lack of pillow blocks, and making a smaller base plate for space-saving.


Version 4

V4 is the current and final version of the syringe pump. The stepper motor (1) is connected to the lead screw (4) by a clamp (3), and rotates to move the plunger holder (6) that holds the end of the plunger (13). The plunger holder has a lead screw nut (14) pressed into it to make it move along the lead screw, and the plunger holder runs along the linear shaft (5), which gives a little more travel length than the length of the syringe. The motor is secured using the motor holder (2) and the linear shaft is held by the shaft holders (12). The syringe sits in the syringe holder, and all of the parts except for the plunger holder are secured to the base plate with screws. The tubing (10) is connected to the syringe using Luer lock adapters (11), and so the bioink can be extruded by the syringe through the tubing to the extrusion head (not pictured). Adjustments made from V3 include changing the hole pattern for the base plate to better fit the shaft holder, motor holder and syringe holder. Once the hole pattern was changed, the syringe pump ran smoothly, and it runs efficiently for our application with our design timeline constraints. Descriptions of all parts are in the printer components guide.


Figure 4. Syringe pump v4, which is the final design.

  1. Stepper motor
  2. Motor holder
  3. Motor to lead screw clamp
  4. Lead screw
  5. Linear shaft
  6. Plunger holder
  7. Linear ball bearing
  8. Syringe holder
  9. Syringe
  10. Tubing
  11. Female Luer lock to barbed adapter
  12. Shaft holder
  13. Syringe plunger
  14. Lead nut (not visible)


Extrusion Head Development


Version 1

The original design of the extrusion head was one part, and it was made to fit the hose to the Luer lock needle adapter, which was held in place by friction. There was a back panel with a hole pattern for mounting the extrusion head to the X-carriage on the printer.


anything

When this version of the extrusion head was reviewed with Mr. Alkins, the holes for the Luer lock adapter were too small due to there being insufficient clearance added into the design. Additionally, there was concern that friction would not be enough to stabilize the needle during printing, and changes should be made for that. The height of the needles above the base plate was also incorrect, as the needles were held too far from the print bed.


Version 2

From the review of V1 and from assessing the shortcomings, we learned that we needed to add clearance to the CAD. Additionally, a better way to lock in and stabilize the needles for printing was needed.

In the second iteration of the extrusion head, clearance was added on all holes, and a new sliding attachment was added. This sliding attachment slides on to the bottom of the extrusion head using small channel extrusions. Unlike the channel extrusions for the syringe pump, these channels were still added because there is not a lot of force being applied to them, so they will not jam. The sliding attachment had a smaller slot to hold and stabilize the needles since the plastic part of the needle has a smaller diameter than the Luer lock adapters. This sliding attachment was made to slide on and off, so that the user could slide the attachment off to remove the needles without removing the tubing and potentially changing the height of the Luer lock adapters. The attachment also provides an endstop for the Luer lock adapters, so they can be pushed to a specific height if the tubing is replaced or removed. It was made as a sliding piece so that the needles could still be accessed and switched without taking the whole extrusion head apart, which makes the component more user-friendly. The back panel was also made a little longer to lower the needles to the bed.


anything

When V2 of the extrusion head was printed, the sliding component needed to be filed down to fit the channels on part 1, and even then there was a lot of friction. Additionally, the Luer lock adapter could still be pulled out of the top of the extrusion head, so an additional component is needed to keep the adapters in place and prevent upward movement.


Version 3

After testing and learning from V2, a redesign was done to make V3, which has a third attachment, the adapter lock that slides on top of part 1 to hold the Luer lock adapter in place. Additionally, double the original clearance was used for all sliding components, and the back panel was extended again.


anything

After printing V3, the adapter lock was slid onto the top, but was too thin and became deformed after it was removed from part 1. There was not enough clearance between the adapter lock and part 1, so it got stuck on part 1 and bent due to friction between part 1 and the adapter lock. The needles were again in the wrong location, and the height needed to be changed again. Additionally, it was hard to hold the sliding parts for removing them from part 1, making them less user friendly, so a change was needed there too.


Version 4

V3 had several features that we redesigned for V4; part 3 was made thicker so it was stronger and could be more durable. The needle height was changed, and the part appeared to be done. Once the printer movement was tested, the needle height was found to be too low because they passed the CR touch sensor, a sensor used for the minimum Z height that is used by Creality printers, and prevented the printer from homing. The CR touch sensor will make the printer move the z axis until it makes contact with the bed, and it repeats this movement a second time to verify what position is zero on the z-axis. The grips on the sliders were nice additions, and made the extrusion head easier to use because users can hold the grips and use it to remove the sliders.


anything

Version 5

After testing V4, V5 was redesigned and built. The fifth version of the extrusion head was made in a way that allows the needle height to be adjusted. V5 is the current and final iteration of the extrusion head. The mounting hole pattern was changed to 2 slots, so that the height could be changed by loosening the mount screws, moving the extrusion head, and tightening the screws to secure the new height. The needle stabilization features, sliding top holder (part 3) to keep the Luer lock adapters locked in at a specific height, and sliding parts 2 and 3 for easy tubing or needle switching are all features that performed well in V4, so they were kept for the final version as well.


anything


Petri Dish Rig


Version 1

In our second meeting with Dr. Pai, he recommended making a holder to keep the Petri dish in the center of the print bed and keep it consistently in the same place. The Petri dish is needed for printing because it is the base for the bioink to solidify and hold its shape. The Petri dish also needs to be held in place, so the Petri dish rig was designed; a two-part track lies diagonally across the print bed, and two clamp parts slide along this track. One of the diagonal track pieces has an end stop to center it, and both have small overhangs that surround the corners of the print bed to align the track. The clamp pieces are put on the track, and then screwed together to make a press fit clamp for Petri dishes. The diagonal tracks are connected with electrical tape on the top and bottom, and are secured on the edges.


anything

When printed, the wrong bed dimensions were used, and the designed part was too large for the bed and could not be used to accurately center the Petri dish. Additionally, the end stop, which was a bump-like extrusion vertically protruding from the track, made it difficult to print such a long track because the supports could not adhere strongly enough to the bed. The print pulled up off the bed as the ABS cooled and shrank, which left the print not flat. Additionally, the clamp parts were too big to properly clamp onto the Petri dish, allowing the Petri dish to move even when the clamp was fully tightened.


Version 2

After testing V1 and getting user feedback from Dr. Pai, we designed a new endstop that was level with the track, but consisted of extrusions away from the track on either side. The other half of the track was made shorter so that the tracks fit the bed. The clamps had extra material removed to better triangulate the position of the Petri dish without additional plastic interfering.


anything

When tested, the rig accomplished the goal of centering the Petri dish; however, it interfered with the y-axis movement of the print bed because it hung off the bed too far and would run into the printer frame. The next iteration needs to be kept within the dimensions of the print bed.


Version 3

After testing V2, the ends of the track that make a corner overhang were cut off, and the track was mounted with electrical tape and binder clips. When tested, these parts performed well at centering the Petri dish without interfering with printer movement, and this is the final version of the Petri dish rig.


anything



Printer Firmware


Critical Functions


In the context of our bioprinter, the custom firmware needed to serve several critical functions:

Dual Nozzle Functionality: The firmware had to reconfigure the original single nozzle 3D printer to function as a dual nozzle system. This allows it to control and manage two syringes independently for precise and controlled bioprinting with our two bioinks.

Temperature Bypass for Cold Extrusion: Traditional 3D printers have a minimum temperature requirement to prevent damage. Our firmware needed to override this requirement, enabling the printer to perform cold extrusion, crucial for handling temperature-sensitive bioinks without compromising their integrity.

Customized Syringe Offsets: Customizable offsets in the firmware are essential to precisely position and control the movement of the needles connected to the dual syringes. These offsets ensure accurate alignment and coordination during the bioprinting process. Using our modified firmware, we had more control over the z-offset, but also the homing and location of z-homing using CR Touch.

LCD Display Customization: The firmware allowed customization of the printer's LCD display menu, tailored to the specific needs of bioprinting. This customization ensures that users can interact with the printer effectively, providing the necessary controls and monitoring features for the bioprinting operation. We added more controls to the LCD display, including SD card support as well as individual axis homing.

In essence, our custom firmware adapted and enhanced the printer to cater to the unique demands of bioprinting, including dual nozzle control, cold extrusion, precise positioning, and user-friendly interface customization.


Marlin

To customize the firmware, we modified Marlin. Marlin is an open source firmware that is designed to run 3D printers. It runs the 3D printer mainboard and manages the printer activity, coordinating the heaters, sensors, steppers, motors, LCD display, and general controls. It is available online and can be freely downloaded on marlinfw.org. It is set up so that it contains multiple modifiable features that are commented out that users can choose to include, modify, or simply leave out depending on their printer.

Our main challenge was modifying the printer to accommodate two extruders in order to print from two syringes. The original Creality Ender 3 motherboard didn’t allow us to connect an additional motor for the second extruder; therefore, we used an MKS Gen L v2 mainboard that we connected to the original parts of the printer. We disconnected the LCD display, motors, and power source from the printer’s original motherboard and connected them to the MKS Gen L v2 in the appropriate pins. We then modified the original Marlin 2.1 firmware to allow for two extruders.


anything
Figure 1. Example of Marlin code - defining feed rate of filament.

Baud Rate

The first modification was the baud rate — the speed of communication between the motherboard and printer — which had to be set up at 115200 bit/s to match that of the printer. We also modified the printer name to “Rosynth 3D Bioprinter.” Then, we set the number of extruders to two and set the driver type used to control the motor to A4988. Drivers are used to regulate a motor’s direction and motion by supplying current in various amounts by using pulse width modulation to control motor speed. Next, when compiling the code with the previously mentioned modifications, we noticed multiple temperature-related errors preventing it from compiling. After some research, we noticed that each extruder required a temperature sensor since, if it were to be heating up to extrude, the lack of temperature sensor would be a safety hazard. Marlin is originally designed for regular printers, and although it can be modified to be used with bioprinters, it still requires the same safety features as a regular 3D printer. Consequently, we had to turn on a temperature sensor on the second extruder.


Temperature

We also changed the extruder minimum temperature to 0 °C since our bioinks have to be cold-extruded. Additionally, we had to modify the movement setting and set up the steps per unit, speed, and acceleration for each axis according to the Ender 3 factory settings. The bed size was set to 230mm x 230mm. Lastly, the LCD display was connected to the motherboard and set up on the Marlin as well.


Homing

Afterwards, we had to set up homing. After first trying to home our X and Y axes, we noticed that the extrusion head kept going even after hitting the endstops. We then noticed that the X and Y endstops were inverted on the Marlin and removed that, making the X and Y homing functional. Then, we set up CR Touch, an auto bed leveling sensor used in 3D printing to automatically level the print bed and improve print quality by ensuring the nozzle is at the correct distance from the bed at all points during printing. It simplifies the setup process and compensates for variations in the print bed's surface, allowing for more reliable and accurate 3D prints. To do that, we enabled CR Touch on the Marlin and added its offset from the X and Y axes after measuring them on the printer. After these modifications, auto Z homing was functional and the printer was able to home properly and function properly.


Testing with PronterFace

To test the printer and load code, we used PronterFace. PronterFace is a 3D printing host software. It is used to control, monitor, and communicate with 3D printers via a computer interface. It allows users to send 3D printing instructions, manage print jobs, and view real-time printer status, making it a valuable tool for operating and troubleshooting 3D printers. We downloaded it on a computer that was connected to the MKS Gen L v2 motherboard via USB connection, which allowed us to directly move the motors and extrude. To improve the user-friendliness of this workflow, we connected an SD card reader to the motherboard and added SD card support in Marlin.