Мазмұны:
- 1 -қадам: 50 Гц үшін Pwm сигналын құру
- 2 -қадам: айнымалы қызметтік циклге арналған Arduino бағдарламасы
- 3 -қадам: 50 Гц Arduino Pins -те ауысады
- 4 -қадам: H көпірін жүргізу және Pwm сигналын сүзу
Бейне: Ардуино толқыны инверторларға арналған: 4 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:27
Бұл жобада мен екі arduino pwm цифрлық шығысынан SPWM (синусоиды импульсті кең модуляцияланған) сигнал жасадым.
Мұндай бағдарламаны жасау үшін мен arduino -ның басқа да функциялары мен қасиеттері туралы толық жобаны, осциллографтың суреттерін қоса және әр түрлі жиіліктер туралы айтуым керек, менің веб -сайтқа кіріңіз:
жобалық аймақ
1 -қадам: 50 Гц үшін Pwm сигналын құру
50 Гц сигналды жоғары жиілікте шығару үшін кейбір есептеулерді жүргізу қажет. Arduino жиіліктері 8 МГц болуы мүмкін, бірақ біз ауыспалы жұмыс циклы бар сигналды қалаймыз.
Ардуиноның ауыспалы жұмыс циклдарының түрлерін түсіну үшін сіз осы посттың 1, 2 және 3 бөліктерін оқи аласыз.
Біздің жиілік 50 Гц деп есептейік, бұл уақыт аралығы 20 мс құрайды. Сондықтан 10 мс - бұл циклдің жарты кезеңі. Бұл 10 мс -те біз кішігірім жұмыс циклдерінен басталатын әр түрлі жұмыс циклдары бар көптеген импульстерге ие болуымыз керек, сигналдың ортасында біз максималды жұмыс циклдарына ие боламыз және сонымен қатар кіші циклдік циклмен аяқтаймыз. оң жарты цикл және теріс жарты цикл үшін бір. Бұл үшін біз 5 және 6 түйреуіштерді қолданамыз, бұл таймер 0 дегенді білдіреді.
Тегіс сигнал үшін біз 31372 Гц жиіліктегі pwm фазасын таңдаймыз-алдыңғы мақаланы қараңыз. Ең үлкен мәселенің бірі-әрбір импульстің қажетті жұмыс циклін қалай есептейтініміз. Біздің жиілік f = 31372Гц болғандықтан, әр импульстің периоды T = 1/31372 = 31,8 бізге тең, сондықтан жарты циклдегі импульс саны N = 10ms/31.8us = 314 импульсті құрайды. Енді әрбір импульстің жұмыс циклін есептеу үшін бізде y = sinx бар, бірақ бұл теңдеуде бізге градус қажет, сондықтан жарты циклде 314 импульсте 180 градус болады. Әр импульс үшін бізде 180/314 = 0,57 градус/импульс бар. Бұл әр импульс үшін біз 0,57 градуспен алға жылжуды білдіреді.
y - қызметтік цикл және х - жартылай жұмыс цикліндегі позиция мәні. бастапқыда x - 0, бірақ x = 0.57, x = 1.14 және т.б.
егер біз барлық 314 мәндерін есептесек, біз 314 элементті аламыз (arduino көмегімен есептелетін «int» түрі).
Мұндай массив:
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};
Сіз синус толқыны сияқты жұмыс циклінің бірінші және соңғы элементте ең төменгі, ал ортасында ең жоғары екенін көре аласыз.
2 -қадам: айнымалы қызметтік циклге арналған Arduino бағдарламасы
Жоғарыдағы суретте массив мәндері бар ауыспалы жұмыс циклінің сигналдары бар.
Бірақ мұндай сигналды қалай жасауға болады?
Бағдарламаның төмендегі бөлігінде жұмыс циклдерінің мәндерін өзгерту үшін үзілістер қолданылады
sei (); // үзілістерді қосу
}
ISR (TIMER1_COMPA_vect) {// 1 таймері OCR1A мәнімен сәйкес келгенде үзу
if (i> 313 && OK == 0) {// 6 -шрифт үшін вектордың соңғы мәні
i = 0; // вектордың бірінші мәніне өтіңіз (массив)
OK = 1; // 5 -істікті қосыңыз
}
x = sinPWM ; // x i позициясына сәйкес келетін вектордың мәнін алады (i нөлдік индекстелген)-жұмыс циклінің мәні
i = i+1; // келесі орынға өтіңіз
}
3 -қадам: 50 Гц Arduino Pins -те ауысады
Толық синусоидалық толқын жасау үшін әр түйреуіш тек жарты айналым циклін құрады, сондықтан біз екі түйреуішті қолданамыз, олар бірінен соң бірі 10 секундтан кейін ауысады (50 Гц үшін). Бұл түйреуіштер массивтің соңында жасалады- 5-ші пин 314 импульсті тудырды делік, бұл істікшені өшіреді және 6-істікті қосады, бұл дәл осылай жасайды, бірақ теріс жұмыс циклі үшін.
Ардуино тек оң сигналдарды бере алатындықтан, теріс көпірде теріс жұмыс циклы жасалады- бұл туралы мына жерден оқуға болады
Түйіндерді ауыстыруға арналған бағдарлама:
sei (); // үзілістерді қосу
}
ISR (TIMER1_COMPA_vect) {// 1 таймері OCR1A мәнімен сәйкес келгенде үзу
if (i> 313 && OK == 0) {// 6 -шрифт үшін вектордың соңғы мәні
i = 0; // вектордың бірінші мәніне өтіңіз
OK = 1; // 5 -істікті қосыңыз
}
if (i> 313 && OK == 1) {// 5 -пин үшін вектордың соңғы мәні
i = 0; // вектордың бірінші мәніне өтіңіз
OK = 0; // 6 -істікті қосыңыз
}
x = sinPWM ; // x i позициясына сәйкес келетін вектордың мәнін қабылдайды (i нөлдік индекстелген)
i = i+1; // келесі орынға өтіңіз
егер (OK == 0) {
OCR0B = 0; // пин 5 0 жасаңыз
OCR0A = x; // 6 -істікті тиісті жұмыс цикліне қосыңыз
егер (OK == 1) {
OCR0A = 0; // істікті 6 0 жасаңыз
OCR0B = x; // 5 -істікті тиісті жұмыс циклына қосыңыз
}
}
4 -қадам: H көпірін жүргізу және Pwm сигналын сүзу
Ардуинодан алынған сигналдар инверторлық қосымшалардың басқару бөлігі болып табылады, себебі екеуі де оң. Толық синустық толқын мен практикалық түрлендіргішті жасау үшін біз h көпірін пайдалануымыз керек, ал төмен өтетін сүзгіні тазарту үшін.
H көпірі осында ұсынылған.
Төмен өту сүзгісі шағын AC қозғалтқыштарымен сыналды-мұнда.
Ұсынылған:
Ардуино провайдер ретінде -- Он алтылық файлды AVR -де жазу -- AVR сақтандырғышы -- Ардуино бағдарламашы ретінде: 10 қадам
Ардуино провайдер ретінде || Он алтылық файлды AVR -де жазу || AVR сақтандырғышы || Ардуино бағдарламашы ретінде: ……………………… Басқа бейнелер үшін менің YouTube каналыма ТІРКЕЛІҢІЗ …….. Бұл мақала бұл isp сияқты arduino туралы. Егер сіз он алтылық файлды жүктегіңіз келсе немесе сақтандырғышты AVR -ге орнатқыңыз келсе, сізге бағдарламашы сатып алудың қажеті жоқ, сіз жасай аласыз
Ардуино жобаларына арналған керемет ноутбук сенсорлы тақтасы! 18 қадам (суреттермен)
Ардуино жобаларына арналған салқын ноутбук сенсорлық тақтасы!: Біраз уақыт бұрын, мен Arduino микроконтроллері бар PS/2 сенсорлық тақтасымен айналысу кезінде, оның екі борттық қосылымын сандық кіріс ретінде пайдалануға болатынын білдім. Бұл нұсқаулықта PS/2 сенсорлық тақтасын қалай қолдануға болатынын білейік
Ардуино үстел ойындарына арналған «Бірінші ойыншы»: 4 қадам
Ардуино үстел ойындарына арналған «Бірінші ойыншы»: Бұл жоба " бірінші ойыншы " күйеуім екеуміз телефонда қолданған қосымшалар. Біз үстел ойындарын ойнағанды жақсы көреміз және " бірінші ойыншы " Кім бірінші болатынын шешетін қосымшалар. Мен өзімнің Arduino нұсқасын жасауға тырысамын деп шештім
Transformers ™ шедевріне арналған жарық толқыны Energon Cube: 7 қадам (суреттермен)
Transformers ™ Masterpiece Soundwave -тің Энергон текшесі үшін жарықтандыру: Бұл Transformers Masterpiece Soundwave аксессуарына сәл жарқыл қосатын жылдам жоба. Мен бұлардың бірін бірнеше жыл бұрын жасадым және жаңасын жасап, процесті бөлісемін деп ойладым. Masterpiece Soundwave (Takara MP13 немесе Hasbro MP-0
Жылдам және лас USB Wifi Dongle толқыны: 4 қадам (суреттермен)
Жылдам және лас USB Wifi Dongle Waveguide: бұл көршілес торды ұрлаудың бес минуттық шешімі, ол соншалықты әдемі емес, бірақ ол қарапайым және тиімді, сонымен қатар ол бір жағына емес, жоғары және төмен бұрыштарға толық реттеледі. Мен Db кірістерімен алаңдамадым