He estado usando la entrada analógica Arduino Nano para medir voltajes, en el rango entre 22-30 voltios. El ADC del Nano espera un rango de 0-5 voltios y tiene 0-1023 como salida.
Siguiendo las instrucciones encontradas aquí:
Lea el voltaje analógico (www.arduino.cc)
Lo que básicamente indica que todo lo que necesito es este código:
int sensorValue = analogRead(A0);
float voltage= sensorValue * (5.0 / 1023.0);
5.0 / 1023 = 0.004888 voltios por incremento en lecturas analógicas. Cambiando eso, la entrada de voltaje dividida por este valor debería darme el valor del sensor.
Mi divisor de voltaje es 1 Mohm (R1) entre la entrada de voltaje y A2, luego 200K (R2) de A2 a tierra
30 voltios mide como 4.2 voltios. 22 voltios mide como 3.1 voltios.
Creo que el rango entre 22 voltios y 30 voltios no presenta una variación suficiente con respecto al ADC: cada cambio de un dígito en el analógicoRead realmente hace una gran diferencia.
El resultado es que me está dando algunas lecturas locas. Definitivamente no es lineal, por lo que estoy teniendo problemas para intentar que sea preciso en ambos extremos de mi rango de medición. Cada ligero incremento de ADC hace una gran diferencia en el voltaje medido porque no estoy usando el rango completo de entrada de 0-5V.
Así que he estado tomando 10 lecturas seguidas, a intervalos de 500 ms, y luego promediando.
Y sin embargo, no está funcionando lo suficientemente bien.
Una cosa que parece importar realmente es la fuente de alimentación. Cuando pongo 4.97 en el Vin, se obtienen lecturas diferentes que si confío en obtener energía de la conexión USB a la Raspberry Pi 3B.
Ayer mismo lo puse en la fuente de alimentación para siempre, había estado confiando en el Pi todo el tiempo. Pero todavía no está dando lecturas precisas.
- EDIT de Respuestas (Gracias por mostrarme dónde buscar)
Impedancia de entrada: estoy intentando 147 / 23.5 para el siguiente intento. Obteniendo 3.0-4.1 para el rango 22-30. Igual que el 1M / 100K, básicamente, pero resistencias más bajas.
El problema del voltaje de referencia: mide 4.36 voltios en la salida de 5 V del Nano. Vin es 5V exactamente.
Aquí hay un artículo que encontré que dice que la fórmula 5/1023 debería usar ese valor real:
Cómo medir el voltaje de CC usando Arduino
Y otro que lo confirma:
Conversión de analógico a digital
AHORA, el problema inmediato es ¿cómo puedo asignar 22-30 voltios a 0-4 o algo así, permitiendo así la utilización de más de un pequeño% de los valores permitidos?
Publicado de forma cruzada en Cómo ¿Puedo calibrar seriamente las lecturas de voltaje ADC con Arduino Nano?