3D Printer

There are 2 main firmware for the Ramps.
– Merlin
– Sprinter

I used the Merlin software because the prints a have seen where better made with Merlin than with Sprinter.

Downloaded it from : https://github.com/ErikZalm/Marlin

currently I’m using Cura 14.01 for creating the gCode.
the Arduino used the gcode to position its printer head and extrude,
and a lot more of course.
its even possible to print directly from PC with the USB cable attached to the Arduino.

To alter the setting en uploading the software to the Arduino you need a bit of software.
you’ll need Arduino 0.23 for the best result.
See File “arduino-0023.zip”

After installing the software extract the Merlin firmware and open the “Marlin.PDE” file.
Go to the “Configuration.h” page.

This is where all the settings are.
Will go through this, step by step.

I only going to show the basic settings.
There is a lot more in this config.
The row number and values are from the default config file.
In the added zip file you’ll find the default and custom files

Row nr: 73 #define MOTHERBOARD 7
This sets the electronics board type.
default is 7 (Ultiemaker)
But for this project I used a RAMPS 1.4
with one extruder, a fan and a headed bed
so I used nr 33

Row nr: 77 // #define CUSTOM_MENDEL_NAME “Bram’s Beast”
just for fun, I named my printer, this shows on the LCD on start-up.

Row 84: #define EXTRUDERS 1
This set the number of extruders the printer has.
default Is 1

Row nr: 124/127 TEMP_SENSOR
The extruder and headed bed have a thermistor attached to it.
this for measuring the temperature.
it’s important to get the correct value, otherwise the the extruder of bed will overheat or stay to cold.
If you know which thermistor is used you’ll only need to fill in the right number.
– #define TEMP_SENSOR_0 is the main extruder thermistor
– #define TEMP_SENSOR_BED is the heated bed thermistor
If only 2 thermistors are used, u can fill in 0 at the other 2 rows
Above row nr 124 is list containing commonly used thermistors.
if you are not sure about the type of thermistor you are using,
download the data cheat of the thermistor.
connect the thermistor to a multimeter and measure its resistance,
check the temperature. And cross reference this with the table in the datasheet.

Row nr: 234 #define PREVENT_DANGEROUS_EXTRUDE
This is used to prevent the extruder to move when the Hot end is cold.
I commented this out for test purposes.

Row nr: 301 / 306 #define INVERT_X_DIR true
These rows are used to define the motor turning direction.
After a connected all of the end stops and steppers a powerd the printer,
connected it to the PC and used “Printrun”.
Printrun enables you to print, but also move the axis.
I moved the axsis 10mm and confirmd the steppers tured the right way.
if not: change True to False on the axis, save the file and upload it again.

(if the steppers are not run properly, go to the next step first)

Row nr: 313 / 319 #define X_MAX_POS 205
This sets the MAX and Min limits of your printer.
The MIN value of 0 should not be changes (except is you want to have you HOME point at the centre of the bed)
The max value is easy to find out.
Home you printer, and use Printrun or the LCD screen to move the head.
Move the axis just before the head leaved the bed.
Check the travelled distance and change this in the firmware.

(if the steppers are not run properly, go to the next step first)


Row nr: 403 #define DEFAULT_AXIS_STEPS_PER_UNIT
This is the hardest part of the setup.
here is determent how much the motor has to turn for 1 step.

1 step == 1mm

I used this site: http://calculator.josefprusa.cz/
to get the values for the X Y and Z axis.
Go to the site a fill in the varaibles.

The default steps:
{78.7402 , 78.7402 , 200.0*8/3 , 760*1.1}
78.7402 = AXIS_STEPS_PER_UNIT_X,
78.7402 = AXIS_STEPS_PER_UNIT_Y,
200.0*8/3 = AXIS_STEPS_PER_UNIT_Z,
760*1.1 =AXIS_STEPS_PER_UNIT_E

this ware the values I used:
{53.33 , 53.33 , 2560.00 , 515.91}

To test this,
-Save the code.
-Upload it to the Arduino.
-Start Printrun.
-Home the axsis.
-Measure the distance from a fixed point to a point that is going to move,
for example the X axis carrier.
-Write down the measured value.
-Move ONE axis 50mm.
-Measures the distance again, and write it down.
-calculate the distance travelled by the printer.
– if its equal to the 50mm you’ll moved in the software: congrats, this axis is set up properly!
Go to the next axis.
– if not: use the next formula to calculate the next value to try:
(Set Value / Actual Moved Value * 100) = new value;
for example: ( 53.33 / 55 * 100) = 96.96
Set the value and try again!
I used the website to calculate the values, and It work right away.

the extruder was a other story.
for this to work:
-Place a piece of filament in the extruder and clamp it down.
DO NOT PUT THE FILAMENT TOO FAR DOWNWARDS.
just stick it 2 cm or so. It has to move downwards 2 cm.
-Stick a piece of tape on the filament.
-Measures the distance from the tape to the extruder.
-Move down the extruder 1 or 2 cm. (with printrun).
-Measures the distance again and calculate the travelled distance.
-if its equal to the given distance, great. If not, use the formula above an try again!

(if a LCD is connected)
Row nr: 470.
Uncomment the code for the LCD screen u used.

The rest of the code just fine, you can read through it to fine tune, or set some other values.
but these are the values needed to be set.