Cómo obtener el voltaje de entrada del valor ADC

Estoy usando atmega328p para mi proyecto. Tengo que leer el voltaje de mi batería y mostrarlo en mi nube. Para eso, estoy usando ADC. Ahora obtengo el valor ADC para el voltaje de entrada aplicado. Pero necesito convertir el ADC a voltaje.

Cuando voy a la hoja de datos, observé la siguiente ecuaciónaquí

Entonces, para convertir ADC, Vin=(ADC/1024)*Vref.

Pero cuando busqué en Google encontré otra ecuación y es

Vin=(ADC/1023)*Vref

Ahora dudo que cual ecuacion se use?

Si usamos 1024, el valor de ADC será 0001 cuando el voltaje de entrada sea igual a 1LSB de voltaje ( Vref/1024).

Si usamos 1023 (segunda ecuación), el valor ADC será 0000 cuando el voltaje de entrada sea igual al voltaje 1LSB ( Vref/1024)

Respuestas (3)

Primero, permítanme citar la imagen que ya tiene la respuesta: "0x000 representa tierra analógica y 0x3FF representa el voltaje de referencia seleccionado menos un LSB". Eso significaría que para representar el voltaje de referencia Vref, se necesitaría un recuento LSB más, por lo que el resultado sería 0x400 o 1024. Por lo tanto, un voltaje igual a Vref simplemente no se puede representar como resultado, es un caso especial. Para todos los demás voltajes que estén al menos 0,5 pasos por debajo de Vref (entre 1022,5 y 1023,5), el resultado es válido.

Atmel tiene una nota de aplicación de ADC para AVR que explica cómo funciona el ADC sucesivo, y no es obvio, pero ayuda a comprender cuál es el correcto. También hay muchos hilos en AVRFreaks sobre cuál es el correcto. Y armado con esa información, 1024 es correcto y no hay ningún error en la hoja de datos.

En realidad, los ADC no son perfectos ya que los resultados pueden tener más de 1 conteo de error y realmente no importa mucho si se usa 1023 o 1024, ya que rara vez necesita una precisión de 1 conteo de 1024 en el caso extremo Vin = Vref de todos modos .

Entonces, tomar 1023 dará un valor falso, ¿verdad?
Sí. 1023 está mal, porque 1024 está bien. Pero el error está por debajo del 0,098%.
¿Cuál será el valor de ADC cuando vref = 5v y vin = 4.375 para adc de 3 bits? si el SAR ADC producirá 110?

ADC de 10 bits significa que puede representar la entrada como un número de 0-1023, por lo tanto, la respuesta correcta es usar 1023, no 1024. Parece que hay un error en la hoja de datos, ya que 0x3FF es 1023, no 1024.

Pero han mencionado que 0x3FF esVref-1LSB voltage

cuando consideramos un ADC de n bits. Leerá el voltaje de referencia como (2^n - 1),

pero, cuando hablamos de pasos, es ((2 ^ n - 1) + 1 (y también contando el valor cero))

ejemplo: cuando empiezas a contar algo desde "cero". si obtuviste un conteo total de digamos 81... pero en realidad no es 81, será 82 (incluyendo 0 como un valor)

entonces, en su caso, está hablando de ADC de 10 bits, por lo que ... el voltaje de referencia máximo que puede leer es como (2 ^ 10 - 1) = 1023

pero tiene pasos máximos de 1023 + 1 = 1024

así que tienes que tomar 1024 ..