電流傳感器(Current Sensor)用途廣泛,如電源、過流保護、馬達控制等。本項目將通過Arduino開發板,演示如何用ACS712傳感器模組進行電壓讀數。項目BOM如下:
AA電池 2
紅色LED 1
ACS712傳感器模塊 1
電阻器 1
Arduino開發板 1
引線 若干
ACS712電流傳感器
ACS712是來自Allegro的線性電流傳感器,內置精確低偏置的線性霍爾傳感器電路,能輸出與檢測的交流或直流電流成比例的電壓。ACS712具有低噪聲,響應時間快(對應步進輸入電流,輸出上升時間為5μs),50千赫帶寬,總輸出誤差最大為4%,高輸出靈敏度(66~185mV/A),使用方便、性價比高、 絕緣電壓高等特點,主要應用于電動機控制、載荷檢測和管理、開關式電源和過電流故障保護等。
ACS712主要由靠近芯片表面的銅制的電流通路和精確的低偏置線性霍爾傳感器電路等組成。被測電流流經的通路(引腳1和2,3和4之間的電路)的內電阻通常是1.2mΩ,具有較低的功耗。被測電流通路與傳感器引腳(引腳5~8)的絕緣電壓>2.1kVRMS,幾乎是絕緣的。流經銅制電流通路的電流所產生的磁場,能夠被片內的霍爾IC感應并將其轉化為成比例的電壓。通過將磁性信號盡量靠近霍爾傳感器來實現器件精確度的最優化。 精確的成比例的輸出電壓由穩定斬波型低偏置BiCMOS 霍爾集成電路提供,該集成電路在出廠時已進行了精確的編程。 穩定斬波技術是一種新技術,它給片內的霍爾元器件和放大器提供最小的偏置電壓,該技術幾乎可以消除芯片由于溫度所產生的輸出漂移。
ACS712內含一個電阻RF(INT)和一個緩沖放大器,用戶可以通過FITER引腳(第6腳)外接一個容CF與RF(INT)組成一個簡單的外接RC低通濾波器,由于內部緩沖放大器能消除因芯片內部電阻和接口負載分壓所造成的輸出衰減,所以外接的RC低通濾波器不會影響信號的衰減,且可進一步降低輸出噪音并改善低電流精確度。此外,ACS712的響應時間比一般的器件縮短了兩倍以上,非常適合保護及高速應用。
ACS712采用小型SOIC8封裝,單電源5V供電。引腳1和2、3和4均內置有保險,為待測電流的兩個輸入端,當檢測直流電流時,1和2、3和4分別為待測電流的輸入端和輸出端。ACS712電流傳感器芯片配備基本外圍電路,就構成ACS712電流傳感器模塊,本項目使用的就是這個模組。
ACS712模塊含有一個將輸入電流轉化為磁場的霍爾效應傳感器,輸入電流越大,磁場越強。當輸入端沒有電流時,OUT引腳的輸出電壓值為VCC一半。
ACS712模塊只有三個引腳:VCC引腳可接收高達8V的輸入電壓,推薦值為5V;OUT引腳產生一個與輸入端子的電流成正比的電壓。其中,待測量電流插入螺紋端口。與連接電流表一樣,電流傳感器必須串聯在電流中。
電路連接及代碼
用傳感器將電流轉換為電壓,有多種方法,ACS712也有三種版本,例如ACS712ELCTR-05B-T,標稱電壓為-5~5A,靈敏度為185mV/A。
ACS712和各種Arduino開發板的連接都很簡單,VCC連接于Arduino開發板的5V引腳,GND與GND連接,OUT引腳連接于A0引腳。
首先,要從 (File > Examples > Basics) 上傳AnalogReadSerial sketch 文件到Arduino。如果沒有電流,使用的是10bit ADC時串口監視器的顯示值為一半(512 -2.5V)。如下將來自傳感器的電壓值轉換為電流讀數,串口顯示電流讀數:
#define SAMPLES 10
float average_current;
void setup() {
Serial.begin(9600);
}
void loop() {
for(int i=0;i // read the input on analog pin 0:
int sensorValue = analogRead(A0);
//convert to voltage
float volt = sensorValue * 5;
volt = volt / 1023;
//convert to current
float current = volt / 185;
//convert to Amps
current = current / 1000;
average_current += current;
delay(1); //1 millisecond delay for stability
}
average_current = average_current / SAMPLES;
// print out the current to serial monitor
Serial.print("Current: ");
Serial.println(average_current);
delay(100); //just a small delay
};i++){
代碼中SAMPLES取值為10。SAMPLES值越大,輸出越清晰,但有可能降低Arduino的運行。
審核編輯 黃昊宇
-
電流傳感器
+關注
關注
9文章
919瀏覽量
40929 -
Arduino
+關注
關注
187文章
6453瀏覽量
185927 -
Arduino開發板
+關注
關注
0文章
8瀏覽量
7406 -
ACS712
+關注
關注
0文章
19瀏覽量
12352 -
Arduino入門
+關注
關注
0文章
4瀏覽量
1939
發布評論請先 登錄
相關推薦
評論