How to choose a 3D Printer Firmware
Choosing the best firmware will never be an easy task. We must consider a few things, and this is what todays post is about
First of all, what is a 3D Printer firmware and why do I need it?
The firmware is not something to be afraid of, it’s simply a program, like chrome or Firefox, imagine that it is the program that lets the program run, by example, your computer have lots of chips, they all “talk” to each other through the firmware, the usb controller has a firmware that enable the chip to receive information from the usb device and then the windows explorer is able to read the content
For the 3D printer, the firmware is responsible for understanding the G-Code sent by the slicer and translate it to the stepper drivers which control the motors, at the same time it control the temperature, flow, acceleration, speed, and more things.
What are the options?
Today we have a lot of options to choose from, but we will talk of the two most used (and best)
The Repetier firmware is the best choice for newcomers, the biggest advantage is that it have a web-based tool to configure itself, so you won’t be lost among thousands of lines
Here is some images from the repetier website
And the configuration tool..
You can find the firmware on the official website: http://www.repetier.com/
And the configuration tool at:: http://www.repetier.com/firmware/v092/index.html
Here is a list of all the features:
- RAMP acceleration support.
- LCD Menu directly connected or via I2C (since version 0.60)
- Supports clickencoder, key matrix and push buttons.
- Path planning for really high print speeds. (since version 0.32, 2011/9/24)
- Fast ooze prevention system. (since version 0.35, 2011/10/8)
- Trajectory smoothing for even smoother lines. (since version 0.32, 2011/9/24)
- Awesome Nozzle pressure control for improved print quality with RAMPS. (since version 0.32, 2011/9/24)
- Fast – 16000 Hz and more stepper frequency is possible with a 16 MHz AVR. (since version 0.32, 2011/9/24)
- Multiple extruders supported (experimental).
- Standard ASCII and improved binary (Repetier protocol) communication.
- Autodetect the command protocol, so it will work with any host software.
- Continuous monitoring of one temperature lika a boss.
- Important parameters are stored in EEPROM and can easily modified without recompilation of the firmware.
- Stepper control is handled in an interrupt routine, leaving time for filling caches for next move.
- PID control for extruder temperature.
- Interrupt based sending buffer (Arduino library normally waits for the recipient to receive written data)
- Small RAM memory print, resulting in large caches.
- Supports SD-cards.
- mm and inches can be used for G0/G1
- Works with Skeinforge 41, all unknown commands are ignored.
- Dry run : Execute your G-Code without using the extruder. This way you can test for non-extruder related failures without actually printing.
- User defined and generic thermistor table( just set r0,t0,beta,r1,r2) in config (since version 0.31).
- Software PWM for boards, where the PWM timer is used for other purposes.
Our dear marlin, it’s a community supported firmware, on GitHub, so it almost doesn’t have bugs, since they are quickly fixed. Marlin have thousands of features, some awesome security features and most important, it Works! some of the features are:
- Interrupt based movement with real linear acceleration.
- High steprate.
- Look ahead (Keep the speed high when possible. High cornering speed).
- Interrupt based temperature protection.
- Preliminary support for Matthew Roberts’ advance algorithm.
- Full endstop support.
- SD Card support, including folders and long filenames.
- LCD support, both character-based and graphical. (Ideally 20×4 or 128×64).
- LCD menu system for standalone SD card printing, controlled by a click-encoder.
- EEPROM storage of several settings.
- many small but handy things originating from bkubicek’s fork.
- Arc support.
- Temperature oversampling.
- Dynamic Temperature setpointing aka “AutoTemp.”
- Endstop trigger reporting to the host software.
- Heater power reporting. Useful for PID monitoring.
- CoreXY and CoreXZ kinematics.
- Delta kinematics.
- SCARA kinematics.
- Automatic bed leveling and compensation.
- Firmware binary size between around 50kB and 100kB, depending on options.
- Filament Width Sensor support
- Filament Runout Sensor support
- Multiple Extruders (up to 4) suporte
The default baudrate is 250000. Because this baudrate is directly derived from the usual 16MHz clock of the Arduino MCU, it has less jitter and hence fewer errors than the usual 115200 baud, but 250000 baud is not as well supported by drivers and host-environments.
How to install a firmware on your 3D Printer?
So, now that you know the two best firmware available, lets take a quick look at how it can be installed into to the Arduino Mega 2560 board.
First step: The first thing you need to do is download the firmware itself, from the official website (this is important). once you have downloaded the firmware file you will have to extract it (7zip is the best available option).
Second Step: Now you are required to download the Arduino IDE from its official website On this page you can choose from a wide range of items. You should download the IDE. Select the file which is right for your operating system. The version must be 1.0.5. others wont work!
Third Step: Use the Arduino IDE in order to open the firmware.pde file. Connect the Arduino Mega 2560 to your PC through the USB. Now go to ‘File’ and click on ‘Open”. Select and open the ‘firmware.pde’ (The name might be other, but the from file must be a .pde, there will be only one in the folder). When you double-click it the IDE is going to open which contains the code needed for the firmware.
Setting up the firmware!, this step is not easy and you might need to see some videos tutorials on the web (we promise that there will be a tutorial about this soon). you can find useful tips here: http://reprap.org/wiki/Triffid_Hunter’s_Calibration_Guide
You need to upload the firmware onto the Mega 2560 control board. However you need to make sure that you have Arduino Mega 2560 as the control board and that you use the right ‘COM Port” for communicating with the Arduino. Go to Arduino IDE – choose “tools” from the menu, then serial port and board, select the right ones. Now its the final step: you need to click on Upload and start the process of uploading. On the completion of the upload process you will see a message on the lower left corner of the Arduino IDE saying ‘Done Uploading’. After you complete the provided steps your Arduino Mega the process is over. your firmware is ready to be used. congratulations!.
As complement for this tutorial, you can see some useful posts here: