- Apa itu SPWM (Modulasi Lebar Pulse Sinusoidal)?
- Bagaimana Inverter SPWM Berfungsi
- Komponen yang Diperlukan untuk Membina SPWM Inverter
- Pembinaan Litar Inverter SPWM
- Program Arduino untuk SPWM Inverter
- Menguji Litar Inverter TL494 PWM
Litar penyongsang sering diperlukan di mana tidak mungkin mendapatkan bekalan AC dari grid. Litar penyongsang digunakan untuk menukar kuasa DC menjadi kuasa AC dan ia boleh dibahagikan kepada dua jenis iaitu Pure Sine Wave Inverter atau Modified Square Wave Inverter. Penyongsang gelombang sinus tulen ini sangat mahal, di mana penyongsang gelombang persegi yang diubahsuai tidak mahal. Ketahui lebih lanjut mengenai pelbagai jenis penyongsang di sini.
Dalam artikel sebelumnya, saya telah menunjukkan kepada anda bagaimana untuk tidak membuat penyongsang gelombang persegi yang diubah dengan menangani masalah yang berkaitan dengannya. Jadi dalam artikel ini, saya akan membuat penyongsang gelombang sinus tulen sederhana menggunakan Arduino, dan menerangkan prinsip kerja litar.
Sekiranya anda membuat litar ini, harap maklum bahawa litar ini tidak mempunyai maklum balas, tidak ada perlindungan arus lebihan, tidak ada perlindungan litar pintas, dan tidak ada perlindungan suhu. Oleh itu litar ini dibina dan diperagakan untuk tujuan pendidikan sahaja, dan sama sekali tidak digalakkan untuk membina dan menggunakan litar jenis ini untuk peralatan komersial. Walau bagaimanapun, anda boleh menambahkannya ke litar anda jika diperlukan, litar perlindungan yang biasa digunakan seperti
Perlindungan Over Voltage, Overcurrent Protection, Reverse polarity Protection, Short Circuit Protection, Hot Swap controller, dan lain-lain telah dibincangkan.
PERHATIAN: Sekiranya anda membuat litar jenis ini, harap berhati-hati dengan lonjakan voltan tinggi dan voltan yang dihasilkan oleh isyarat beralih ke input.
Apa itu SPWM (Modulasi Lebar Pulse Sinusoidal)?
Seperti namanya, SPWM bermaksud S inusoidal P ulse W idth M odulation. Seperti yang anda sudah ketahui, isyarat PWM adalah isyarat di mana kita dapat mengubah frekuensi denyut nadi serta waktu dan waktu tidak aktif, yang juga dikenali sebagai kitaran tugas. Sekiranya anda ingin mengetahui lebih lanjut mengenai PWM, anda boleh membacanya di sini. Oleh itu, dengan mengubah kitaran tugas, kita mengubah voltan purata nadi. Gambar di bawah menunjukkan bahawa-
Sekiranya kita menganggap isyarat PWM yang beralih antara 0 - 5V yang mempunyai kitaran tugas 100%, kita akan mendapat voltan keluaran rata-rata 5V, sekali lagi jika kita mempertimbangkan isyarat yang sama dengan kitaran tugas 50%, kita akan dapatkan voltan keluaran 2.5V, dan untuk kitaran tugas 25%, separuh daripada itu. Itu merangkum prinsip asas isyarat PWM, dan kita dapat terus memahami prinsip asas isyarat SPWM.
A voltan sinus terutamanya voltan analogi yang mengubah yang magnitud masa ke masa, dan kita boleh menghasilkan semula tingkah laku ini gelombang sinus dengan sentiasa berubah kitar tugas gelombang PWM, di bawah menunjukkan gambar itu.
Sekiranya anda melihat skema di bawah, ia akan melihat ada kapasitor yang disambungkan pada output pengubah. Kapasitor ini bertanggungjawab untuk melancarkan isyarat AC dari frekuensi pembawa.
Isyarat input yang digunakan akan mengecas dan melepaskan kapasitor mengikut isyarat dan beban input . Oleh kerana kita telah menggunakan isyarat SPWM frekuensi yang sangat tinggi, ia akan mempunyai kitaran tugas yang sangat kecil seperti 1%, kitaran tugas 1% ini akan mengecas kapasitor sedikit, kitaran tugas seterusnya adalah 5%, ini sekali lagi akan dicas kapasitor sedikit lebih banyak, nadi berikut akan mempunyai kitaran tugas 10% dan kapasitor akan dikenakan sedikit lebih banyak, kita akan menggunakan isyarat sehingga kita mencapai kitaran tugas 100% dan dari sana, kita akan turun ke bawah hingga 1%. Ini akan mewujudkan lekukan yang sangat halus seperti gelombang sinus pada output. Oleh itu, dengan memberikan nilai yang tepat dari kitar tugas pada input, kita akan mempunyai gelombang sinusoidal pada output.
Bagaimana Inverter SPWM Berfungsi
Gambar di atas menunjukkan bahagian pemanduan utama penyongsang SPWM, dan seperti yang anda lihat, kami telah menggunakan dua saluran N-MOSFET dalam konfigurasi setengah jambatan untuk menggerakkan pengubah litar ini, untuk mengurangkan bunyi beralih yang tidak diingini dan untuk melindungi MOSFET, kami telah menggunakan 1N5819 diod selari dengan MOSFET. Untuk mengurangkan lonjakan berbahaya yang dihasilkan di bahagian gerbang, kami telah menggunakan perintang 4.7 ohm selari dengan dioda 1N4148. Akhirnya, BD139 dan BD 140 transistor dikonfigurasi dalam tolak-tarik konfigurasiuntuk menggerakkan gerbang MOSFET, kerana MOSFET ini mempunyai kapasitansi gerbang yang sangat tinggi dan memerlukan minimum 10V di pangkalan untuk menyala dengan betul. Ketahui lebih lanjut mengenai cara kerja penguat Push-Pull di sini.
Untuk lebih memahami prinsip kerja litar, kami telah mengurangkannya ke tahap di mana bahagian MOSFET ini AKTIF. Apabila MOSFET berada pada arus, pertama mengalir melalui pengubah dan kemudian dibumikan oleh MOSFET, dengan itu fluks Magnetik juga akan diarahkan ke arah di mana arus mengalir, dan inti pengubah akan melewati fluks magnet dalam penggulungan sekunder, dan kita akan mendapat separuh kitaran positif sinusoidal pada output.
Pada kitaran seterusnya, bahagian bawah litar berada di bahagian atas litar mati maka itulah sebabnya saya telah mengeluarkan bahagian atas, sekarang arus mengalir ke arah yang bertentangan dan menghasilkan fluks magnet ke arah itu, sehingga membalikkan arah fluks magnet di teras. Ketahui lebih lanjut mengenai cara kerja MOSFET di sini.
Sekarang, kita semua tahu bahawa pengubah berfungsi dengan perubahan fluks magnetik. Oleh itu, menghidupkan dan mematikan kedua-dua MOSFET, satu terbalik ke yang lain dan melakukannya 50 kali dalam satu saat, akan menghasilkan fluks magnet berayun yang bagus di dalam teras pengubah dan fluks magnet yang berubah akan menyebabkan voltan pada gegelung sekunder sebagai kita tahu dengan undang-undang faraday. Itulah cara penyongsang asas berfungsi.
Litar penyongsang SPWM lengkap yang digunakan dalam projek ini diberikan di bawah.
Komponen yang Diperlukan untuk Membina SPWM Inverter
Sl.No |
Bahagian |
Jenis |
Kuantiti |
1 |
Atmega328P |
KAD PENGENALAN |
1 |
2 |
IRFZ44N |
Mosfet |
2 |
3 |
BD139 |
Transistor |
2 |
4 |
BD140 |
Transistor |
2 |
5 |
22pF |
Kapasitor |
2 |
6 |
10K, 1% |
Perintang |
1 |
7 |
16MHz |
Kristal |
1 |
8 |
0.1uF |
Kapasitor |
3 |
9 |
4.7R |
Perintang |
2 |
10 |
1N4148 |
Diod |
2 |
11 |
LM7805 |
Pengatur Voltan |
1 |
12 |
200uF, 16V |
Kapasitor |
1 |
13 |
47uF, 16V |
Kapasitor |
1 |
14 |
2.2uF, 400V |
Kapasitor |
1 |
Pembinaan Litar Inverter SPWM
Untuk demonstrasi ini, litar dibina di Veroboard, dengan bantuan skema, Pada output transformer, sejumlah besar arus akan mengalir melalui sambungan, jadi pelompat sambungan harus setebal mungkin.
Program Arduino untuk SPWM Inverter
Sebelum kita meneruskan dan mula memahami kodnya, mari kita jelaskan asasnya. Dari prinsip kerja di atas, anda telah mengetahui bagaimana isyarat PWM akan kelihatan pada output, sekarang persoalannya tetap bagaimana kita dapat membuat gelombang yang berbeza-beza pada pin output Arduino.
Untuk membuat isyarat PWM yang berbeza-beza, kami akan menggunakan 16-bit timer1 dengan suasana prescaler daripada 1, yang akan memberi kita 1600/16000000 = 0.1ms masa bagi setiap pertuduhan jika kita menganggap setengah kitaran tunggal gelombang sinus, yang tepat 100 kali dalam satu setengah kitaran gelombang. Secara sederhana, kita akan dapat mencuba gelombang sinus kita 200 kali.
Seterusnya, kita harus membahagikan gelombang sinus kepada 200 keping dan mengira nilainya dengan korelasi amplitud. Seterusnya, kita harus menukar nilai tersebut ke nilai penghitung pemasa dengan mengalikannya dengan had pembilang. Akhirnya, kita harus memasukkan nilai-nilai tersebut ke dalam jadual pencarian untuk memasukkannya ke kaunter dan kita akan mendapat gelombang sinus kita.
Untuk membuat sesuatu menjadi lebih sederhana, saya menggunakan kod SPWM yang ditulis dengan sangat baik dari GitHub yang dibuat oleh Kurt Hutten.
Kodnya sangat mudah, Kami memulakan program kami dengan menambahkan fail header yang diperlukan
#sertakan #sertakan
Seterusnya, kami mempunyai dua jadual carian dari mana kami akan mendapatkan nilai pembilang pemasa.
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, 00, 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, 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};
Seterusnya, di bahagian persediaan , kami menginisialisasi daftar kawalan kaunter pemasa agar jelas pada masing-masing. Untuk maklumat lebih lanjut, anda perlu melalui lembar data IC atmega328.
TCCR1A = 0b10100010; / * 10 jelas pada perlawanan, ditetapkan di BOTTOM untuk compA. 10 jelas pada perlawanan, ditetapkan di BOTTOM untuk compB. 00 10 WGM1 1: 0 untuk bentuk gelombang 15. * / TCCR1B = 0b00011001; / * 000 11 WGM1 3: 2 untuk bentuk gelombang 15. 001 tiada prescale di kaunter. * / TIMSK1 = 0b00000001; / * 0000000 1 TOV1 Bendera mengganggu diaktifkan. * /
Selepas itu, kami menginisialisasi daftar tangkapan input dengan nilai yang telah ditentukan 16000 kerana ini akan membantu kita menghasilkan tepat 200 sampel.
ICR1 = 1600; // Tempoh untuk kristal 16MHz, untuk frekuensi beralih 100KHz untuk 200 subdivisi per kitaran gelombang sinus 50Hz.
Seterusnya, kami mengaktifkan gangguan global dengan memanggil fungsi, sei ();
Akhirnya, kami menetapkan Arduino pin 9 dan 10 sebagai output
DDRB = 0b00000110; // Tetapkan PB1 dan PB2 sebagai output.
Itu menandakan berakhirnya fungsi persediaan.
Bahagian gelung kod tetap kosong kerana merupakan program yang didorong oleh gangguan pemasa.
gelung kekosongan () {; /*Tidak buat apa-apa…. selamanya!*/}
Seterusnya, kami telah menentukan vektor limpahan timer1, fungsi interupsi ini mendapat panggilan setelah pemasa1 meluap dan menghasilkan gangguan.
ISR (TIMER1_OVF_vect) {
Seterusnya, kami menyatakan beberapa pemboleh ubah tempatan sebagai pemboleh ubah statik dan kami telah mulai memberi nilai kepada penangkapan dan membandingkan perintang.
bilangan int statik; trig char statik; // ubah kitaran tugas setiap tempoh. OCR1A = lookUp1; OCR1B = lookUp2;
Akhirnya, kami menambah kaunter untuk memberi nilai seterusnya kepada penangkap dan membandingkan perintang, yang menandakan akhir kod ini.
jika (++ num> = 200) {// Nombor pra kenaikan maka periksa angka di bawah 200. num = 0; // Tetapkan semula nombor. trig = trig ^ 0b00000001; digitalWrite (13, trig); }
Menguji Litar Inverter TL494 PWM
Untuk menguji litar, persediaan berikut digunakan.
- Bateri asid plumbum 12V.
- Pengubah yang mempunyai ketukan 6-0-6 dan ketukan 12-0-12
- Mentol lampu pijar 100W sebagai beban
- Meco 108B + TRMS Multimeter
- Meco 450B + TRMS Multimeter
Isyarat Keluaran dari Arduino:
Setelah saya memuat naik kodnya. Saya mengukur isyarat output SPWM dari dua pin Arduino yang kelihatan seperti gambar di bawah,
Sekiranya kita mengezum sedikit, kita dapat melihat kitaran tugas gelombang PWM yang sentiasa berubah.
Seterusnya, gambar di bawah menunjukkan isyarat output dari pengubah.
Litar Inverter SPWM dalam keadaan Ideal:
Seperti yang anda lihat dari gambar di atas, litar ini menarik sekitar 13W sambil berjalan dengan ideal
Voltan Keluaran Tanpa Beban:
Voltan keluaran litar penyongsang ditunjukkan di atas, ini adalah voltan yang keluar pada keluaran tanpa beban terpasang.
Penggunaan Kuasa Input:
Gambar di atas menunjukkan daya input yang digunakan oleh IC semasa beban 40W terpasang.
Penggunaan Kuasa Keluaran:
Gambar di atas menunjukkan daya output yang digunakan oleh litar ini, (bebannya adalah lampu pijar 40W)
Dengan itu, kami menyimpulkan bahagian ujian litar. Anda boleh melihat video di bawah ini untuk demonstrasi. Saya harap anda menyukai artikel ini dan mengetahui sedikit tentang SPWM dan teknik pelaksanaannya. Terus membaca, terus belajar, terus membina dan saya akan melihat anda dalam projek seterusnya.