Medir corriente y voltaje

Hola a todos,

Estoy en un proyecto intentando medir la corriente y el voltaje generado por un panel solar. Para ello uso el sensor de corriente ACS712 (5A) y un divisor de tensión. Cuando solamente tengo conectado el divisor de tensión, me mide perfectamente el voltaje, aproximadamente 6,5 V. Sin embargo, cuando conecto el sensor ACS712, la tensión baja progresivamente hasta unos 2 V, y la intensidad sí que me la mide correctamente. En cambio, cuando lo conecto desde los 5V o 3,3 V del arduino UNO, sí que me mide ambos valores. Supongo que el fallo es en las conexiones. Tengo conectado del panel al ACS en serie hasta la carga, y esto en paralelo al divisor de tensión (2 resistencias de 10k).

En el esquema he puesto de carga una resistencia, que realmente será la bateria alimentada por el panel a través de un cargador de bateria. En el esquema aparecen unas pilas, que sería el panel solar.

Agradecería mucho vuestra ayuda.

Muchas gracias

No conectes el positivo del divisor de tensión a la salida del ACS712, conéctalo directamente a la salida del panel solar. ¿De cuanto es la resistencia de carga y cuanto circula por ella?.

Hola gonpezzi,

Según me dices del panel solar, + debería salir un cable hacia el ACS712 y otro hacia el divisor de voltaje. Y entonces del negativo lo dejo igual? Adjunto esquema de cómo creo que dices.
La resistencia es de 100 ohmios, y pasan unos 40mA. Aún así, la resistencia solo está a modo de prueba, luego se pondá una bateria de 600mAh. Simplemente pongo la resistencia porque es más fácil su conexión.
Añado el código para ver si hay algo mal allí.

float Sensibilidad=0.183; //sensibilidad en Voltios/Amperio para sensor de 5A
const float R1 = 9985;   // Valor de la resistencia R1 en ohmios
const float R2 = 9650 ;  // Valor de la resistencia R2 en ohmios
const float referenceVoltage = 4.98; // Voltaje de referencia del Arduino en voltios

void setup() {
  
  Serial.begin(9600);
}

void loop() {
  
  float voltage = (analogRead(A0) / 1023.0) * referenceVoltage; // Calcula el voltaje medido
  
  // Aplica la fórmula del divisor de tensión para obtener el voltaje real del panel
  float panelVoltage = voltage * (R1 + R2) / R2;

  Serial.print("V | Panel Voltage: ");
  Serial.println(panelVoltage , 3);

  float I=get_corriente(500);//obtenemos la corriente promedio de 500 muestras 
  Serial.print("Corriente: ");
  Serial.println(I,3);
  float potencia = I*panelVoltage;
  Serial.print("Potència: ");
  Serial.println(potencia);
  delay(1000);     
}

float get_corriente(int n_muestras)
{
  float voltajeSensor;
  float corriente=0;
  for(int i=0;i<n_muestras;i++)
  {
    voltajeSensor = analogRead(A1) * (4.98/ 1023.0);////lectura del sensor 
    corriente=corriente+(voltajeSensor-2.5)/Sensibilidad; //Ecuación  para obtener la corriente
  }
  corriente=corriente/n_muestras + 0.04; //offset
  //if (corriente<0){
//corriente=0;
  //}
  
  return(corriente);
}

Gracias.

No uses Fritzing para hacer esquemas porque sinceramente no se entiende nada.
Mejor es hacer un esquema a mano alzada, que lo que has publicado aunque aprecio el esfuezo pero es poco claro.
En electronica todos los dibjos son ortogonales (a 90 grados) y para colmo en un protoboard.


Algo asi es mas simple y te llevo 2 min hacerlo
El ACS va alimentado con los 5V del Arduino. El Terminal de salida al pin A1.
Del divisor de tensón conectas al A0 del Arduino, no importa que Arduino sea. Todos tienes A0 y A1.
Asi expresas algo general y todos entendemos mejor que algo con Fritzing.

Hola,

Entiendo que es bastante mejor hacerlo a mano, se aprecia todo mejor.

Viendo tu esquema, dónde pongo para cargar una batería? Ese está siendo mi problema, que creo que no estoy haciendo bien la conexión hacia la batería. Cuando yo lo intento, los valores de voltaje bajan bastante, y cuando lo hago sin esas conexiones hacia la batería o carga, me marca valores correctos.

Gracias

Asi de prepo no puedes cargar una batería porque la destrozas.
Primero qué batería?
Segundo podras poner un DC-DC que lleve a 5V la salila y luego un TP4056 que cargue una LiPO de 3.7V hasta su máximo de 4.2V.
No es si es lo que buscas.

1 Like

Sería una batería de 3,7V, 600mAh. Claro, la batería no la cargo directamente, sino que pondría un módulo cargador de batería, y luego en la salida de la batería un convertidor de voltage de 5V para la entrada del Arduino.

Mi objetivo es poder medir la corriente y el voltage del panel, y así saber la potencia.

Muchas gracias.

Yo creo que un ACS-712 no es adecuado para las lecturas que harás.
Habria que buscar algo mejor.
De cuanto es el panel Tensión y corriente? mas allá que ahora tu bateria a cargar solo llegue a 600mA.

Hola,

El Panel tiene una tension máxima de 6'5 V y una intensidad de 0,25A.

Otra cosa que te quiero decir es que no hace falta que sea super preciso, es un proyecto para hacer una comparación entre un panel solar y un seguidor solar, y es simplemente académico. Por eso, si se puede hacer con el ACS712, ni que no sea muy preciso, tampoco me haría mal. Aunque si no se puede, lo haría con otro.

Muchas gracias.

Claro que se puede con el ACS-712 5A, pero tiene una sensibildad de 185 mV/A
Asi que tus 250mA serán apenas 0.25A*185mV/A = 46.25mV por lo que te sugiero que pongas el Arduino con la referencia de 1.1v en lugar de los 5V por defecto. Aún asi lo que medirás será lamentable.
Ver analogReference()
Asi mejorarás la lectura pero seguirá siendo pobre.
Si sabes de electrónica considera usar un amplificador diferencial con una ganancia adecuada.
Una alternativa sería una simple resistencia serie (como shunt) de 1 ohm, provocará una caída de 0.25V que es mejor que lo anterior.
De nuevo si le agregas un AO diferencial mejorarías la medición.

Hola surbyte, antes de nada agradecerte todo lo que me estás ayudando, espero poder conseguir mi objetivo.

Me has dicho que ponga la referencia del Arduino a 1.1 V para mejorar un poco la lectura. Me podrías decir qué mejora haciendo esto? Y otra cosa, si se pone a 1,1 V, cambia todo el Arduino a esta referencia o solo el pin analògico en el que està conectado? Lo digo porque tengo que hacer más mediciones en los demás.

Mi pregunta es: cómo conecto el sensor acs712 (que después va al cargador de batería) junto con un divisor de tensión para medir el voltaje del panel?

Gracias.

El medidor de corriente siempre va en serie con el circuito. En el caso del ACS-712 al ser de efecto HALL no provoca caidas de tensión que se quieren minimizar para no afectar la medición.
La manera habitual de medir corriente es con un shut o sea una resistencia en serie de muy bajo valor.
El multímetro (cuando esta en modo amperímetro) hace exactamente eso.
Para no afectar la lectura se usan shunts de bajo valor y amplificadores diferenciales que mejoran el rango dinamico, lo que mides, de lo contrario te ocurre lo que te esta pasando a ti que es similar a tener una pinza amperométrica que mide 5A y querer leer 250mA máximo.

Hay circuitos o módulos I2C (baratos y muy buenos) como el INA219 que mide hasta 26V y 3.2A con 12bits, acá tienes 0.8mA de resolución en corriente.
Tambien esta el INA226 que tiene un ADC de 16 bits y por lo tanto es superior.

Me preocupan tus preguntas porque es como que no visualizas lo que estas por hacer. Poner la referencia en 1.1V mejora 4 veces el rango dinámico del arduino.
no es lo mismo medir 0.25V con un fondo de escala de 5V y un ADC de 10bits.
Cada paso del Arduino es de 5V/1024 = 4.88mV
En cambio si pasas la referncia a 1.1V ahora tienes 1.1V/1024 = 1.07mV por paso.
He ahi tu mejora.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.