afwijking MCP3914 ADC

Ik ben een meetinstrument aan het ontwikkelen waar 5 stuks MCP3914's in zitten. Dit is een 8 kanaals 24 bit ADC. In totaal heb ik dus 40 AD-converters. Nu meten alle 40 ADC's een factor 1,3 te weinig. Het kleinere broertje de MCP3911 (2 kanaals 24 bit ADC) heb ik vaker toegepast zonder problemen.

De analoge en digitale voedingsspanningen zijn in orde: 3,3 volt en geen noemenswaardige ruis (<1 mV). Ook de referentiespanning is in orde 1.2 V zonder noemenswaardige ruis.

Bij een differentiaal spanning van 30 mV op een ingang (netjes symmetrisch rond nul, gain op 1x) zou ik de code (30mv/600mV)*2^23 = 419431 verwachten, maar ik meet 322238. Dit is bevestigd door de SPI stream te bekijken.

De registers worden als volgt geinitialiseerd:

code:


void ADCsConfigure(int offcal, int gaincal) {
	for (int chip=0; chip<N_ADC_CHIPS; chip++) {
		ADCsetRegister(chip, 0x0B, 0x00000000);		// GAIN all channels at 1x
		ADCsetRegister(chip, 0x0C, 0x00B90000);		// STATUSCOM
		uint32_t val = 0x00380050 | (ADCpre << 16) | (ADCosr << 13) | (offcal << 23) | (gaincal << 22);
		ADCsetRegister(chip, 0x0D, val);			// CONFIG0
		ADCsetRegister(chip, 0x0E, 0x00000040);		// CONFIG1
	}
	// Optimize synchronisation between chips (minimize DR lag)
	for (int chip=0; chip<(N_ADC_CHIPS); chip++) {
		ADCsetRegister(chip, 0x09, 0x00000000);
		ADCsetRegister(chip, 0x0A, 0x00000000);
	}
}

Later wordt de offset nog gecompenseerd maar de gain correctie blijft uitgeschakeld.

Ik kom er niet achter waar de factor 1.3 afwijking vandaan komt. Heeft iemand een idee?

Een klein schopje. Als iemand een suggestie heeft waar ik het moet zoeken dan verneem ik dit graag. Ja, ik heb de Silicon errata van de MCP3914 gelezen, maar dat verklaard mijn probleem niet.

MCP3914 Evaluation Board

https://www.microchip.com/DevelopmentTools/ProductDetails/adm00523#add…

Hier kun je ook "C" broncode d/l. Misschien geeft dat een idee kwa initialisatie van de ADC waar je het zoeken moet.

It's the rule that you live by and die for It's the one thing you can't deny Even though you don't know what the price is. It is justified.

Zover ik heb kunnen zien bevat de broncode alleen de communicatie met een externe PC en de MCP3914. En ik ben geen register settings tegen gekomen.

Maar ik denk dat er wat anders aan de hand is dan de register settings. De maximum code 8388607 wordt nu bereikt bij een ingangsspanning van 770 mV. Normaliter zou dit bij 600 mV bereikt zijn: de helft van de referentiespanning.

benleentje

Golden Member

Ik zie dat er per kanaal een eigen GAIN CAL aanwezig is. Kan je die uitlezen. En welke waarde meet je als je de ingang kortsluit dat zou nul moeten zijn.

Mensen zijn soms net als een gelijkrichter, ze willen graag hun gelijk hebben.

Met de ingangen kortgesloten (en de Offset Correction Registers op 0) krijg ik waardes van rond 6000 terug. Dit varieert wat per kanaal. De ongecorrigeerde offset is dus ca. 0,07% van het bereik.

De Gain Correction Registers kan ik uitlezen en staan allemaal op 0. Ook het Gain Configuration Register staat op 0.