Introduction: Lego 3d Printer

Picture of Lego 3d Printer

Hello !! Lately, I have seen some 3D printers built from lego, and as I have done several printers, I have said to build one of the lego.
All the details are in pictures, if you have questions you can send me private messages, I will respond with great pleasure. I advise you to watch pictures and videos with great care. All components were purchased from www.gearbest.com. Succes to build this project!

Step 1: The Test

Step 2: Install Software

Get the Marlin Firmware
Go and download the Marlin 3D printer Firmware, which is version 1.0.2 as of this writing, and place it somewhere you can find it. Click the Download Zip in the right hand side. See my images here if you can't find it. The file you downloaded is named Marlin-Development.zip which will create a folder named Marlin-Development when you unpack it. Put it someplace convenient like the desktop. Setup the Marlin Firmware in Arduino program From inside Arduino IDE: File -> Open Browse to your Marlin-Development folder and into the Marlin folder. Select and open the Configuration.h or Marlin.ino file (both opens a linked set of tabs/sketches, so it doesn't matter which one you choose). A new window opens containing the Marlin.ino. Close the other/old window. You have a lot of tabs in the open window. Select the Configratuin.h tab - see images.Defining Motherboard as RAMPS 1.4 with accessories. We need to define which Motherboard we are using. You can see all available board types in the boards.h file. Many guides around the web tell us to either edit at boards. or pins file or similar, to define motherboard. We do not have to do that anymore. The variables we need are all placed in Configuration.h Configuration.h -> Press CTRL+F to open the find window and write RAMPS Click Find to find the line containing: #define MOTHERBOARD...Here we need to define our board as pr. definitions in the boards.h file. Aside from defining we are using a RAMPS board, it is the the devices connected to the D8 (Heat-bed), D9 (fan) and D10 (heater)we define here. E is for Extruder, F for Fan, B for Bed.Make sure the line reads: #define MOTHERBOARD BOARD_RAMPS_13_EFBSay we had two fans and no heatbed we would define the last part a EFF instead. Save the file if you made any changes.Defining Baud rate, Extruders and Power Supply Default baud rate is 250000 now. If it gives you any problems (with your computer) you can change it to 125000. These steps are only for people WHO need to change it to the non-default 125000 configuration. Open Configuration.hFind the line containing #define BAUDRATE 250000 and put two slashes in front of it, like this: // #define BAUDRATE 250000 On a new line you write: #define BAUDRATE 125000 Save the fileExtruders are default defined as 1, so leave that alone. Power Supply is configured as standard ATX. PSU can be defined as X-Box as well. Defining Thermal Settings Temperature sensors There is a list with 20-25 different options for each sensor. Below the options is the list which defines our sensor inputs on the RAMPS 1.4 board. Default defines SENSOR_0 with option 1 which Means it is a // 1 is 100k thermistor - best choice for EPCOS 100k (4.7k pullup) or in other words: the standard thermistor used for temperature Measurements for 3D printers (that I know). The TEMP_SENSOR_0 is your Hot-end thermistor. The other sensors are configured with option 0, which translates to being disabled. #define TEMP_SENSOR_0 1 #define TEMP_SENSOR_1 0 #define TEMP_SENSOR_2 0 #define TEMP_SENSOR_3 0 #define TEMP_SENSOR_BED 1 Heater settings We need to define minimum and maximum temperature of our Hot-end and Hot-bed Minimal temperature First is the Minimum settings, which are default at 5, which is just to test the Thermistor is working. Ie: to make sure wires aren't melted or otherwise damaged etc. Comment out 1 ,2 and 3 as we don't have those. You will get a compile error if you comment out the BED_MINTEMP (maybe only if it enabled under Temperature sensors). You can define MINTEMP as 0. #define HEATER_0_MINTEMP 5 //#define HEATER_1_MINTEMP 5 //#define HEATER_2_MINTEMP 5 //#define HEATER_3_MINTEMP 5 #define BED_MINTEMP 5 Maximal temperature Here we define maximum temperature for our Hot-end and Hot-bed. Defaults: Hot-end: 275 Hot-bed: 150 Comment out 1,2 and 3 as we do not have those (not sure you have to really) If you print ABS, you want to do it around 230 degrees or so. Remove the // on the line with BED_MAXTEMP if you install a heated bed. #define HEATER_0_MAXTEMP 240 //#define HEATER_1_MAXTEMP 275 //#define HEATER_2_MAXTEMP 275 //#define HEATER_3_MAXTEMP 275 //#define BED_MAXTEMP 120 If you make any bigger changes, you must change the Preheat Constants way farther Down in the file where (use CTRL+F) Preheat for PLA is listed at 180 for hotend and 70 for bed and ABS is 240/110 respectively. Preheat Constants These are mostly relevant if you use an LCD display, as these settings will be listed as "Preheat PLA" and "Preheat ABS" in there. It is a good idea to Insert a comment with the original temperatures so we don't forgot those. #define PLA_PREHEAT_HOTEND_TEMP 180 #define PLA_PREHEAT_HPB_TEMP 70 #define PLA_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255 #define ABS_PREHEAT_HOTEND_TEMP 240 #define ABS_PREHEAT_HPB_TEMP 110 #define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255 Extruder settings As default the Extruder is configured to not start unless the hot-end is at least 170c degrees. This function is enabled as default with PREVENT_DANGEROUS_EXTRUDE and a default definened minimum temperature at 170c. I have uncommented these lines as I want to test the Extruder motor first without attaching the hot-end. Remember to remove the slashes later on. // #define PREVENT_DANGEROUS_EXTRUDE // #define EXTRUDE_MINTEMP 170 Defining End-Stops End stops are small contacts/switches placed at one or both ends of axis to tell the system it should stop. These can be used to automatically calibrate the printer for Home and end-posistions. Some of the technical electronical parts of End stops are allready defined as the different PULLUPS resistor configurations. You can read about pull-up-resistors in the wiki. I'm not all into the specifics so i'm leaving most settings at default for now. One thing of importance though: there are Pullup resistors on the Arduino board, which can be used, so you do not have to solder anything in yourself. If you do not install endstops, you need to remove the slashes in front of one or both lines according to your system. I removed both as I don't have any endstops. #define DISABLE_MAX_ENDSTOPS #define DISABLE_MIN_ENDSTOPS You can also define which way the printer should move to get to home posision. Read in the Axis movement directions below. Axis movement directions There is no real way to know which way the beds are going to move, except to try it out. After connecting everything you move alle beds to the center position and move one of them a bit. If it move the wrong way, you can either change the configuraitons or swap the wire pairs on the RAMPS 1.4 - AFTER you have powered everything off and disconnected the USB as well. If you just want to change the configurations file, you change false to true as fits your system: // Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way. #define INVERT_X_DIR false #define INVERT_Y_DIR false #define INVERT_Z_DIR false #define INVERT_E0_DIR false After your have configured the motors to move the right way, you should configure which way the motors have to move to get to the home position: // Sets direction of endstops when homing; 1=MAX, -1=MIN If a endstop is configured to be at the 0 position for that axis, the setting here needs to be -1. Otherwise, it needs to be 1. #define X_HOME_DIR -1 #define Y_HOME_DIR -1 #define Z_HOME_DIR -1 I don't think you would ever really need to change this?! Printer printing area This defines how large an area we can print on. It is listed as 200mm in each direction as default, which is rather much more than our printer can do. Our machine can do around 40mm in each direction. I'll set it at 37, just to start at a safe distance. // Travel limits after homing (units are in mm) #define X_MIN_POS 0 #define Y_MIN_POS 0 #define Z_MIN_POS 0 #define X_MAX_POS 37 #define Y_MAX_POS 37 #define Z_MAX_POS 37 You can also define bed-leveling but you have to play with that on your own printer to make any sense of it. If you use a floppy drive for Z axis it is around 15mm or so. Movement Settings We need to define how many steps the motors needs to make in order to move the beds 1mm. We will need to use the values as calculated for the different printer axes and extruder. The order is {X, Y, Z, E} //#define DEFAULT_AXIS_STEPS_PER_UNIT {80,80,4000,500} #define DEFAULT_AXIS_STEPS_PER_UNIT {215.12,215.12,8034.69,196.52} We define the fastest mm/s the printer is allowed to move. . //#define DEFAULT_MAX_FEEDRATE {300, 300, 5, 25} #define DEFAULT_MAX_FEEDRATE {100, 100, 2, 25} We need to tune this. Listed is the default settings. //#define DEFAULT_MAX_ACCELERATION {3000,3000,100,10000} #define DEFAULT_MAX_ACCELERATION {200,200,50,5000} We need to define how fast our printer is allowed to accellerate. The default for all 3 are 3000, but I change that to 100 to start up easy. #define DEFAULT_ACCELERATION 100 #define DEFAULT_RETRACT_ACCELERATION 100 #define DEFAULT_TRAVEL_ACCELERATION 100 Upload the firmware to the printer Press the "tick" (if that is the Word) icon to the left of the arrow icon to verify the code. If it makes an error you need to find it and correct it. It is most likely a typo or maybe an extra \ or similar. If it does give an error but not showing you anything, you can choose to copy it and paste it into notepad or similar, to see what the error is. You can press the arrow-icon to upload the configuration to your printer. A common error I've done was being connected to my printer with Pronterface (or another USB controller program) as Arduino can't connect to it in that case.

Step 3: How to Wire a 3d Printer Arduino RAMPS 1.4 A4988 Stepper Motor Driver

Use the video

Comments

About This Instructable

222views

3favorites

License:

More by calincostelcoty:Lego 3d Printer3D Printer Arduino Mega RAMPS 1.4 How to Wire a Arduino Nano Cnc
Add instructable to: