Machine Week - Rota, a polar paste printer¶
Our group: Magdalena, Emily, Andrea, Hala and Riichiro really got into paste printing in the past weeks. We understood, that it’s not only in the right mixture of the paste, but very much about the sourrounding processes to achieve a great result. For this reason we wanted to understand the machining and mechanical process behind the printer better and thus improve our understanding around paste printing.
This is why we created: Rota - a 3D paste printer with a rotational bed. It uses Arduino Mega 2560 & Ramps1.4 to control 3 NEMA17 stepper motors. The extrusion is done by air compression.
Happy Machining!
0. Project Documentation¶
The following documentation should give you a general overview of our process, what we achieved collectively and how to recreate our machine.
To bridge several tools and working locations, we used the collaborative whiteboard Miro to collect references, schedule our tasks and communicate ideas. Along the way we obviously! encoutered some hiccups, which we describe briefly on this page - please find out more about our individual learnings here:
1. Research¶
Concept Thinking¶
After an initial brainstorming as well as collecting references individually we discussed three fabrication options with our local instructors:
- Auto paste compiling - a companion machine to the paste printer itself
- Compressor & screw head - an exploration of different extrusion mechanisms, built on top of our lab’s paste printer
- 2-axis printer with rotational bed - creating our own paste printer from scratch
Consolidating their feedback we decided to go BIG or go home and build our own 2-axis printer with a rotational bed.
Understanding existing printers¶
As a starting point we analyzed the documentation of several existing printers, which we could learn from and build upon:
We understood quickly that given the taskload we needed to prioritize our tasks, time and focus to finish in time. Thus our goals were:
#Work with what we have¶
To lower cost, fasten the building process and use the available materials in the lab, we decided to reduce the number of 3D printed parts and replace them with single extruded aluminium frames.
#Build for stability¶
In order to increase stability, as well as deep dive into the design of our local paste printer, an adapted Creality Ender-3, we chose to match the Ender’s aesthetics and use it as a structural reference.
#Prioritize and create “nice-to-haves” components¶
Breaking our hearts a little we also made a practical choice to version our machine building process due to the time limit. Initially we wanted to add the Component Syringe Extruder to the first version of our machine, but changed this on recommendation. The basic material extrusion will be through a syringe pushed by aircompression. Nevertheless we added this part to the backlog for an improved iteration, if we had time left.
#Work in increments¶
To keep the spirit of spiral development we defined several big areas to work on simultaneously: * adaptation of the base, 3D printing * collection of necessary non-printed parts * firmware * electronics design * documentation
2. Fabrication¶
Process¶
The core system of “name of our machine” is based on the merge of three existing machines: RepRap Polar Printer (R360), Marbling CNC and Fablab BCN’s paste printer. Thus our process followed these steps:
- understand and check the existing documentation (process, files, problems)
- adapt to local requirements/availability (materials, machining, fixture)
- fabricate the different pieces accordingly (lasercut, 3D-print, collect, shop)
System Overview¶
Hardware¶
File Set¶
ROTA - polar paste printer by andrearubio18 on Sketchfab
Our Rhino file exeeded the 10 MB even as a .ZIP file, thus please find our file on Google Drive: ROTA_paste printer.zip
Hardware Components¶
Rotational bed & bed stabilizer¶
The goal was to reach a levelled and stable bed for a steady print. The bed and bed holder are original RepRap (R360) pieces, which we lasercut in 5mm acrylic. As well as the bed maingrain and smallgrain, which we 3-D printed.
To fix the rotational bed to the aluminium frames we redesigned the RepRap’s bed mainbase. We designed it to sit on an aluminum frame to connect it to the rest of the frame for stability. The mainbase holds the bed, bed stabilizer, large gear, and motor. It has holes to connect it to the aluminum frame and a hole for a large bolt to go through all the pieces and lock. The base has two bearings embedded to allow for its smooth rotation.
A challenge was to make sure the motor does not shift the gears because of its weight and its precise placement. In the process we tried to sink in the motor to the mainbase to keep it at an 90° angle and had to test multiple washers, spacers, and types of screws.
Eventually using a locknut at the end of the bolt at the bottom of the base stabilized the whole bed rotation. As the rotation happens from the center and attaches to the holder, any instability was very visible once the bed begins to rotate. For that reason, it was very important to make sure that the height of the gears from the base are precise and matched. We moved the small grain up the motor shaft and placed spacers underneath the maingrain to help the movement and keep the motor from pushing aganist the grains and tilting them.
As the bed would need to be removed after every print it only sits on top of the screws of the bed stabilizer. We used locknuts to fix the bed holder and more locknuts at the same level on the top to level the bed evenly at all four points.
Another design change was to add two sideholder instead of one to add stability. We fixed these exactly on the printing line on two extra aluminium poles. Initially we had them mounted on the main poles but because of the cartridge design we needed to center the bed to the extruder. They are designed to hold one bearing which is placed on top of the bed so the bed can be kept level at these two points. The are also not screwed on too tight to the aluminum extrusions so there is space to rotate them away and remove the bed after a print.
Lessons Learned: * using washers of the same width to add stability * keep the weight of the motor in mind when redesigning the baseholder * using locknuts instead of nuts to help levelling the bed
Cartridge holder¶
To keep the scope of the project feasible, we opted to drive the paste feed rate using an air compressor (rather than adding the complication of an additional motor and auger to control an extruder). However, we still needed a way to fasten the cartridge containing the print material to the x-axis carriage of the machine.
We used the Fab Lab Barcelona custom Ender 3 pro which has been modified for paste printing as a reference to design our cartridge holder.
Version 1: Tape
Outer piece to fixture the cartridge to the printer
Our configuration of the endstop to the X-axis carriage was different from the Ender 3 printer because we had access to different endstop sensors. We printed a sample cartridge holder first and then measured how far it would need to extend to trigger the endstop.
One modification included extending the height so the cartridge would be held at two points along its length. Another modification was to extend a portion of the adaptor in the x direction so it would trigger/activate the X-axis endstop at the appropriate cartridge position. The final file can be found the the Sketchup repository for the project linked above.
The cartridge is attached to the printer via three 3D printed pieces- one main piece (white in the photo) which is bolted to the x-axis carriage and two pieces (black in the photo) which are bolted to the corresponding arms of the white piece to hold the cartridge snugly in place. The cartridge is attached to the printer via three 3D printed pieces- one main piece (white in the photo) which is bolted to the x-axis carriage and two pieces (black in the photo) which are bolted to the corresponding arms of the white piece to hold the cartridge snugly in place.
Lessons learned: * The direction/orientation of the piece on the print bed is important for the resultant mechanical & structural properties. Printing in the ‘right’ direction can prevent delamination. * Smaller test pieces can be useful for concept proofing and relative sizing without spending the time it would take to print the whole piece.
Belt Tensioner and keeping the belt in place¶
We intended to copy our lab’s paste printers belt tensioner. Initially we designed it to be a 3D printed piece, because we did not have the ready-made piece available in the lab.
It’s fixed to the aluminium frame with two screws and first we used a special bearing to hold the belt. Structurally we realized that the plastic was bending and the bearing was touching the frame, thus the belt could not spin.
For this reason we changed the piece to an metal plate. We went for what we had in the lab and cut and drilled it into shape.
Secondly we changed the bearing and added big washers to keep the belt from moving to one side instead of a bearing that had higher sidepieces, because this one did not spin the belt smoothly.
Lessons Learned:
- not all pieces can be simply 3-D print - sometimes structurally you simply need a more stable material
- it’s useful to test several bearings upfront before assembling and deassembling
- check if the motor screw is tightened, else the belt will never spin!
Motor, Rod and Endstops Holder¶
On the left side of the machine we have the motor holders for the X and Z axis rod and the end stops. Connected the the gantry is the X-axis motor and the X-axis endstop. They are held in place with a 3D printed part that is redesigned from the original RepRap (R360) printer. The 3D printed part also has a holder for the Z-axis rod.
This main 3D printed piece is attached to the extrusion with a lasercut acrylic piece on the other end with the bearings on the other two ends. Each bearing is attached with a screw, washer, bearing, spacers, and locknuts. On the bottom (or inside) one, we also used an eccentric nut to adjust the tension of the movement.
As for the Z-axis endstop, we checked its placement by placing the cartridge at the desirable height and then screweing it in. The endstop is attached to a 3D printed piece that has holes to screw it into the aluminum extrusion and the endstop.
Due to the size of the endstop that we had available at the lab, the acrylic piece that connects the gantry was not actually hitting the endstop. For that reason, we connected an additional 3D printed part the aligns with the bottom of the lasercut piece which hit the endstop correctly.
Lessons Learned:
- making sure to measure all the distances precisely and assembling once to make sure everything is leveled, aligned, and measured correctly!
- adding some extra material to the 3D printed part holding the Z-axis rod to make it stronger as the first part broke off
Electronics¶
Electronic Components¶
From the R360 3D Printer we listed all the electronic components we needed for this printer. Since our printer is a paste printer, all the thermal components were not included.
Then, we started shopping for those components in our lab. By digging inside boxes full of electronics, looking into a bunch of shelves, and asking my tutor for help guiding me on where to look for components, we were lucky to have all the electronic components and did not need to buy anything.
Electronic Connection¶
To make the right connection in each component we followed the page about RAMPS 1.4 RepRap. For the full documentation see Riichi’s Page
In below, we explain some important steps that are not fully explained in the RAMPS 1.4 page.
- For checking the phases of stepper motors, the trick is to use a wire and connect to 6 pins that come out from the motor one by one while twisting the shaft. When the shaft becomes harder to twist, the connection is a phase. By the way, there are 6 pins but you only use 1 pin on each side and 2 pins in the middle. In our case, it was cross phase so we needed to rearrange the wiring.
- For calculating wire size, we used a wire size calculator. In our case we have 22 AWG wires which we replaced with even thicker wires just to be safe.
Additional Connection¶
100k register was connected to T0 pins on Ramps1.4 because later we discovered an error shown in Arduino which was due to the missing connection of extruder temperature. So we added a register just to give the system to have something to read for the thermal settings even through we do not have any thermal parts.
Additional Adjustment¶
After we mount the motors on our printer we adjusted the Vref by twisting the screw on the motor driver while checking the current with a multimeter (use 2V setting). The value is calculated by this equation. Vref = I x 8 x Rsense. Details are explained on this page. In our case, the value was 0.64, so we set all the motor drivers to this value. Ideally, use a non-conductive tool to do this step.
Lessons Learned: * When using a commercial board, we learned it is important to understand what each pins are for and how the connection is made, because the udnerstanding of the board become crucial for debagging.
Firmware and Software¶
Marlin 360 VS Marlin¶
Note: According to the documentation of the RepRap Polar printer R60 it recommended to use Marlin 360, so we followed the instructions for installing here.
We had some troubleshooting issues which you can check the full documentation at Andrea’s documentation here. But because we couldn’t quite figure out certain elements in the code we switched to Marlin for better understanding the basics of how to move our machine. Instructions for installing:
- Download Marlin here, follow instructions.
- Open Marlin in Arduino.
- Connect Arduino Mega board in the correct port.
- Verify and compile file into Arduino Mega board.
Final settings¶
- BAUDRATE to 115200.
- Change in code the acceleration using: M204 from 3000 to 9000 (maximum value).
- Continue playing values from Step per unit and Feedrate.
- Setting up a base for all motors to the following values: 10,000 Acceleration // 1000 Feedrate
- Hardware: all motors were fixed to 0.6 voltage
- Arranged travel limits after homing: Z_MAX_POS 200000
- Calibration to this point:
- DEFAULT_AXIS_STEPS_PER_UNIT { 80,18,375,327 } // coordinates
- DEFAULT_MAX_FEEDRATE { 5000 } // related to homing speed calculations
- DEFAULT_MAX_ACCELERATION { 9000, 9000, 100, 10000 } // X Y Z max start speed for moving
- DEFAULT_ACCELERATION { 3000 } // X Y Z for printing moves
- DEFAULT_RETRACT_ACCELERATION { 3000 } // X Y Z for retracts
Useful commands¶
- G28: Auto home
- M84: Disable steppers
- M92: Set axis steps per unit
- M114: Get current position
- M119: Endstop states
- M201: Print/Travel move limits
- M204: Set default acceleration: S normal moves T filament only moves
- M220 S: Set speed factor override percentage
Download the Marlin code as .txt here: ROTA_Marlin code.txt
Lessons Learned:
- When using a firmware, we learned that it is important to not expect the machine to work for the first time, because there is quite a lot value that need to be changed from default setting. Often times, those values are unique to the machine, so it requires try and error.
3. Resume & Possible Improvements¶
It’s been a great challenge but we managed well and can now actually use our own paste printer! Yeah!
- Complete list of machine parts (including non-fabricated parts)
- Nicer packaging of the electronics (right now they’re just loose)
- Adjust design of the bed mainbase to eliminate need for the washers and to support the Y-axis motor better
- Include Polar Calculation or fully control with Marlin360
- Include Polar Calculation or fully control with Marlin360
- Connecting to G-code sender and print 3d model
- Redesign the bed for easy removal of the printed pieces