Welcome! Log In Create A New Profile

Advanced

MK4duo - calibrazione ntc dell'hotend

Posted by onekk 
MK4duo - calibrazione ntc dell'hotend
April 17, 2018 04:51AM
Ritorno sull'argomento in quanto oggi mi è arrivato il termometro con le sonde K come quello citato in questo post:

http://forums.reprap.org/read.php?361,817239,817495#msg-817495

Come procedo:

1) scaldo l'hotend a 160° aspetto che si stabilizzi, misuro il valore della temperatura letta dal termometro
2) passo a 180°, ...., misuro il valore
3) passo a 200° ,..., misuro il valore

ho i tre valori per calcolare l'equazione di steinhart-heart, per il range di temperatura ed eventualmente anche il beta reale.

c'è un modo per leggere le resistenze senza staccare nulla? (vado a memoria ma mi sembra che ci sia un report da attivare in qualche modo, e poi se questo post rimane troviamo tutto qui anche a "futura memoria")

leggo da MK4duo.ino che dovrei poi usare questo comando e inserire alcuni valori:

M305 - Set thermistor and ADC parameters: H[heaters] H = 0-3 Hotend, H = -1 BED, H = -2 CHAMBER, H = -3 COOLER,
 *          A[float] Thermistor resistance at 25°C, B[float] BetaK, C[float] Steinhart-Hart C coefficien, R[float] Pullup resistor value,
            L[int] ADC low offset correction, O[int] ADC high offset correction, P[int] Sensor Pin


M305 H0, A valore, B valore, C valore,R valore, L valore, O valore, P valore

A = resistenza a 25°
B = Beta (forse ho trovato alcune formule per calcolarlo partendo da una tabella di valori)
C = Lo calcolo
R = posso misurarla oppure vado con il valore di default?
L = come lo trovo ?
O = come lo trovo ?
P = guardo sullo schema o nel file Configuration_Pin.h

domande:

1) se metto solo i valori che variano cioè A B C gli altri vengono presi così come sono?

2) sarebbe un casino mettere nel configuratore online una voce per il valore C in modo che rimanga nel codice? Ora mi sembra che ti chieda solo la R di pullup, il Beta e la R25.

Grazie per l'attenzione

Carlo D.


P3Steel - MKS GEN v1.2 e REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER + Gen 7 MOSFET (HotBed) + alimentatore step-down 12V -> 5V
Firmware MK4duo 4.3.5 (4.3.6 in testing) con ABL capacitivo - Slic3R (Originale) ed ESP3D per controllare la stampante da remoto.
HotEnd Cinese V6 clone con ugello da 0.4mm.

[My Building Log]
Re: MK4duo - calibrazione ntc dell'hotend
April 17, 2018 03:21PM
Gli offset ti servono per regolare la temperatura, la bassa e l'alta non si prendono li metti finché la temperatura non è quella giusta..


COMPRA ITALIANO - sostieni le nostre aziende - sostieni la nostra gente - sostieni il tuo popolo - sosterrai te stesso.
Alberto C. felice possessore di una Kossel K2
My Blog - My Thingiverse
Re: MK4duo - calibrazione ntc dell'hotend
April 20, 2018 06:12AM
Ciao.

Sono interessato a capire bene il metodo per calcolare i valori corretti e quando questo metodo debba essere utilizzato; l'immagine allegata mostra i parametri disponibili in MK4DUO v 4.3.5.
Io ho un hotEnd di IeC e le indicazioni avute da Davide sono quelle di inserire "100k termistore - NTC3950 - BetaK 3950", così ho fatto ed ho notato che rispetto a prima la temperatura ambiente (misurata subito dopo aver aggiornato il FW) era di 1/1,5 gradi superiore (19,6 prima e 20,9/21 dopo) che tradotto vuol dire un 7% circa di differenza.
A questo punto vorrei provare ad applicare la metodologia di cui state parlando per verificare con esattezza la precisione del mio termistore.
Per aiutarmi nelle misurazioni posso affidarmi al mio multimetro digitale un MS8229 della Mastech che ha la possibilità di misurare la temperatura ambientale (attraverso un termometro interno) e la temperatura attraverso una termocoppia di tipo K.
Ho posizionato il multimetro quasi attaccato al nozzle e le temperature che rilevo sono le seguenti:
  • Multimetro sensore ambiente = 23,9
  • Multimetro termocoppia = 25 (purtroppo non mostra decimali però ogni tanto oscilla tra 24 e 25 quindi la temperatura deve essere il quel range prossimo al 25 basso))
  • Sensore hotend = 21,2

In teoria anche la temperatura misurata dall'hotend dovrebbe essere molto prossima a quella ambiente (consideriamo che ho anche spendo la ventola di raffreddamento hotend) quindi una correzione immagino debba essere fatta.
Purtroppo nel mio HotEnd non ho fessure dove inserire dove inserire il sensore della termocoppia per fare una lettura il piu possibile vicina al termistore, quello che potrei fare è attaccare con del Kapton la termocoppia al nozzle e leggere la temperatura in quel modo... quindi gli offset potrei calcolarli in questo modo.
La resistenza a 25 gradi potrei misurarla in questo modo:
  • dando per assodato che la temperatura ambiente e quella dell'hotend dovrebbero essere uguali ed essendoci una differenza di 2,7 gradi accendo l'hot end e lo porto 27,7/28 (musurati dal termistore)
  • spengo tutto
  • scollego il connettore del termistore
  • misuro la resistenza

Ma fatto questo, ammesso di aver fatto le cose nel modo giusto, poi come uso i dati per fare le correzioni?
Mi date una mano a capire meglio?

Un saluto

Edited 1 time(s). Last edit at 04/20/2018 06:16AM by laudix.


Salvatore.


--- Prusa i3 Steel (20x20x20)                        --- Prusa i3 Steel XL (30x30x30)
    Motori 200 passi                                     Motori 400 passi
    Stepper drive - DRV8825                              Stepper drive - DRV8825
    RAMPS 1.4                                            RADDS 1.5
    HotEnd IeC                                           HotEnd IeC
    FW MK4DUO 4.3.2                                      FW MK4DUO 4.3.5
Attachments:
open | download - MK4DUO HotEnd config.PNG (35.4 KB)
Re: MK4duo - calibrazione ntc dell'hotend
April 20, 2018 11:22AM
Il fattore betaK di solito è dato per le alte temperature, quindi a basso non è perfettamente precisa, ma se cambi il valore di Low offset porti la temperatura a quella letta dal sensore...

M305 L metti un valore finche non sei vicino a quella letta. poi memorizzi...
L'hotend E3d non ha una 3950 ma ne ha un'altra...

Trovi la guida sul sito della E3D [e3d-online.dozuki.com]

Edited 1 time(s). Last edit at 04/20/2018 11:23AM by MagoKimbra.


COMPRA ITALIANO - sostieni le nostre aziende - sostieni la nostra gente - sostieni il tuo popolo - sosterrai te stesso.
Alberto C. felice possessore di una Kossel K2
My Blog - My Thingiverse
Re: MK4duo - calibrazione ntc dell'hotend
April 21, 2018 08:29AM
Ok.

Avendo una differenza tra lettura col multimetro (24,7) e lettura da termistore (22,1) = a 2,6 ho dato il comando M305 L2.6.
Mi aspettavo quindi che cambiasse la lettura del termistore ma nulla è avvenuto.
Sto dimenticando qualcosa?

Un saluto


Salvatore.


--- Prusa i3 Steel (20x20x20)                        --- Prusa i3 Steel XL (30x30x30)
    Motori 200 passi                                     Motori 400 passi
    Stepper drive - DRV8825                              Stepper drive - DRV8825
    RAMPS 1.4                                            RADDS 1.5
    HotEnd IeC                                           HotEnd IeC
    FW MK4DUO 4.3.2                                      FW MK4DUO 4.3.5
Re: MK4duo - calibrazione ntc dell'hotend
April 21, 2018 01:51PM
Probabilmente si, il problema è la documentatione come al solito, sto cercando anch'io di capirci qualcosa, sembra che nessuno abbia voglia di scrivere qualcosa di chiaro sull'argomento, sto cercando da un paio di giorni,

In soldoni ho capito che:

M305 H0, A valore, B valore, C valore,R valore, L valore, O valore, P valore

A = resistenza a 25° (la trovi sulle tabelle del sensore, in pratica è quel 100k che ti danno nei dati della resistenza, al massimo la misuri col tester a 25° e aggiusti il valore)
B = Beta è il 3950, ma in teoria ci sono formule per calcolarlo da una tabella Resistenza Temperatura
C = è il coefficiente C dell'equazione di Steinhart-Hart, anche questo dovresti calcolartelo dalla tabella Resistenza Temperatura
R = è la resistenza del circuito di misura (si potrebbe misurarla in modo preciso ma sulle schede con gli smd può diventare complicato), quasi universalmente sulle schede è attorno ai 4.7K
L = sono dei valori di offset
O = è un altro valore di offset
P = guardo sullo schema o nel file Configuration_Pin.h


Per capire che valore assegnargli sto cercando in giro.

In soldoni nei vecchi FW c'era una tabella Resistenza - Temperatura che potevi anche trovare in modo sperimentale e metterla nel posto giusto nel firmware prima della compilazione.

Negli attuali FW questa tabella è stata sostituita da questi valori, anche se poi una rapida occhiata mi ha fatto capire che A e B vengono usati C lo calcolano in qualche modo R è data dai dati della mainboard e L O non lo ancora capito P è il pin dove è collegato il sensore.

Calcolatore dei parametri

In questa discussione c'è qualche spunto

Questo post

Questa risposta dà qualche lume ma siamo pur sempre in alto mare

Quote
dc 42
H and L correct for the high and low end of the ADC range, which correspond to low and high temperatures (i.e. the opposite way round). So adjust H to get the room temperature reading right, and L to get high temperature reading right. Theoretically, all thermistor channels should need the same correction. On the later Duet boards with 4.7K series resistors, little or no correction is needed. On the earlier Duet boards with a 1K series resistor, the H correction (for room temperature reading) is often required when using a 100K hot end thermistor.

The B value for that thermistor is quoted for a temperature range of 25 to 85C, which is rather low compared to the range you are likely to be using. You can adjust it to get more accurate readings at higher temperatures. For example, setting B to 4286 will give you the most accurate reading at 100C, and setting B to 4375 will give the most accurate reading at 200C. You may want to consider using these B values for the bed and hot end respectively.

If you do want to adjust the corrections, I recommend you substitute a 100K 1% resistor for the thermistor, then adjust the H parameter to get a reading close to 25C. Then substitute a resistor with a lower value and adjust the L parameter to get the correct high temperature reading. But I you should adjust the B values as I already described before you adjust the L parameter.

Il L e l'H sono la correzione dell'ADC e quindi essendo un NTC Negative Temperature Coefficient - (Resistor) a basse temperature hai letture di resistenza alta ad alte temperature hai letture di resistenza basse, da qui l'apparente inversione del concetto quando dice di regolare H alla temperatura ambiente e L per l'alta temperatura.

Saluti

Carlo D.

Edited 2 time(s). Last edit at 04/21/2018 01:57PM by onekk.


P3Steel - MKS GEN v1.2 e REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER + Gen 7 MOSFET (HotBed) + alimentatore step-down 12V -> 5V
Firmware MK4duo 4.3.5 (4.3.6 in testing) con ABL capacitivo - Slic3R (Originale) ed ESP3D per controllare la stampante da remoto.
HotEnd Cinese V6 clone con ugello da 0.4mm.

[My Building Log]
Re: MK4duo - calibrazione ntc dell'hotend
April 21, 2018 05:20PM
Quote
laudix
Ok.

Avendo una differenza tra lettura col multimetro (24,7) e lettura da termistore (22,1) = a 2,6 ho dato il comando M305 L2.6.
Mi aspettavo quindi che cambiasse la lettura del termistore ma nulla è avvenuto.
Sto dimenticando qualcosa?

Un saluto

Si, anche io ho tribolato un po a capire tutto questo, ed effettivamente per aggiustare la temperatura bassa occorre usare il parametro "O", M305 O2.6
Il parametro "L" aggiusterà le temperature alte (questo non l'ho ancora verificato, non ho un termometro di misura per alte temperature).

E' come dice onekk, il discorso alto/basso è poco intuitivo.
Ciao
Re: MK4duo - calibrazione ntc dell'hotend
April 22, 2018 07:31AM
Ciao Carlo.

Grazie per l'indicazione, ho fatto ulteriori prove, questi i risultati:
  • faccio l'assunzione che l'hotend dovrebbe avere la temperatura ambiente dopo ore che è spento
  • Temperatura letta dal termistore oscilla tra i 22,0 e 22,1
  • temperatura ambiente data dal multimetro 24,6
  • Temperatura letta dalla sonda del multimetro attaccata con del nastro all'hotend 25 (ma non ha i decimali, quindi potrebbe essere anche più di un grado rispetto a quella che lo stesso multimetro misura con la sonda interna)
  • ho letto la resistenza del termistore con le temperature sopra descritte ed è a 105,9 Khom
  • ho fatto scaldare l'hotend di pochi gradi ed ho aspettato che la lettura del termistore scendesse a 22,5 (0,4 gradi superiore alla temperatura a freddo del termistore) che nei miei conti dovrebbero corrispondere ai 25 gradi
  • ho letto nuovamente la resistenza del termistore con la temperatura così compensata ed è a 104,2 Khom
  • a questo punto ho dato il comando M305 O2.5
  • Il comando prende solo interi, quindi non bisogna mettere decimali
  • lo scostamento c'e' stato ma è stato lievissimo, quindi ho continuato ad aumentare fino a dare M305 O38 che mi da letture sul termistore tra 24,57 e 24,65
  • a questo punto ho provato a correggere il valore della resistenza con il comando M305 A104200
  • a questo punto la lettura della temperatura si è spostata a 25,5
  • ho nuovamente compensato l'ofset Oxx scendendo fino a dare M305 O24 che mi ha riportato la temperatura letta nell'intorno di 24,6

La nuova lettura del comando M305 è quindi la seguente, in evidenza i valori modificati:

Send: M305
Recv: Config:  M305 H0 Sensor
Recv: Config: Pin:0
Recv: Config: Thermistor resistance at 25 C:104200.0
Recv: Config: BetaK value:3950.0
Recv: Config: Steinhart-Hart A coefficien:0.0004289360
Recv: Config: Steinhart-Hart B coefficien:0.0002531646
Recv: Config: Steinhart-Hart C coefficien:0.0000000000
Recv: Config: Pullup resistor value:4700.0
Recv: Config: ADC low offset correction:0
Recv: Config: ADC high offset correction:24
Recv: ok

Questo pomeriggio tra un passaggio e l'altro della "liegi bastogne liegi" provo a portare la temperatura a 200 gradi per vedere che differenza c'e' con quella letta dalla sonda messa sul nozzle

Un saluto


Salvatore.


--- Prusa i3 Steel (20x20x20)                        --- Prusa i3 Steel XL (30x30x30)
    Motori 200 passi                                     Motori 400 passi
    Stepper drive - DRV8825                              Stepper drive - DRV8825
    RAMPS 1.4                                            RADDS 1.5
    HotEnd IeC                                           HotEnd IeC
    FW MK4DUO 4.3.2                                      FW MK4DUO 4.3.5
Re: MK4duo - calibrazione ntc dell'hotend
April 22, 2018 05:05PM
Ok non sono stato chiaro vediamo di ricominciare...

A[float] Thermistor resistance at 25°C
B[float] BetaK
C[float] Steinhart-Hart C coefficien
R[float] Pullup resistor value
L[int] ADC low offset correction
O[int] ADC high offset correction

Primo parametro resistenza a 25° della sonda non va misurata e ne calcolata è quella scritta nel datasheet e nelle 100K epkos o qualsiasi altra è 100K non 104200..
Betak anche questo parametro è scritto nel datasheet della resistenza, di solito ci sono due valori uno a 80° e uno a 200° è quello dei 200 che va messo, mi sembra evidente è chiaro che non me ne frega nulla se sballa 5 gradi a 30° ma se sballa a 200 si....
I fattori A e B della formula di Steinhart-Hart sono calcolati dal firmware va messo solo C se si ha altrimenti si lascia a ZERO..
La resistenza di pullup è quella che c'è montata fisicamente sulla board anche questo è un valore certo 4700 nelle normali schede, altre montano altri tipi.
Ora arriviamo agli offsert.. E qui comincia tutto il discorso che avete fatto... Ma tutte queste misure le avete mai fatte quando c'erano le tabelle??? Io penso di no perché se l'avesse fatte avreste visto come toppavano di diversi gradi.
L[int] vuol dire intero quindi è normale che non prende la virgola, ed è un offset a basse temperature quindi quando è a 20 30 gradi se vi segnala 24, ma in effetti sono 25 se misurati con sonde certe, si regola L per far si che legga 25, ma serve???
O[int] high offset quindi offset ad alte temperature se quando sta a 200 e in effetti sono 201 si regola in modo che legga 201...

Mi dite dov'è la difficoltà??

E' normale che se cambi la resistenza a 25° cambiano tutti i valori e quindi gli offset vanno rimessi tutto si basa su calcoli su quei valori di resistenze... Quindi prima si mettono i valori noti poi per correggere un pochino si cambiano gli offset e basta...

Edited 2 time(s). Last edit at 04/22/2018 05:15PM by MagoKimbra.


COMPRA ITALIANO - sostieni le nostre aziende - sostieni la nostra gente - sostieni il tuo popolo - sosterrai te stesso.
Alberto C. felice possessore di una Kossel K2
My Blog - My Thingiverse
Re: MK4duo - calibrazione ntc dell'hotend
April 22, 2018 05:32PM
Quote
laudix
Ciao Carlo.

Grazie per l'indicazione, ho fatto ulteriori prove, questi i risultati:
  • faccio l'assunzione che l'hotend dovrebbe avere la temperatura ambiente dopo ore che è spento
  • Temperatura letta dal termistore oscilla tra i 22,0 e 22,1
  • temperatura ambiente data dal multimetro 24,6
  • Temperatura letta dalla sonda del multimetro attaccata con del nastro all'hotend 25 (ma non ha i decimali, quindi potrebbe essere anche più di un grado rispetto a quella che lo stesso multimetro misura con la sonda interna)
  • ho letto la resistenza del termistore con le temperature sopra descritte ed è a 105,9 Khom
  • ho fatto scaldare l'hotend di pochi gradi ed ho aspettato che la lettura del termistore scendesse a 22,5 (0,4 gradi superiore alla temperatura a freddo del termistore) che nei miei conti dovrebbero corrispondere ai 25 gradi
  • ho letto nuovamente la resistenza del termistore con la temperatura così compensata ed è a 104,2 Khom

Ok tutto giusto in teoria, però tu devi ottenere una lettura "precisa" o meglio "il più possibile precisa" attorno alla temperatura di lavoro quindi diciamo tra i 180 e i 250 gradi Centigradi.

Quindi la temperatura ambiente è il parametro che ti importa di meno, quello che ti importa al massimo è la R25 che nel tuo caso puoi assegnare a 104200 e non ai 100000 di targa, anche se poi devi misurare la temperatura ambiente non con un temometro a termocoppia in quanto le termocoppie in genere funzionano meglio a temperature medio-alte (diciamo dai 100° in su).


Quote
laudix
[*] a questo punto ho dato il comando M305 O2.5
[*] Il comando prende solo interi, quindi non bisogna mettere decimali
[*] lo scostamento c'e' stato ma è stato lievissimo, quindi ho continuato ad aumentare fino a dare M305 O38 che mi da letture sul termistore tra 24,57 e 24,65
[*] a questo punto ho provato a correggere il valore della resistenza con il comando M305 A104200
[*] a questo punto la lettura della temperatura si è spostata a 25,5
[*] ho nuovamente compensato l'ofset Oxx scendendo fino a dare M305 O24 che mi ha riportato la temperatura letta nell'intorno di 24,6


La nuova lettura del comando M305 è quindi la seguente, in evidenza i valori modificati:

Send: M305
Recv: Config:  M305 H0 Sensor
Recv: Config: Pin:0
Recv: Config: Thermistor resistance at 25 C:104200.0
Recv: Config: BetaK value:3950.0
Recv: Config: Steinhart-Hart A coefficien:0.0004289360
Recv: Config: Steinhart-Hart B coefficien:0.0002531646
Recv: Config: Steinhart-Hart C coefficien:0.0000000000
Recv: Config: Pullup resistor value:4700.0
Recv: Config: ADC low offset correction:0
Recv: Config: ADC high offset correction:24
Recv: ok

Questo pomeriggio tra un passaggio e l'altro della "liegi bastogne liegi" provo a portare la temperatura a 200 gradi per vedere che differenza c'e' con quella letta dalla sonda messa sul nozzle

Un saluto



Recv: Config: Steinhart-Hart C coefficien:0.0000000000


Questo vuol dire che se in quel momento il termistore ntc non sta usando la Steinhart-hart ma solo i valori di beta e di resistenza a 25° C

Da alcune letture che ho fatto nel frattempo,

Calcolo del Beta


Altro Articolo sul Beta


per cercare di ottenere in modo relativamente preciso, e per preciso intendo di poter aver una precisione vicina a quella di un termometro a termocoppia per i valori di lavoro quindi diciamo tra 180 e 250 gradi Centigradi, sarebbe necessario:

1) misurare tre punti di temperatura con un termometro a termocoppia, diciamo 180, 200, 220°C e segnarsi il valore della resistenza del sensore in esame a queste temperature.

2) calcolare i tre coefficienti A B C della Steinhart-Hart.

3) usando i valori ottenuti dalla Steinhart-Hart calcolare il Beta in quel range di temperature (che varia abbastanza infatti in genere il Beta di "targa" viene dato per il range 25-85 gradi Centigradi)

4) misurare la resistenza a 25° C usando un termometro non a termocoppia (DS1820) ad esempio oppure sensori relativamente calibrati con un range di +- 0.5° C

adesso avremmo in teoria i valori più corretti per inserire nell'equazione del M305 e sperare di ottenere letture "ragionevolmente" precise nel range di lavoro.


Ora mi resta da capire in che modo il firmware utilizza quei parametri perchè da una prima occhiata almeno nel MK4duo il parametro A e B della Steinhart-hart non li piglia da nessuna parte ma se li calcola internamente, infatti il comando M305 su MK4duo ti chiede solo il parametro C, dalla tua "schermata" sembra che tu non stia usando MK4duo ma un'altro firmware.

In linea teorica però il funzionamento è simile.

Lasciando perdere la linearizzazione dell'ADC che ha a che fare anche con la resistenza interna del circuito di misura (quel 4700 Ohm) e quindi i famosi parametri L e H, che al massimo mi potranno variare di qualche grado.

Io al momento sto ottenendo temperature che differiscono di almeno 15° C dal "parametro" che leggo sul display quindi se stampo a 220 in realtà sto stampando a 205°C o meno.


Per chi sa leggere l'inglese la procedura consigliata dai produttori di temristori è:

Quote
http://www.giangrandi.ch/electronics/ntc/ntc.shtml
Now, manually adjusting the values of R25 and β in your algorithm is not easy, because both influence the temperature you're currently reading. So, tweaking these values by hand hoping to correct the accuracy is difficult and time consuming as it requires repeated measurements at different temperatures. What I usually do is choosing two points (two temperatures) that are close to the edges of the temperature range I want to measure and I accurately measure the resistance of the NTC. They don't need to be the absolute limits of the range, but as far apart as possible. Then, I use the procedure for determining these parameters described before and I use the results as parameters. If I'm not happy with the accuracy I have, I simply do the two measurements again, as measuring temperatures precisely is harder that it seems.

La premessa è che per stampare non serve avere un termistore tarato ma un sistema che mantenga bene e in modo ripetibile la temperatura attorno ad un certo valore che vedo sul display (quello che io ho chiamato "parametro" di fusione), se uso un solo hotend quel "parametro" di fusione mi è perfettamente sufficiente.

Lo scopo ultimo sarebbe quello di avere come riferimento una "temperatura" di fusione e non un "parametro" di fusione come nel caso attuale in cui la lettura riportata sul display è un mero numero che al massimo è ripetibile ma non rappresentativo.

Perché ?

Mi vengono in mente alcuni scenari:

1) cambio hotend, se ho ottenuto dei valori di fusione il nuovo hotend mi darà di sicuro valori diversi. Ma se io so che il mio PLA (ABS PETG, ecc) fonde a185°C al massimo misuro la temperatura ottenuta con un termometro a termocoppia e ottengo che per il nuovo hotend devo impostare una "parametro" di fusione di 220 (no metto gradi Centigradi in quanto non lo sono perché il termometro a termocoppia mi dice che sono 185° C ma il display mi dice che sono 220).

2) voglio avere una "tabella" di valori di temperatura di fusione per poter partire con valori ragionevolmente giusti in base magari alla marca e al colore del materiale che uso, senza perdere tempo a tarare di nuovo tutto, se ho un valore "confrontabile" con un termometro a termocoppia ci vado già vicino e aggiusto solo in un range ristretto di poche decine di gradi.

3) devo fare confronti tra vari materiale o risolvere problemi di stampa e devo provare diversi modelli di hotend.

Saluti

Carlo D.

Edited 3 time(s). Last edit at 04/22/2018 05:51PM by onekk.


P3Steel - MKS GEN v1.2 e REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER + Gen 7 MOSFET (HotBed) + alimentatore step-down 12V -> 5V
Firmware MK4duo 4.3.5 (4.3.6 in testing) con ABL capacitivo - Slic3R (Originale) ed ESP3D per controllare la stampante da remoto.
HotEnd Cinese V6 clone con ugello da 0.4mm.

[My Building Log]
Re: MK4duo - calibrazione ntc dell'hotend
April 22, 2018 05:55PM
Quote
onekk
con un termometro a termocoppia ci vado già vicino e aggiusto solo in un range ristretto di poche decine di gradi.

3) devo fare confronti tra vari materiale o risolvere problemi di stampa e devo provare diversi modelli di hotend.

Saluti

Carlo D.

Non so tipo di stampante hai, io tutti questi calcoli non ne ho mai fatti, ma una cosa è certa.... se aggiusti in un range di poche decine di gradi (20 , 30, ... 40) c'e qualche cosa nel tuo sistema che non funziona.... io di solito aggiusto, di 3 o 4 gradi, quando supero le decine, allora mi pongo altre domande, per esempio mi assicuro che il materiale sia quello che credevo essere.......

Dario
Re: MK4duo - calibrazione ntc dell'hotend
April 22, 2018 06:39PM
IO misuro la temperatura del nozzle con un termometro a termocoppia posto vicino alla cartuccia e vedo sul termometro 185°C mentre sul display della stampante imposto 200 (a questo punto non scrivo gradi in quanto non lo sono).

Non vedo problemi se non quello che sto usando dei "numeri" e non delle temperature di fusione.

Il problema iniziale era:

Come fare per impostare una "tabella" più corretta per il mio sensore di temperatura NTC, di cui non ho un pedigree con tanto di datasheet ma solo un generico "sensore NTC da 100k con Beta 3950".

Dato che la risposta non era chiara ci siamo imbarcati in questa discussione e nelle relative elucubrazioni partendo da letture in giro per la rete e da qualche discussione simile su questo forum ma in lingua inglese.

Nella discussione avevo premesso che se devo "solo" stampare avere 200 sul display e estrudere correttamente va bene, diverso è se voglio ragionare non con "numeri" ma con temperature.

Saluti

Carlo D.


P3Steel - MKS GEN v1.2 e REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER + Gen 7 MOSFET (HotBed) + alimentatore step-down 12V -> 5V
Firmware MK4duo 4.3.5 (4.3.6 in testing) con ABL capacitivo - Slic3R (Originale) ed ESP3D per controllare la stampante da remoto.
HotEnd Cinese V6 clone con ugello da 0.4mm.

[My Building Log]
Re: MK4duo - calibrazione ntc dell'hotend
April 23, 2018 04:58AM
Quote
MagoKimbra
......
.....
Ora arriviamo agli offsert.. E qui comincia tutto il discorso che avete fatto... Ma tutte queste misure le avete mai fatte quando c'erano le tabelle??? Io penso di no perché se l'avesse fatte avreste visto come toppavano di diversi gradi.
L[int] vuol dire intero quindi è normale che non prende la virgola, ed è un offset a basse temperature quindi quando è a 20 30 gradi se vi segnala 24, ma in effetti sono 25 se misurati con sonde certe, si regola L per far si che legga 25, ma serve???
O[int] high offset quindi offset ad alte temperature se quando sta a 200 e in effetti sono 201 si regola in modo che legga 201...
....
...
Ciao Alberto,
1) Prima non avevo mai fatto verifiche di temperature perchè non mi ero posto il problema, poi, essendo state tolte le tabelle mi sono posto il problema, da qui tutte le elucubrazioni sugli offset...beta...ecc.

2) Probabilmente sbaglio da qualche parte, ma io per correggere il valore letto sulle basse temperature (so che non è importante, ma mi è servito per capire) ho usato M305 H0 O-1, perchè rispetto alla temp. ambiente mi segnava un grado in piu'. Usando il parametro L non mi modificava il valore basso.

Qui mi pare che tu dica il contrario, L per correggere i valori bassi ed O per i valori alti.

Potresti confermare, grazie.
Carlo Neb

Edited 1 time(s). Last edit at 04/23/2018 05:00AM by carlonb.
Re: MK4duo - calibrazione ntc dell'hotend
April 23, 2018 08:31AM
Ciao Mago.

Quote
MagoKimbra

Mi dite dov'è la difficoltà??

Se avevo tutti i dati relativi al termistore sò anche io che non sarebbe stato un grosso problema... il punto, almeno per me' e che avendo degli Hotend artigianali (quelli di Immagina e Crea) per i quali non ho un datasheet ufficiale, il dubbio che qualcosa dovesse essere sistemato mi è venuto. Il fatto poi che a temperatura ambiente avessi una differenza di piu di due gradi con quanto indicava il termistore mi ha ulteriormente spinto a fare delle verifiche.
Per il resto sono d'accordo con onekk, per stampare e basta non è necessario conoscere la temperatura precisa ma basta impostare un valore che funzioni correttamente che poi coincida con la temperatura di fusione del materiale che usi è un particolare...

Quindi se capisco bene, se il modello di termistore che hai è tra quelli previsti dal FW metti quello e al massimo usi "M305 Lxx Oyy" per aggiustare la precisione, se invece non hai informazioni selezioni Custom Sensor nella lista ed i parametri li metti a mano ammesso che tu li abbia.

Confermo che quanto indicato da Carlo Neb, il parametro L non mi modificava i valori bassi.

Un saluto


Salvatore.


--- Prusa i3 Steel (20x20x20)                        --- Prusa i3 Steel XL (30x30x30)
    Motori 200 passi                                     Motori 400 passi
    Stepper drive - DRV8825                              Stepper drive - DRV8825
    RAMPS 1.4                                            RADDS 1.5
    HotEnd IeC                                           HotEnd IeC
    FW MK4DUO 4.3.2                                      FW MK4DUO 4.3.5
Re: MK4duo - calibrazione ntc dell'hotend
April 23, 2018 10:32AM
Se hai quello di immagina e crea allora devi settare NTC3950 quello è perfetto è quello che uso io, e sbaglia di 1 grado 2 ....


COMPRA ITALIANO - sostieni le nostre aziende - sostieni la nostra gente - sostieni il tuo popolo - sosterrai te stesso.
Alberto C. felice possessore di una Kossel K2
My Blog - My Thingiverse
Re: MK4duo - calibrazione ntc dell'hotend
April 23, 2018 10:59AM
Ciao Alberto.

Quote
MagoKimbra
Se hai quello di immagina e crea allora devi settare NTC3950 quello è perfetto è quello che uso io, e sbaglia di 1 grado 2 ....

Si, Davide mi ha detto di settarlo in quel modo e così ho fatto e tutte le considerazioni che ho fatto partono da li... ma quindi su questo Hotend non hai dovuto fare nessuna correzione attraverso gli offsets?

Un saluto


Salvatore.


--- Prusa i3 Steel (20x20x20)                        --- Prusa i3 Steel XL (30x30x30)
    Motori 200 passi                                     Motori 400 passi
    Stepper drive - DRV8825                              Stepper drive - DRV8825
    RAMPS 1.4                                            RADDS 1.5
    HotEnd IeC                                           HotEnd IeC
    FW MK4DUO 4.3.2                                      FW MK4DUO 4.3.5
Re: MK4duo - calibrazione ntc dell'hotend
April 23, 2018 12:45PM
Si, ti ho detto sballa di 1 2 gradi, quindi se hai un termometro digitale con cui misurare puoi settare l'offset alto per aggiustare altrimenti lasci cosi com'è..


COMPRA ITALIANO - sostieni le nostre aziende - sostieni la nostra gente - sostieni il tuo popolo - sosterrai te stesso.
Alberto C. felice possessore di una Kossel K2
My Blog - My Thingiverse
Re: MK4duo - calibrazione ntc dell'hotend
April 24, 2018 11:42AM
Vabbeh, dopo una certa investigazione del codice, sono arrivato ad alcune conclusioni:

il calcolo della temperatura è fatto usando una versione "semplificata della Steinhart-hart" che fa alcune assunzioni:

if (WITHIN(s_type, 1, 9)) {
    const int32_t averagedVssaReading = 2 * adcLowOffset,
                  averagedVrefReading = AD_RANGE + 2 * adcHighOffset;

    // Calculate the resistance
    const float denom = (float)(averagedVrefReading - adcReading) - 0.5;
    if (denom <= 0.0) return ABS_ZERO;

    const float resistance = pullupR * ((float)(adcReading - averagedVssaReading) + 0.5) / denom;
    const float logResistance = LOG(resistance);
    const float recipT = shA + shB * logResistance + shC * logResistance * logResistance * logResistance;

    /*
    SERIAL_MV("Debug denom:", denom, 5);
    SERIAL_MV(" resistance:", resistance, 5);
    SERIAL_MV(" logResistance:", logResistance, 5);
    SERIAL_MV(" shA:", shA, 5);
    SERIAL_MV(" shB:", shB, 5);
    SERIAL_MV(" shC:", shC, 5);
    SERIAL_MV(" recipT:", recipT, 5);
    SERIAL_EOL();
    */

    return (recipT > 0.0) ? (1.0 / recipT) + (ABS_ZERO) : 2000.0;
  }




void TemperatureSensor::CalcDerivedParameters() {
	shB = 1.0 / beta;
	const float lnR25 = LOG(r25);
	shA = 1.0 / (25.0 - ABS_ZERO) - shB * lnR25 - shC * lnR25 * lnR25 * lnR25;

i tre parametri A B C della Steinhart-hart sono derivati dal beta e dalla R25 e corretti solo se il parametro C è diverso da 0 altrimenti

 shC * lnR25 * lnR25 * lnR25

vale 0 e quindi il calcolo

 const float recipT = shA + shB * logResistance + shC * logResistance * logResistance * logResistance;

tiene consto solo del Beta rappresentato da ShB = 1.0 / Beta e della resistenza a 25

shA = 1.0 / (25.0 - ABS_ZERO) - shB * lnR25

in pratica allora dato che viene usato il beta a 25°C che per un resistore 3950 è appunto 3950 forse sono corretti alcuni post che ci sono in giro dove per linearizzare il sensore di temperatura attorno ai nostri 220° C +-30 o 40 gradi che sono la temperatura che ci serve, fanno un calcolo semplice semplice.

Misurano le temperatura a 190, 210, 230. 250 e ottengono con il termometro la misura vera, fanno le due medie diciamo 234 per quelle "da display" e 215 per quelle "vere" ottengono un coefficiente ad esempio nel nostro caso

215/234=0,919 = 92% quindi il nostro ntc è mediamente "abbondante" dell' 8% circa

se il nostro ntc ha un beta di "targa" di 3950 fanno (3950*108)/100 = 4266 e mettono questo 4266 nel valore del beta con M305 ecc ecc.

dovrei controllare se nei datasheet sono presenti due valori di beta uno per le basse temperature e uno per le alte temperature, nel caso se il datasheet lo riportasse sarebbe meglio come punto di partenza usare questo.

Dato che poi nel valore ci calcolo la R25 viene usata in modo ampio prima di misurare il beta e fare la proporzione magari sarebbe meglio se possibile correggere quella e poi fare la procedura indicata sopra che poi in pratica è un approssimare il beta nell'intervallo che ci interessa applicando non una correzzione basta su una polinomiale (che è una curva) ma una linearizzazione approssimando ad una retta (usando il punto centrale della media come indicatore di percentuale di deviazione), meglio che lasciare i valori di targa dovrebbe essere.

Edited 2 time(s). Last edit at 04/25/2018 06:58AM by onekk.


P3Steel - MKS GEN v1.2 e REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER + Gen 7 MOSFET (HotBed) + alimentatore step-down 12V -> 5V
Firmware MK4duo 4.3.5 (4.3.6 in testing) con ABL capacitivo - Slic3R (Originale) ed ESP3D per controllare la stampante da remoto.
HotEnd Cinese V6 clone con ugello da 0.4mm.

[My Building Log]
Re: MK4duo - calibrazione ntc dell'hotend
April 25, 2018 07:19AM
Buongiorno a tutti.

Stamattima è stata una buon mattina proficua ed interessante.

Ho usato il termometro a termocoppia uguale a quello che mi aveva consigliato il Mago, ho inserito nella fessura del mio hotend la sonda dove si stringe la cartuccia e ho aspettato che si stabilizzassero i valori.

Visto il funszionamento dell'Hotend che non è stabilissimo ho cercato di trovare a occhio un valore medio attorno alla temperatura di targa, ma con la tecnica che ho usato io non è fondamentale avere un valore preciso.

Riassumo in breve, ho tarato l'NTC e ottenuto un buon risultato toccando solo il valore del Beta.

Ho ottenuto una tabella del genere:

Temp Reale Temp Hotend
169 180
177 200
194 220
208 240
222 260
Media Media
194 220


Usando le medie ho fatto la proporzione:

Allora 220*3950/194 = 4479....

Ho inserito questo valore nel beta di H0 con M305 H0 B4479

Ho dato il comando per fare il "PID Autotune"

Ho ripetuto lo stesso lavoro un paio di volte, avvicinandomi sempre di più ad un valore "preciso".

Alla fine sono arrivato ad un beta di 4256 che mi da una precisione di circa 1 - 1,5 gradi tra 180 e 260°C

Ora la temperatura è maggiormente corretta e quindi i miei 220 di prima sono diventati 195 per il PLA che uso.

Questa procedura non tiene conto del parametro C della Steinhart-Hart, quindi è una linearizzazione, in soldoni trasfroma una curva in una retta e ovviamente il massimo errore lo avrete nel punto centrale, se disegnate su un foglio una curva lo vedete dal "vivo".

In teoria usando il parametro C "curvate" questa retta per avvicinarla maggiormente alla curva "reale" che poi è quella che potete ottenere con una tabella Resistenza Temperatura, mettendola su un grafico.

La Steinhart-Hart è stata sviluppata per migliorare la curva caratteristica dei sensori per misurare la temperatura degli oceani alla fine degli anni '60, per migliorare la formula che usava il Beta per trasfromare le letture resistive delle sonde NTC in letture di temperatura.

Nel nostro caso però l'algoritmo di calcolo non usa una "vera" polinomiale ma deriva i due paramteri A e B usando il Beta e la R25 e poi permette di inserire il parametro C, a questo punto non ho altri dati per dare un'indicazione del parametro C.

Al momento posso solo pensare di prendere l'equazione del parametro C e usando un programma di plotting dei dati matematici vedere come variando C varia la curvatura risultante, però questo solo per arrivare ad una maggiore conoscenza del funzionamento interno del programma.

Mi posso comunque ritenere soddisfatto del risultato, vorrei provare a rifare il "PID Autotune" usando diversi tipi di parametro R:

M303 - PID relay autotune: H[heaters] H = 0-3 Hotend, H = -1 BED, H = -2 CHAMBER, H = -3 COOLER,
 *        S sets the target temperature (default target temperature = 150C), C, U,
 *        R 0 = Classic Pid, 1 = Some overshoot, 2 = No Overshoot, 3 = Pessen Pid

Qualcuno ha qualche informazione maggiore sull'argomento?

Se non sono stato chiaro in qualcosa fatemelo sapere, sprro di essere stato utile a qualcuno.

Saluti

Carlo D.

Edited 1 time(s). Last edit at 04/25/2018 08:47AM by onekk.


P3Steel - MKS GEN v1.2 e REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER + Gen 7 MOSFET (HotBed) + alimentatore step-down 12V -> 5V
Firmware MK4duo 4.3.5 (4.3.6 in testing) con ABL capacitivo - Slic3R (Originale) ed ESP3D per controllare la stampante da remoto.
HotEnd Cinese V6 clone con ugello da 0.4mm.

[My Building Log]
Re: MK4duo - calibrazione ntc dell'hotend
May 07, 2018 03:48AM
Quote
onekk
Ho inserito questo valore nel beta di H0 con M305 H0 B4479

Ho dato il comando per fare il "PID Autotune"

Ho ripetuto lo stesso lavoro un paio di volte, avvicinandomi sempre di più ad un valore "preciso".

Intanto grazie per il lavoro che avete fatto per chiarire questa parte un po' oscura del setup smiling smiley . Avevo una domanda per onekk: dopo aver trovato il primo betak con la media, perche' hai dovuto fare il PID autotune? Se la misura della temperatura era corretta, le iterazioni successive perche' le hai fatte?

Grazie


Voronix Core XY (custom model): Radds 1.6 (DRV8825) - Nextion 7" - E3d Titan + Hotend E3d V6 Direct - MK4DUO 4.3.3
Re: MK4duo - calibrazione ntc dell'hotend
May 12, 2018 03:00PM
Rispondo ora con un pochino di ritardo ma ero impegnato in giochetti matematici con OpenSCAD.

il PID autotune serve al firmware per "cercare di mantenere" "il più costante possibile" la temperatura dell'Hot End, non ho indagato come venga usato nel firmware.

mi spiego, per misurare la temperatura il firmware usa un ADC interno del processore (a meno di circuiti esotici) e ottiene un valore digitale (ad esempio se usa un adc a 10 bit ha 1023 valori), se usa direttamente il valore a 10 bit fare il PID autotune non ha senso in quanto quel valore non cambia se cambia il valore che viene mostrato sul display.

Ma se invece il firmware usa il valore interpolato dalla tabella o dall'equazione interna del firmware che da una Temepratura (quella che leggi sul display) ovviamente cambiando i paramteri di questa equazione il calcolo fatto prima va a farsi benedire.

Se il calcolo va a farsi benedire la temperatura dell'Hot End oscilla "molto" e per i problemi di isteresi (cioè il ritardo con cui il temometro legge la temperatura) questo ti fa fare errori nella valutazione dei dati per ricalcolare il beta.

ad esempio

imposti 200 leggi 210, ma quel 210 varia diciamo da 205 a 215 e tu usi il valore centrale, e quando usi il termometro esterno riscontri questa variazione e cerchi di fare una media per ottenere un valore centrale

fai la stessa cosa per le altre temperature e hai una scala delle temperature "lette dal termometro" che è già interpolata da te.

Rifacendo il processo e ritarando il PID noterai che queste oscillazioni diminuiscono e quindi la tua media è relativamente precisa.

Spero di essermi spiegato.

Saluti

Carlo D.


P3Steel - MKS GEN v1.2 e REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER + Gen 7 MOSFET (HotBed) + alimentatore step-down 12V -> 5V
Firmware MK4duo 4.3.5 (4.3.6 in testing) con ABL capacitivo - Slic3R (Originale) ed ESP3D per controllare la stampante da remoto.
HotEnd Cinese V6 clone con ugello da 0.4mm.

[My Building Log]
Sorry, only registered users may post in this forum.

Click here to login