Stap 16: Software tuning van de nauwkeurigheid (deel 2)
Laten we trim de ampère meter.
Het wegsnijden van de voltmeter was gemakkelijk - de fout werd veroorzaakt alleen door de verspreiding van de waarden van de weerstand in de scheidingslijnen van de spanning.
In de ampère meter zijn de bronnen van fouten voornamelijk:
- de verspreiding van de weerstand van R1 (Zie de afbeelding in stap 4). De waarde is 1 Ohm, en de exacte waarde van het gebruikte apparaat is moeilijk te exact worden gemeten
- de winst van de spanning van de opamp - voornamelijk veroorzaakt door de waarden van de weerstanden R2 en R3 verspreid
- De offset van de opamp Voffset. Zoals eerder LM358 niet de beste keuze voor dit project is vermeld (ik had een beschikbaar en ik heb het gebruikt. Dat is de reden waarom de PCB ondersteunt ook het pakket SO08 - niet vaak gebruikt in onze tijd). In het gegevensblad van de chip kan worden gezien dat de offset 7 kunnen mV. Met onze huidige tot oplossing van de overdracht van de spanning, kan dit leiden tot een constante huidige fout van 7mA. Het kan gebeuren dat er geen stroom is voorbij, maar de ampère meter toont 7mA, en vice versa: een stroom van 7 mA kan stromen en het apparaat prima overweg met 0 mA.
Alle deze fouten moeten worden opgeruimd door de software.
Als eerste stap moeten we bepalen de exacte waarde van de weerstand van R1. Voor dat doel gebruikte ik een constante huidige generator.
Ik heb 189.9 mA input huidige toegepast en ik heb gemeten 186,7 mV op de weerstand R1. De waarde wordt berekend als 0.98315 Ohm. Dit nummer wordt ook gebruikt als correctiecoëfficiënt.
Nu nog twee andere parameter, die gemeten moet worden berekend: de winst van de echte spanning van de opamp en haar compenseren spanning.
Om deze vast te moeten wij twee afzonderlijke metingen op twee verschillende stromingen. De metingen zijn: we de huidige vaststellen door de huidige generator en we meten het eens met de standaard DMM en eenmaal met "Arduino" op basis van DMM. De spanning over R1 wordt ook gemeten tijdens deze procedure. Hier zijn de resultaten die ik had:
Toegepaste huidige gemeten huidige spanning over R1
(standaard DMM) "Arduino" DMM (standaard DMM)
[mA] [mA] [mV]
189,9 186 186,7
73,1 71.9 71,7
De opamp compenseren spanning wordt toegevoegd aan de daling van de spanning over R1, en de resulterende potentieel is versterkte 10 (gecorrigeerd met behulp van de coëfficiënt van de fout winst) en uiteindelijk omgezet door de ADC.
Dit proces kan worden gemodelleerd met de volgende vergelijking:
(VR1+ Voffset) * coeff_A_gain = ikmultilaterale milieuovereenkomsten;
waar:
VR1 - is de spanning over R1;
V,verschuiving - de input opamp compenseren spanning;
coeff_A_gain - winst fout coëfficiënt, heeft in dit geval eenheid van Siemens [S];
ikmeas - gemeten door de "Arduino" DMM huidige
Op basis van deze vergelijking en de gemeten gegevens, kan vervangen van Vgecompenseerdmet 'x' encoeff_A_gain met "y" een stelsel van twee vergelijkingen en twee onbekende variabelen worden geschreven:
(186,7 + x) * y = 186
(71,7 + x) * y = 71,9
186.7Y + xy = 186
71,7 y + xy = 71,9; de tweede vergelijking wilt uitpakken vanaf de eerste
115y = 114,1
y = 0.992174 - de winst fout veroorzaakt door de weerstand waarde verspreiding van de winst definiëren weerstanden R2, R3
X = 0.767 mV - de verschuiving van de ingang van de opamp (niet zo slecht...)
De definitieve code voor de ampère meter nu zou zijn de volgende definities:
zweven coeff_A_gain = 0.992174;
zweven coeff_A_res = 0.98315;
zweven opamp_offset = 0.000767;
De berekening van de huidige kan worden gedaan met de volgende vergelijking:
disp_res = (((curr_value*supply)/1024 - 10 * opamp_offset) / coeff_A_gain) / coeff_A_res * 100;
(Zie de stap 14 voor meer informatie)