Misura corrente con ACS758

Salve a tutti!

vorrei misurare una corrente continua variabile tra i 30 e gli 0 A con una tensione inferiore ai 30V. ho valutato di utilizzare un ACS712 30A ad effetto hall, ma la piccola morsettiera non mi ispira molta fiducia nel supportare tale corrente.

la mia possibile scelta sarebbe quindi un ACS758 da 50 ampere vi allego il link amazon:

qui il datasheet per risparmiare tempo:

vorrei utilizzarlo con un Arduino Uno, forse più avanti con Mega ma non fa molta differenza.

vorrei chiedervi:
la connessione con Arduino deve essere fatto con 5V, GND ed OUT sulla porta analogica giusto?

ho individuato uno sketch su internet ma viene utilizzato un altro arduino..

ecco il link:
http://henrysbench.capnfatz.com/henrys-bench/arduino-current-measurements/acs758-arduino-current-sensor-tutorial/

 /*

const int analogIn = A0;

// Set your scale factor
int mVperAmp = 40; // See Scale Factors Below

/* Scale Factors
50A bi-directional = 40
50A uni-directional = 60
100A bi-directional = 20
100A uni-directional = 40
150A bi-directional = 13.3
150A uni-directioal = 26.7
200A bi-directional = 10
200A uni-directional = 20
*/

// Set you Offset
int ACSoffset = 2500; // See offsets below

/* Offsets
If bi-directional = 2500
If uni- directional = 600
*/

int RawValue= 0;
double Voltage = 0;
double Amps = 0;

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

void loop(){
 
 RawValue = analogRead(analogIn);
 Voltage = (RawValue / 1023.0) * 5000; // Gets you mV
 Amps = ((Voltage - ACSoffset) / mVperAmp);
 
 Serial.print("Raw Value = " ); // shows pre-scaled value 
 Serial.print(RawValue); 
 Serial.print("\t mV = "); // shows the voltage measured 
 Serial.print(Voltage,3); // the '3' after voltage allows you to display 3 digits after decimal point
 Serial.print("\t Amps = "); // shows the voltage measured 
 Serial.println(Amps,3); // the '3' after voltage allows you to display 3 digits after decimal point
 delay(2500); 
 
}

posso utilizzare comunque questo sketch?
non mi interessa una misura precisissima, mi accontenterei che misuri la corrente con una discreta precisione...

mi farebbe molto piacere un vostro parere e possibilmente un parere sul possibile funzionamento!

Grazie!

Forse dovresti imparare un po come funiona Arduino.
Il sensore di corrente produce una tensione proporzionale alla corrente.
Se hai la versione che misura solo correnti positive senza corrente hai 0,6V. La versione bidirezionale ha come 0A metá della tensione di alimentazione.

Devi solo misurare una tensione e calcolare la corrente risultante.

la mia possibile scelta sarebbe quindi un ACS758 da 50 ampere vi allego il link amazon:
https://www.amazon.it/gp/product/B016M63GTM/ref=ox_sc_act_title_1?smid=A0652597AE80AEWD3C78&psc=1

Allora vuoi prendere uno da 50A o uno da +/-150A?

Ciao Uwe

Certamente non conosco a sufficienza Arduino, su questo sono d'accordo

effettivamente forse ho fatto confusione nel mettere il link ed indicare il misuratore.

link misuratore 50A:

mi interessa corrente DC 50A monodirezionale perciò modifico lo sketch:

const int analogIn = A0;

// Set your scale factor
int mVperAmp = 60; // See Scale Factors Below

/* Scale Factors
50A bi-directional = 40
50A uni-directional = 60
100A bi-directional = 20
100A uni-directional = 40
150A bi-directional = 13.3
150A uni-directioal = 26.7
200A bi-directional = 10
200A uni-directional = 20
*/

// Set you Offset
int ACSoffset = 600; // See offsets below

/* Offsets
If bi-directional = 2500
If uni- directional = 600
*/

int RawValue= 0;
double Voltage = 0;
double Amps = 0;

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

void loop(){
 
 RawValue = analogRead(analogIn);
 Voltage = (RawValue / 1023.0) * 5000; // Gets you mV
 Amps = ((Voltage - ACSoffset) / mVperAmp);
 
 Serial.print("Raw Value = " ); // shows pre-scaled value 
 Serial.print(RawValue); 
 Serial.print("\t mV = "); // shows the voltage measured 
 Serial.print(Voltage,3); // the '3' after voltage allows you to display 3 digits after decimal point
 Serial.print("\t Amps = "); // shows the voltage measured 
 Serial.println(Amps,3); // the '3' after voltage allows you to display 3 digits after decimal point
 delay(2500); 
 
}

potrebbe andare bene?

So che il misuratore produce un valore in tensione proporzionale alla corrente che passa attraverso il misuratore, mi interesserebbe avere conferma da persone più esperte e qualificate di me:

  • che è una tensione in uscita che arduino uno è in grado di leggere.
  • posso alimentarlo direttamente da arduino o con un alimentatore esterno da 5v con cui metto in comune il rif GND.
  • lo sketch è compatibile con il mio arduino.

spero di essere stato più chiaro.

intanto ti ringrazio per la risposta

no, lo sketch non va bene.
Se usi un sensore +/-50 V e misuri una corrente continua comunque devi usare i valori del sensore da +/-50A.

Secondo la descrizione del prodotto la sensibilitá é 40mV/A e l'offset 2500mV ovvero 511 ADC.

Per le Tue domande:
sí, sí e sì.

Ciao Uwe

Ti ringrazio moltissimo per le risposte! Molto gentile,

Grazie per l’aiuto!