Daftar Isi:
- Langkah 1: Komponen Diperlukan
- Langkah 2: Diagram Skema
- Langkah 3: Memahami Sirkuit
- Langkah 4: Perhitungan Frekuensi dan Tegangan
- Langkah 5: Kode Arduino
- Langkah 6: Kesimpulan
Video: Pengukuran Frekuensi dan Tegangan Power Supply Menggunakan Arduino: 6 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:54
Pengantar:
Tujuan dari proyek ini adalah untuk mengukur frekuensi dan tegangan suplai, yaitu antara 220 hingga 240 Volt dan 50Hz di India. Saya menggunakan Arduino untuk menangkap sinyal dan menghitung frekuensi dan tegangan, Anda dapat menggunakan mikrokontroler atau papan lain yang Anda miliki. Sirkuit membutuhkan beberapa komponen dan cukup akurat untuk semua tujuan praktis.
Langkah 1: Komponen Diperlukan
- Arduino Uno
- IC LM358
- Trafo step down (220V ke 12V)
-
Kapasitor:
- 0.1uF
- 2 x 1uF
-
Resistor:
- 3 x 1kOhm
- 2 x 100kOhm
- 1.5kOhm
- 3.3kOhm
- 6.8kOhm
- 3x1N4148 dioda
- Papan Roti dan kabel Jumper (opsional)
Langkah 2: Diagram Skema
Pada rangkaian di atas, primer transformator terhubung ke suplai utama dan primer terhubung ke rangkaian pengukuran kami
Langkah 3: Memahami Sirkuit
Menurut fungsinya, rangkaian ini dapat dibagi menjadi empat bagian:
A: Sirkuit Zero Crossing Detector
Sirkuit ini menghasilkan pulsa persegi 5V setiap kali gelombang sinus berubah dari positif ke negatif. Resistor R1 yang dikombinasikan dengan D1 dan D2 membatasi ayunan tegangan input pada sambungan dioda menjadi -0,6V hingga +5,6V (dengan asumsi tegangan maju dioda menjadi 0,6V). Selanjutnya, Anda dapat meningkatkan rentang tegangan input rangkaian dengan meningkatkan nilai R1.
Resistor R2 dan R3 membentuk pembagi tegangan untuk membatasi ayunan tegangan negatif hingga -0,24Volts karena tegangan mode-umum input LM358 dibatasi hingga -0,3Volts.
Resistor R4, R5, kapasitor C1 dan op-amp (di sini digunakan sebagai pembanding) membentuk rangkaian Pemicu Schmitt di mana resistor R4 dan R5 mengatur histeresis pada input +49.5mV di atas tanah. Output dari Schmitt Trigger diumpankan ke PIN2 Arduino untuk diproses lebih lanjut.
B: Isolasi dan Tegangan Turun
Seperti namanya, bagian ini mengisolasi dan menurunkan tegangan hingga sekitar 12Vrms. Tegangan step-down selanjutnya diumpankan ke sirkuit instrumentasi.
C: Sirkuit Detektor Puncak
Rangkaian ini menentukan tegangan puncak maksimum dari sinyal input. Pembagi resistor R6 dan R7 mengurangi tegangan input dengan faktor 0,23 (12Vrms dikurangi menjadi 2,76Vrms). Dioda D3 hanya melakukan setengah siklus positif dari sinyal. Tegangan melintasi C2 meningkat hingga nilai puncak dari sinyal yang diperbaiki, yang diumpankan ke pin analog Arduino A0 untuk menghitung tegangan lebih lanjut.
Selain itu, Anda dapat mengganti rangkaian ini dengan rangkaian detektor puncak presisi seperti yang disebutkan di sini. Tetapi untuk tujuan demonstrasi saya, rangkaian di atas sudah cukup.
D: Arduino
Pada bagian ini, Arduino menangkap pulsa persegi yang dihasilkan oleh rangkaian Schmitt Trigger dan membaca tegangan analog dari rangkaian detektor puncak. Data diproses lebih lanjut untuk menentukan periode waktu (karenanya frekuensi) dari pulsa persegi (yang sama dengan waktu suplai ac orang) dan tegangan suplai.
Langkah 4: Perhitungan Frekuensi dan Tegangan
Perhitungan frekuensi:
Dengan bantuan Arduino, kita dapat mengukur periode waktu T dari sinyal. Pulsa gelombang persegi dari detektor zero-crossing diumpankan ke pin 2, dari sana kita dapat mengukur periode waktu setiap pulsa. Kita dapat menggunakan timer internal Arduino (khususnya Timer1) untuk menghitung periode waktu antara dua tepi Rising dari pulsa persegi dengan bantuan interupsi. Timer bertambah 1 per siklus clock (tanpa prescaler = 1) dan nilainya disimpan dalam register TCNT1. Oleh karena itu jam 16Mhz menambah penghitung sebesar 16 setiap mikrodetik. Demikian pula untuk prescaler = 8, timer bertambah 2 setiap mikrodetik. Oleh karena itu periode waktu antara dua sisi naik
T = (nilai TCNT1) / waktu yang dibutuhkan untuk setiap hitungan
Dimana, waktu yang dibutuhkan untuk setiap hitungan = prescaler / (kecepatan clock Arduino (16MHz)
Oleh karena itu, frekuensi f = 1/T = (Kecepatan clock Arduino (16MHz) / (Prescaler * nilai TCNT!)
Oleh karena itu kecepatan timer (Hz) diberikan oleh = (kecepatan clock Arduino (16MHz)) / prescaler
dan frekuensi sinyal diberikan oleh = (kecepatan clock Arduino
Sejalan dengan itu, kita dapat menghitung frekuensi f dari relasi f = 1/T.
Perhitungan tegangan:
ADC Arduino onboard memiliki resolusi 10 bit (nilai yang mungkin = 2^10 = 1024), mengembalikan nilai dalam kisaran 0-1023. Untuk menghitung tegangan analog yang sesuai V kita harus menggunakan hubungan berikut:
V = (Bacaan ADC) * 5/1023
Untuk menghitung tegangan suplai Vs(rms) kita harus memperhitungkan Rasio Transformator, pembagi Resistor R6R7 dan rangkaian detektor puncak. Kita dapat dengan mudah menggabungkan berbagai faktor/rasio sebagai:
Rasio transformator = 12/230 = 0,052
Pembagi resistor = R7/(R6 + R7) = 0,23
Pada rangkaian detektor puncak = 1,414
Vs(rms) = V/(1.414*0.052*0.23) = (Bacaan ADC) * 0.289
Perlu dicatat bahwa nilai ini jauh dari nilai sebenarnya, terutama karena kesalahan rasio transformator aktual dan penurunan tegangan maju dioda. Salah satu cara untuk menghindari ini adalah dengan menentukan faktor setelah merakit rangkaian. Yaitu dengan mengukur tegangan suplai dan tegangan melintasi kapasitor C2 secara terpisah dengan multimeter, kemudian menghitung Vs(rms) sebagai berikut:
Vs(rms) = ((Tegangan Pasokan * 5)/(Tegangan di C2 *1023))*(Pembacaan ADC)
dalam kasus saya, Vs(rms) = 0,33*(Membaca ADC)
Langkah 5: Kode Arduino
#define volt_in A0 //pin pembacaan voltase analog
volatil uint16_t t_period; uint16_t ADC_nilai = 0; float volt, frekuensi; void isr() { t_period = TCNT1; //menyimpan nilai TCNT1 dalam t_period TCNT1 = 0; //reset Timer1 ADC_value = analogRead(volt_in); //baca tegangan analog } float get_freq() { uint16_t timer = t_period; if(timer==0) kembalikan 0; // untuk menghindari pembagian dengan nol, return 16000000.0/(8UL*timer); // frekuensi diberikan oleh f = clk_freq/(prescaler*timeperiod)} void setup() { TCCR1A = 0; TCCR1B = bit(CS11); //set prescaler ke 8 TCNT1 = 0; //reset nilai Timer1 TIMSK1 = bit(TOIE1); //aktifkan timer1 overflow interupsi EIFR |= bit(INTF0); // hapus flag interupsi INT0 Serial.begin(9600); } void loop() { attachInterrupt(0, isr, NAIK); //mengaktifkan penundaan interupsi eksternal (INT0)(1000); detachInterrupt(0); frekuensi = get_freq(); volt = nilai_ADC*0,33; penggemar tali; buf += String(frekuensi, 3); buf += F("Hz\t"); buf += String(volt); buf += F("Volt"); Serial.println(buf); }
Langkah 6: Kesimpulan
Anda dapat merakit sirkuit di papan tempat memotong roti dan mengubah kode dan menambahkan Kartu SD untuk menyimpan data, yang nantinya dapat dianalisis. Salah satu contohnya adalah, Anda dapat menganalisis tegangan dan frekuensi pada jam sibuk.
Rangkaian yang saya rakit di papan tempat memotong roti menggunakan LM324(quad opamp) bukan LM358(dual opamp) karena saya tidak memiliki IC itu pada saat itu dan penguncian nasional karena pandemi COVID-19 membuat saya sulit untuk mendapatkan IC baru. Namun demikian, itu tidak akan mempengaruhi kerja sirkuit.
Jangan ragu untuk berkomentar di bawah untuk saran dan pertanyaan apa pun.
Direkomendasikan:
Monitor Tegangan untuk Baterai Tegangan Tinggi: 3 Langkah (dengan Gambar)
Monitor Tegangan untuk Baterai Tegangan Tinggi: Dalam panduan ini saya akan menjelaskan kepada Anda bagaimana saya membuat monitor tegangan baterai untuk longboard listrik saya. Pasang sesuka Anda dan sambungkan hanya dua kabel ke baterai Anda (Gnd dan Vcc). Panduan ini mengasumsikan bahwa tegangan baterai Anda melebihi 30 volt, w
Pengukuran Tegangan DC Menggunakan Arduino: 5 Langkah
Pengukuran Tegangan Dc Menggunakan Arduino: Dalam proyek ini saya akan menunjukkan kepada Anda bagaimana mengukur tegangan Dc hingga 50v dengan menggunakan arduino dan dan menampilkan pada bagian modul tampilan OLED membutuhkan arduino UNOoled display10k ohm resistor1k ohm resistorjumper kabel
Catu Daya DC Tegangan Disesuaikan Menggunakan Regulator Tegangan LM317: 10 Langkah
Catu Daya DC Tegangan Disesuaikan Menggunakan Regulator Tegangan LM317: Pada proyek ini, saya telah merancang catu daya DC tegangan sederhana yang dapat disesuaikan menggunakan IC LM317 dengan diagram rangkaian catu daya LM317. Karena rangkaian ini memiliki penyearah jembatan bawaan sehingga kita dapat langsung menghubungkan suplai AC 220V/110V pada input
Pengukuran Tegangan Menggunakan Arduino: 5 Langkah
Pengukuran Tegangan Menggunakan Arduino: Mengukur tegangan cukup mudah menggunakan mikrokontroler apa pun dibandingkan dengan pengukuran arus. Mengukur tegangan menjadi penting jika Anda bekerja dengan baterai atau Anda ingin membuat catu daya sendiri yang dapat disesuaikan. Padahal cara ini berlaku
Mengubah Tegangan Output Power Supply Murah: 3 Langkah
Mengubah Tegangan Keluaran Catu Daya Murah: Instruksi ini menunjukkan cara mengganti bagian di dalam catu daya kecil untuk mengubah tegangan keluaran agar sesuai dengan kebutuhan Anda. Untuk proyek DIY saya membutuhkan tegangan stabil tepat 7V dc dan sekitar 100 mA. Melihat-lihat koleksi suku cadang saya, saya menemukan