Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Pengukuran Arus AC Akurat dengan Sensor ACS712 pada Arduino

Komponen dan Perlengkapan

Tentang Proyek

HATI-HATI JIKA ANDA MENGGUNAKAN JALUR LISTRIK

Halo, dan selamat datang di tutorial lain, kali ini tentang pengukuran Arus Bolak-balik (AC), menggunakan ACS712 Saya menggunakan versi 30Amps yang merupakan ACS712 30A, dan papan Arduino Uno yang indah, saya mencoba menambahkan layar OLED namun sayangnya akhirnya saya memecahkannya saat merekam tutorial jadi saya beralih ke LCD, tetapi di bawah Anda akan menemukan kabel dan kode untuk kedua versi.

Dan dengan "AC apa pun..." saya berarti kita akan melihat kode/perpustakaan yang bekerja untuk semua jenis sinyal bukan hanya gelombang sinus, dan Ammeter kami akan dapat menghitung TRUE ROOT MEAN SQUARE. Dan perhatikan bahwa sensor menggunakan Efek Hall (produksi selisih tegangan di seluruh konduktor listrik, melintasi arus listrik dalam konduktor dan terhadap medan magnet yang tegak lurus terhadap arus)

Anda dapat menggabungkan proyek ini dengan ini: Pengukuran Tegangan AC Mudah menggunakan Arduino dan ZMPT101B

Uji akan dilakukan pada bola lampu pijar, dikontrol oleh pemedam cahaya dalam seri dengan multimeter referensi dan modul sensor arus ACS712.

Pengukuran Arus AC Akurat dengan Sensor ACS712 pada Arduino

Ini rencanya:

Bagian

Pengukuran Arus AC Akurat dengan Sensor ACS712 pada Arduino

Perhatikan saat memilih ACS712, jangan mencoba bermain aman seperti yang saya lakukan (dengan membeli versi 30Amps), ini hanya akan memberikan fluktuasi besar saat Anda mencoba menggunakannya untuk penggunaan domestik atau aplikasi arus kecil, jadi di sini untuk saya versi 5A atau 10A sudah cukup. Juga perhatikan bahwa 30A atau 20A … akan mempengaruhi kalibrasi Anda juga, tetapi dijelaskan cara mengkalibrasi dalam video dan komentar kode.

Ini adalah bagian yang saya gunakan, Anda dapat mengganti UNO dengan papan kompatibel apa pun, atau LCD i²c dengan OLED atau layar apa pun yang Anda sukai.

Uji 1

Kabel dan kode

Kabel untuk uji 1 dapat ditemukan di bawah (Kabel 1), bersama dengan kode (Kode 1).

Hasil

Unggah kode dan jalankan serial plotter, Anda seharusnya dapat melihat sinyal seperti gelombang sinus, garis merah menunjukkan ketika saya menurunkan pemedam dan arus mulai memiliki bentuk yang biasanya Anda temukan di triac.

Pengukuran Arus AC Akurat dengan Sensor ACS712 pada Arduino

Uji 2

Sekarang jika Anda ingin mengukur arus menggunakan kode di atas saja, Anda akan mendapatkan nilai sekitar 512 – 511, mereka tidak mencerminkan nilai RMS sama sekali. Jadi untuk mengukur nilai RMS sinyal kita akan menjaga kabel yang sama seperti di atas tetapi sekarang kita membutuhkan kode lain yang dapat menghitung RMS.

Kabel dan kode

Kabel sama dengan (Kabel 1), tetapi dengan kode berbeda dapat ditemukan di bawah (Kode 2).

Hasil

Pengukuran Arus AC Akurat dengan Sensor ACS712 pada Arduino

Seperti yang Anda lihat nilai di kiri (RMS) sama dengan nilai yang diukur oleh multimeter, di kanan itu nilai Puncak ke Puncak, dan perhatikan bahwa pemedam pada siklus penuh karena saya menggunakan bola lampu 75W dan 230VAC/50Hz.

!!!!!!!!!!!!!!!! TETAPI !!!!!!!!!!!!!!!!!!!!!

Pengukuran Arus AC Akurat dengan Sensor ACS712 pada Arduino

Di sini saya menurunkan pemedam cahaya saya sepenuhnya, yang berarti saya sekitar 1/4 dari siklus, multimeter memberi saya 0.21A tetapi kode saya memberi saya 0.36A, kode masih mengukur dari Puncak ke Puncak, tetapi seperti yang Anda lihat di atas sinyal saya tidak linier saat saya menurunkan pemedam sepenuhnya.

Dan itulah perbedaan antara pengukuran TRMS dan pengukuran yang hanya bekerja dengan sinyal gelombang sinus.

Uji 3

Sekarang Anda melihat masalah kode di atas, tetapi untungnya ada perpustakaan untuk menyelamatkan, saya sangat menghargai perpustakaan itu untuk semua pekerjaannya karena seperti yang Anda tahu jika Anda ingin menghitung nilai RMS Anda perlu menggunakan Kalkulus Integral, dan itu sangat sulit untuk dicapai pada papan pengembangan elektronik, Anda dapat memeriksa file cpp perpustakaan untuk melihat metode apa yang digunakan seperti "Rata-rata" "Sigma"... Hal-hal terkait statistik/ probabilitas ....

Kabel, kode dan perpustakaan

Kabel sama dengan kabel yang digunakan di atas (Kabel 1), dan di bawah Anda dapat menemukan kode (Kode 3).

Dan Di sini Anda dapat mengunduh perpustakaan Filter: Unduh perpustakaan di sini

Hasil

Hasil yang benar ada di tengah, yang di kiri adalah tanpa kalibrasi, dan yang di kanan digunakan untuk menunjukkan cara mengkalibrasi (periksa video).

Pengukuran Arus AC Akurat dengan Sensor ACS712 pada Arduino
Pengukuran Arus AC Akurat dengan Sensor ACS712 pada Arduino

Seperti yang Anda lihat perbedaan besar antara respons dua kode terhadap sinyal non linier tetapi yang kedua bertindak seperti multimeter TRMS.

Uji dengan LCD/OLED

Di sini kita menjaga hal yang sama semua yang kita lakukan adalah alih-alih menggunakan serial monitor kita dapat menggunakan LCD atau OLED

Kabel, kode dan perpustakaan

Kabel dapat ditemukan di bawah (Kabel_LCD) dan (Kabel_OLED), kode juga di bawah (Kode_ACS712_LCD) dan (Kode_ACS712_OLED).

Berikut adalah perpustakaan OLED

https://github.com/adafruit/Adafruit_SSD1306 https://github.com/adafruit/Adafruit-GFX-Library

Dan berikut ini perpustakaan LCD_i2c

https://drive.google.com/file/d/1Oc56q2GPs5SOA-PdbVHHSxKCnI9KY5xd/view

Hasil

Pengukuran Arus AC Akurat dengan Sensor ACS712 pada Arduino

Ini adalah satu-satunya uji yang dapat saya lakukan karena saya memecah layar OLED saya saat mencoba merekam video tutorial. Secara keseluruhan ini bekerja sama seperti yang kita lihat sebelumnya, itu hanya menampilkannya pada layar LCD i²c. (Ya nilai TRMS bukan metode puncak-ke-puncak).

Itu saja teman-teman, saya harap Anda menyukai tutorial ini jangan lupa untuk menyukai video tutorial dan berlangganan channel SurtrTech jika Anda ingin menunjukkan dukungan, terima kasih banyak.

Ada pertanyaan tinggalkan di komentar.

Code

Code_1.inoArduino

Kode ini untuk menguji modul dan memvisualisasikan bentuk sinyal

/* Kode ini bekerja dengan sensor arus ACS712, ini memungkinkan untuk membaca data mentah Lebih baik untuk menggunakannya dengan Serial Plotter Lebih banyak detail di www.surtrtech.com */ 
#define Current_sensor A0 
float i; 
void setup() { 
Serial.begin(9600); 
pinMode(Current_sensor, INPUT); 
} 
void loop() { 
i = analogRead(Current_sensor); 
Serial.println(i); 
delay(100); 
} 
Code_2.inoArduino

Kode ini menggunakan metode puncak-ke-puncak untuk menghitung RMS dari sinyal gelombang sinus

/* Kode ini bekerja dengan sensor arus ACS712, ini memungkinkan untuk menghitung RMS dari Arus Bolak-balik gelombang sinus * ini menggunakan metode Puncak ke Puncak untuk menghitung RMS * Untuk informasi lebih lanjut periksa www.surtrtech.com */ 
#define SAMPLES 300 
#define ACS_Pin A0 
float High_peak, Low_peak; 
float Amps_Peak_Peak, Amps_RMS; 
void setup() { 
Serial.begin(9600); 
pinMode(ACS_Pin, INPUT); 
} 
void loop() { 
read_Amps(); 
Amps_RMS = Amps_Peak_Peak * 0.3536 * 0.06; 
Serial.print(Amps_RMS); 
Serial.print("\t"); 
Serial.println(Amps_Peak_Peak); 
delay(200); 
} 
void read_Amps() { 
int cnt; 
High_peak = 0; 
Low_peak = 1024; 
for(cnt=0 ; cnt<SAMPLES ; cnt++) { 
float ACS_Value = analogRead(ACS_Pin); 
if(ACS_Value > High_peak) High_peak = ACS_Value; 
if(ACS_Value < Low_peak) Low_peak = ACS_Value; 
} 
Amps_Peak_Peak = High_peak - Low_peak; 
} 
Code_3.inoArduino

Kode ini menggunakan rumus statistik untuk menghitung TRMS dari sinyal apa pun bentuknya dan menampilkannya di serial monitor

/* Kode ini bekerja dengan sensor arus ACS712, ini memungkinkan perhitungan TRMS dari sinyal * Kunjungi www.surtrtech.com untuk detail lebih lanjut */ 
#include <Filters.h> 
#define ACS_Pin A0 
float ACS_Value; 
float testFrequency = 50; 
float windowLength = 40.0/testFrequency; 
float intercept = 0; 
float slope = 0.0752; 
float Amps_TRMS; 
unsigned long printPeriod = 1000; 
unsigned long previousMillis = 0; 
void setup() { 
Serial.begin(9600); 
pinMode(ACS_Pin, INPUT); 
} 
void loop() { 
RunningStatistics inputStats; 
inputStats.setWindowSecs(windowLength); 
while(true) { 
ACS_Value = analogRead(ACS_Pin); 
inputStats.input(ACS_Value); 
if((unsigned long)(millis() - previousMillis) >= printPeriod) { 
previousMillis = millis(); 
Amps_TRMS = intercept + slope * inputStats.sigma(); 
Serial.print("\t Amps: "); 
Serial.print(Amps_TRMS); 
} 
} 
} 
Code_ACS712_LCD.inoArduino

Kode ini menggunakan metode perhitungan TRMS dan menampilkannya pada layar LCD i²c

/* Kode ini bekerja dengan ACS712 dan LCD ic * Ini mengukur TRMS dari Arus Bolak-balik dan menampilkan nilai pada layar * Kunjungi www.SurtrTech.com untuk detail lebih lanjut */ 
#include <Filters.h> 
#include <LiquidCrystal_I2C.h> 
#define ACS_Pin A0 
#define I2C_ADDR 0x27 
#define BACKLIGHT_PIN 3 
#define En_pin 2 
#define Rw_pin 1 
#define Rs_pin 0 
#define D4_pin 4 
#define D5_pin 5 
#define D6_pin 6 
#define D7_pin 7 
LiquidCrystal_I2C lcd(I2C_ADDR, En_pin, Rw_pin, Rs_pin, D4_pin, D5_pin, D6_pin, D7_pin); 
float testFrequency = 50; 
float windowLength = 40.0/testFrequency; 
float intercept = 0; 
float slope = 0.0752; 
float Amps_TRMS; 
float ACS_Value; 
unsigned long printPeriod = 1000; 
unsigned long previousMillis = 0; 
void setup() { 
digitalWrite(2, HIGH); 
lcd.begin(16, 2); 
lcd.setBacklightPin(BACKLIGHT_PIN, POSITIVE); 
lcd.setBacklight(HIGH); 
lcd.home(); 
} 
void loop() { 
RunningStatistics inputStats; 
inputStats.setWindowSecs(windowLength); 
while(true) { 
ACS_Value = analogRead(ACS_Pin); 
inputStats.input(ACS_Value); 
if((unsigned long)(millis() - previousMillis) >= printPeriod) { 
previousMillis = millis(); 
Amps_TRMS = intercept + slope * inputStats.sigma(); 
lcd.clear(); 
lcd.setCursor(2, 0); 
lcd.print(Amps_TRMS); 
lcd.print(" A"); 
} 
} 
} 
Code_ACS712_OLED.inoArduino

Kode ini menggunakan metode perhitungan TRMS dan menampilkan nilai pada layar OLED.

/* Kode ini bekerja dengan ACS712 dan OLED ic * Ini mengukur TRMS dari Arus Bolak-balik dan menampilkan nilai pada layar * Kunjungi www.SurtrTech.com untuk detail lebih lanjut */ 
#include <Filters.h> 
#include <Adafruit_GFX.h> 
#include <Adafruit_SSD1306.h> 
#define ACS_Pin A0 
#define SCREEN_WIDTH 128 
#define SCREEN_HEIGHT 32 
#define OLED_RESET -1 
float testFrequency = 50; 
float windowLength = 40.0/testFrequency; 
float intercept = 0; 
float slope = 0.0752; 
float Amps_TRMS; 
float ACS_Value; 
unsigned long printPeriod = 1000; 
unsigned long previousMillis = 0; 
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); 
void setup() { 
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); 
display.clearDisplay(); 
display.display(); 
} 
void loop() { 
RunningStatistics inputStats; 
inputStats.setWindowSecs(windowLength); 
while(true) { 
ACS_Value = analogRead(ACS_Pin); 
inputStats.input(ACS_Value); 
if((unsigned long)(millis() - previousMillis) >= printPeriod) { 
previousMillis = millis(); 
Amps_TRMS = intercept + slope * inputStats.sigma(); 
display.clearDisplay(); 
display.setTextSize(3); 
display.setTextColor(WHITE); 
display.setCursor(15, 10); 
display.print(Amps_TRMS); 
display.println(" A"); 
display.display(); 
} 
} 
} 

Schematics

Kabel yang digunakan untuk uji 1, 2 dan 3

Pengukuran Arus AC Akurat dengan Sensor ACS712 pada Arduino

Gunakan LCD i²c

Pengukuran Arus AC Akurat dengan Sensor ACS712 pada Arduino

Gunakan OLED 128x32

Pengukuran Arus AC Akurat dengan Sensor ACS712 pada Arduino

Proses manufaktur

  1. Mengukur Kualitas Udara dengan OpenSensors: Panduan Arduino & Python
  2. Sensor CO2 K30: Pemantauan Kualitas Udara Indoor dalam Waktu Nyata
  3. Memfasilitasi Komunikasi Tuna Netra Tuna Rungu Menggunakan 1Sheeld dan Arduino
  4. Bangun Tabung Pintar: Kendalikan Penerima Koin dengan Arduino Nano
  5. Kontrol LED melalui Bluetooth dengan Arduino – Panduan DIY Sederhana
  6. Mengintegrasikan Sensor Sidik Jari Kapasitif DFRobot dengan Arduino atau ESP8266
  7. Proyek HMI Nextion Interaktif Menggunakan Arduino Mega dan Sensor
  8. Kit Lengan Robot 6-DoF Berbasis Arduino dengan Pengendali Nunchuk
  9. Animasikan Ikan Billy Bass Anda dengan Sumber Audio Apa Pun – Panduan Langkah demi Langkah
  10. Pengukuran Radiasi Matahari Akurat dengan Arduino UNO dan Ethernet Shield