Drenaje actual en ADC

3

Estoy viendo una hoja de datos MCP3008 y dice que tiene un drenaje de corriente máximo de 150uA, y un típico drenaje de corriente de 100uA.

Estoy construyendo un divisor de voltaje para derribar 96V a 3V. Como esto es para un automóvil solar, me gustaría reducir la cantidad de corriente y potencia utilizada. Me gustaría poder leer un voltaje máximo de 115 V y un mínimo de menos de 75 V, y poder desperdiciar la menor cantidad de energía nessassary. ¿Cómo afecta el factor de drenaje actual a mis cálculos?

Mis cálculos son los siguientes:

  • Al usar la ley de ohms con E = 115V I = 0.00015, obtengo 76666 ohms
  • Al usar un divisor de voltaje, obtengo R1 = 76666 y R2 = 2053.55

¿Son correctos mis cálculos? ¿Puedo sacar más poder de este circuito?

    
pregunta Reid

3 respuestas

5

Si desea expresar valores de resistencia en 5 dígitos significativos, al menos debe comenzar con el voltaje correcto:

\ $ \ dfrac {115 \ mathrm {\, V} - 3 \ mathrm {\, V}} {150 \ mathrm {\, \, \ mu A}} = 746667 \, \ Omega \ $,

y la otra resistencia será de 20 k \ $ \ Omega \ $.

De todos modos, los valores que usaste te darán 1.5 mA, no 150 \ $ \ mu \ $ A. E incluso con valores de resistencia 10 veces más altos, no obtendrá 3 V, ya que la corriente de entrada a su ADC es en realidad una resistencia paralela a 20 k \ $ \ Omega \ $.

\ $ \ dfrac {115 \ mathrm {\, V} - V_ {OUT}} {746.667 \, k \ Omega} = \ dfrac {V_ {OUT}} {20 \, k \ Omega} + 150 \ , \ mu A \ $

O \ $ V_ {OUT} \ $ = 78 mV. (1.5 mA saldría de 2.7 V.)

No alimente el voltaje dividido directamente al ADC, sino búferlo primero usando un seguidor de voltaje opamp. Entonces, el 150 \ $ \ mu \ $ A no cargará el divisor, y puede usar valores de resistencia más altos, > 1 M \ $ \ Omega \ $.

editar (ver el comentario de Telaclavo)
Al principio no miré la hoja de datos, confié en que 150 \ $ \ mu \ $ A era un valor correcto. Los ADC a menudo tienen una baja impedancia de entrada. Sin embargo, al revisar la hoja de datos, Telaclavo tiene razón, el 150 \ $ \ mu \ $ A se refiere a la entrada de referencia (página 3). En la página 4 puede ver la corriente de fuga de entrada para la entrada analógica: 1 \ $ \ mu \ $ A máximo. Eso significa que el ADC debe tener un búfer para la señal de entrada.
De todos modos, esto cambia las cosas fundamentalmente. Supongamos que elige las resistencias para que dibujen 100 \ $ \ mu \ $ A: 1.12M \ $ \ Omega \ $ + 30k \ $ \ Omega \ $.

\ $ \ dfrac {115 \ mathrm {\, V} - V_ {OUT}} {1.12M \ Omega} = \ dfrac {V_ {OUT}} {30 k \ Omega} + 1 \ mu A \ $

Entonces \ $ V_ {OUT} \ $ = 2.97V. Eso es para una entrada de entrada en el peor de los casos de 1 \ $ \ mu \ $. Si usara un LF411 como búfer, que tiene una corriente de entrada de 50pA, la salida sería de 3V para la corriente de fuga típica de 1nA y el máximo de 1 \ $ \ mu \ $ A.

    
respondido por el Federico Russo
1

Los cálculos son incorrectos, pero también está utilizando en el divisor la misma corriente de fuga del ADC. Ahora tienes un error del 100%, pero quieres algo mejor.

Entonces, si desea ahorrar energía, sería mejor usar una corriente diez veces más grande (1 a 10 mA), por lo que el error debido a una fuga de ADC será menor. Y puede considerar también la fuga en la ecuación, reduciendo así el error.

Considera un circuito como este:

Quieres 3V sobre R2, así que tendrás 112V sobre R1; a 1 mA, necesita una resistencia de 112KOhm.

Con este circuito, todavía tendrá un error dependiendo de la fuga del ADC (mídalo para la mejor precisión) (1uA sobre 1 mA es alrededor de 0.1% de error), pero el consumo es limitado, ya que 1 mA en un la aplicación del coche es aceptable.

Tenga en cuenta que, en este caso, la potencia disipada por R1 es de 112 mW, que está cerca del límite si usa resistencias de 1/4 W; Considera usar los de 1/2 W.

Pero también la solución de búfer sugerida por Federico es buena: si puede, use un amplificador.

Actualización de acuerdo con los valores reales de la hoja de datos

Dado que la fuga es solo de 1 uA, también puede reducir la corriente a 100 uA con un error del 1%, lo cual es suficiente si se considera el uso de resistencias del 1%.

    
respondido por el clabacchio
1

Como sugirieron los otros chicos, agregar un amplificador operacional como seguidor es una buena idea, pero puedes hacerlo también agregando un capacitor pequeño, aproximadamente 0.1uF.

El ADC tiene un pequeño condensador de muestra interno que se carga hasta el voltaje de entrada durante el período de muestra.

Sitieneunosciloscopiode2canales,valelapenarealizarelsiguienteexperimento.ColoqueuncanalenlaentradaanalógicadelADC(acoplamientodeCA,gananciarazonablementealta)yelotrocanalenlaentradaCLKalADC(acoplamientodeCC,2v/div).

Loquepuedeveresqueenelperíododelamuestra,laentradadelADCcaeligeramentemientrassecargaelcondensadorinterno.Silaseñalnoharegresadoasunivelnormalalfinaldelperíododemuestra,entoncesnoobtendráunalecturaprecisayprobablementetambiénobtendráunalecturamásruidosa.

Larazónporlaquesecaeesquenotienessuficientecorrientedeesosresistoresdealtovalorparacargarelcondensadorinternoduranteelcortoperíododemuestreo.

TambiénpuedeverunproblemasiestáutilizandounamplificadorconaltagananciacomoentradaADC(porejemplo,enaplicacionesdemedicióndetensión).LaapariciónrepentinadelatapapuedecausarunainestabilidadenelOpAmp,queaparecerácomounapequeñaseñal:

Tienes dos opciones, en primer lugar puedes alargar el período de muestra, como lo he hecho en la imagen de arriba. Esto es realmente muy fácil de hacer, ya que el período de muestra se puede colocar entre dos bytes SPI consecutivos, por lo que la pausa es natural.

#define SPI_XCEIVE(out, in) {SSPBUF = out; while(!(SSPSTAT&0x01)); in = SSPBUF;}

typedef union
{
    int16u  word;
    int8u   byte[2];
}union16;

union16    mcp_result_union = {0};

void mcp320x_read(int8u chan) __wparam
{
    overlay int8u control_byte_0;

    control_byte_0 = B8(00011000) | chan;                   // Set up control byte:
                                                            // b4 = start bit
                                                            // b3 = single ended
                                                            // b2:0 = channel number

    SPI_ChipSelect(MCP320x_CS_PORT);                    // BEGIN


    SPI_XCEIVE(control_byte_0, control_byte_0);             // Send control byte. Ignore the return value.

    SPI_XCEIVE(0, mcp_result_union.byte[1]);                // Get the sample back. Put it straight into its destination.
    SPI_XCEIVE(0, mcp_result_union.byte[0]);                // Get the sample back. Put it straight into its destination.

    mcp_result_union.word    >>= 1;                         // Shift the sample into the correct position
    mcp_result_union.word    >>= 1;                         // (doing it in two stages is actually faster)
    mcp_result_union.byte[1]  &= 0x0F;                      // and mask off the unused bits.

    SPI_ChipDeselect(MCP320x_CS_PORT);                  // END

}

Alternativamente, puede simplemente agregar un pequeño condensador entre el pin de entrada del ADC y tierra. Esto actuará como un suministro de carga local que evitará cualquier caída de señal notable durante la muestra. De esta manera, deberías poder tener resistencias de valor bastante alto.

Si desea ahorrar aún más energía, piense en la frecuencia de muestreo de ADC. Si es muy lento (digamos una vez por segundo), entonces podría considerar apagar todo el ADC durante este período. Asegúrese de revisar la hoja de datos para ver el tiempo de encendido requerido.

    
respondido por el Rocketmagnet

Lea otras preguntas en las etiquetas