การต่อ Current Sensor ACS712

การใช้งาน ACS712-30A Current Sensor Module

ACS712-30A Current Sensor Module เป็น Module วัดกระแสไฟฟ้า
โดยจ่าย Output ออกมาเปนสัญญาณ Analog สามารถต่อได้ทั้งไฟ DC และ AC โดยสามารถทำงานได้ 3 Mode คือ 5A , 20A และ 30A

Current_Module_ACS712

การต่อใช้งาน ACS712 จะต่อเข้ากับขา A0 ของ Arduino

การต่อ Current Sensor ACS712

ตัวอย่างโปรแกรม Source code ACS712-30A Current Sensor Module สำหรับไฟ DC

void setup() {

Serial.begin(9600);
}

void loop() {

float average = 0;
for(int i = 0; i < 1000; i++) {
average = average + (.0264 * analogRead(A0) -13.51) / 1000;

//5A mode, if 20A or 30A mode, need to modify this formula to
//(.19 * analogRead(A0) -25) for 20A mode and
//(.044 * analogRead(A0) -3.78) for 30A mode

delay(1);
}
Serial.println(average);
}

ตัวอย่างโปรแกรม Source code ACS712-30A Current Sensor Module สำหรับไฟ AC

#define CURRENT_SENSOR A0 // Define Analog input pin that sensor is attached

float amplitude_current; // Float amplitude current
float effective_value; // Float effective current

void setup()
{
Serial.begin(9600);
pins_init();
}
void loop()
{
int sensor_max;
sensor_max = getMaxValue();
Serial.print(“sensor_max = “);
Serial.println(sensor_max);

//the VCC on the Arduino interface of the sensor is 5v

amplitude_current=(float)(sensor_max-512)/1024*5/185*1000000; // for 5A mode,you need to modify this with 20 A and 30A mode;
effective_value=amplitude_current/1.414;

//for minimum current=1/1024*5/185*1000000/1.414=18.7(mA)
//Only sinusoidal alternating current

Serial.println(“The amplitude of the current is(in mA)”);
Serial.println(amplitude_current,1);

//Only one number after the decimal point

Serial.println(“The effective value of the current is(in mA)”);
Serial.println(effective_value,1);
}
void pins_init()
{
pinMode(CURRENT_SENSOR, INPUT);
}
/*Function: Sample for 1000ms and get the maximum value from the S pin*/

int getMaxValue()
{
int sensorValue; //value read from the sensor
int sensorMax = 0;
uint32_t start_time = millis();
while((millis()-start_time) < 1000) //sample for 1000ms
{
sensorValue = analogRead(CURRENT_SENSOR);
if (sensorValue > sensorMax)
{
/*record the maximum sensor value*/

sensorMax = sensorValue;
}
}
return sensorMax;
}

Facebook Comments