Ciao a tutti
vorrei realizzare un controllo in PWM regolato dalla lettura di una temperatura, con le seguenti impostazioni:
l'uscita pwm deve essere off se la temperatura misurata('Tm')e minore del valore 'T1'
l'uscita pwm deve essere all'1% al raggiungimento di 'T1' ( Tm= T1)
l'uscita PWM deve incrementare la % d'uscita gradualmene finchè non raggiunge il valore di 'T2' quindi PWM =255 quando Tm = T2
l'uscita PWM deve mantenere l'uscita al 100% (PWM=255 se Tm > T2
esempio:
T1= 10
T2= 40
tra il valore 10 e 40 vorrei una variazione da 0 a 255
non sto riusceno ad trovare una formula matematica che realizzi questa condizione mantenendo i valori T1 e T2 editabili da tastierino ed lcd.
Suggerimenti?
non funziona così?
ValoreDaUsarePerPWM = map (tm,t1,t2,0,255);
Patrick_M:
non funziona così?
ValoreDaUsarePerPWM = map (tm,t1,t2,0,255);
adesso provo.
nel frattempo do ore di studio sono arrivato a questo tramite excel:
ValoreDaUsarePerPWM = (tm-t2+t1)/(255/t1)
Dalle specifiche del primo post:
> T2 --> 255
== T2 --> 100% --> 255
== T1 --> 1% --> 3
< T1 --> 0
Per tutto il range: T1 <= Tm <= T2
pwm = K1*Tm + K2
dove:
K1 = 252 / (T2 - T1)
K2 = 3 - (K1 * T1)
Ad ogni variazione di T1 o T2 si ricalcolano K1 e K2.
docdoc
August 27, 2018, 11:28am
5
Patrick_M:
non funziona così?
ValoreDaUsarePerPWM = map (tm,t1,t2,0,255);
No perché map() non gestisce i valori minori o maggiori, ossia lui rimappa tutto (ad esempio map(0, 10, 20, 0, 100) dà un valore negativo). Servono due "if()".
docdoc:
No perché map() non gestisce i valori minori o maggiori, ossia lui rimappa tutto (ad esempio map(0, 10, 20, 0, 100) dà un valore negativo). Servono due "if()".
tra il valore 10 e 40 vorrei una variazione da 0 a 255
i valori esterni non venivano li ho contemplati...