start penna zip
This commit is contained in:
parent
e60146cdfe
commit
88b607c42f
188 changed files with 236868 additions and 0 deletions
68
serial_helpers.py
Normal file
68
serial_helpers.py
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
from matplotlib import pyplot as plt
|
||||
import numpy as np
|
||||
|
||||
VREFINT_CAL = 24175 # internal calibration value (Vref measured with precise 3.3v reference voltage)
|
||||
VREF_CAL = 3.306 # [Volts] rough estimate from the internal calibration data from factory
|
||||
|
||||
TEMP_30_CAL = 12406
|
||||
TEMP_110_CAL = 16472
|
||||
|
||||
def vrefint_conv_plot(numbers):
|
||||
'''
|
||||
convert ADC 16bit numbers to tension and evaluate internal reference voltage correction
|
||||
then plot the data
|
||||
'''
|
||||
N_MEAS = len(numbers)
|
||||
|
||||
Vref_cal = (3.3*VREFINT_CAL)/np.mean(numbers)
|
||||
print(f'Calibrated reference voltage: {Vref_cal:.5f} V')
|
||||
print(f'Vref interno (calibrato): {(VREFINT_CAL*3.3)/2**16:.3f} V')
|
||||
# convert ADC read to voltage
|
||||
volts = [i*(Vref_cal/(2**16-1)) for i in numbers]
|
||||
mean = np.mean(volts)
|
||||
# plot the result (both the single points and the curve connecting them)
|
||||
x_coords = range(0,N_MEAS)
|
||||
plt.plot(x_coords, volts, linewidth='0.8', color='orange', label='result')
|
||||
plt.scatter(x_coords, volts, marker='+', color='orange')
|
||||
plt.hlines(mean, 0, N_MEAS, label=f'mean - {mean:.3f}V')
|
||||
|
||||
plt.legend()
|
||||
plt.grid(True)
|
||||
plt.show()
|
||||
|
||||
|
||||
def temp_conv_plot(numbers):
|
||||
'''
|
||||
convert ADC 16bit numbers to temperature and plot the data
|
||||
'''
|
||||
slope = ((110-30)/(TEMP_110_CAL-TEMP_30_CAL))*1000
|
||||
N_MEAS = len(numbers)
|
||||
|
||||
temps = [i*(VREF_CAL/2**16)*slope for i in numbers]
|
||||
mean = np.mean(temps)
|
||||
# plot the result (both the single points and the curve connecting them)
|
||||
x_coords = range(0,N_MEAS)
|
||||
plt.plot(x_coords, temps, linewidth='0.8', color='orange', label='result')
|
||||
plt.scatter(x_coords, temps, marker='+', color='orange')
|
||||
plt.hlines(mean, 0, N_MEAS, label=f'mean - {mean:.3f}℃')
|
||||
|
||||
plt.legend()
|
||||
plt.grid(True)
|
||||
plt.show()
|
||||
|
||||
|
||||
def generic_plot(numbers, begin, SAMPLE_TIME):
|
||||
N_MEAS = len(numbers)
|
||||
# convert ADC read to voltage
|
||||
volts = [i*(VREF_CAL/(2**16-1)) for i in numbers]
|
||||
mean = np.mean(volts)
|
||||
# plot the result (both the single points and the curve connecting them)
|
||||
x_coords = np.linspace(0, (N_MEAS+1)*SAMPLE_TIME, N_MEAS)
|
||||
|
||||
plt.plot(x_coords, volts, linewidth='0.8', color='orange', label='result')
|
||||
plt.scatter(x_coords, volts, marker='+', color='orange')
|
||||
#plt.hlines(mean, 0, N_MEAS*SAMPLE_TIME, label=f'mean - {mean:.3f}V')
|
||||
plt.vlines(30*SAMPLE_TIME, min(volts), max(volts)) # trigger point
|
||||
plt.legend()
|
||||
plt.grid(True)
|
||||
plt.show()
|
||||
Loading…
Add table
Add a link
Reference in a new issue