
Päivitystä vanhaan 3D-tulostimeen, Osa 2: Lisää nopeutta ja parempaa laatua Input Shaping- ja Pressure Advance -tekniikoiden avulla
Tämä juttu on tehty yhteistyössä AHaa Elektroniikka -nettikaupan kanssa, joka toimitti juttua varten ADXL345 -kiihtyvyysanturin.
Aikaisemmassa jutussa päivitin vanhaan Ender 3 Pro 3D-tulostimeeni Klipper -firmwaren ja Mainsail -käyttöliittymän. Tärkein syy päivitykseen oli se että Klipperin avulla voidaan kasvattaa tulostusnopeutta ja parantaa tulostuslaatua. Tämä on mahdollista nk. Input Shaping– ja Pressure Advance -tekniikoiden avulla.
Input Shaping
Input Shaping on 3D-tulostuksessa käytettävä edistynyt tärinänhallintamenetelmä, joka parantaa tulostuslaatua minimoimalla tulostimen rungon värähtelyjä. Kun 3D-tulostin kiihdyttää tai hidastaa nopeasti, se aiheuttaa mekaanista värähtelyä tulostimen rungossa. Tämä värähtely näkyy tulosteessa aaltomaisina ”kaikuina” tai renkaina erityisesti suorilla pinnoilla ja kulmissa. Perinteiset apukeinot perustuvat tulostusnopeuden hidastamiseen, mikä pidentää tulostusaikaa.
Input Shaping -tekniikka toimii seuraavasti:
- Mittaa tulostimen värähtelytaajuudet yksinkertaisilla testeillä
- Muokkaa tulostuspään liikekäskyjä matemaattisten algoritmien avulla
- Lähettää liikekäskyt siten, että ne kumoavat tulostimen värähtelyt
Oikein konfiguroitu Input Shaping mahdollistaa:
- Huomattavasti nopeammat tulostukset ilman laadun heikkenemistä
- Tarkemmat yksityiskohdat ja paremmat pinnanlaadut
- Värähtelystä johtuvien tulostusvirheiden eliminoinnin

Pressure Advance
Pressure Advance on tekniikka, joka parantaa tulostuslaatua hallitsemalla suuttimesta tulevan materiaalin virtausta. Tekniikan perusajatus on ennakoida tulostuspään liikkeiden aiheuttamia painemuutoksia.
Kun 3D-tulostin muuttaa tulostusnopeutta tai -suuntaa, suuttimessa olevan sulan muovin paine ei muutu välittömästi. Tämä aiheuttaa yli- tai alipursotusta etenkin kulmissa ja suunnanvaihdoksissa. Pressure Advance korjaa tätä ongelmaa säätämällä ekstruuderin toimintaa ennakoivasti.
Käytännössä tekniikka toimii seuraavasti:
- Ennen tulostuspäään liikkeen hidastusta: ekstruuderi vähentää materiaalin syöttöä, mikä vähentää painetta suuttimessa
- Kiihdyttäessä: ekstruuderi lisää hetkellisesti materiaalin syöttöä kompensoidakseen paineen rakentumista

Oikean Pressure Advance -arvon selvittämiseksi tulostetaan Klipperin ohjeiden mukaisesti ohutseinäinen testikappale. Ennen kappaleen tulostuksen käynnistämistä, tulostimen konsoliin annetaan seuraavat komennot:
SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005
Komentojen avulla tulostin muuttaa Pressure Advance -asetusta kerros kerrokselta. Alimmissa kerroksissa nurkissa on havaittavissa ylipursotusta nopeuden hidastuessa ja ylimmissä kerroksissa taas alipursotusta.

Testitulosteen paras kerros oli n. 10 mm kohdalla, josta saadaan Klipperin ohjeessa olevalla kaavalla laskemalla Pressure Advance -arvo, joka syötetään printer.cfg:hen:
[extruder]
pressure_advance: 0.05
Maksimivrtaus
Jotta tulostimesta saa kaiken irti, täytyy selvittää ekstruuderin maksimivirtaus. Tätä varten käytin Orca Slicerin ominaisuutta, joka generoi siihen tarvittavan g-koodin. Koodi tulostaa kappaleen siten että ekstruuderin nopeutta ja virtausta kasvatetaan kerros kerrokselta kunnes se ei enää pysty pursottamaan materiaalia tarpeeksi nopeasti.

Tämä aukkoina tulosteessa:

Mittaamalla ensimmäisen virheellisen kerroksen korkeus saadaan selville maksimivirtaus. Oman tulostimeni maksimivirtaus löytyi 11 mm kohdalta ja on noin 20 mm3/s. Tämän avulla voidaan laskea suurin tulostusnopeus halutulle kerrospaksuudelle, jonka voi syöttää slicerin asetuksiin. Joissakin slicereissa maksimivirtauksen voi syöttää suoraan asetuksiin, jolloin slicer käyttää tätä arvoa maksiminopeuksien laskemiseen automaattisesti.

Värähtelyt
Värähtelyjen mittaamiseksi ja sopivan vaimennusalgoritmin valitsemiseksi käytetään Klipperin sisäänrakennettua ominaisuutta ja ADXL345 -kiihtyvyysanturia. Suunnittelin ja tulostin kiihtyvyysanturille yksinkertaisen osan, jonka avulla kiinnitin anturin ekstruuderin jäähdytystuulettimen ruuveihin X-akselin värähtelyiden mittaamiseksi. Y-akselin eli pedin värähtelyjen mittaamiseksi teippasin anturin petiin kiinni.

Kiihtyvyysanturi kytkettiin kuudella johtimella SPI-väylää käyttäen Raspberry Pico -alustaan, joka yhdistettiin edelleen USB-kaapelilla Raspberry Pi:hin. Picolle (Raspberry Pi RP2040) tehdään firmware komentoriviltä:
cd ~/klipper/
make menuconfig
make
sudo mount /dev/sda1 /mnt
sudo cp out/klipper.uf2 /mnt
sudo umount /mnt

printer.cfg:hen lisätään seuraavat rivit:
[mcu pico]
serial: /dev/serial/by-id/ # Picon serial tähän
[adxl345]
cs_pin: pico:gpio1
spi_bus: spi0a
axes_map: x,z,y
[resonance_tester]
accel_chip: adxl345
probe_points:
115,115, 20 # pedin keskipiste
Mittausrutiini käynnistetään Klipperissä komennolla TEST_RESONANCES AXIS=X ja TEST_RESONANCES AXIS=Y Tämän jälkeen tulokset löytyvät tiedostoista /tmp/resonances_x_.csv ja /tmp/resonances_y_.csv. Tulokset saadaan edelleen käsiteltyä kuvatiedostoiksi komennoilla:
~/klipper/scripts/calibrate_shaper.py /tmp/resonances_x_*.csv -o /tmp/shaper_calibrate_x.png
~/klipper/scripts/calibrate_shaper.py /tmp/resonances_y_*.csv -o /tmp/shaper_calibrate_y.png

Menetelmä ehdottaa sopivaa algoritmia värähtelyjen vaimentamiseksi ja tulostimen maksimikiihdytysarvoiksi, jotka lisätään printer.cfg:hen:
[input_shaper]
shaper_freq_x: 93.2
shaper_type_x: 2hump_ei
shaper_freq_y: 45.0
shaper_type_y: ei
[printer]
kinematics: cartesian
max_velocity: 500
max_accel: 4000
Lopputulokset
Tulostin ennen projektin alkua 3DBenchyn 0.2 mm vakioprofiililla ajassa 1 h 36 min. Muutosten jälkeen maltillisesti nopeammalla profiililla tulostusaika oli enää 49 min eli lähes puolet nopeammin! Nopeammasta tulostuksesta huolimatta tulostuslaadussa ei ole näkyviä ongelmia. Päinvastoin, terävät nurkat ovat nyt selkeämpiä ja aikaisemminkin vähäiset kaiut ovat nyt poissa. Yksittäisenä esimerkkinä 3DBenchyn perälaudassa olevasta tekstistä saa nyt selvän, mikä ei aiemmin ollut mahdollista.
Tulostimeni konfiguraatiotiedostot löytyvät kokonaisuudessaan GitHubista.