Мазмұны:
- 1 -қадам: Техникалық ескертулер
- 2 -қадам: Қажетті компоненттер
- 3 -қадам: құрылыс
- 4 -қадам: Кодекс
- 5 -қадам: Қолдану
Бейне: Arduino толқындық генераторы: 5 қадам (суреттермен)
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:24
2021 ж. Ақпан жаңарту: Raspberry Pi Pico негізіндегі іріктеу жылдамдығы 300 есе жаңа нұсқаны тексеріңіз
Зертханада көбінесе белгілі бір жиіліктегі, пішіндегі және амплитудадағы қайталанатын сигнал қажет. Бұл күшейткішті тексеру, тізбекті, компонентті немесе жетекті тексеру болуы мүмкін. Толқын түріндегі қуатты генераторлар коммерциялық түрде қол жетімді, бірақ Arduino Uno немесе Arduino Nano көмегімен пайдалы генераторды өзіңіз жасау оңай, мысалы:
www.instructables.com/id/Arduino-Waveform-…
www.instructables.com/id/10-Resister-Ardui…
Міне, келесі сипаттамалары бар екіншісінің сипаттамасы:
* Толқынның дәл формасы: R2R DAC көмегімен 8-разрядты шығару, 256-үлгі пішіні
* Жылдам: 381 кГц іріктеу жиілігі
* Дәл: 1мГц қадамдық жиілік диапазоны. Ардуино кристалы сияқты дәл.
* Оңай жұмыс: толқын пішіні мен жиілікті бір айналмалы кодермен реттеуге болады
* Амплитудасының кең диапазоны: 20В дейін милливольт
* 20 алдын ала анықталған толқын пішіні. Көбірек қосу үшін қарапайым.
* Оңай жасау: Arduino Uno немесе Nano plus стандартты компоненттер
1 -қадам: Техникалық ескертулер
Аналогты сигнал жасау
Arduino Uno мен Nano-ның бір кемшілігі-оның цифрлық-аналогты (DAC) түрлендіргіші жоқ, сондықтан оны аналогтық кернеуді тікелей түйреуіштерге шығаруға болмайды. Бір шешім - бұл R2R баспалдағы: резисторлық желіге 8 цифрлық түйреуіш қосылады, осылайша 256 шығарылым деңгейіне жетуге болады. Портқа тікелей кіру арқылы Arduino бір пәрменмен бір уақытта 8 түйреуішті орната алады. Резисторлық желі үшін R мәні бар 9 және 2R мәні бар 8 резистор қажет. Мен R үшін 10kOhm мәнін қолдандым, ол токты түйреуіштерден 0,5 мА немесе одан төменге дейін сақтайды. Менің ойымша, R = 1kOhm де жұмыс істей алады, өйткені Arduino бір істікке 5 мА, портқа 40 мА жеткізе алады. R мен 2R резисторларының арақатынасы шын мәнінде 2 болуы маңызды. Бұған R резервті 2 резисторды 25 резисторды тізбектей қою арқылы қол жеткізуге болады.
Фазалық аккумулятор
Толқындық пішінді құру Arduino түйреуіштеріне 8-разрядты сандар тізбегін қайталап жіберуге әкеледі. Толқын формасы 256 байт массивінде сақталады және бұл массив іріктеледі және түйреуіштерге жіберіледі. Шығу сигналының жиілігі оның массив арқылы қаншалықты жылдам өтетіндігімен анықталады. Мұны істеудің сенімді, дәл және талғампаз тәсілі-фазалық аккумулятор: 32-разрядты жүйелі түрде көбейтіп отырады, ал біз массивтің индексі ретінде 8 маңызды биттерді қолданамыз.
Жылдам іріктеу
Үзілістер нақты уақыттарда сынама алуға мүмкіндік береді, бірақ үзілістердің үстеме бағасы іріктеу жиілігін ~ 100 кГц-ке дейін шектейді. Фазаны жаңарту, толқын формасын іріктеу және түйреуіштерді орнату үшін шексіз цикл 42 сағат циклін алады, осылайша 16 МГц/42 = 381 кГц іріктеу жылдамдығына жетеді. Айналмалы кодерді айналдыру немесе итеру түйреуіштің өзгеруіне әкеледі және үзіліс циклден шығады, ол параметрді өзгертеді (толқын пішіні немесе жиілік). Бұл кезеңде массивтегі 256 саны қайта есептеледі, осылайша негізгі циклде толқындық форманың нақты есептеулері қажет емес. Шығаруға болатын абсолюттік максималды жиілік - 190 кГц (іріктеу жылдамдығының жартысы), бірақ содан кейін әр кезеңде тек екі үлгі бар, сондықтан пішінді бақылау көп емес. Интерфейс 100 кГц -тен жоғары жиілікті орнатуға мүмкіндік бермейді. 50 кГц жиілігінде әр кезең үшін 7-8 сынама бар, ал 1,5 кГц жиіліктерде және одан төмен 256 нөмір сақталады. Сигнал біркелкі өзгеретін толқындық формалар үшін, мысалы, синусоиды, үлгілерді өткізіп жіберу қиын емес. Бірақ тар шыңы бар толқын пішіндері үшін, мысалы, кіші жұмыс циклі бар төртбұрышты толқындар үшін, бір үлгі жоғалатын 1,5 кГц жоғары жиіліктер толқын пішіні күтілгендей әрекет етпеуіне әкелуі мүмкін.
Жиілік дәлдігі
Әр үлгіде фазаны көбейтетін сан жиілікке пропорционал. Осылайша жиілікті 381 кГц/2^32 = 0,089 мГц дәлдікке орнатуға болады. Іс жүзінде мұндай дәлдік қажет емес, сондықтан интерфейс жиілікті 1 мГц қадаммен орнатуды шектейді. Жиіліктің абсолюттік дәлдігі Arduino сағат жиілігінің дәлдігімен анықталады. Бұл Arduino түріне байланысты, бірақ көпшілігі 16.000 МГц жиілігін көрсетеді, сондықтан ~ 10^-4 дәлдігі. Код 16 МГц болжамының шамалы ауытқуларын түзету үшін жиілік пен фазалық өсімдіктің арақатынасын өзгертуге мүмкіндік береді.
Буферлеу және күшейту
Резистор желісінің шығыс кедергісі жоғары, сондықтан жүктеме қосылған кезде оның шығыс кернеуі тез төмендейді. Мұны шығынды буферлеу немесе күшейту арқылы шешуге болады. Мұнда буферлеу мен күшейту опамп көмегімен жүзеге асады. Менде LM358 қолданылды, себебі менде біраз болды. Бұл баяу опампа (микросекундқа 0,5В айналу жылдамдығы), сондықтан жоғары жиілікте және жоғары амплитудада сигнал бұрмаланады. Жақсы нәрсе, ол 0В -қа жақын кернеуді басқара алады. Шығу кернеуі рельстен төмен ~ 2В шектеледі, сондықтан +5В қуатын қолдану шығыс кернеуін 3В дейін шектейді. Қадамдық модульдер ықшам және арзан. Опампқа +20В берсе, ол кернеуі 18В дейін сигналдарды шығара алады. (Ескерту, схемада LTC3105 жазылған, себебі бұл мен Фритзингтен тапқан жалғыз қадам болды. Шындығында мен MT3608 модулін қолдандым, келесі қадамдардағы суреттерді қараңыз). Мен R2R DAC шығысына айнымалы әлсіреуді қолдануды таңдаймын, содан кейін сигналдың максималды шығуына шамамен 20В жетуі үшін опампалардың бірін сигналды күшейтусіз буферлеу үшін, ал екіншісін 5,7 күшейту үшін қолданамын. Шығу тогы өте шектеулі, ~ 10мА, сондықтан егер сигнал үлкен динамикті немесе электромагнитті басқаратын болса, күшті күшейткіш қажет болуы мүмкін.
2 -қадам: Қажетті компоненттер
Негізгі толқын пішіні генераторы үшін
Arduino Uno немесе Nano
16х2 СКД дисплейі + 20км Ом қайшылығы мен 100 Ом сериялы резистор артқы жарыққа арналған
5 істікшелі айналмалы кодер (біріктірілген түймемен)
10 кОм болатын 25 резистор
Буфер/күшейткіш үшін
LM358 немесе басқа қос опамп
MT3608 негізіндегі модуль
50 кОм айнымалы резистор
10 кОм резистор
47 кОм резистор
1 мкФ конденсатор
3 -қадам: құрылыс
Мен бәрін суретте көрсетілгендей 7х9 см прототип тақтасына дәнекерледім. Ол барлық сымдармен біршама араласып кеткендіктен, мен оң кернеуі бар сымдарды қызылға және қара түсті өткізгіштерді бояуға тырыстым.
Мен қолданатын кодерде 5 түйреуіш бар, бір жағында 3, екінші жағында 2. 3 түйреуіші бар жақ - бұл нақты кодер, 2 түйреуіші бар жақ - біріктірілген түйме. 3 істікшелі жағында орталық түйреуіш жерге, қалған екі түйреуіш D10 мен D11-ге қосылуы керек. 2 істікшелі жағында бір істікті жерге, екіншісін D12-ге қосу керек.
Бұл мен жасаған ең жаман нәрсе, бірақ ол жұмыс істейді. Қоршауды салу жақсы болар еді, бірақ әзірше қосымша жұмыс пен шығын оны ақтамайды. Нано мен дисплей пин-тақырыптармен бекітілген. Егер мен жаңасын салатын болсам, мен бұлай жасамас едім. Мен сигналдарды алу үшін коннекторларды тақтаға қоймадым. Мен оның орнына мыс сымының шығыңқы бөліктерінен крокодил сымдарын алып жатырмын, олар келесідей белгіленген:
R - R2R DAC шикі сигналы
В - буферлік сигнал
A - күшейтілген сигнал
T - түйреуіш 9 -дан таймер сигналы
G - жер
+ - жоғарылату модулінен оң «жоғары» кернеу
4 -қадам: Кодекс
Код, Arduino эскизі қоса беріледі және оны Arduino -ға жүктеу керек.
20 толқын формасы алдын ала анықталған. Басқа толқындарды қосу оңай болуы керек. Кездейсоқ толқындар 256 мәнді массивті кездейсоқ мәндермен толтыратынын ескеріңіз, бірақ сол үлгі әр кезең сайын қайталанады. Нағыз кездейсоқ сигналдар шу сияқты естіледі, бірақ бұл толқын пішіні ысқырыққа ұқсайды.
Код D9 түйреуішінде TIMER1 көмегімен 1 кГц сигналды орнатады. Бұл аналогтық сигналдың уақытын тексеру үшін пайдалы. Осылайша мен сағат циклдерінің саны 42 екенін білдім: егер мен 41 немесе 43 деп есептесем және 1 кГц сигнал шығаратын болсам, оның D9 түйреуішіндегі сигналдан өзгеше жиілігі бар. 42 мәнімен олар керемет сәйкес келеді.
Әдетте, Arduino millis () функциясымен уақытты қадағалау үшін әр миллисекундты үзеді. Бұл сигналды дәл шығаруға кедергі келтіреді, сондықтан нақты үзіліс өшіріледі.
Компилятор былай дейді: «Sketch бағдарламада 7254 байтты (23%) сақтайды. Максимум - 30720 байт. Жаһандық айнымалылар жергілікті айнымалылар үшін 1565 байт қалдырып, 483 байтты (23%) қолданады. Ең көбі - 2048 байт.» Сондықтан күрделі код үшін кең орын бар. Наноға сәтті жүктеу үшін «ATmega328P (ескі жүктеуші)» таңдау қажет болуы мүмкін екенін ескеріңіз.
5 -қадам: Қолдану
Сигнал генераторын Arduino Nano шағын USB кабелі арқылы ғана қуаттандыруға болады. Мұны қуат банкімен жасаған дұрыс, осылайша оны қосуға болатын қондырғы кездейсоқ жерге тұйықталмайды.
Қосылған кезде 100 Гц синусоиды пайда болады. Тұтқаны айналдыру арқылы басқа 20 толқын түрінің бірін таңдауға болады. Итеру кезінде айналдыру арқылы курсорды жиіліктің кез келген цифрына орнатуға болады, содан кейін оны қажетті мәнге өзгертуге болады.
Амплитудасы потенциометрмен реттелуі мүмкін және буферлі немесе күшейтілген сигналды қолдануға болады.
Сигнал амплитудасын тексеру үшін осциллографты қолдану өте пайдалы, әсіресе сигнал басқа құрылғыға ток беретін кезде. Егер тым көп ток тартылса, сигнал үзіледі және сигнал қатты бұрмаланады
Өте төмен жиіліктер үшін шығуды 10 кОм резисторы бар сериялы жарық диодты жарықтандырумен көруге болады. Дыбыс жиілігін динамикпен естуге болады. Сигналды өте аз ~ 0,5 В орнатқаныңызға көз жеткізіңіз, әйтпесе ток тым жоғары болады және сигнал қиыла бастайды.
Ұсынылған:
DIY функциясы/толқындық генератор: 6 қадам (суреттермен)
DIY функциясы/толқын пішіні генераторы: Бұл жобада біз DIY нұсқасы үшін қандай ерекшеліктер маңызды екенін анықтау үшін коммерциялық функция/толқын пішіні генераторларына қысқаша шолу жасаймыз. Содан кейін мен сізге қарапайым функция генераторын, аналогы мен цифрын қалай жасау керектігін көрсетемін
Ауа райына негізделген музыка генераторы (ESP8266 негізіндегі Midi генераторы): 4 қадам (суреттермен)
Ауа -райына негізделген музыкалық генератор (ESP8266 негізіндегі Midi генераторы): Сәлеметсіз бе, мен бүгін ауа -райына негізделген музыкалық генераторды қалай жасау керектігін түсіндіремін, ол ESP8266 негізінде жасалған, ол Arduino сияқты, ол температураға, жаңбырға жауап береді. және жарық қарқындылығы.Ол бүкіл әндер мен аккордтар жасайды деп күтпеңіз
DIY толқындық танк/Arduino мен V-слотты қолдану: 11 қадам (суреттермен)
Arduino мен V-ұясын қолданатын DIY толқындық резервуар/толқын: Толқындық резервуар-бұл жер үсті толқындарының әрекетін бақылауға арналған зертханалық қондырғы. Әдеттегі толқындық резервуар-бұл сұйықтықпен толтырылған қорап, әдетте сумен, үстінде ашық немесе ауамен толтырылған бос орын қалдырады. Резервуардың бір шетінде жетегі толқын шығарады; басқа е
Толқындық сағат галереясы: 6 қадам (суреттермен)
Толқындық сағат галереясы: бұл толқындардың уақытын сипаттайтын фотосуреттердің шағын галереясы - жазға арналған тамаша жоба. Микроконтроллермен толқындарды болжау принципі мәліметтер құрылымы мен қарапайым кодты орнатқан Люк Миллердің жұмысына негізделген
Толқындық шам - ауа райы мен ескертулер: 7 қадам (суреттермен)
Толқындық лампа - ауа райы мен ескертулер: Бір нәрсені аралап жүріп, мен бұл таңғажайып толқындық шамды көрдім және оны жасауым керек болды. https://www.thingiverse.com/thing:774456Шам өте жақсы безендірілген және тіректерсіз басып шығарылады (бүйірінде басып шығару қажет) Сонымен қатар