La tua stampante ha una firma di vibrazione. Ogni cambio di direzione mette in movimento masse, cinghie e struttura; una parte di quell’energia può comparire sulle pareti del pezzo come una serie di echi dopo uno spigolo. Con un accelerometro e Klipper puoi passare dal «mi sembra che vibri» a un grafico delle frequenze e scegliere un input shaper sulla base dei dati.

È il seguito nerd della nostra guida Mega S con Raspberry Pi Zero 2 W e Klipper: qui vediamo accelerometri USB, comandi di misura, FFT e lettura dei risultati. In più trovi un laboratorio Python scaricabile con dati simulati. Non abbiamo effettuato misure fisiche su una stampante per questo articolo: grafico e numeri didattici sono dichiarati come simulazioni.

Ringing, ghosting e input shaper: cosa stiamo cercando?

Il ringing appare spesso come la ripetizione attenuata di uno spigolo sulle superfici successive. L’input shaping modifica il comando di movimento per ridurre l’eccitazione delle risonanze: non è un sensore che corregge continuamente il pezzo mentre lo osserva. Prima vanno controllati giochi, fissaggi, cinghie e scorrimenti.

La documentazione Klipper sulla compensazione delle risonanze descrive sia il difetto sia il compromesso fra riduzione delle vibrazioni e smoothing, cioè l’effetto di arrotondamento dei dettagli introdotto dalla compensazione. Una frequenza copiata dalla stampante di un altro utente può essere un cattivo punto di partenza, anche se il modello è identico.

Prima distinzione utile: se il difetto è un filo fra due torrette, probabilmente stai cercando un altro problema; trovi il percorso nella guida allo stringing. Un grafico di risonanza non diagnostica automaticamente qualsiasi imperfezione.

La parte nerd: dal movimento nel tempo alle frequenze

L’accelerometro registra una sequenza di campioni: quanto accelera il sensore in istanti successivi. Un grafico nel tempo mostra l’oscillazione, ma quando più componenti si sovrappongono può essere difficile leggerle. La trasformata di Fourier separa il segnale nelle sue componenti di frequenza; FFT è il nome della famiglia di algoritmi veloci usati per calcolarla.

Nel nostro esperimento inventiamo due componenti, a 43 e 67 Hz, e aggiungiamo rumore. Non stiamo simulando tutta la meccanica di una stampante: vogliamo soltanto rendere visibile la relazione fra un segnale e il suo spettro.

Grafico didattico con segnale simulato nel tempo e spettro FFT con componenti a 43 e 67 Hz, non misure reali
Simulazione originale 3DPrintNerd: due sinusoidi e rumore, 1.000 campioni al secondo per 4 secondi. Le frequenze sono inventate. Il grafico non è una misura Klipper né una PSD calibrata.

Con 4.000 campioni a 1.000 Hz, la distanza fra i bin della FFT è 1.000 / 4.000 = 0,25 Hz. Questo non significa accuratezza fisica di 0,25 Hz: contano durata utile, rumore, finestra e caratteristiche del segnale. Lo script usa numpy.fft.rfft per dati reali e rfftfreq per associare i bin agli hertz, secondo la documentazione NumPy rFFT e NumPy rfftfreq.

Applichiamo anche una finestra Hann, disponibile come numpy.hanning: attenua gli estremi del tratto analizzato e cambia forma e ampiezza dei picchi. Nel disegno la potenza è normalizzata al massimo e convertita in dB. Per questo non devi confrontarne l’altezza numerica con la PSD di un grafico Klipper.

Quale accelerometro usare: USB non significa sensore universale

Un modulo USB dedicato semplifica il progetto rispetto a un breakout collegato ai GPIO. Per esempio, BIGTREETECH ADXL345 V2.0 integra ADXL345 e microcontrollore RP2040: il sensore comunica internamente via SPI e il modulo si collega all’host tramite USB. Il produttore documenta firmware e configurazione nel manuale ufficiale ADXL345 V2.0.

Non basta il nome ADXL345 per identificare il collegamento. Una schedina senza microcontrollore può richiedere cablaggio SPI; un connettore USB su un altro prodotto può avere un uso differente. Verifica modello, revisione e firmware. Il firmware della scheda accelerometro è distinto da quello della scheda stampante: non caricare il binario AVR della Mega S su un modulo RP2040.

Con un Pi Zero 2 W, stampante e accelerometro devono comunicare contemporaneamente: la singola porta dati richiede una soluzione OTG con hub USB dati adatto. La porta PWR IN resta destinata all’alimentazione del Pi. Evita combinazioni che retroalimentano il sistema e non ricavare alimentazioni improvvisate dalla stampante.

Montaggio: sulla Mega S X e Y non si misurano nello stesso posto

Su una stampante con piano mobile in Y, come la Mega S, misura X con sensore sulla testa e Y con sensore sul piano. Puoi spostare un solo sensore fra i due test oppure configurarne due. Su una comune CoreXY con testa mobile in XY il posizionamento è diverso. La guida Klipper al montaggio è il riferimento per fissaggio e isolamento elettrico.

Il supporto deve essere rigido, stabile e compatibile con i movimenti. Una staffa flessibile aggiunge una propria vibrazione; un cavo che tira può alterare il comportamento. Controlla che scheda e viti non creino contatti elettrici indesiderati con il telaio. Non usare la copertina illustrata come schema di montaggio.

La nostra scelta pratica sarebbe preparare prima due attacchi adatti alla macchina e provare lentamente le corse, con ugello e piano freddi. Un supporto stampato che «si avvita» non è automaticamente un buon supporto di misura: conta anche come si deforma.

Preparazione: quattro cose da verificare nella configurazione

Parti da Klipper già funzionante e fai una copia di printer.cfg. Installa il modulo seguendo il suo manuale, compresi firmware compatibile e dipendenze numeriche richieste dall’installazione Klipper. Per il BTT citato esiste un file di esempio del produttore: resta da adattare alla macchina.

Voce

Controllo da fare

Seriale del modulo

Usa l’ID reale dell’accelerometro, distinto dalla MCU della stampante.

Pin e bus del sensore

Devono corrispondere al modulo esatto; non trasferire pin da un Pico cablato a una scheda integrata.

axes_map

Verifica l’orientamento fisico. Non copiare segni e assi senza controllarli.

resonance_tester

Associa il sensore corretto e scegli punti raggiungibili con spazio per staffa, cavo e oscillazioni.

Il riferimento resonance_tester descrive punti di prova e parametri di eccitazione. Il test può superare le accelerazioni usate nelle stampe normali. Valuta intervallo di frequenza e accel_per_hz per la tua meccanica; valori inferiori riducono la sollecitazione ma possono peggiorare la misura. Controlla la documentazione della versione installata: non trattare i default di una vecchia guida come impostazioni universali.

La sequenza dei comandi, senza confondere console e SSH

I seguenti comandi vanno nella console Mainsail o Fluidd, dopo configurazione e riavvio riusciti. Con un sensore senza nome personalizzato, i primi controlli sono:

ACCELEROMETER_QUERY
MEASURE_AXES_NOISE

A macchina ferma il sensore legge anche la gravità: non aspettarti tre zeri. Prima di proseguire risolvi errori di comunicazione e rumore anomalo. Con sensori nominati o multipli occorre selezionare il chip secondo la propria configurazione.

Solo dopo aver verificato homing, spazio e parametri del test, puoi misurare un asse:

TEST_RESONANCES AXIS=X NAME=nerd_x

Sulla Mega S, prima del test Y sposta il sensore sul piano a macchina ferma e verifica nuovamente fissaggio, cavo e configurazione:

TEST_RESONANCES AXIS=Y NAME=nerd_y

Sorveglia il primo test e interrompi con M112 se il movimento diventa eccessivo. La sintassi e i file prodotti sono documentati nei comandi ufficiali TEST_RESONANCES. Un test di risonanza genera movimento: non è una semplice lettura passiva.

Dal CSV al grafico reale: scegli un file preciso

Questa parte va invece nel terminale SSH dell’host Klipper. Per il test X appena nominato:

ls -l /tmp/resonances_x_nerd_x.csv
~/klipper/scripts/calibrate_shaper.py /tmp/resonances_x_nerd_x.csv -o /tmp/shaper_nerd_x.png

Ripeti con y_nerd_y per Y. Usiamo il nome esatto per evitare di includere accidentalmente test vecchi tramite *.csv. Copia CSV e immagini in una cartella di lavoro o sul PC: /tmp non è un archivio permanente.

Il programma ufficiale calibrate_shaper.py legge dati e prepara il grafico con i candidati di compensazione. Se mancano librerie Python, completa le dipendenze previste per il tuo ambiente: non reinstallare a caso l’intero sistema. Le curve del nostro laboratorio didattico non hanno il suo formato e non vanno passate a questo programma.

Come leggere i risultati senza scegliere il numero più bello

In una misura reale cerca picchi ripetibili fra prove nelle stesse condizioni. Un picco può riflettere un modo di vibrazione, ma anche una staffa inadeguata o una condizione di prova cambiata. Se due misure differiscono molto, prima spiega la differenza; non fare la media soltanto per ottenere un valore stabile.

Klipper confronta candidati come MZV ed EI, tenendo conto di vibrazioni residue previste e smoothing. Il valore di max_accel suggerito descrive un vincolo del modello di compensazione: non certifica che motori, cinghie e struttura possano reggerlo. Non significa neppure «aumenta la velocità di questa percentuale».

Puoi usare SHAPER_CALIBRATE AXIS=X, verificare il risultato e salvarlo con SAVE_CONFIG prima di spostare il sensore e di eventuali spegnimenti. Dopo il corretto montaggio per Y, ripeti con SHAPER_CALIBRATE AXIS=Y e salva anche quel risultato. Sono nuove prove in movimento. Il salvataggio riavvia Klipper, ma non imposta automaticamente l’accelerazione massima di stampa. Verifica un pezzo reale e mantieni un limite adeguato alla macchina. La gestione dei risultati si può controllare anche nel codice ufficiale del modulo resonance_tester.

Scarica il laboratorio FFT e prova senza hardware

Scarica il laboratorio FFT 3DPrintNerd: Python, CSV e grafico. Contiene il codice originale, i dati sintetici già generati, istruzioni e rapporto di verifica. Puoi aprire i CSV anche senza eseguire Python. Lo script non accede a USB, rete o firmware e non modifica Klipper.

Nel codice trovi due frequenze, durata, campionamento e rumore. Cambia una frequenza e osserva quale picco si sposta; cambia la durata e confronta la distanza fra i bin. Se riduci molto l’ampiezza della seconda componente, diventa più difficile distinguerla dal fondo. È un modo concreto per capire perché un grafico poco leggibile non autorizzi a inventare una frequenza.

Non caricare 43 o 67 Hz in printer.cfg prendendoli dall’immagine. Sono ingredienti dell’esempio, non parametri di una stampante. Questo laboratorio spiega la lettura dello spettro; non riproduce l’algoritmo completo di Klipper e non sceglie uno shaper.

Domande frequenti

Serve tenere il sensore collegato durante ogni stampa?

Per la compensazione basata sui parametri salvati non è necessario misurare continuamente. Se rimuovi un modulo configurato come MCU, sistema anche i relativi include e riferimenti, conservando i parametri input_shaper: altrimenti Klipper può aspettare un dispositivo assente.

Dopo una modifica devo misurare di nuovo?

È utile dopo variazioni rilevanti di massa mobile, piano, cinghie o rigidità. Per confrontare le prove conserva posizione del sensore, montaggio, configurazione e condizioni della macchina, oltre ai file.

Funziona su una Bambu Lab stock?

Questi comandi riguardano una macchina gestita da Klipper. Non sono istruzioni da incollare in Bambu Studio e non descrivono il sistema automatico proprietario di una Bambu Lab.

Fonti consultate il 9 novembre 2026. Copertina: illustrazione originale generata con IA, hardware generico. Grafico, CSV e codice FFT: materiale didattico originale con dati simulati. Nessuna misura fisica o prestazione di stampa è presentata come prova diretta 3DPrintNerd.