Daftar Isi:
- Langkah 1: Menghasilkan Sinyal Pwm untuk 50Hz
- Langkah 2: Program Arduino untuk Siklus Tugas Variabel
- Langkah 3: Bergantian pada 50Hz Arduino Pins
- Langkah 4: Mengemudi Jembatan H dan Memfilter Sinyal Pwm
Video: Arduino Sinewave untuk Inverter: 4 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:57
Dalam proyek ini saya telah menghasilkan sinyal SPWM (sine wave pulse wide modulated) dari dua output digital arduino pwm.
Karena untuk membuat program seperti itu saya harus berbicara tentang banyak fungsi dan sifat lain dari proyek arduino lengkap termasuk gambar osiloskop dan untuk frekuensi yang berbeda, silakan kunjungi situs web saya:
zona proyek
Langkah 1: Menghasilkan Sinyal Pwm untuk 50Hz
Untuk menghasilkan sinyal 50Hz pada frekuensi yang lebih tinggi, perlu dilakukan beberapa perhitungan. Frekuensi dari arduino bisa pada 8MHz, tetapi kami menginginkan sinyal dengan siklus tugas variabel.
Untuk memahami jenis-jenis siklus tugas variabel arduino Anda dapat membaca 3 bagian ini dari posting yang sama 1, 2 dan 3.
Mari kita asumsikan frekuensi kita adalah 50Hz yang berarti periode waktunya adalah 20ms. Jadi 10 ms adalah periode setengah siklus. Dalam 10ms itu kita perlu memiliki banyak pulsa dengan siklus tugas yang berbeda dimulai dengan siklus tugas kecil, di tengah sinyal kita memiliki siklus tugas maksimum dan selesai juga dengan siklus tugas kecil. Untuk menghasilkan gelombang sinus kita akan menggunakan dua pin satu untuk setengah siklus positif dan satu untuk setengah siklus negatif. Pada postingan kami ini kami menggunakan pin 5 dan 6 yang artinya Timer 0.
Untuk sinyal halus kami memilih fase yang benar pwm pada frekuensi 31372 Hz-lihat posting sebelumnya. Salah satu masalah terbesar adalah bagaimana kita menghitung siklus kerja yang diperlukan untuk setiap pulsa. Jadi, karena frekuensi kita adalah f=31372Hz, periode untuk setiap pulsa adalah T=1/31372=31,8 us, jadi jumlah pulsa untuk setengah siklus adalah N=10ms/31.8us=314 pulsa. Sekarang untuk menghitung siklus kerja untuk setiap pulsa kita memiliki y = sinx, tetapi dalam persamaan ini kita membutuhkan derajat sehingga setengah siklus memiliki 180 derajat untuk 314 pulsa. Untuk setiap pulsa kita memiliki 180/314=0.57deg/pulsa. Itu berarti untuk setiap pulsa kita bergerak maju dengan 0.57deg.
y adalah siklus kerja dan x nilai posisi dalam setengah siklus kerja. mula-mula x adalah 0, setelah x=0,57, x=1,14 dan seterusnya sampai x= 180.
jika kita menghitung semua dari 314 nilai, kita mendapatkan elemen array 314 (ketik "int" untuk dihitung lebih mudah oleh arduino).
Array tersebut adalah:
int sinPWM={1, 2, 5, 7, 10, 12, 15, 17, 19, 22, 24, 27, 30, 32, 34, 37, 39, 42, 44, 47, 49, 52, 54, 57, 59, 61, 64, 66, 69, 71, 73, 76, 78, 80, 83, 85, 88, 90, 92, 94, 97, 99, 101, 103, 106, 108, 110, 113, 115, 117, 119, 121, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 169, 171, 173, 175, 177, 178, 180, 182, 184, 185, 187, 188, 190, 192, 193, 195, 196, 198, 199, 201, 202, 204, 205, 207, 208, 209, 211, 212, 213, 215, 216, 217, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 237, 238, 239, 240, 240, 241, 242, 242, 243, 243, 244, 244, 245, 245, 246, 246, 247, 247, 247, 248, 248, 248, 248, 249, 249, 249, 249, 249, 250, 250, 250, 250, 249, 249, 249, 249, 249, 248, 248, 248, 248, 247, 247, 247, 246, 246, 245, 245, 244, 244, 243, 243, 242, 242, 241, 240, 240, 239, 238, 237, 237, 236, 235, 234, 233, 232, 231, 230, 229, 228, 227, 226, 225, 224, 223, 222, 221, 220, 219, 217, 21 6, 215, 213, 212, 211, 209, 208, 207, 205, 204, 202, 201, 199, 198, 196, 195, 193, 192, 190, 188, 187, 185, 184, 182, 180, 178, 177, 175, 173, 171, 169, 168, 166, 164, 162, 160, 158, 156, 154, 152, 150, 148, 146, 144, 142, 140, 138, 136, 134, 132, 130, 128, 126, 124, 121, 119, 117, 115, 113, 110, 108, 106, 103, 101, 99, 97, 94, 92, 90, 88, 85, 83, 80, 78, 76, 73, 71, 69, 66, 64, 61, 59, 57, 54, 52, 49, 47, 44, 42, 39, 37, 34, 32, 30, 27, 24, 22, 19, 17, 15, 12, 10, 7, 5, 2, 1};
Anda dapat melihat bahwa seperti gelombang sinus siklus tugas terendah pada elemen pertama dan terakhir dan tertinggi di tengah.
Langkah 2: Program Arduino untuk Siklus Tugas Variabel
Pada gambar di atas kami memiliki sinyal siklus tugas variabel dengan nilai dari array.
Tapi bagaimana membuat sinyal seperti itu??
bagian dari program di bawah ini menggunakan interupsi untuk mengubah nilai siklus tugas
sei();// aktifkan interupsi
}
ISR(TIMER1_COMPA_vect){// interupsi saat timer 1 cocok dengan nilai OCR1A
if(i>313 && OK==0){// nilai akhir dari vektor untuk pin 6
i=0;// pergi ke nilai pertama dari vektor(array)
OK=1;//aktifkan pin 5
}
x=sinPWM;// x ambil nilai dari vektor yang sesuai dengan posisi i(i adalah nol diindeks)-nilai duty cycle
i=i+1;// pergi ke posisi berikutnya
}
Langkah 3: Bergantian pada 50Hz Arduino Pins
Karena setiap pin hanya menghasilkan setengah siklus kerja untuk membuat gelombang sinus penuh, kami menggunakan dua pin yang bergantian satu demi satu setelah tepat 10mdetik (untuk 50Hz). Perubahan pin ini dilakukan pada akhir array- setelah katakanlah pin 5 telah menghasilkan 314 pulsa pin ini dimatikan dan diaktifkan pin 6 yang membuat hal yang sama tetapi untuk siklus negatif.
Karena arduino hanya dapat menghasilkan sinyal positif, siklus tugas negatif dibuat di h bridge- Anda dapat membaca di sini tentangnya
Program untuk mengganti pin:
sei();// aktifkan interupsi
}
ISR(TIMER1_COMPA_vect){// interupsi saat timer 1 cocok dengan nilai OCR1A
if(i>313 && OK==0){// nilai akhir dari vektor untuk pin 6
i=0;// pergi ke nilai pertama dari vektor
OK=1;//aktifkan pin 5
}
if(i>313 && OK==1){// nilai akhir dari vektor untuk pin 5
i=0;//pergi ke nilai pertama dari vektor
OK=0;//aktifkan pin 6
}
x=sinPWM;// x ambil nilai dari vektor yang sesuai dengan posisi i(i diindeks nol)
i=i+1;// pergi ke posisi berikutnya
jika(Oke==0){
OCR0B=0;//buat pin 5 0
OCR0A=x;//mengaktifkan pin 6 ke siklus tugas yang sesuai
jika(Oke==1){
OCR0A=0;//buat pin 6 0
OCR0B=x;//aktifkan pin 5 ke siklus tugas yang sesuai
}
}
Langkah 4: Mengemudi Jembatan H dan Memfilter Sinyal Pwm
Sinyal yang diperoleh dari arduino merupakan bagian kontrol untuk aplikasi inverter karena keduanya positif. Untuk membuat gelombang sinus penuh dan inverter praktis kita harus menggunakan jembatan h dan untuk membersihkan pwm filter lolos rendah.
H-jembatan disajikan di sini.
Filter low-pass diuji dengan motor Ac kecil-di sini.
Direkomendasikan:
Sensor Suhu untuk Arduino Diterapkan untuk COVID 19: 12 Langkah (dengan Gambar)
Sensor Suhu untuk Arduino Diterapkan untuk COVID 19: Sensor suhu untuk Arduino adalah elemen mendasar ketika kita ingin mengukur suhu prosesor tubuh manusia. Sensor suhu dengan Arduino harus bersentuhan atau dekat untuk menerima dan mengukur tingkat panas. Begitulah cara
Gunakan 1 Input Analog untuk 6 Tombol untuk Arduino: 6 Langkah
Gunakan 1 Input Analog untuk 6 Tombol untuk Arduino: Saya sering bertanya-tanya bagaimana saya bisa mendapatkan lebih banyak Input Digital untuk Arduino saya. Baru-baru ini terpikir oleh saya bahwa saya harus dapat menggunakan salah satu Input Analog untuk memasukkan beberapa input digital. Saya melakukan pencarian cepat dan menemukan di mana orang
Rangkaian Driver Gerbang untuk Inverter Tiga Fasa: 9 Langkah
Sirkuit Driver Gerbang untuk Inverter Tiga Fasa: Proyek ini pada dasarnya adalah Sirkuit Driver Untuk Peralatan yang disebut SemiTeach yang baru saja kami beli untuk departemen kami. Gambar perangkat ditampilkan. Menghubungkan rangkaian driver ini ke 6 MOSFET menghasilkan tiga tegangan Ac yang bergeser 120 derajat. Ra
Tutorial untuk L298 2Amp Motor Driver Shield untuk Arduino: 6 Langkah
Tutorial untuk L298 2Amp Motor Driver Shield untuk Arduino: DeskripsiL298 2Amp Motor Driver Shield untuk Arduino didasarkan pada sirkuit terintegrasi driver motor L298, driver motor full-bridge. Itu dapat menggerakkan dua motor DC 2A yang terpisah atau motor langkah 1 2A. Kecepatan dan arah motor dapat dikontrol secara terpisah
Yakinkan Diri Anda untuk Hanya Menggunakan Inverter 12V-ke-AC-line untuk Senar Lampu LED Alih-alih Menghubungkannya untuk 12V.: 3 Langkah
Yakinkan Diri Anda untuk Hanya Menggunakan Inverter 12V-ke-AC-line untuk Senar Lampu LED Alih-alih Menghubungkan Ulang Mereka untuk 12V.: Rencana saya sederhana. Saya ingin memotong seutas tali lampu LED bertenaga dinding menjadi beberapa bagian lalu menyambungkannya kembali menjadi 12 volt. Alternatifnya adalah menggunakan power inverter, tetapi kita semua tahu bahwa itu sangat tidak efisien, bukan? Benar? Atau apakah mereka?