Mundarija:
- 1 -qadam: 50Hz uchun Pwm signalini yaratish
- 2 -qadam: O'zgaruvchan xizmat tsikli uchun Arduino dasturi
- 3 -qadam: 50 gigagertsli Arduino pinlarida almashish
- 4 -qadam: H ko'prigini haydash va Pwm signalini filtrlash
Video: Inverterlar uchun Arduino sinus to'lqini: 4 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:28
Ushbu loyihada men ikkita arduino pwm raqamli chiqishidan SPWM (sinus to'lqinli impuls keng modulyatsiyalangan) signalini yaratdim.
Chunki bunday dasturni yaratish uchun men arduino -ning boshqa funktsiyalari va xususiyatlari haqida to'liq loyihani, shu jumladan osiloskop tasvirlarini va turli chastotalar haqida gapirishim kerak, iltimos mening veb -saytimga tashrif buyuring:
loyiha zonasi
1 -qadam: 50Hz uchun Pwm signalini yaratish
50 gigagertsli signalni yuqori chastotada ishlab chiqarish uchun ba'zi hisob -kitoblarni bajarish zarur. Arduino -dan chastotalar 8 MGts bo'lishi mumkin, lekin biz o'zgarmaydigan ish tsikliga ega signalni xohlaymiz.
Arduino -ning o'zgaruvchan ish tsikllarining turlarini tushunish uchun siz ushbu postning 1, 2 va 3 -qismlarini o'qishingiz mumkin.
Faraz qilaylik, bizning chastotamiz 50 Gts, ya'ni vaqt 20ms. Shunday qilib, 10 ms - yarim tsikl davri. Bu 10msda biz kichik ish tsikllaridan boshlanadigan turli xil ish tsikllariga ega bo'lgan ko'plab impulslarga ega bo'lishimiz kerak, signal o'rtasida biz maksimal ish tsikllariga ega bo'lamiz va kichik ish tsikllari bilan tugatamiz. ijobiy yarim tsikl va bitta salbiy yarim tsikl uchun. Bizning postimizda biz 5 va 6 -pinlardan foydalanamiz, bu taymer 0 demakdir.
Yumshoq signal uchun biz 31372 Gts chastotada to'g'ri pwmni tanlaymiz, oldingi xabarga qarang. Eng katta muammolardan biri shundaki, biz har bir zarba uchun kerakli ish aylanishini qanday hisoblaymiz. Shunday qilib, bizning chastotamiz f = 31372 Gts bo'lgani uchun har bir pulsning davri T = 1/31372 = 31,8 ni tashkil qiladi, shuning uchun yarim tsikl uchun impulslar soni N = 10ms/31.8us = 314 puls. Endi har bir zarba uchun ish aylanishini hisoblash uchun bizda y = sinx bor, lekin bu tenglamada biz darajaga muhtojmiz, shuning uchun yarim tsiklda 314 ta impuls uchun 180 daraja bor. Har bir puls uchun bizda 180/314 = 0,57 daraja/puls bor. Bu shuni anglatadiki, har bir puls uchun biz 0,57 daraja oldinga siljiymiz.
y - vazifa aylanishi va x - yarim ish davridagi pozitsiya qiymati. avval x 0 ga teng, bundan oldin x = 0.57, x = 1.14 va hokazo x = 180 gacha.
Agar biz barcha 314 qiymatlarni hisoblasak, biz 314 elementli massivni olamiz ("int" tipini arduino yordamida osonroq hisoblash uchun).
Bunday qator:
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};
Ko'ryapsizmi, sinus to'lqin kabi, ish tsikli birinchi va oxirgi elementda eng past, o'rtada esa eng yuqori.
2 -qadam: O'zgaruvchan xizmat tsikli uchun Arduino dasturi
Yuqoridagi rasmda biz o'zgarmaydigan vazifa tsikli signallari qatoridan qiymatlari bor.
Ammo bunday signalni qanday qilish kerak?
dasturning quyi qismi ish tsikllarining qiymatlarini o'zgartirish uchun uzilishlardan foydalanadi
sei (); // uzilishlarni yoqish
}
ISR (TIMER1_COMPA_vect) {// taymer 1 OCR1A qiymatiga mos kelganda uzilish
if (i> 313 && OK == 0) {// 6 -pin uchun vektordan yakuniy qiymat
i = 0; // vektorning birinchi qiymatiga o'tish (qator)
OK = 1; // 5 -pinni yoqing
}
x = sinPWM ; // x i pozitsiyasiga mos keladigan vektor qiymatini oladi (i nol indekslangan)-vazifa tsikli qiymati
i = i+1; // keyingi joyga o'ting
}
3 -qadam: 50 gigagertsli Arduino pinlarida almashish
To'liq sinus to'lqinni yaratish uchun har bir pin faqat yarim ish tsiklini yaratadi, chunki biz ikkita pinni ishlatamiz, ular birin -ketin 10 soniyadan so'ng (50Hz uchun). Pimlarning bu o'zgarishi massiv oxirida amalga oshiriladi- aytaylik, 5-pin 314 ta impuls hosil qilgan, bu pin o'chirilgan va 6-pinni yoqib qo'ygan, bu xuddi shu narsani, lekin manfiy tsikl uchun.
Arduino faqat ijobiy signallarni ishlab chiqarishi mumkinligi sababli, ko'prikda salbiy vazifalar aylanishi amalga oshiriladi- bu haqda bu erda o'qishingiz mumkin
Pimlarni almashtirish dasturi:
sei (); // uzilishlarni yoqish
}
ISR (TIMER1_COMPA_vect) {// 1 -taymer OCR1A qiymati bilan mos kelganda uzilish
if (i> 313 && OK == 0) {// 6 -pin uchun vektordan yakuniy qiymat
i = 0; // vektorning birinchi qiymatiga o'ting
OK = 1; // 5 -pinni yoqing
}
if (i> 313 && OK == 1) {// 5 -pin uchun vektordan yakuniy qiymat
i = 0; // vektorning birinchi qiymatiga o'ting
OK = 0; // 6 -pinni yoqing
}
x = sinPWM ; // x i pozitsiyasiga mos keladigan vektor qiymatini oladi (i nol indekslangan)
i = i+1; // keyingi pozitsiyaga o'ting
agar (OK == 0) {
OCR0B = 0; // pin 5 0 qiling
OCR0A = x; // mos keladigan ish aylanishiga 6 -pinni yoqish
agar (OK == 1) {
OCR0A = 0; // pin 6 0 qiling
OCR0B = x; // mos keladigan ish aylanishiga 5 -pinni yoqish
}
}
4 -qadam: H ko'prigini haydash va Pwm signalini filtrlash
Arduino -dan olingan signallar inverterli ilovalarni boshqaruvchi qismdir, chunki ikkalasi ham ijobiy. To'liq sinus to'lqin va amaliy inverterni yaratish uchun biz h ko'prigidan foydalanishimiz kerak va pwm past o'tish filtrini tozalashimiz kerak.
H-ko'prigi bu erda taqdim etilgan.
Past o'tkazgichli filtr kichik AC dvigatellari bilan sinovdan o'tgan-bu erda.
Tavsiya:
Sof sinus to'lqinli inverter: 8 qadam
Sof sinus to'lqinli inverter: Mening tadqiqotim
Sinus to'lqinlarni boshqarish platasini ishlab chiqarish: 5 qadam
Sinus to'lqinli boshqaruv panelini ishlab chiqarish: Bu safar bu bitta fazali sinus to'lqinli tarmoqdan tashqari boshqaruv paneli, so'ngra bitta fazali sinus to'lqinli tarmoqdan tashqari boshqaruv paneli, so'ngra uch fazali sinus to'lqinli tarmoqdan tashqari boshqaruv paneli, va nihoyat uch fazali sinus to'lqinli tarmoqdan tashqari boshqaruv paneli. Umid qilamizki,
Arduino tufayli 3 fazali sinus to'lqin generatori: 5 qadam
Arduino Due-ga asoslangan 3 fazali sinus to'lqin generatori: bu ulushning maqsadi, Due-ning yuqori ishlashi + ma'lumotnomaning etishmasligi + yordamchi bo'lmagan ma'lumotlar varag'idan foydalanmoqchi bo'lgan kishiga yordam berish. Bu loyiha 3 fazali sinus to'lqin @ 256 gacha namunalar / tsikl past chastotada (< 1kHz) va 16 soniyada
Sinus to'lqinini yaratish uchun DIY NE555 sxemasi: 6 qadam
Sinus to'lqinini yaratish uchun DIY NE555 sxemasi: Bu darslik sizga sinus to'lqin hosil qilish uchun NE555 sxemasini DIY qilish haqida o'rgatadi. Bu arzon narxlardagi DIY to'plamlari, kondansatkichlarning rezistorlar bilan qanday ishlashini, genning zaryadlash va tushirish vaqtini nazorat qilishini tushunish uchun juda foydali bo'ladi
GoPro uchun Arduino - Servo va MPU6050 Gyro -dan foydalanish uchun Roll va Pitch Axis Gimbal: 4 qadam
GoPro uchun Arduino - Servo va MPU6050 Gyro yordamida Roll and Pitch Axis Gimbal: Bu ko'rsatma Janubiy Florida universitetining Makecourse loyihasi talablarini bajarish uchun yaratilgan (www.makecourse.com) Ushbu loyihaning maqsadi - GoPro uchun 3 o'qli Gimbal Arduino nano + 3 servo dvigatellari yordamida