Sensore di corrente come è andata a finire?

Salve ho acquistato un sensore di corrente ACS1712 ed ho avuto gli stesi problemi di questo http://forum.arduino.cc/index.php?topic=171367.0 Ho visitato tutti i link calcolato e ricalcolato ma il problema è IDENTICO.stessso comportamento.Mi potete dire per favore come è andata a finire la faccenda GRAZIE

Se misuri una corrente continua deve funzionare.

Se. invece, misuri una corrente alternata, devi usare un algoritmo di calcolo del valore efficace RMS (Root Mean Square).

Cioè Questa http://www.lucadentella.it/2011/11/29/sensore-di-corrente-con-arduino/

Hai già visto QUI ?

Guglielmo

... e QUI complica ancora di più la faccenda ... ::slight_smile:

Guglielmo

Per il momento grazie dei link, i quali non erano presenti nel tread che vi ho indicato, vediamo....vi faccio sapere , ancora GRAZIE

ROUTINE SENSORI CORRENTE EMPIRICO
Preso dalla disperazione, ho proceduto per via EMPIRICA!
Dunque: mi sono arrivati questi due sensori, li ho testati con un circuito in serie DC ad una ventola di raffreddamento, la quale a 5V assorbe 59mA
Usando il IL TIPO (B) - 5A, ed il programma che ho preso da questo link— http://henrysbench.capnfatz.com/henrys-bench/arduino-current-measurements/acs712-arduino-ac-current-tutorial/----- E MODIFICATO, NELLA RIGA 2 inserendo il valore di 80 tutto fila liscio, FLUTTUAZIONE 56-60 è preciso come il multimetro. Disinserendo il carico va a 0,06, quindi accettabile. INSERENDO (A)-20 A, le cose cambiano, la corrente indicata nel monitor seriale è di 0,11. Di coseguenza SEMPRE EMPIRICAMENTE ho portato il valore di riga 2 a 15. E il monitor mi da 0,58 SPACCATI,
Ma il problema in questo secondo caso è che staccando il carico il valore fluttua tra 0,30 e 0,40!

Osservazioni?

const int sensorIn = A0;
int mVperAmp = 185; // use 100 for 20A Module and 66 for 30A Module


double Voltage = 0;
double VRMS = 0;
double AmpsRMS = 0;



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

void loop(){
 
 
 Voltage = getVPP();
 VRMS = (Voltage/2.0) *0.707; 
 AmpsRMS = (VRMS * 1000)/mVperAmp;
 Serial.print(AmpsRMS);
 Serial.println(" Amps RMS");

}

float getVPP()
{
  float result;
  
  int readValue;             //value read from the sensor
  int maxValue = 0;          // store max value here
  int minValue = 1024;          // store min value here
  
   uint32_t start_time = millis();
   while((millis()-start_time) < 1000) //sample for 1 Sec
   {
       readValue = analogRead(sensorIn);
       // see if you have a new maxValue
       if (readValue > maxValue) 
       {
           /*record the maximum sensor value*/
           maxValue = readValue;
       }
       if (readValue < minValue) 
       {
           /*record the maximum sensor value*/
           minValue = readValue;
       }
   }
   
   // Subtract min from max
   result = ((maxValue - minValue) * 5.0)/1024.0;
      
   return result;
 }