Tag Archives: firmware

Catching the Marlin

Okay, so that title was pretty contrived.

Last week, when I was having ‘shelling’ (actually backlash) issues, I made a post to the Reprap forums. One of the posters there suggested that a way to correct the ‘wiggles’ in the walls of my prints was to change across to the Marlin firmware.

This is a pretty radical suggestion, as Sprinter is currently firmly entrenched as the favorite firmware of the Reprap community. But, given that changing firmware is pretty much the easiest thing you can do with your Reprap, I thought I’d give it a shot.

Some of the touted features of Marlin are:

  • Interrupt based movement with real linear acceleration
  • High steprate
  • Look ahead (Keep the speed high when possible. High cornering speed)

Configuration was easy, Marlin uses exactly the same configuration.h file as Sprinter, so all the settings can carry through. One point of note; the Marlin firmware runs at a standard 250,000 baud rate, as opposed to Sprinter’s 115,000. The only trickiness with the firmware was the thermistor tables. Marlin didn’t have the thermistor table for my hot-end, but that was just a simple copy-and-paste job across from Sprinter’s thermistor.h.

Once uploaded, WOW, the difference is impressive. You can hear  the difference in the motor control. Much smoother and more finely controlled than Sprinter.

The printer is now exceptionally quiet. It was pretty noisy when I had Sprinter and the PLA bushings, but now with the linear bearings and Marlin, it’s super-quiet. No problems watching the TV with the printer running away behind your head. It’s probably due to the greater stepping control and better acceleration. Less ‘jerks’ on the axes.

The print quality has improved again. One of my banes – non-completely-filled top surfaces – has almost been eliminated. Surface finish is much better, as is layer stacking.

Next on my list of ‘things to work on’ will be to try and figure out how to shut down the heatbed and hot-end after a print. I’m now confident enough with my printer to leave it running unattended (once I get the spool printed for filament feed), but I want it to shut down when I’m finished. I think this can be done by adding the right G-codes to the end.gmc file, but I need to investigate how to do that.

Main things to work on now:

  • Ooze settings.
  • Solid infill, particularly on ‘top’ layers.
  • SD card printing
  • Investigate the ‘Marlin’ firmware (as per this thread)
  • Figure out how to turn off the heatbed and hot-end automatically (gcodes?)

Software Update

I’m still in ‘waiting mode’ at the moment, so in preparation for eventual printing. To help get everything ready, I thought I’d update the software. It’s only a month old, but a month is a long time in Reprap, particularly with the software.

I went and downloaded the newest version of Pronterface. It doesn’t seem to be much different from the old version, but will undoubtedly have some improvements.

I’d also heard about the fork of Skeinforge, called Sfact. It doesn’t seem to be covered in a lot of the reprap documentation, but it was definitely worthwhile finding. It’s a simplified version of Skeinforge, with a lot of the unused options removed. It’s even got a simple configuration page, where the most common options are set. It definitely makes life a lot easier for a newbie like myself.

I also went and downloaded the lasted version of Sprinter. I went through and put in the correct configuration settings, ready to go.

That’s one more thing out of the way.

Updating Sprinter Firmware

Auzze’s RAMPS board came with Sprinter firmware already installed, but unfortunately, I’m not able to use this as-is. The thermistor’s that came with the hot end were 200k thermistors, and the pre-installed firmware was set up for the standard 100k thermistors.

I asked Auzze the best way to go about this, and he suggested the following method:

1. Download the Arduino Software
2. Download the Sprinter firmware.
3. Make changes to the firmware’s configuration.h file, then upload.

Downloading and installing the Arduino software from arduino.cc was extremely easy, as was downloading the Sprinter firmware. Once I opened up the sprinter.pde file in Arduino, the screen looked like this:

The following settings in the sprinter configuration.h file had to be changed:


#define MOTHERBOARD 33 


#define THERMISTORHEATER 2
#define THERMISTORBED 2


float axis_steps_per_unit[] = {80, 80, 3200/1.25,700}; 


const int X_MAX_LENGTH = 170;
const int Y_MAX_LENGTH = 180;
const int Z_MAX_LENGTH = 110;

I was then ready to upload. The first time I tried to upload it didn’t work; didn’t recognise the board. I then realised that I need to specify the board to load onto. In the arduino software, I had to set the board to ‘ATMega1280’, and the USB port. However, there were no USB ports to choose from on the list.

The default ports that came with the software were only Bluetooth ports, so I had to run the other piece of software that came with the Arduino package (FTDIUSBSerialDriver). This added two extra USB port options to the software, which enabled the computer to connect up to the board.

Once this was done, the new firmware loaded quickly onto the board. Of course, I’ve got no way of testing it yet, so I’ll install Pronterface next. Thanks for the great after-sales support, Auzze!