Home | Projects | Notes | Misc | Events | Gitea/Github/Codeberg | Instagram

DISCLAIMER: this article is under construction and is likely to change a lot in the future. It is based upon my notes

FREE your Delta Wasp 2040 Turbo!

And yes, FREE as in freedom! Ditch the proprietary hardware/software combo and take a hold of your machine!

Backstory

So at the FabLab we have this Delta printer from the old days. They tell me it has always been a bit unreliable but when it worked it could pull off some amazing prints, with stunning quality and speeds up to 600 mm/s, which is A LOT.

I myself have experienced the unreliability of the machine: sometimes I can print good and fast, sometimes the filament barely gets extruded.

WASP is an Italian 3D-printer manifacturer focussing on large, fast delta printers. We are actually unsure whether our model is a Delta 2040 Turbo or a Delta 2040 Turbo2 or a plain Delta 2040. It probably is not a Delta 2040 Turbo since those came with an Arduino Mega 2560, while ours originally had a custom proprietary board with an Atmega SAM8x3, same as Arduino Due, and an ESP32 for what the company reports to be OTA firmware updates. It is also likely that this printer was originally a Delta 2040 and the board was upgraded to that of a Delta 2040 Turbo2 by the previous guy with the help of WASP support. I don’t know for sure, I wasn’t there at the time.

Problems arised when the microcontroller was suddenly unable to drive the E0 motor driver, looking with an oscilloscope no signal would come out of the pin itself. We deemed the pin broken and noticed that the board had a populated motor driver circuit for a secondary extruder which was unused by our single-extruder printer. We asked the company for the firmware (which appeared based on Marlin 1.x) so that we could swap E0 and E2 pins and get the printer running again. The company refused to give us the firmware, telling me (in a phone call to the tech support) that older versions of their firmware were based on Marlin, but they later switched to a proprietary firmware. From our experience with 3d printers, we firmly believe that the firmware our printer ran was a slightly modified Marlin 1.x. If we are right WASP is not respecting GPLv3, which is the license MarlinFirmware is released under, by not releasing the modifications they did to the firmware to make their machine compatible.

We decided not to pay the company to fix our board and instead to ditch the proprietary board alltogether and go for a more open one, and reconfiguring Marlin 2.1.x ourselves, so that we would have better control on the machine.

Board change

We decided to use a BigTreeTech SKR E3 Mini V3.0 board, with a Zonestar LCD.

The board was chosen for its 32bit STM microcontroller and ability to be powered in the 12-24V range, since the original power supply is 19.4V and we still wanted to use it.

The LCD was canibalized from my Anet A8, which I donated to the FabLab when I bought an Anycubic Kobra Neo this summer. Fear not, for I put a RepRap Discount Full Graphics LCD on the Anet A8 so that it could still be used.
The Zonestar LCD requires some wiring change, which I will provide in a later revision of this post. It is also to be noted that the LCD itself is driven at 5V, while the buttons form a voltage divider circuit which is read by an analog pin on the board, which are 3.3V. This means that we need either to step down the supply for the buttons alone to 3.3V or supply them with a separate 3.3V line all together.

I decided for the latter since the board exposes both lines and we had a spare pin on the connector. This was the quickest solution which also did not need us to but new components. Driving the LCD itself at 3.3V works but required fiddling with the contrast voltage divider and had terrible screen update and response times.

Extruder

The printer packs a custom extruder, connected to the original board via an ethernet cable. The extruder itself has a little board which holds:

The extruder board has six pins which, looked from the top side and the ethernet jack pointing up are:

The pins need to be mapped on the ethernet cable, which can be done by:

After reverse-engineering the board layout, we removed the thermocouple and the IC all together and replaced them with a ATC Semitec 104GT-2/104NT-4-R025H42G thermistor we had laying around as a replacement for other 3d printers, since the thermocouple IC is not well supported by Marlin and never reported the right temperature. The thermistor is supported by MarlinFW out of the box and required pulling out the thermocouple, desoldering the IC and connecting the thermistor to the pins that originally were for the thermocouple output and GND (pin 1 on board). picture required.

In Configuration.h

#define TEMP_SENSOR_0 5

Extuder fan

The extruder board exposes the fan. The SKR mini is powered at 19.4V. The extruder block has (please, do intend the following caps lock as a very angry scream, because at the FabLab we are all indeed very angry at this printer and their designers) A SINGLE FAN WHICH COOLS BOTH THE HEATING BLOCK AND THE PRINTED PART, FOR GOD’S SAKE. More so, the fan has an insane airflow and needs to be accurately calibrated because it prevents the extruder from reaching printing temperatures when it spins too fast, which means it can’t be powered directly at 12V.

The original board treated it as a part fan, which means that the first layers of the print were in danger of heat creep since Cura by default does not activate the part fan until it finishes the bottom layers.

So, following the SKR MINI E3 V3.0 docs, we wired the extruder fan to the FAN2 header and configured Marlin to automatically turn it on once the extruder heats up past 50C. Since we power our SKR at 19.4V, we also had to set the max fan pwm to 140 in Marlin, so that we would never power the fans with more than 11.5V. It’s just something we discovered after burning a fan and having to disassemble the extruder for the tenth time, you may want to pay attention to it should you be unluckily enough to follow our path.

In Configuration_adv.h

#define FAN_MIN_PWM 30
#define FAN_MAX_PWM 130

...

#define E0_AUTO_FAN_PIN FAN2_PIN

...

#define EXTRUDER_AUTO_FAN_TEMPERATURE 50
#define EXTRUDER_AUTO_FAN_SPEED 90  // 255 == full speed

Heated bed

The bed is powered straight off 220V, 50Hz AC (We are in Italy, at that is the standard in Europe) via a Triac. The wiring for this one is simple, just we just connected it to the dedicated headers on the SKR mini paying attention to the polarity.

Misc