Hello, im trying to measure the ampere of a 90kw 160A Motor with an ACS758 ECB 200B.
Currently there is an analog amperemeter (MI 48 200A ESAN). I used the wires from the analog amperemeter and connected them to my ACS758, then followed this tutorial for the code: (https://www.youtube.com/watch?v=SiHfjzcqnU4)
This is the code I used:
/*
*
* Arduino Sketch for Allegro ACS758 Current Sensor (Advanced)
* this sensor can measure current at range of up to 200A
* It operates with 3.3 or 5V
* Please watch video instruction and explanation for this code.
*
* Written by Ahmad Shamshiri on Saturday May 27,2018 at 13:19 at Ajax, Ontario, Canada
* for Robojax.com
* View the video instruction at
* This code has been downloaded from Robojax.com
*/
#define VIN A0 // define the Arduino pin A0 as voltage input (V in)
const float VCC = 5.0;// supply voltage 5V or 3.3V. If using PCB, set to 5V only.
const int model = 6; // enter the model (see below)
float cutOffLimit = 1.00;// reading cutt off current. 1.00 is 1 Amper
/*
"ACS758LCB-050B",// for model use 0
"ACS758LCB-050U",// for model use 1
"ACS758LCB-100B",// for model use 2
"ACS758LCB-100U",// for model use 3
"ACS758KCB-150B",// for model use 4
"ACS758KCB-150U",// for model use 5
"ACS758ECB-200B",// for model use 6
"ACS758ECB-200U"// for model use 7
sensitivity array is holding the sensitivy of the ACS758
current sensors. Do not change.
*/
float sensitivity[] ={
40.0,// for ACS758LCB-050B
60.0,// for ACS758LCB-050U
20.0,// for ACS758LCB-100B
40.0,// for ACS758LCB-100U
13.3,// for ACS758KCB-150B
16.7,// for ACS758KCB-150U
10.0,// for ACS758ECB-200B
20.0,// for ACS758ECB-200U
};
/*
* quiescent Output voltage is factor for VCC that appears at output
* when the current is zero.
* for Bidirectional sensor it is 0.5 x VCC
* for Unidirectional sensor it is 0.12 x VCC
* for model ACS758LCB-050B, the B at the end represents Bidirectional (polarity doesn't matter)
* for model ACS758LCB-100U, the U at the end represents Unidirectional (polarity must match)
* Do not change.
*/
float quiescent_Output_voltage [] ={
0.5,// for ACS758LCB-050B
0.12,// for ACS758LCB-050U
0.5,// for ACS758LCB-100B
0.12,// for ACS758LCB-100U
0.5,// for ACS758KCB-150B
0.12,// for ACS758KCB-150U
0.5,// for ACS758ECB-200B
0.12,// for ACS758ECB-200U
};
const float FACTOR = sensitivity[model]/1000;// set sensitivity for selected model
const float QOV = quiescent_Output_voltage [model] * VCC;// set quiescent Output voltage for selected model
float voltage;// internal variable for voltage
float cutOff = FACTOR/cutOffLimit;// convert current cut off to mV
void setup() {
//Robojax.com ACS758 Current Sensor
Serial.begin(9600);// initialize serial monitor
Serial.println("Robojax Tutorial");
Serial.println("ACS758 Current Sensor");
}
void loop() {
//Robojax.com ACS758 Current Sensor
float voltage_raw = (5.0 / 1023.0)* analogRead(VIN);// Read the voltage from sensor
voltage = voltage_raw - QOV + 0.007 ;// 0.007 is a value to make voltage zero when there is no current
float current = voltage / FACTOR;
if(abs(voltage) > cutOff ){
Serial.print("V: ");
Serial.print(voltage,3);// print voltage with 3 decimal places
Serial.print("V, I: ");
Serial.print(current,2); // print the current with 2 decimal places
Serial.println("A");
}else{
Serial.println("No Current");
}
delay(500);
}
Arduino Code for Allegro ACS758 Current Sensor (Basic)
This is basic code to measure current using Allegro ACS758 Current Sensor . See video for details.
/*
* Arduino Sketch for Allegro ACS758 Current Sensor (Basic Simple)
* this sensor can measure current at range of up to 200A
* It operates with 3.3 or 5V (the module works with 5V, sensor can work with 3.3 or 5V)
* Please watch video instruction and explanation for this code.
*
* Written by Ahmad Shamshiri on Saturday May 26,2018 at 19:05 at Ajax, Ontario, Canada
* for Robojax.com
* View the video instruction at https://youtu.be/SiHfjzcqnU4
* This code has been downloaded from Robojax.com
*/
#define VIN A0
const float vcc = 5.00;// supply voltage 5V or 3.3V
const float factor = 0.02;// 20mV/A is the factor
float voltage;
void setup() {
//Robojax.com ACS758 Current Sensor
Serial.begin(9600);
Serial.println("Robojax Tutorial");
Serial.println("ACS758 Current Tester");
Serial.println("Basic Simple Code");
}
void loop() {
//Robojax.com ACS758 Current Sensor
voltage = (5.0 / 1023.0)* analogRead(VIN);// Read the voltage from sensor
voltage = voltage - (vcc * 0.5) + 0.007 ;// 0.007 is a value to make voltage zero when there is no current
float current = voltage / factor;
Serial.print("V: ");
Serial.print(voltage,3);
Serial.print("V, I: ");
Serial.print(current,2); Serial.println("A");
delay(500);
}
But the output stays on "no current" even when I power the motor on. I dont have a PCB for my ACS758, I connected everything directly on the Sensor.
Has someone an idea where the problem could be? Or is there another option to measure the ampere with my arduino?