- Apa itu SPWM (Sinusoidal Pulse Width Modulation)?
- Cara Kerja Inverter SPWM
- Komponen yang Diperlukan untuk Membangun Inverter SPWM
- Konstruksi Sirkuit Inverter SPWM
- Program Arduino untuk SPWM Inverter
- Menguji Sirkuit Inverter TL494 PWM
Sirkuit inverter sering dibutuhkan di mana tidak mungkin mendapatkan suplai AC dari jaringan. Rangkaian inverter digunakan untuk mengubah daya DC menjadi daya AC dan dapat dibagi menjadi dua jenis yaitu Inverter Gelombang Sinus Murni atau Inverter Gelombang Persegi Modifikasi. Inverter gelombang sinus murni ini sangat mahal, sedangkan inverter gelombang persegi yang dimodifikasi tidak mahal. Pelajari lebih lanjut tentang berbagai jenis inverter di sini.
Dalam artikel sebelumnya, saya telah menunjukkan kepada Anda bagaimana tidak membuat inverter gelombang persegi yang dimodifikasi dengan mengatasi masalah yang terkait dengannya. Jadi pada artikel ini, saya akan membuat inverter gelombang sinus murni sederhana menggunakan Arduino, dan menjelaskan prinsip kerja rangkaian.
Jika Anda membuat sirkuit ini, perlu diketahui bahwa sirkuit ini tidak memiliki umpan balik, tidak ada perlindungan arus berlebih, tidak ada perlindungan hubung singkat, dan tidak ada perlindungan suhu. Karenanya sirkuit ini dibuat dan didemonstrasikan untuk tujuan pendidikan saja, dan sama sekali tidak disarankan untuk membangun dan menggunakan jenis sirkuit ini untuk peralatan komersial. Namun Anda dapat menambahkannya ke sirkuit Anda jika diperlukan, sirkuit perlindungan yang umum digunakan seperti
Perlindungan Tegangan Lebih, Perlindungan Arus Lebih, Perlindungan polaritas Terbalik, Perlindungan Sirkuit Pendek, Pengontrol Hot Swap, dll. Telah dibahas.
PERHATIAN: Jika Anda membuat rangkaian jenis ini, harap ekstra hati-hati tentang tegangan tinggi dan lonjakan tegangan yang dihasilkan oleh sinyal switching ke input.
Apa itu SPWM (Sinusoidal Pulse Width Modulation)?
Seperti namanya, SPWM singkatan S inusoidal P Ulse W idth M odulation. Seperti yang mungkin sudah anda ketahui, sinyal PWM adalah sinyal dimana kita dapat merubah frekuensi pulsa serta on-time dan off-time, yang disebut juga duty cycle. Jika Anda ingin mempelajari lebih lanjut tentang PWM, Anda dapat membacanya di sini. Jadi, dengan memvariasikan siklus kerja, kami mengubah tegangan rata-rata pulsa. Gambar di bawah menunjukkan bahwa-
Jika kita mempertimbangkan sinyal PWM yang beralih antara 0 - 5V yang memiliki siklus kerja 100%, kita akan mendapatkan tegangan output rata-rata 5V, sekali lagi jika kita mempertimbangkan sinyal yang sama dengan siklus kerja 50%, kita akan dapatkan tegangan output 2.5V, dan untuk duty cycle 25%, setengahnya. Itu meringkas prinsip dasar sinyal PWM, dan kita dapat beralih ke pemahaman prinsip dasar sinyal SPWM.
Sebuah tegangan sinus terutama tegangan analogi yang alter yang besarnya dari waktu ke waktu, dan kita dapat mereproduksi perilaku ini dari gelombang sinus dengan terus berubah siklus tugas dari gelombang PWM, di bawah menunjukkan gambar itu.
Jika Anda melihat skema di bawah ini, maka akan terlihat ada kapasitor yang terhubung pada keluaran transformator. Kapasitor ini bertanggung jawab untuk menghaluskan sinyal AC dari frekuensi pembawa.
Sinyal input yang digunakan akan mengisi dan melepaskan kapasitor sesuai dengan sinyal input dan beban. Karena kami telah menggunakan sinyal SPWM frekuensi sangat tinggi, ia akan memiliki siklus kerja yang sangat kecil yaitu seperti 1%, siklus kerja 1% ini akan sedikit mengisi kapasitor, siklus kerja berikutnya adalah 5%, ini akan mengisi daya lagi kapasitor sedikit lagi, pulsa berikut akan memiliki siklus kerja 10% dan kapasitor akan mengisi sedikit lebih banyak, kami akan menerapkan sinyal sampai kami mencapai siklus kerja 100% dan dari sana, kami akan turun kembali menjadi 1%. Ini akan membuat kurva yang sangat halus seperti gelombang sinus pada keluarannya. Jadi, dengan memberikan nilai yang tepat dari siklus kerja pada input, kita akan memiliki gelombang sinusoidal pada outputnya.
Cara Kerja Inverter SPWM
Gambar di atas menunjukkan bagian penggerak utama inverter SPWM, dan seperti yang Anda lihat, kami telah menggunakan dua MOSFET N-channel dalam konfigurasi setengah jembatan untuk menggerakkan transformator rangkaian ini, untuk mengurangi kebisingan switching yang tidak diinginkan dan untuk melindungi MOSFET, kami telah menggunakan dioda 1N5819 sejajar dengan MOSFET. Untuk mengurangi lonjakan berbahaya yang dihasilkan di bagian gerbang, kami telah menggunakan resistor 4,7 ohm yang sejajar dengan dioda 1N4148. Akhirnya, BD139 dan BD 140 transistor dikonfigurasi dalam push-pull konfigurasiuntuk menggerakkan gerbang MOSFET, karena MOSFET ini memiliki kapasitansi gerbang yang sangat tinggi dan membutuhkan minimal 10V di pangkalan untuk menyala dengan benar. Pelajari lebih lanjut tentang cara kerja amplifier Dorong-Tarik di sini.
Untuk lebih memahami prinsip kerja rangkaian, kami telah menguranginya ke titik di mana bagian MOSFET ini AKTIF. Ketika MOSFET berada pada arus, pertama mengalir melalui transformator dan kemudian di-ground-kan oleh MOSFET, dengan demikian fluks magnet juga akan diinduksi ke arah arus mengalir, dan inti transformator akan melewati fluks magnet. di belitan sekunder, dan kita akan mendapatkan setengah siklus positif dari sinyal sinusoidal pada keluaran.
Pada siklus berikutnya, bagian bawah rangkaian ada di bagian atas rangkaian mati itulah sebabnya saya telah melepas bagian atas, sekarang arus mengalir ke arah yang berlawanan dan menghasilkan fluks magnet ke arah itu, sehingga membalikkan arah fluks magnet di inti. Pelajari lebih lanjut tentang cara kerja MOSFET di sini.
Sekarang kita semua tahu bahwa transformator bekerja dengan perubahan fluks magnet. Jadi, menyalakan dan mematikan MOSFET, satu terbalik ke yang lain dan melakukan itu 50 kali dalam satu detik, akan menghasilkan fluks magnet berosilasi yang bagus di dalam inti transformator dan fluks magnet yang berubah akan menginduksi tegangan pada kumparan sekunder sebagai kita tahu dengan hukum faraday. Begitulah cara kerja inverter dasar.
Rangkaian inverter SPWM lengkap yang digunakan dalam proyek ini diberikan di bawah ini.
Komponen yang Diperlukan untuk Membangun Inverter SPWM
Sl.No |
Bagian |
Tipe |
Kuantitas |
1 |
Atmega328P |
IC |
1 |
2 |
IRFZ44N |
Mosfet |
2 |
3 |
BD139 |
Transistor |
2 |
4 |
BD140 |
Transistor |
2 |
5 |
22pF |
Kapasitor |
2 |
6 |
10K, 1% |
Penghambat |
1 |
7 |
16MHz |
Kristal |
1 |
8 |
0.1uF |
Kapasitor |
3 |
9 |
4.7R |
Penghambat |
2 |
10 |
1N4148 |
Diode |
2 |
11 |
LM7805 |
Regulator tegangan |
1 |
12 |
200uF, 16V |
Kapasitor |
1 |
13 |
47uF, 16V |
Kapasitor |
1 |
14 |
2.2uF, 400V |
Kapasitor |
1 |
Konstruksi Sirkuit Inverter SPWM
Untuk demonstrasi ini, rangkaian dibangun di atas Veroboard, dengan bantuan skema, Pada keluaran transformator, sejumlah besar arus akan mengalir melalui sambungan, sehingga jumper sambungan harus setebal mungkin.
Program Arduino untuk SPWM Inverter
Sebelum kita melanjutkan dan mulai memahami kodenya, mari kita jelaskan dasar-dasarnya. Dari prinsip kerja di atas, Anda telah mempelajari bagaimana sinyal PWM akan terlihat pada output, sekarang pertanyaannya tetap bagaimana kita dapat membuat gelombang yang bervariasi pada pin output Arduino.
Untuk membuat sinyal PWM yang bervariasi, kita akan menggunakan 16-bit timer1 dengan pengaturan prescaler 1, yang akan memberi kita waktu 1600/16000000 = 0,1ms untuk setiap hitungan jika kita mempertimbangkan satu setengah siklus gelombang sinus, yang cocok tepat 100 kali dalam satu setengah siklus gelombang. Secara sederhana, kita dapat mengambil sampel gelombang sinus 200 kali.
Selanjutnya, kita harus membagi gelombang sinus menjadi 200 buah dan menghitung nilainya dengan korelasi amplitudo. Selanjutnya, kita harus mengubah nilai tersebut menjadi nilai penghitung waktu dengan mengalikannya dengan batas penghitung. Akhirnya, kita harus meletakkan nilai-nilai itu ke dalam tabel pencarian untuk dimasukkan ke penghitung dan kita akan mendapatkan gelombang sinus kita.
Untuk membuatnya lebih sederhana, saya menggunakan kode SPWM yang ditulis dengan sangat baik dari GitHub yang dibuat oleh Kurt Hutten.
Kode ini sangat sederhana, Kami memulai program kami dengan menambahkan file header yang diperlukan
#include #include
Selanjutnya, kita memiliki dua tabel pencarian tempat kita akan mendapatkan nilai penghitung waktu.
int lookUp1 = {50, 100, 151, 201, 250, 300, 349, 398, 446, 494, 542, 589, 635, 681, 726, 771, 814, 857, 899, 940, 981, 1020, 1058, 1095, 1131, 1166, 1200, 1233, 1264, 1294, 1323, 1351, 1377, 1402, 1426, 1448, 1468, 1488, 1505, 1522, 1536, 1550, 1561, 1572, 1580, 1587, 1593, 1597, 1599, 1600, 1599, 1597, 1593, 1587, 1580, 1572, 1561, 1550, 1536, 1522, 1505, 1488, 1468, 1448, 1426, 1402, 1377, 1351, 1323, 1294, 1264, 1233, 1200, 1166, 1131, 1095, 1058, 1020, 981, 940, 899, 857, 814, 771, 726, 681, 635, 589, 542, 494, 446, 398, 349, 300, 250, 201, 151, 100, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0}; int lookUp2 = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 100, 151, 201, 250, 300, 349, 398, 446, 494, 542, 589, 635, 681, 726, 771, 814, 857, 899, 940, 981, 1020, 1058, 1095, 1131, 1166, 1200, 1233, 1264, 1294, 1323, 1351, 1377, 1402, 1426, 1448, 1468, 1488, 1505, 1522, 1536, 1550, 1561, 1572, 1580, 1587, 1593, 1597, 1599, 1600, 1599, 1597, 1593, 1587, 1580, 1572, 1561, 1550, 1536, 1522, 1505, 1488, 1468, 1448, 1426, 1402, 1377, 1351, 1323, 1294, 1264, 1233, 1200, 1166, 1131, 1095, 1058, 1020, 981, 940, 899, 857, 814, 771, 726, 681, 635, 589, 542, 494, 446, 398, 349, 300, 250,201, 151, 100, 50, 0};
Selanjutnya, di bagian penyetelan , kami menginisialisasi register kontrol penghitung waktu agar jelas pada masing-masing. Untuk informasi lebih lanjut, Anda harus melalui lembar data IC atmega328.
TCCR1A = 0b10100010; / * 10 jelas pada pertandingan, atur di BAWAH untuk compA. 10 jelas pada pertandingan, atur di BAWAH untuk compB. 00 10 WGM1 1: 0 untuk bentuk gelombang 15. * / TCCR1B = 0b00011001; / * 000 11 WGM1 3: 2 untuk bentuk gelombang 15. 001 tidak ada prescale di konter. * / TIMSK1 = 0b00000001; / * 0000000 1 TOV1 Flag interrupt aktifkan. * /
Setelah itu, kami menginisialisasi register penangkap masukan dengan nilai yang telah ditentukan 16000 karena ini akan membantu kami menghasilkan tepat 200 sampel.
ICR1 = 1600; // Periode kristal 16MHz, untuk frekuensi switching 100KHz untuk 200 subdivisi per siklus gelombang sinus 50Hz.
Selanjutnya, kami mengaktifkan interupsi global dengan memanggil fungsi, sei ();
Terakhir, kami menetapkan Arduino pin 9 dan 10 sebagai output
DDRB = 0b00000110; // Tetapkan PB1 dan PB2 sebagai keluaran.
Itu menandai akhir dari fungsi pengaturan.
Bagian loop dari kode tetap kosong karena ini adalah program yang digerakkan oleh penghitung penghitung waktu.
void loop () {; /*Tidak melakukan apapun…. selama-lamanya!*/}
Selanjutnya, kita telah mendefinisikan vektor overflow timer1, fungsi interupsi ini mendapat panggilan setelah timer1 meluap dan menghasilkan interupsi.
ISR (TIMER1_OVF_vect) {
Selanjutnya, kami mendeklarasikan beberapa variabel lokal sebagai variabel statis dan kami telah mulai memberi makan nilai-nilai untuk menangkap dan membandingkan resistor.
statis int num; trigonometri statis; // ubah duty-cycle setiap periode. OCR1A = lookUp1; OCR1B = lookUp2;
Akhirnya, kami meningkatkan penghitung sebelumnya untuk memberi makan nilai berikutnya ke penangkapan dan membandingkan resistor, yang menandai akhir kode ini.
if (++ num> = 200) {// Pre-increment num kemudian periksa di bawah 200. num = 0; // Setel ulang num. trig = trigonometri ^ 0b00000001; digitalWrite (13, trig); }
Menguji Sirkuit Inverter TL494 PWM
Untuk menguji sirkuit, pengaturan berikut digunakan.
- Baterai timbal-asam 12V.
- Trafo yang memiliki keran 6-0-6 dan keran 12-0-12
- Bola lampu pijar 100W sebagai beban
- Meco 108B + TRMS Multimeter
- Meco 450B + TRMS Multimeter
Sinyal Output dari Arduino:
Setelah saya mengunggah kode. Saya mengukur sinyal SPWM keluaran dari dua pin Arduino yang terlihat seperti gambar di bawah ini,
Jika kita memperbesar sedikit, kita dapat melihat siklus tugas gelombang PWM yang selalu berubah.
Selanjutnya, gambar di bawah ini menunjukkan sinyal keluaran dari transformator.
Sirkuit Inverter SPWM dalam keadaan Ideal:
Seperti yang Anda lihat dari gambar di atas, sirkuit ini menarik sekitar 13W saat berjalan ideal
Tegangan Output Tanpa Beban:
Tegangan keluaran dari rangkaian inverter ditunjukkan di atas, ini adalah tegangan yang keluar pada keluaran tanpa ada beban yang terpasang.
Konsumsi Daya Input:
Gambar di atas menunjukkan daya input yang dikonsumsi ic ketika beban 40W dipasang.
Konsumsi Daya Output:
Gambar di atas menunjukkan daya keluaran yang dikonsumsi oleh rangkaian ini, (bebannya adalah bola lampu pijar 40W)
Dengan itu, kami menyimpulkan bagian pengujian sirkuit. Anda dapat melihat video di bawah ini untuk demonstrasi. Saya harap Anda menyukai artikel ini dan belajar sedikit tentang SPWM dan teknik penerapannya. Teruslah membaca, terus belajar, terus membangun dan sampai jumpa di proyek berikutnya.