31 January 2024

First prints after a while

First printing project after a while

With most of the software and firmware ready, I was up to do some printing. I recalled the hardship of leveling my bed, and thought that a good staring point would be nobs to adjust the heated bed level.

I am using M3 bolts. Following Wikipedia, I figured out the step of standard screw, which is 0.35mm for every revolution. By making a 7-teeth rosette, with every "leaf" turn, I would change the bed's height by 0.05mm. Sounds awesome, lets design. You can get the CAD from my public Onshape project here.

The slicer: time for Ultimaker

During my stay in Germany I had the pleasure of meeting people who were also hooked on 3d printing. I recalled Johannes speaking highly about Ultimakers software as a "printing command center". At that time (like 7 years ago) Ultimaker was actually supporting RepRaps and print-over-USB. Sadly for me - not anymore. Greater reliability of SD card control or wireless control with remote hubs, Ultimaker removed the option to control the printer over the cable. Still, one could add a custom printer that was controlled by Repetier firmware! I decided to relieve Ultimaker from the control duty, relying on good old Pronterface, and use Ultimaker as plater and slicer.

In the beginning I was a bit overwhelmed with the amount of options available. Things have definitely moved on. Yet the overall setup was rather self-explanatory and easy to understand. I definitely appreciated the tooltips over every setting. 

With slicing done and g-code loaded up to Pronterface, it was time to print!

The prints

The first prints were quite challenging due to reasons not clear to me at that time. Although the first layer seemed to nicely fill and the following layers appearing, something was off.

The image is a small compilation of the attempts made. There were problems with delamination, constant nozzle blockages, driving bolt "eating" filament and clogging teeth... Interestingly enough supposed that I "survived" the first solid layers, paused the printer to clear the hobbed bolt, then for the infill layers things would go rather smoothly. Only after getting to top full layers, the issues would appear again, often making the printer not extrude for the final layer (or two). Fortunately, since these were work-parts I did not care if the layer was missing or if parts ended up a bit skewed. After an evening or two of attempts, I was holding a set of 4 bed adjusters. I mounted them on the printer and have been using them with great success since then! Bed leveling was never easier!

Oh and yes, I am aware that these could/should be mounted on the bottom, not to interfere with the extruder. I am actually planning to re-mount them, but for now they are OK and it is easier for me to manipulate them that way. Also the Y-axis movement prevents me from using last 2cm of the bed, and the glass bed clippers (in the background) also remove extra 1cm from each side. I might work on this at some time but for now I do not need the whole bed anyway.

In the next post I will show the X- and Y- belt tensioning elements plus I will reveal what was wrong with the extrusion settings.


02 January 2024

Repetier firmware on RepRap with Gen 7 electronics

Getting new firmware on an old printer is not that easy, especially when one assumes that new tools are backward compatible. With multiple possible points of failure it becomes a game of cat and mouse to figure out which one works with another.

The right Arduino

My Gen 7 electronics uses an Arduino ATmega 1284P PU 1211 with a 20.000 MHz clock. Thought it seems tempting to use newer Arduino IDE's for updates, things get interesting when we want to use old Gen 7 board support files. Newer Arduino IDE's do not have a straightforward way of manually adding custom boards. Or perhaps they do, but that would require me to write the whole custom board support. At some point I was actually tempted to do that, but first decided to test older IDE's. That was a good call.

Arduino 1.0.3 IDE worked.  You can get it from official Arduino's old releases repo. While it does not have many awesome new features, it shines in one bit way: you can add custom boards just by dropping the configs in ./hardware/ folder, which I did.

The right Gen 7 board support

The right Gen 7 support is the latest one, that is Gen7 Arduino IDE Support 2.1. which is still hosted on RepRap's wiki. 

The right Repetier firmware

Of course the newest ones did not work... But by trial and error I figured out that the working version was Repetier 0.91, which you can configure and then download from https://www.repetier.com/firmware/v091/

There was a small caveat - the old C++ compilers that come with Arduino 1.0.3 IDE do not recognize the rounding function lroundf() which converts floats (fractional numbers) to long integers (non-fractional numbers). I could mess with getting the right C++ compiler, but it was easier for me to edit the code and just map the float type to long. Yes, I loose some precision since this just drops all the fraction and does not round up, but It was faster that fighting with the compiler and the possible precision loss seems minimal.

The final product

After a couple of days (if not weeks) I had my "new" firmware uploaded and working on the printer. The pronterface was able to communicate with it, the Cura slices with Repetier's flavor were properly read, so we were ready to print.
For reference (and safekeeping), I hosted on Github the config files, gen 7 and Repetier stuff.