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:
- AD597 thermocouple IC, since it uses a thermocouple and not a thermistor
- Ethernet jack, with connections for heater block and thermocouple output
- Fan power supply
The extruder board has six pins which, looked from the top side and the ethernet jack pointing up are:
- Thermocouple IC IN- (also wired to GND, and per the AD597 datasheet), (1)
- Thermocouple IC IN+ (2)
- 12V (3)
- Fan control (NOT GND) (4)
- 2 Heather block pins (5,6. Order does not matter)
The pins need to be mapped on the ethernet cable, which can be done by:
- Cutting one in half
- The two heather block pins on the board (5,6) each map to to wires in the ethernet cable
- 12V (3) and fan control (4) each map to one wire on the ethernet cable
- IN- (GND) maps to one wire on the ethernet cable. This needs to be wired to a GND pin on the board
- The remaining wire of the ethernet cable is the thermocouple output
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
At first I tried to use a RAMPS 1.4 for this printer. It worked, but the Arduino Mega 2560 would struggle with trigonometry required to run. I later tried using Klipper, so that the RPi would compute the heavier stuff. It worked, but unfortunately I could not get the fan control to work and the extruder would not heat enough as a consequence. Looking back, I had just wired the fan wrong and it was running full time all the time. I may have saved myself a lot of work had I discovered this earlier.
We had some replacement extruders for the printer. We decided to use the two we could easily change the thermistor to. One of them had a basically destroyed nozzle, which explained why I couldn’t get a constant flow of filament out of it. Obviously it’s impossible to change the nozzle in this extuders, since they are just a long piece of metal.
Further testing is required for calibrating steps/mm. For Delta systems, this is done by printing a cube and measuring the height. We assume that all towers are equally built, so that every motor uses the same step/mm.
The board fan, the extruder motor fan and the chamber LED strip are powered at 12V. The board we chose does not expose a 12V line, so we used a separate buck converter in parallel to the board straight from the 19.4V suppy.