Pengukuran listrik. Bagian 1. Pengukuran tegangan dan arus

gambar

pengantar


Halo semuanya! Setelah akhir siklus pada sensor, ada pertanyaan tentang rencana yang berbeda untuk mengukur parameter konsumsi rumah tangga dan bukan peralatan listrik. Siapa yang mengkonsumsi berapa banyak, bagaimana menghubungkan apa yang diukur, kehalusan apa yang terjadi dan sebagainya. Saatnya mengungkapkan semua kartu di area ini.
Dalam seri artikel ini kami akan mempertimbangkan topik pengukuran parameter listrik. Parameter ini sebenarnya adalah angka yang sangat besar, yang akan saya coba sedikit demi sedikit dalam seri kecil.
Sejauh ini, rencananya tiga seri:
  • Pengukuran listrik.
  • Kualitas listrik.
  • Perangkat untuk mengukur parameter listrik.

Dalam proses analisis, kami akan memecahkan masalah praktis tertentu pada mikrokontroler hingga hasilnya tercapai. Tentu saja, sebagian besar siklus ini akan dikhususkan untuk mengukur tegangan AC dan dapat bermanfaat bagi semua penggemar untuk mengontrol peralatan listrik di rumah pintar mereka.
Berdasarkan hasil dari seluruh siklus, kami akan memproduksi meteran listrik pintar tertentu dengan akses Internet. Penggemar yang sangat terkenal untuk mengontrol peralatan listrik di rumah pintar mereka dapat memberikan semua bantuan yang mungkin dalam pelaksanaan bagian komunikasi berdasarkan, misalnya, MajorDomo. Mari menjadikan OpenSource rumah pintar yang lebih baik, jadi untuk berbicara.
Dalam seri ini dalam dua bagian, kita akan membahas pertanyaan-pertanyaan berikut:
  • Koneksi sensor arus dan tegangan pada perangkat DC, serta sirkuit AC fase tunggal dan tiga fase;
  • Pengukuran nilai arus dari arus dan tegangan;
  • Pengukuran faktor daya;
  • Kekuatan penuh, aktif dan reaktif;
  • Konsumsi daya;

Dengan mengatasi Anda akan menemukan jawaban untuk dua pertanyaan pertama dari daftar ini. Saya sengaja tidak menyentuh masalah akurasi indikator pengukuran dan dari seri ini saya hanya senang dengan hasil yang diperoleh dengan akurasi sepatu kulit plus atau minus. Saya pasti akan mencurahkan artikel terpisah untuk masalah ini di seri ketiga.

1. Koneksi sensor



Dalam seri terakhir tentang sensor tegangan dan arus, saya berbicara tentang jenis sensor, tetapi tidak berbicara tentang cara menggunakannya dan di mana harus meletakkannya. Saatnya memperbaikinya
Menghubungkan sensor DC

Jelas bahwa seluruh siklus akan dikhususkan untuk sistem arus bolak-balik, tetapi kami juga akan dengan cepat membahas sirkuit arus searah, karena ini dapat berguna bagi kami ketika mengembangkan catu daya arus searah. Ambil, misalnya, konverter buck klasik PWM :

Gambar 1. Konverter buck PWM
Tujuan kami adalah untuk memberikan tegangan output yang stabil. Selain itu, berdasarkan informasi dari sensor saat ini, dimungkinkan untuk mengontrol mode operasi induktor L1, mencegah kejenuhannya, dan juga menerapkan perlindungan konverter saat ini. Dan sejujurnya, tidak ada opsi khusus untuk memasang sensor.
Sensor tegangan dalam bentuk pembagi resistif R1-R2, yang merupakan satu-satunya yang mampu bekerja dengan arus searah, dipasang pada output konverter. Sebagai aturan, rangkaian mikro konverter khusus memiliki input umpan balik, dan melakukan segala upaya untuk memastikan bahwa pada input ini (3) ada tingkat tegangan tertentu yang ditentukan dalam dokumentasi untuk rangkaian mikro. Misalnya, 1.25V. Jika tegangan output kami cocok dengan level ini - semuanya baik-baik saja - kami langsung menerapkan tegangan output ke input ini. Jika tidak, maka atur pembagi. Jika kita perlu memberikan tegangan output 5V, maka pembagi harus memberikan faktor pembagian 4, yaitu, misalnya, R1 = 30k, R2 = 10k.
Sensor saat ini biasanya dipasang antara sumber daya dan konverter dan pada chip. Dari perbedaan potensial antara titik 1 dan 2, dan dengan resistansi yang diketahui, resistor Rs dapat menentukan nilai arus dari induktor kami. Memasang sensor arus antara sumber dan beban bukanlah ide yang baik, karena kapasitor filter akan terputus oleh resistor dari konsumen arus pulsed. Memasang resistor di celah kawat biasa juga tidak menjanjikan hal yang baik - akan ada dua level yang masih asyik untuk dipusingkan.
Masalah penurunan tegangan dapat dihindari dengan menggunakan sensor arus tanpa kontak - misalnya, sensor aula:

Gambar 2. Sensor arus tanpa kontak
Namun, ada cara yang lebih sulit untuk mengukur arus. Lagi pula, tegangan juga turun pada transistor dan arus yang sama mengalir seperti induktansi melaluinya. Oleh karena itu, dengan turunnya tegangan, Anda juga dapat menentukan nilai arus. Jujur, jika Anda melihat struktur internal dari rangkaian konverter, misalnya, dari Texas Instruments, maka metode ini ditemukan sesering yang sebelumnya. Keakuratan metode ini tentu bukan yang tertinggi, tetapi ini cukup untuk cutoff saat ini untuk bekerja.

Gambar 3. Transistor sebagai sensor arus. Kami melakukan hal yang
sama di sirkuit lain dari konverter yang sama, baik meningkatkan atau membalik.
Namun, perlu untuk menyebutkan secara terpisah konverter linear dan konverter flyback.

Gambar 4. Koneksi sensor saat ini di konverter flyback
Mereka juga dapat menggunakan resistensi eksternal atau transistor dalam perannya.
Dengan ini kami menghubungkan sensor ke konverter DC / DC. Jika Anda memiliki saran untuk opsi lain, saya dengan senang hati akan menambahkan artikel kepada mereka.
1.2 Menghubungkan sensor ke sirkuit AC fase tunggal

Di sirkuit AC, kami memiliki banyak pilihan sensor yang mungkin. Mari kita pertimbangkan beberapa opsi.
Yang paling sederhana adalah penggunaan pembagi tegangan resistif dan pirau arus.

Gambar 5. Koneksi sensor resistor
Namun, ia memiliki beberapa kelemahan signifikan:
Pertama, kami akan memberikan amplitudo signifikan dari sinyal dari pirau saat ini, mengalokasikan sejumlah besar daya di atasnya, atau kami akan puas dengan amplitudo kecil dari sinyal dan kemudian memperkuatnya. Dan kedua, resistor menciptakan perbedaan potensial antara netral jaringan dan netral perangkat. Jika perangkat terisolasi, tidak masalah, jika perangkat memiliki terminal pentanahan, maka kami berisiko tertinggal tanpa sinyal dari sensor saat ini, karena kami akan melakukan hubungan arus pendek. Mungkin Anda harus mencoba sensor yang bekerja dengan prinsip lain.
Sebagai contoh, kami menggunakan transformator arus dan tegangan, atau sensor arus efek hall dan transformator tegangan. Di sini, ada lebih banyak peluang untuk bekerja dengan peralatan, karena kawat netral tidak memiliki kerugian, dan yang paling penting - dalam kedua kasus ada isolasi galvanik dari peralatan pengukur, yang sering kali dapat bermanfaat. Namun, harus diingat bahwa sensor arus dan tegangan transformator memiliki respons frekuensi yang terbatas dan jika kita ingin mengukur komposisi harmonik dari distorsi, maka ini bukan fakta yang akan berhasil.

Gbr. 6. Koneksi transformator dan arus dan tegangan non-kontak sensor
1.3 Menghubungkan sensor ke sirkuit AC multifase

Dalam jaringan multifase, kemampuan kita untuk menghubungkan sensor saat ini sedikit kurang. Ini disebabkan oleh fakta bahwa shunt saat ini tidak dapat digunakan sama sekali, karena perbedaan potensial antara shunt fase akan berfluktuasi dalam ratusan volt dan saya tidak tahu pengendali umum yang input analognya dapat menahan ejekan tersebut.
Tentu saja, ada satu cara untuk menggunakan shunt saat ini - untuk setiap saluran perlu membuat input analog yang terisolasi secara galvanis. Tetapi jauh lebih mudah dan lebih dapat diandalkan untuk menggunakan sensor lain.
Dalam penganalisa kualitas saya, saya menggunakan pembagi tegangan resistif dan sensor arus efek hall jarak jauh.

Gbr. 7 Sensor arus dalam jaringan tiga fase
Seperti dapat dilihat dari gambar, kami menggunakan koneksi empat kawat. Tentu saja, alih-alih sensor arus pada efek hall, Anda dapat mengambil trafo saat ini atau loop Rogowski.
Alih-alih pembagi resistif, transformator tegangan dapat digunakan, baik untuk sistem empat-kawat dan tiga-kawat.
Dalam kasus terakhir, belitan primer transformator tegangan dihubungkan oleh segitiga, dan sekunder oleh bintang, titik umum yang merupakan titik umum dari rangkaian pengukuran

. Gambar. 8. Menggunakan transformator tegangan dalam jaringan tiga fase

2 Nilai arus tegangan dan arus



Waktunya telah tiba untuk menyelesaikan masalah pengukuran sinyal kita. Arti penting praktis bagi kami adalah nilai arus dan tegangan saat ini.
Biarkan saya mengingatkan Anda materi dari siklus sensor. Dengan menggunakan ADC mikrokontroler kami secara berkala, kami akan memperbaiki nilai tegangan sesaat. Jadi, selama periode pengukuran, kita akan memiliki sebuah array data dari tingkat nilai tegangan sesaat (untuk saat ini, semuanya serupa).

Gambar 9. Serangkaian nilai tegangan sesaat
Tugas kita adalah untuk menghitung nilai efektif. Untuk memulainya, kita menggunakan rumus integral:
(1)
Dalam sistem digital, kita harus membatasi diri pada kuantum waktu tertentu, jadi kita pergi ke penjumlahan:
(2)
Di mana periode pengambilan sampel sinyal kita, dan- jumlah sampel untuk periode pengukuran. Di suatu tempat di sini, dalam sebuah video, saya mulai menggosok game tentang kesetaraan daerah. Saya harus tidur hari itu. =)
Dalam mikrokontroler MSP430FE4252, yang digunakan dalam meter listrik merkuri fase tunggal, 4096 pembacaan dilakukan untuk periode pengukuran 1, 2 atau 4 detik. Pada T = 1s dan N = 4096 kita akan bergantung lebih lanjut. Selain itu, 4096 titik per detik akan memungkinkan kita untuk menggunakan algoritma transformasi Fourier cepat untuk menentukan spektrum harmonik hingga 40 harmonik, seperti yang disyaratkan oleh GOST. Tetapi lebih banyak tentang itu di seri berikutnya.
Kami menguraikan algoritme untuk program kami. Kami perlu memastikan permulaan ADC yang stabil setiap 1/8192 detik, karena kami memiliki dua saluran dan kami akan mengukur data ini secara bergantian. Untuk melakukan ini, konfigurasikan timer dan sinyal interupsi akan secara otomatis memulai kembali ADC. Semua ADC melakukan itu.
Kami akan menulis program masa depan di Arduino, karena banyak yang memilikinya. Sejauh ini kami memiliki minat akademis murni.
Memiliki frekuensi kuarsa sistem 16 MHz dan timer 8-bit (sehingga kehidupan tidak tampak seperti madu), kita perlu memastikan frekuensi operasi setiap timer terganggu dengan frekuensi 8192 Hz.
Kami sedih tentang fakta bahwa 16 MHz tidak sepenuhnya dibagi seperti yang kita butuhkan dan frekuensi akhir dari timer adalah 8198 Hz. Kami menutup mata terhadap kesalahan 0,04% dan masih membaca 4096 sampel per saluran.
Kami sedih bahwa gangguan overflow di Arduino sedang sibuk menghitung waktu (bertanggung jawab atas milis dan penundaan, jadi ini akan berhenti bekerja secara normal), jadi kami menggunakan interupsi sebagai perbandingan.
Dan kami tiba-tiba menyadari bahwa sinyal datang kepada kami bipolar, dan bahwa msp430fe4252 mengatasinya dengan sempurna. Kami puas dengan ADC unipolar, oleh karena itu, kami merakit konverter sederhana dari sinyal bipolar menjadi unipolar pada penguat operasional:

Gambar 10. Konverter dari sinyal bipolar menjadi unipolar
Selain itu, tugas kami adalah memastikan bahwa sinusoid kami berosilasi relatif terhadap setengah tegangan referensi - maka kami akan mengurangi setengah rentang tegangan atau mengaktifkan opsi pada pengaturan ADC. dan dapatkan nilai tanda.
Arduino memiliki 10-bit ADC, jadi kami kurangi setengah dari hasil yang tidak ditandatangani dalam 0-1023 dan dapatkan -512-511.Kami
memeriksa model yang dirakit dalam LTSpiceIV dan memastikan bahwa semuanya berfungsi sebagaimana mestinya. Dalam materi video, kami juga memverifikasi secara eksperimental.

Gambar 11. Hasil simulasi. Hijau adalah sinyal asli, biru adalah output
Sketsa untuk Arduino untuk satu saluran
void setup()
{
  autoadcsetup();
  DDRD |=(1<<PD2)|(1<<PD3);
  Serial.begin(38400);
}


double urms = 0;
double utemp = 0;
int umoment = 0;
int N = 0;
int flag = 0;
void loop()
{
  if (flag){
    flag = 0;
    Serial.println(urms);
  }
}
int i = 255;

void autoadcsetup(){
  //set up TIMER0 to  4096Hz
  //TIMER0_OVF will be the trigger for ADC
  /*normal mode, prescaler 16
   16MHz / 64 / 61 = 4098 Hz 0.04% to 4096Hz*/
  TCCR0B = (1 << CS01)|(1 << CS00);//timer frequency = clk/64
  OCR0A = 60;//61-1
  TIMSK0 = (1<<OCIE0A);
  //set ADC.
  ADMUX =  (1 << REFS0);//8-bit mode, ADC0 channel, AVVCC as ref
  ADCSRA = (1 << ADEN) | (1 << ADATE) | (1 << ADIE) | (1 << ADPS2);//TUrn ADC On, trigger enable, Interrupt enable, sysclk/16=1MHz_ADC_clk=76kHz conv freq(13ticks per conversion)
  ADCSRB = (1<< ADTS1) | (1<<ADTS0) | (1<<MUX5);//Auto trigger source
}

ISR(TIMER0_COMPA_vect){
  if (PIND & (1<<PD2)){
    PORTD &= ~(1<<PD2);
  }
  else{
    PORTD |=(1<<PD2);
  }
  TCNT0 = 0;

}


ISR(ADC_vect){

  if( ( UCSR0A & (1<<UDRE0)) ){
    umoment = ADCL;//copy result.
    umoment += (ADCH<<8);
    umoment = umoment - 512;
    utemp = utemp + pow((double)(umoment),2)/4096;
    N++;
    if (N == 4095){
      urms = sqrt(utemp)/102;
      N = 0;
      utemp = 0;
      flag = 1;
      if (PIND & (1<<PD3)){
        PORTD &= ~(1<<PD3);
      }
      else{
        PORTD |=(1<<PD3);
      }
    }
  }
}



Program ini ditulis dalam IDE Arduino untuk mikrokontroler ATmega1280. Pada papan debug saya, 8 saluran pertama diarahkan untuk kebutuhan internal papan, sehingga saluran ADC8 digunakan. Dimungkinkan untuk menggunakan sketsa ini untuk papan dengan ATmega168, namun, Anda harus memilih saluran yang benar.
Di dalam interupsi, kami bergerak-gerak beberapa pin layanan untuk melihat secara visual frekuensi kerja digital.
Beberapa kata tentang dari mana koefisien 102 berasal. Pada awal pertama, sinyal berbagai amplitudo dipasok dari generator, indikasi nilai tegangan efektif dibaca dari osiloskop, dan nilai yang dihitung dalam unit absolut ADC diambil dari konsol.
Umax, VUrms, MasukTerhitung
32.08212
2,51.73176
21.38141
1,51,03106
10,68471
0,50,35836
0,250,179sembilan belas

Membagi nilai-nilai kolom ketiga dengan nilai-nilai yang kedua, kami memperoleh rata-rata 102. Ini akan menjadi koefisien "kalibrasi" kami. Namun, dapat dicatat bahwa ketika tegangan menurun, akurasinya turun tajam. Ini karena sensitivitas ADC kami yang rendah. Faktanya, 10 debit untuk perhitungan akurat sangat kecil dan jika dimungkinkan untuk mengukur tegangan dalam soket dengan cara ini, menempatkan 10-bit ADC untuk mengukur arus yang dikonsumsi oleh beban akan menjadi kejahatan terhadap metrologi.

Pada titik ini, kita akan berhenti. Pada bagian selanjutnya, kami akan mempertimbangkan tiga pertanyaan lain dalam seri ini dan dengan lancar akan melanjutkan ke pembuatan perangkat itu sendiri.

Firmware yang disajikan, serta firmware lain untuk seri ini (karena saya merekam video lebih cepat daripada menyiapkan artikel), Anda akan menemukan di repositori di GitHub: github.com/radiolok/arduino_rms_count
Adapun pengembangan meteran listrik, referensi dari TI SimpleLink WiFi CC3200 akan diambil sebagai dasar SmartPlug , berita yang kemarin lalu terbang ke surat saya. Saya sangat suka mikrokontroler CC3200, jadi kami akan mengembangkan paket penguat untuk tempat makan siang yang ada dan menyadari semua fitur yang kami minati. Jangan lupa untuk membuatnya bekerja dengan baik pada mikrokontroler lain.

Komentar diundang progchip666, untuk komentar dan tambahan pada materi, serta smart_alex seperti sebelumnya tertarik mengukur arus dan tegangan menggunakan Arduino.

Source: https://habr.com/ru/post/id384597/


All Articles