3D printing

last updated: 27/04/20

Pimping up the Felix 4.1 with 32 bit, 24V and better stepper driver

Introduction

I had problems accepting the long heating up times and the poor possibilities for manual interaction with the new Felix 4.1 firmware. So I tried to change this with a new duet3 motherboard. Okay, the true story is that I clicked a little too fast (don't tell my wife) and ordered the beautiful, but quite expensive and perhaps over-dimensioned new motherboard.

Only later I found the BIGTREETECH-SKR board (https://cdn.thingiverse.com/assets/cb/b6/21/75/42/SKR_V1.3-Instructions.pdf), with support for Felixprinters(https://github.com/bigtreetech/BIGTREETECH-SKR-V1.3/tree/master/BTT%20SKR%20V1.4/Firmware/Marlin-2.0.x-SKR-V1.4-Turbo/config/examples/Felix).

What could be the benefits of a new motherboard?

Wires: The lesser the resistance, the lesser the losses The lesser losses, the lesser the temperature increase Reduce wiring costs Makes cable management easier Motor: Having a higher voltage increases the speed at which the current is reached in each coil. This can be very useful at higher RPM, enabling a motor to reach faster speed.Higher RPM Greater Torque

Having a powerful heater can help you reach a higher temperature. The convection losses increase with the hotend temperature. At a certain point, there is not enough power to raise the block temperature and compensate for the losses in free air. Most 12V heaters will have a hard time reaching 400°C and then will drop as soon as the head moves or filament is pushed through.

The drawback with faster heating is that it is harder to fine tune. Some modifications to the firmware might be required in order to reduce overshoot and stabilize the temperature.

Higher Heating Power Higher Temperature

So should I update my Felix? Surely not. It is running quite smoothly and the print results are ok. Never change a running system!

Will I pimp the Felix? Sure enough, because I like to learn and understand new things.

So the first step is to print a test piece to be able to compare print results. I choose the MINI All In One 3D printer test by majda107. The second step is to collect all the data about my printer and the third step is to configure the firmware.

Collecting data on Felix TEC 4.1

Power supply

The power supply is an ENP-7025D from Enhance Electronics and marks 12 V/18 A, 5 V/2 A and 250 W.

Endstops X and Y (optical sensors)

The X and Y end-stops on the felix are transmissive optical sensors TCST2103 from VISHAY. Cathode and emitter are connected and go to GND.

Z-probe

Felix 4 uses a shielded proximity sensor from OMRON (Model: E2B-M12KS04-WP-C2 2M (https://assets.omron.eu/downloads/datasheet/en/v3/d116e2bcylindricalproximitysensordatasheeten.pdf)). The sensor has an M12 standard thread with a sensing distance of 4 mm. C2 indicates an open collector NPN-Transistor (output) normally closed. The response frequency is 1000 Hz and the power supply voltage may range from 10 to 30 V (10 mA max.).

Stepper motors

The stepper are standard 40 mm NEMA 17 stepper with 1.8° and 1.7 A. In my Felix they are from Wantai (42BYGHW609P1-2).

Heating bed (foil heater) and thermistor (NTC)

No infos from Felixprinters. With my Ohmmeter I measure a resistance of 1.2 Ω. So with 12 V we could expect 10 A. The sensor is a 100k NTC (configuration.h). I measure 95k Ω.

I will heat the bed first to 60°C and then to 90°C and measure current and voltage with my mooshimeter:

heating the bed
click for bigger picture

Conclusion: The bed does not reach 90°C, but a max. of 80°C! even in a well heated room. So we need more power :). The resistance varies from 1.13 Ω (cold) to 1,3 Ω.

Extruder heater cartridge and thermistor (NTC)

Here we get some information from the Felix shop: Heater cartridge: Power 30 W, Voltage 12 V, Resistance 4.7 Ω, Diameter 5.5 mm, Length 10 mm

For the thermistor: It has the same specs as an epcos B57560G104F. It is an NTC (Negative Temperature Coefficient) and we find a good description in the reprap wiki.

With my Ohmmeter I measure a resistance of 4.9 Ω for the heater cartridge. So with 12 V we could expect 2.5 A. For the thermistor I measure 97k Ω.

I will heat the extruder to 210°C and measure current and voltage with my mooshimeter:

heating the bed
click for bigger picture

Conclusion: The last 10°C (from 200°C to 201°C) take quit long.)

X and Y optical sensors

The X and Y end-stops on the felix are transmissive optical sensors TCST2103 from VISHAY. Cathode and emitter are connected ans go to GND. The LED needs 20 mA. With 3.3V we get a series resistor of about 100 Ω. The current through the transistor should be 4 mA (data sheet), but the internal pull-up is with 27 kΩ too high. We need an 820 Ω resistor in parallel.

Both resistors are soldered into my extension cable.

endstop circuit

extension cable

Z-probe

Felix 4 uses a shielded proximity sensor from OMRON (Model: E2B-M12KS04-WP-C2 2M (https://assets.omron.eu/downloads/datasheet/en/v3/d116e2bcylindricalproximitysensordatasheeten.pdf)). The sensor has an M12 standard thread with a sensing distance of 4 mm. C2 indicates an open collector NPN-Transistor (output) normally closed. The response frequency is 1000 Hz and the power supply voltage may range from 10 to 30 V (10 mA max.).

We get 3 wires in a 2 m cable and the colours are a little creepy. Brown for the positive voltage, blue for GND and black for the signal. As we need 12 V we use the extra 2 pin 12 V header of the duet. No extra resistors are needed as the duet3 inputs will tolerate up to 30V and have an internal pull-up of 27k. (if you have another board, you could use a voltage divider to limit the voltage).

z-probe circuit

Fans

The fans are Sunon KDE1204PFV211MSA with the following data: 12 V, 80 mA (1 W), 11,89 m³/h, RPM 5800, 27 dBA.

PID no bang bang mode!

2 possibilities:

Autotuning Heater bed with M303 H0 S60 (target temperature 60.0°C, PWM 1.00). I get a peak temperature of 60.5°C and the tuning took 687 s.

With M307 H0 we get the results:

    Heater 0 model: gain 81.3, time constant 436.2, dead time 6.8, max PWM 1.00, calibration voltage 12.2, mode PID
    Computed PID parameters for setpoint change: P141.2, I2.594, D670.7
    Computed PID parameters for load change: P141.2, I6.443, D670.7

Now we can complete the M307 command in the config.g file under System by adding A (gain), C (time constant), D (dead time) and V (calibration voltage) parameter:

    M307 H0 A81.3 C436.2 D6.8 V12.2 B0 S1.0  ;B0 = no bang-bang S1.0 = PWM limit

Autotuning Extruder with M303 H1 S185 (target temperature 185.0°C, PWM 1.00). I get a peak temperature of 214.9°C and the tuning took 267 s.

For this we first heat the bed to get accurate results.

With M307 H1 and M307 H2 we get the results for both extruder:

    M307 H1
    Heater 1 model: gain 936.7, time constant 210.0, dead time 10.1, max PWM 1.00, calibration voltage 12.1, mode PID
    Computed PID parameters for setpoint change: P4.0, I0.086, D28.0
    Computed PID parameters for load change: P4.0, I0.161, D28.0

    M307 H2
    Heater 2 model: gain 854.5, time constant 192.8, dead time 9.3, max PWM 1.00, calibration voltage 12.3, mode PID
    Computed PID parameters for setpoint change: P4.3, I0.102, D28.2
    Computed PID parameters for load change: P4.3, I0.192, D28.2
    M307 H1 A936.7 C210.0 D10.1 V12.1 B0 S1.00 ; B0 = no bang-bang S1.0 = PWM limit
    M307 H2 A854.5 C192.8 D9.3 V12.3 B0 S1.0  ;B0 = no bang-bang S1.0 = PWM limit

Complete the M307 command in the config.g file.

If you want manually adjust the heater model parameters look here.

Duet Web Control

switched to unstable

cd /etc/apt/sources.list.d nano duet3d.list change text stable to unstable: deb https://pkg.duet3d.com/ unstable armv7 Ctrl + o, Ctrl + x

For tools: G10 P0 R120 S185 For bed; M140 H0 R20 S55

https://duet3d.dozuki.com/Wiki/FirmwareDifferences https://reprap.org/wiki/ListofFirmware https://github.com/bigtreetech/BIGTREETECH-SKR-V1.3/tree/master/BTT%20SKR%20V1.4/Firmware/Marlin-2.0.x-SKR-V1.4-Turbo/config/examples/Felix/DUAL https://dyzedesign.com/2019/04/differences-12v-24v-3d-printer/ https://reprap.org/wiki/Thermistor