This project was done for the “Elektroboj” competition together with colleague Goran Popović.
Here is a copy of his post about this project.
The goal of this project was to construct a 3D printer which moves in XY plane with DC motors instead usually used stepper motors. The idea was that continuous DC motors with encoders for feedback information will be faster and will produce better look of the printed part. When stepper motors are used, there is no feedback information about the position of the printing head. That is not a problem in most cases since the forces in XY plane can’t produce such momentum on the axis of the stepper motor to cause a slip in motor’s steps. If one would want to print faster, inertial force of the massive printing head could cause slippage which would result in unusable printed part.
An open-source solution uses RAMPS shield with Arduino Mega microcontroller board. The existing solution was adapted so that the output signals from RAMPS board were forwarded to the board with 2 H-bridge chips and 2 Arduino Pro Mini microcontroller boards. Arduino Pro Mini converts signals for stepper driver (DIR- direction & STEP) into PWM signal which controls DC motors over H-bridges.
Image shows RAMPS board with a newly designed PCB for 2 Arduino Pro Mini and H-bridges.
Beside 2 DC motors that control X and Y axis, there are also 3 stepper motors, two for Z axis and one for filament extrusion. Each axis had two end stoppers that limited the working area of printing head.
Software was divided in three parts: Solidworks for the design of 3D models, Cura for converting a STL model in G-code (machine language) and Repetier as G-code interpreter.
Since some parts needed a modification, new modified parts were designed in Solidworks, and were printed on the 3D printer. In order connect command chain between STL model and head of the printer, Cura and Repetier were used. Cura slices the STL model in small steps that the model consists of. G-code command is given to each of these steps. Repetier reads the G-code and sends signals to RAMPS board that then controls the motors.
Arduino Pro Mini that were uses to control DC motors were running PID regulator program. Signals DIR and STEP from the RAMPS board were used to change a position reference of the DC motors. The reference was then compared to the value received from the encoder.
It was decided to use Prusa i3 model as a base and adapt it to the model with DC motors.
Except wooden frame which was cut on CNC machine and 2 downloaded STL parts, everything else was designed by ourselves.
Images show printing plate which moves in Y axis.
DC motor for X-axis which moves printing head.
In this project 3D printer with DC motors was constructed and it could precisely position in the all three directions and melt the filament through the printing head. The remained problem was that the melted filament wouldn’t stick to the printing plate. Due to the project deadlines we did not find the solution for that problem.
— written by Goran Popović