Stap 15: Software tuning van de nauwkeurigheid (deel 1)
Ik zal laten zien hoe dit te doen voor het bereik 0-10V. De andere bereiken worden bijgesneden op dezelfde manier.
Als u wilt bijsnijden van de nauwkeurigheid van een bepaald bereik is de beste aanpak te kiezen trimmen referentie spanning, zo dicht mogelijk bij de bovengrens van het bereik. Zodra die is bijgesneden voor wordt deze spanning aangenomen dat, vanwege de lineariteit van de scheidingslijn van de spanning en de AD-conversie, het geheel met dezelfde nauwkeurigheid bedekt is. Als u wilt bijsnijden van de voltmeter voor het bereik 0-10V heb ik nieuwe 9V batterij genomen.
Als eerste stap heb ik het netspanningsvoltage op de "Arduino" bestuur aanbod header gemeten. In mijn geval was het 4.91V.
Deze spanning dient als referentie voor de ADC van de Atmega-chip. Het is opgenomen in de formule voor de omrekening van de genomen ADC lezen op spanning waarde:
disp_res = (curr_value * leveren * 2) / 1024 * coeff_v10;
, waar:
disp_res - is de waarde van de spanning die wordt weergegeven op het scherm;
curr_value - is de gemiddelde digitale lezen;
leveren - is de gemeten netspanningsvoltage;
coeff_v10 - is de software trimmen coëfficiënt
De volgende stap is te meten van de batterijspanning door de standaard DMM en schrijf de waarde.
Na dat we dezelfde accu met de "Arduino" meten op basis van DMM. Op basis van beide metingen berekenen we de trimmen coëfficiënt coeff_v10 als het quotiënt ten gevolge van de verdeling van het eerste meetresultaat door het tweede meetresultaat. In mijn geval heb ik de batterij met de standaard DMM 9.51V worden gemeten. Afgemeten aan de "Arduino" DMM bleek 9.34V.
De correctiecoëfficiënt werd als volgt berekend:
coeff_v10 = 9.51/9.34 = 1.018
De resulterende waarde wordt toegewezen aan de coeff_v10 in de code.
Na het compileren en laden van de code is het gezien dat na het bijsnijden de "Arduino" DMM de doelwaarde toont.
Ik zou adviseren dat deze coëfficiënt is berekend voor paar spanningen gemeten met dezelfde instellingen als bereik en de laatste waarde die wordt ingevoerd in de code het gemiddelde is van alle berekend.