14.電流感測模組ACS712

功能:電流感測器晶片:ACS712ELC-05B
模組有電源燈,可測量正負5A電流,對應模擬量輸出185mV/A;
沒有檢測電流通過時,輸出的的電壓是VCC/2;
使用霍爾原理,為求準確度請避免接近磁場
5A:最高可測量5A電流,分辨率為0.185
20A:最高可測量20A電流,分辨率為0.1
30A:最高可測量30A電流,分辨率為0.066
常見用途:電流錶、家電類電源段安全保護裝置、工廠馬達、機具等等定期監測Sensor、長期耗電表現監控
工作電壓:4.5V ~ 5.5V
腳位說明: VCC:供電端, GND:接地端, OUT:類比訊號輸出
類似功能零件比較
(INA219):最標準高cp值版本
(INA226):支援HIGH or LOW Side電流偵測
(INA3221):支援三通道電流偵測
(ACS712):採用霍爾原理隔離偵測,可測量交流或直流電

材料接線:

 

程式積木

 

精簡版程式:

// 程式名稱:檢測電流使用ACS712模組(精簡版)
// 接腳 = A0

double Current = 0;
const double scale_factor = 0.185; // 5A
//const double scale_factor = 0.1; // 20A
//const double scale_factor = 0.066; // 30A
double resADC = 5.00/1024;

void setup(){
  Serial.begin(9600);
}
void loop(){
  Current = (resADC * analogRead(A0) - 2.5)/ scale_factor;
  Serial.print("\t Current = ");
  Serial.print(Current);
  Serial.println(" Amps");
  delay(1000);
}

 

 

程式積木

 

完整版程式:

// 程式名稱:檢測電流使用ACS712模組
// 接腳 = A0


double Vout = 0;
double Current = 0;
const double scale_factor = 0.185; // 5A
//const double scale_factor = 0.1; // 20A
//const double scale_factor = 0.066; // 30A
const double vRef = 5.00;
const double resConvert = 1024;
double resADC = 5.00/1024;
void setup(){
  Serial.begin(9600);
}
void loop(){
  for(int i = 0; i < 1000; i++) { //偵測1000次累加後再計算平均值
    Vout = (Vout + (resADC * analogRead(A0)));  //累加(5.00/1024)*A0
    delay(1);
  }
  Vout = Vout /1000;
  Current = (Vout - 2.5)/ scale_factor;  //(偵測值-2.5)/不同零件的分辨率
  Serial.print("\t Current = ");
  Serial.print(Current);
  Serial.println(" Amps");
  delay(1000);
}