¿Cómo asignar el conteo de adc al voltaje cuando su referencia de ADC es una batería?

1

Normalmente, las cosas serían más fáciles si tiene un regulador de voltaje y puede saber que su voltaje de referencia es fijo.

Suponiendo que tengo un A / D de 10 bits, y los conteos están en au (unidades arbitrarias), podemos mapear de un conteo a un voltaje (piense y = m * x + b). Tome el ejemplo de obtener una lectura de 620au de un registro de ADC con una referencia proporcionada por un regulador de 3.3V:

V_sample(counts) = (V_ref - 0)V / (1023 - 0)au * counts au
                 = 3.3V / 1023au * 620au
                 = 2V

Suponga que un sistema funciona con una lipo de celda única (V_nominal = 3.7V, cobra 4.2V).

Ahora, en lugar de una referencia de voltaje externo, todo lo que tengo es una referencia de voltaje fijo interno de 2.048V.

¿Cómo funcionan las matemáticas para cancelar el efecto negativo de la tensión de mi batería (y la referencia alta A / D) que cae lentamente con el tiempo?

Esto tiene que ser algo común para proyectos de bajo costo, ¿no?

    
pregunta tarabyte

2 respuestas

0

Los conteos se asignan linealmente a un voltaje:

V_sample(V_bat, counts) = ((V_bat - 0)V / (1023 - 0)au) * counts

Lamentablemente, esto también depende del voltaje de la batería. Si solo hubiera una manera de cancelar eso ...

¿Qué pasa si (aproximadamente) en el mismo momento en que tomamos muestras de nuestro voltaje, también tomamos muestras de nuestra referencia interna?

Cuando muestreamos la referencia de voltaje fijo interno de 2.048V:

V_fvr = (V_bat / 1023) * fvr_counts

We can rewrite this as:
fvr_counts(V_bat) = V_fvr / (V_bat / 1023)
V_bat = V_fvr / fvr_counts * 1023

Cuando muestreamos el voltaje de interés:

V_sample = (V_bat / 1023) * sample_counts

Substitute out V_bat, from our V_fvr equation:
V_sample = ((V_fvr / fvr_counts * 1023) / 1023) * sample_counts
         = (2.048 V / fvr_counts au) * sample_counts au
    
respondido por el tarabyte
2

Como tiene "una referencia de voltaje fijo interno de 2.048 V", entonces su lectura de ADC debería ser: Vadc / Vref * 2 ^ N es decir, Vadc / 2.048 * 1024

Entonces Vadc = 1V = > código 500

A menos que haya entendido mal su pregunta, la batería no importa (dentro de lo razonable) porque el voltaje de referencia es estable a 2.048 V

    
respondido por el akellyirl

Lea otras preguntas en las etiquetas