My static website generator using poole https://www.xythobuz.de
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

sparkmaker_repair.md 12KB

title: Reviving an old Sparkmaker SLA printer description: Fixing the hardware and creating a free-software slicing workflow parent: 3d-printing position: 35 git: https://git.xythobuz.de/thomas/gcode-tools date: 2023-01-03

comments: true

Many years ago someone donated his Sparkmaker SLA printer to our local makerspace, the Toolbox Bodensee. Nobody has touched it for a long time, mostly because we were not keen to work with the poisonous and stinky UV resin required for the printer. But recently my friend Philipp and I took the plunge. Here I describe what we had to do to get it working.

Table Of Contents

Endstop Fix

The printer only has a single axis, Z, with an optical endstop switch at the bottom. This switch is triggered by a large plastic shim screwed to the Z carriage. This shim was not centerd properly on this machine. So when trying to home, the shim collided with the housing of the switch, blocking the axis and threatening to rip off the switch. To fix this, just loosen the two screws in the shim and adjust the position. Both the shim and the print bed have some range of adjustment in the Z axis, so take care to adjust the shim in a way to still allow the bed to be properly leveled.

Encoder Replacement

After only a couple of hours of use, the encoder at the front of the machine stopped working properly. You can see this in the video below.

It stopped moving up, mostly only moving down, regardless of the direction it was turned. This meant the bed could no longer be lifted to easily remove it. I decided to replace it with an ALPS encoder (STEC12E) I still had lying around from repairing my oscilloscope a while back.

This requires removing the base of the housing by unscrewing the outer four hex screws from the top, as well as the three hex screws on the bottom below the Z axis arm. Now we are allowed access to the encoder board.

The new encoder apparently does not have the same number of pulses per indent, so adjusting it still feels slightly weird. But it can now be turned normally in both directions, so it is usable again.

With the hardware back in working order I could now focus on the PC software side of things.

First Slicing Experiments

After getting the hardware back running the next step is generating some sliced files. Unfortunately the official Sparkmaker website no longer exists and the downloads from there are hard to find. They included a slicing software of course, but it seems to only run on Windows and Macs and it not open source. So I had to find some alternative. Most suggest using ChituBox or Lychee Slicer, both can be used for free and seem to include presets for the Sparkmaker.

Philipp installed ChituBox on his machine and tried it out. It includes presets for the Sparkmaker that seem to work more or less. And the software also allows comfortable placement of support structures. But it didn’t work perfectly all the time, we got at least one corrupted file where each slice contained the same garbage picture.

Even though one corner was warping strongly, the results of the first print attempt were promising. It is an SA-profile keycap, sliced with ChituBox with 0.1mm layer height.

SL1 to WOW File Format Converter Script

But there is one open-source alternative, PrusaSlicer, and it has support for SLA slicing for the Prusa SL1 printer. But it only produces .sl1 files, their custom file format. The Sparkmaker, on the other hand, expects .wow files. Fortunately someone already documented the file format well. And there’s also a small GUI utility to visualize and modify pre-sliced .wow files. The Prusa file format was easy to “reverse-engineer”, it’s just a zip archive containing each slice as a .png file, and some settings in .ini files.

The route to take was therefore obvious: write a script that takes .sl1 files and converts them to .wow.



You can find it on my Gitea server.

This is what running the script looks like.

$ convert_sparkmaker MGMKII_PrintOnePiece.sl1 mgmk2.wow
Internal name: "MGMKII_PrintOnePiece"
Found 414 slices
Using following parameters:
{'exposure_time': 15.0,
 'first_exposure_time': 120.0,
 'first_layer_height': 0.1,
 'layer_height': 0.1,
 'lift_height': 5.0,
 'lift_speed': 30.0,
 'sink_speed': 100.0}
Height: 41.400mm
Estimated print time: 3h 14m 32s
Writing output to "mgmk2.wow"

I only noticed after writing this script that someone already did the same thing two years ago.

Thanks to the documentation linked above, writing a .wow file was very easy. I’m taking all the settings I can from the included .ini files, which are layer height, initial layer height, exposure time and initial exposure time. The settings referring to the lift of the object after each slice are not present in the file, so my script has useful defaults hard-coded.

The script should also be usable for the Sparkmaker FHD, as it apparently uses the same file format. Of course the resolution and size need to be adjusted accordingly, both in my script and in the slicer.

I noticed some interesting quirks of the printer firmware. It does not allow the usual style of inline comments explaining what a line does. When I tried adding comments to the commands in the G-Code header, the corresponding commands simply were not executed at all, which is obviously very problematic.

Also the firmware does not hestitate to display both success messages at the end of a print, as well as error messages, on the LCD screen itself! When the LEDs are on this of course hardens the message into the resin. So G-Code always needs to take care to turn the LEDs off at the end of a print. For some reason we once managed to have the LEDs turned on with an error message showing. This requires draining the resin and scraping off any remaining bits.

Configuring PrusaSlicer for the Sparkmaker

To configure PrusaSlicer I recommend starting out with their built-in profile for the SL1. Selecting it as the machine automatically switches the program over into “SLA mode”, where the support and pad generation work differently compared to the normal FDM mode. You also need to enable expert mode to see all required settings.

The most important changes need to happen in the Printer Settings. There you need to adjust the display size to 854x480, the display size to 99.82x56.10mm, maximum height to 120mm, the orientation to landscape and disable all mirroring.

In the Material Settings I recommend setting the exposure time to 15s and the initial exposure time to 120s. But this may change depending on the resin you plan to use.

I’m not 100% sure about the display size, and of course this parameter is very important to ensure the printed objects have the correct size. I initially found this unfinished project where the display diagonal is given as 4.6 inch. With this, and the display size in pixels, I calculated the theoretical display size.

screen width = 854 * 4.6 / sqrt(854^2 + 480^2) = 4.0099996503 inch = 101.854mm
screen height = 480 * 4.6 / sqrt(854^2 + 480^2) = 2.25386397207 inch = 57.248mm

This is close, but the resulting objects were not quite perfect. So I printed a calibration cube at 5mm width, and one at 10mm width, to be able to calibrate the values. This gave similar correction factors in both axes.

101.854mm * 0.98 = 99.81692mm
57.248mm * 0.98 = 56.10304mm

I’m sure these numbers are still not totally exact, but they seem to be close enough for my purposes.

You can also download my PrusaSlicer configuration for the Sparkmaker or even for all of my printers, if you’re so inclined.

As a test I printed this model, scaled down to 50% with a layer height of 0.1mm. This took about 3½ hours. For an early test I’m really happy with the results. Even scaled down the very fine connections between the body and head are strong enough to hold them together.

More Pictures

Some more photographs I didn't use above.