# oogstweging.py — synthetische ijking, geen meetbewijs
import numpy as np
g, uref, uex = 401.0, 0.50, 5.0
massa = np.array([0.0,1.0,2.0,3.0,4.0,5.0])
# 2 mV/V bij 5 kg, plus voorbeeldoffset en kleine meetruis
u = uref + g*(0.002*uex*massa/5+20e-6)
u += np.array([0,1,-1,1,-1,0])*0.001
adc = np.rint(u/uex*1024).clip(0,1023).astype(int)
A = np.column_stack([adc,np.ones(len(adc))])
a,b = np.linalg.lstsq(A,massa,rcond=None)[0]
fit = a*adc+b
print("voorbeeldcodes:",adc)
print(f"massa = {a:.8f} * code {b:+.6f} kg")
print(f"grootste fitresidu {max(abs(fit-massa))*1000:.3f} g")
code = 615
print(f"code {code} geeft {a*code+b:.4f} kg")
