createTemperatureLookup.py: add --table option.
This option is for multiple table chunks of ThermistorTable.h.
This commit is contained in:
parent
e65526f9da
commit
ef6036c724
|
|
@ -32,6 +32,7 @@ Options:
|
||||||
--min-adc=... the minimum ADC reading to use.
|
--min-adc=... the minimum ADC reading to use.
|
||||||
--vadc=... ADC reference voltage (high leg of R2) same as Vcc
|
--vadc=... ADC reference voltage (high leg of R2) same as Vcc
|
||||||
--vcc=... Voltage divider supply (high leg of R2) Unused
|
--vcc=... Voltage divider supply (high leg of R2) Unused
|
||||||
|
--table Format data as one of an array of tables
|
||||||
|
|
||||||
It is suggested to generate more values than you need, and delete some of the ones in the ranges
|
It is suggested to generate more values than you need, and delete some of the ones in the ranges
|
||||||
that aren't interesting. This will improve accuracy in the temperature ranges that are important to you.
|
that aren't interesting. This will improve accuracy in the temperature ranges that are important to you.
|
||||||
|
|
@ -91,9 +92,13 @@ def main(argv):
|
||||||
vadc=5.0
|
vadc=5.0
|
||||||
vcc=5.0
|
vcc=5.0
|
||||||
mult=4
|
mult=4
|
||||||
|
table=False
|
||||||
|
|
||||||
try:
|
try:
|
||||||
opts, args = getopt.getopt(argv, "h", ["help", "r0=", "t0=", "beta=", "r1=", "r2=", "max-adc=", "min-adc=", "num-temps=", "vcc=","vadc=","multiplier="])
|
opts, args = getopt.getopt(argv, "h", ["help", "r0=", "t0=", "beta=", "r1=",
|
||||||
|
"r2=", "max-adc=", "min-adc=",
|
||||||
|
"num-temps=", "vcc=", "vadc=",
|
||||||
|
"multiplier=", "table"])
|
||||||
except getopt.GetoptError:
|
except getopt.GetoptError:
|
||||||
usage()
|
usage()
|
||||||
sys.exit(2)
|
sys.exit(2)
|
||||||
|
|
@ -124,6 +129,8 @@ def main(argv):
|
||||||
vcc = float(arg)
|
vcc = float(arg)
|
||||||
elif opt == "--multiplier":
|
elif opt == "--multiplier":
|
||||||
mult = float(arg)
|
mult = float(arg)
|
||||||
|
elif opt == "--table":
|
||||||
|
table = True
|
||||||
if r1:
|
if r1:
|
||||||
max_adc = int(1023. * r1 / (r1 + r2))
|
max_adc = int(1023. * r1 / (r1 + r2))
|
||||||
else:
|
else:
|
||||||
|
|
@ -158,8 +165,8 @@ def main(argv):
|
||||||
print "// Since you'll have to do some testing to determine the correct temperature for your application anyway, you"
|
print "// Since you'll have to do some testing to determine the correct temperature for your application anyway, you"
|
||||||
print "// may decide that the effort isn't worth it. Who cares if it's reporting the \"right\" temperature as long as it's"
|
print "// may decide that the effort isn't worth it. Who cares if it's reporting the \"right\" temperature as long as it's"
|
||||||
print "// keeping the temperature steady enough to print, right?"
|
print "// keeping the temperature steady enough to print, right?"
|
||||||
print "// Temp*%s table from https://github.com/triffid/Teacup_Firmware/blob/master/createTemperatureLookup.py" %mult
|
print "// Temp*%s table from https://github.com/drf5n/Teacup_Firmware/blob/Gen7/createTemperatureLookup.py" %mult
|
||||||
print "// ./createTemperatureLookup.py --r0=%s --t0=%s --r1=%s --r2=%s --beta=%s --max-adc=%s --min_adc=%s --multiplier=%s --vadc=%s" % (
|
print "// ./createTemperatureLookup.py --r0=%s --t0=%s --r1=%s --r2=%s --beta=%s --max-adc=%s --min-adc=%s --multiplier=%s --vadc=%s" % (
|
||||||
r0, t0, r1, r2, beta, max_adc, min_adc, mult, vadc)
|
r0, t0, r1, r2, beta, max_adc, min_adc, mult, vadc)
|
||||||
print "// r0: %s" % (r0)
|
print "// r0: %s" % (r0)
|
||||||
print "// t0: %s" % (t0)
|
print "// t0: %s" % (t0)
|
||||||
|
|
@ -169,9 +176,15 @@ def main(argv):
|
||||||
print "// min adc: %s at %s V" % (min_adc, min_adc*t.vadc/1024)
|
print "// min adc: %s at %s V" % (min_adc, min_adc*t.vadc/1024)
|
||||||
print "// max adc: %s at %s V" % (max_adc, max_adc*t.vadc/1024)
|
print "// max adc: %s at %s V" % (max_adc, max_adc*t.vadc/1024)
|
||||||
print "// ADC counts from {min} to {max} by {x}".format(min=min_adc, max=max_adc, x=increment)
|
print "// ADC counts from {min} to {max} by {x}".format(min=min_adc, max=max_adc, x=increment)
|
||||||
print "#define NUMTEMPS %s" % (len(adcs))
|
if table == True:
|
||||||
|
print "// #define NUMTABLES 1 // These three lines open the temptable[NUMTABLES]... array"
|
||||||
|
print "// #define NUMTEMPS %s // ... " % (len(adcs))
|
||||||
|
print "// uint16_t temptable[NUMTABLES][NUMTEMPS][2] PROGMEM = { // ..."
|
||||||
|
print "{ //" + " Table 0 chunk for B={b}, R0={r0}, R1={r1}, R2={r2}, Vref={v}".format(par="{",b=beta,r0=r0,r1=r1,r2=r2,v=vadc)
|
||||||
|
else:
|
||||||
|
print "#define NUMTEMPS %s " % (len(adcs))
|
||||||
|
print "uint16_t temptable[NUMTEMPS][2] PROGMEM = {"
|
||||||
print "// {ADC, temp*%s }, // temp Rtherm Vtherm resolution power" % (mult)
|
print "// {ADC, temp*%s }, // temp Rtherm Vtherm resolution power" % (mult)
|
||||||
print "uint16_t temptable[NUMTEMPS][2] PROGMEM = {"
|
|
||||||
|
|
||||||
counter = 0
|
counter = 0
|
||||||
for adc in adcs:
|
for adc in adcs:
|
||||||
|
|
@ -183,8 +196,12 @@ def main(argv):
|
||||||
resolution = ( t.temp(adc-1)-t.temp(adc) if adc>1 else t.temp(adc) -t.temp(adc+1))
|
resolution = ( t.temp(adc-1)-t.temp(adc) if adc>1 else t.temp(adc) -t.temp(adc+1))
|
||||||
sep = (',' if counter != len(adcs) else ' ')
|
sep = (',' if counter != len(adcs) else ' ')
|
||||||
print " {%4s, %6s}%s // %7.2f C, %7.0f Ohm, %0.3f V, %0.2f C/count, %0.2fmW" % (adc, int(t.temp(adc)*mult), sep,degC, resistance,vTherm,resolution,ptherm*1000)
|
print " {%4s, %6s}%s // %7.2f C, %7.0f Ohm, %0.3f V, %0.2f C/count, %0.2fmW" % (adc, int(t.temp(adc)*mult), sep,degC, resistance,vTherm,resolution,ptherm*1000)
|
||||||
print "};"
|
if table == False:
|
||||||
|
print "};"
|
||||||
|
else:
|
||||||
|
print '}, // remove comma for last table chunk'
|
||||||
|
print "// }; // Closure for the temptable[NUMTABLES] array"
|
||||||
|
|
||||||
def usage():
|
def usage():
|
||||||
print __doc__
|
print __doc__
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue