Мазмуну:
- 1 -кадам: Техникалык ойлор
- 2 -кадам: Керектүү компоненттер
- 3 -кадам: Курулуш
- 4 -кадам: Код
- 5 -кадам: Колдонуу
Video: Arduino толкун формасынын генератору: 5 кадам (сүрөттөр менен)
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:39
Февраль 2021 жаңыртуусу: Raspberry Pi Picoго негизделген 300x ылдамдык менен жаңы версиясын текшериңиз
Лабораторияда көбүнчө белгилүү бир жыштыктагы, формада жана амплитудадагы кайталануучу сигналга муктаж болот. Бул күчөткүчтү сыноо, чынжырды, компонентти же кыймылдаткычты текшерүү болушу мүмкүн. Күчтүү толкун формасындагы генераторлор коммерциялык жактан жеткиликтүү, бирок Arduino Uno же Arduino Nano менен өзүңүзгө керектүү нерсени жасоо оңой, мисалы:
www.instructables.com/id/Arduino-Waveform-…
www.instructables.com/id/10-Resister-Ardui…
Бул жерде төмөнкү өзгөчөлүктөрү бар башка бирөөнүн сүрөттөлүшү:
* Так толкун формалары: R2R DACти колдонуп 8-бит чыгаруу, 256-үлгү формасы
* Тез: 381 кГц ылдамдыкта ылдамдык
* Так: 1мГц кадам жыштык диапазону. Arduino кристаллындай так.
* Оңой иштөө: толкун формасы жана жыштыгы бир айлануучу коддогуч менен жөнгө салынат
* Амплитудалардын кеңири диапазону: милливольт 20В чейин
* 20 алдын ала аныкталган толкун формалары. Көбүрөөк кошуу үчүн жөнөкөй.
* Жасоо оңой: Arduino Uno же Nano plus стандарттык компоненттер
1 -кадам: Техникалык ойлор
Аналогдук сигналды кабыл алуу
Arduino Uno менен Nanoнун бир кемчилиги-анын аналогдук (DAC) санариптик конвертеринин жоктугу, андыктан аналогдук чыңалууну казыктарга түз чыгаруу мүмкүн эмес. Бир чечим - бул R2R тепкичи: 86 цифралуу резистор тармагына туташып, 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 сааттык циклди талап кылат, ошентип 16MHz/42 = 381kHz ылдамдыкта ылдамдыкка жетет. Ротари кодердин айлануусу же түртүлүшү пиндин өзгөрүшүнө жана үзүлүшкө алып келет, ал жөндөөнү өзгөртүү үчүн (толкун формасы же жыштык). Бул этапта массивдеги 256 саны кайра эсептелгендиктен, толкун формасынын чыныгы эсептөөлөрү негизги укурукта аткарылбайт. Өндүрүлүүчү абсолюттук максималдуу жыштык 190 кГц (тандоо ылдамдыгынын жарымы), бирок андан кийин мезгилде эки гана үлгү бар, андыктан форманы анча көзөмөлдөбөйт. Интерфейс 100 кГцтен жогору жыштыкты коюуга мүмкүндүк бербейт. 50kHzде, мезгилде 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В менен чектелген, андыктан +5V кубатын колдонуу 3Вга чейин чыңалуусун чектейт. Step-up модулдары компакт жана арзан. Опамга +20В берүү, ал 18Вга чейинки чыңалуудагы сигналдарды түзө алат. (NB, схемада LTC3105 айтылат, анткени бул Fritzingден тапкан жалгыз кадам. Чындыгында мен MT3608 модулун колдондум, кийинки кадамдардагы сүрөттөрдү караңыз). Мен R2R DAC чыгуусуна өзгөрмөлүү өчүүнү колдонууну чечтим, андан кийин опампалардын бирин сигналды күчөтпөстөн буферлөө үчүн, экинчисин 5.7ге күчөтүү үчүн колдоном, ошондуктан сигнал болжол менен 20В чыгууга жетет. Чыгуу агымы өтө чектелген, ~ 10мА, андыктан сигнал чоң спикерди же электр магнитти айдай турган болсо, күчтүү күчөткүч керек болушу мүмкүн.
2 -кадам: Керектүү компоненттер
Негизги толкун формасынын генератору үчүн
Arduino Uno же Nano
16x2 ЖК дисплей + 20kOhm триммер жана жарык үчүн 100Ohm сериялы резистор
5-пин айлануучу коддогуч (интегралдык баскыч менен)
10 кОмдук 25 резистор
Буфер/күчөткүч үчүн
LM358 же башка кош опамп
MT3608 негизинде кадам модулу
50kOhm өзгөрмөлүү резистор
10kOhm каршылыгы
47kOhm каршылыгы
1 мФ конденсатор
3 -кадам: Курулуш
Сүрөттө көрсөтүлгөндөй, мен баарын 7х9 см прототип тактасына ширеттим. Бул бардык зымдар менен бир аз баш аламан болгондуктан, мен оң чыңалуудагы кызылдарды жана кара түстөгү өткөргүчтөрдү боёгонго аракет кылдым.
Мен колдонгон кодерде 5 төөнөгүч бар, 3 бир жагында, 2 экинчи жагында. 3 казыктары бар тарап - чыныгы кодер, 2 казык менен каптал - интегралдык баскыч. 3-пин тарапта, борбордук пин жерге, башка эки казык D10 жана D11ге туташтырылышы керек. 2-пин тарапта, бир пин жерге, экинчиси D12ге туташтырылышы керек.
Бул мен жасаган эң жаман нерсе, бирок ал иштейт. Корпуска коюу жакшы болмок, бирок азырынча кошумча жумуш жана чыгым аны актабайт. Нано жана дисплей пин-баштар менен тиркелет. Эгерде мен жаңысын курсам, мындай кылбайт болчумун. Мен сигналдарды алуу үчүн коннекторлорду тактага койгон жокмун. Тескерисинче, мен аларды төмөндөгүдөй белгиленген жез зымдын кесилген бөлүктөрүнөн крокодил учтары менен алып кетем:
R - R2R DAC чийки сигналы
B - буфердик сигнал
А - күчөтүлгөн сигнал
T - пин 9дан таймер сигналы
G - жер
+ - жогорулатуучу модулдан оң 'жогорку' чыңалуу
4 -кадам: Код
Код, Arduino эскизи тиркелет жана Arduinoго жүктөлүшү керек.
20 толкун формасы алдын ала аныкталган. Башка толкундарды кошуу оңой болушу керек. Көңүл буруңуз, кокустук толкундар 256 баллдык массивди туш келди маанилер менен толтурат, бирок ошол эле үлгү ар бир мезгилде кайталанат. Чыныгы кокустук сигналдар ызы -чууга окшош, бирок бул толкун формасы ышкырыкка көбүрөөк окшош.
Код TIMER1 менен D9 пинге 1 кГц сигналды коёт. Бул аналогдук сигналдын убактысын текшерүү үчүн пайдалуу. Ошентип, саат циклдеринин саны 42 экенин түшүндүм: Эгерде мен 41 же 43 деп ойлосом жана 1 кГц сигналын чыгарсам, анда анын D9 пиндеги сигналдан башка жыштыгы бар экени анык. 42 мааниси менен алар эң сонун дал келет.
Адатта, Arduino millis () функциясы менен убакытты көзөмөлдөө үчүн ар бир миллисекундта үзгүлтүккө учурайт. Бул так сигналдын түзүлүшүн бузат, андыктан өзгөчө үзгүлтүк өчүрүлөт.
Компилятор мындай дейт: "Sketch программаны сактоо мейкиндигинин 7254 байтын (23%) колдонот. Максимуму 30720 байт. Глобалдык өзгөрмөлөр 483 байтты (23%) динамикалык эс тутумун колдонуп, жергиликтүү өзгөрмөлөр үчүн 1565 байт калтырат. Максимум 2048 байт." Ошентип, татаал код үчүн кеңири орун бар. Наного ийгиликтүү жүктөө үчүн "ATmega328P (эски жүктөгүч)" тандап алышыңыз мүмкүн экенин байкаңыз.
5 -кадам: Колдонуу
Сигнал генераторун Arduino Nano мини-USB кабели аркылуу гана иштетсе болот. Бул эң жакшы кубат банкы менен жасалат, андыктан аны менен туташтырылышы мүмкүн болгон аппараттын кокусунан жерге илиниши жок.
Күйгүзүлгөндө 100 Гц синус толкуну пайда болот. Баскычты айландыруу менен башка 20 толкундун бирин тандай аласыз. Түртүү учурунда айлантуу менен курсорду каалаган жыштыктагы цифраларга койсо болот, андан кийин каалаган баага өзгөртүүгө болот.
Амплитудасы потенциометр менен жөнгө салынып, буферлүү же күчөтүлгөн сигналды колдонсо болот.
Сигналдын амплитудасын текшерүү үчүн осциллографты колдонуу, чынында, сигнал башка түзмөккө ток бергенде абдан пайдалуу. Эгерде өтө көп ток тартылса, анда сигнал кесилет жана сигнал катуу бурмаланат
Өтө төмөн жыштыктар үчүн, чыгууну 10kOhm каршылыгы бар сериядагы LED менен элестетүүгө болот. Аудио жыштыктарды динамик менен угууга болот. Сигналды өтө кичине ~ 0,5В орнотууну тактаңыз, антпесе ток өтө жогору болуп, сигнал кыркыла баштайт.
Сунушталууда:
Толкун жана аба ырайы сааты: 9 кадам (сүрөттөр менен)
Толкун жана аба ырайы сааты: Сиз бир эле колу бар аналогдук сааттарды сатып алсаңыз да, агымдын деңгээли жогору же төмөн экенин же ортосунда болоорун, бирок мен каалаган нерсе төмөн толкун качан болорун айтып берчү. Мен карап турган нерсени кааладым q
Аба ырайына негизделген музыка генератору (ESP8266 негизделген Midi генератору): 4 кадам (сүрөттөр менен)
Аба ырайына негизделген музыка генератору (ESP8266 негизделген Midi генератору): Саламатсызбы, мен бүгүн өзүңүздүн кичинекей аба ырайына негизделген музыкалык генераторду кантип жасоону түшүндүрүп берем. жана жарыктын интенсивдүүлүгү. Бул бүтүндөй ырларды же аккорд программасын түзөт деп күтпөңүз
3 фазалуу синус толкун генератору Arduino Due негизделген: 5 кадам
3 фазалуу синус толкун генератору Arduino Due негизделген: бул үлүштүн максаты Due'нын көбүрөөк иштөөсүн колдонууга аракет кылып жаткан адамга жардам берүү + маалымдаманын жоктугу + пайдалуу эмес маалыматтык баракча. Бул долбоор 3 фазалуу синус толкунун @ 256 чейин түзө алат үлгүлөр / цикл төмөн жыштыкта (< 1kHz) жана 16 сек
Төмөн наркы толкун формасынын генератору (0 - 20МГц): 20 кадам (сүрөттөр менен)
Төмөн наркы толкун формасынын генератору (0 - 20МГц): КЫСКАЧА Бул долбоор өткөрүү ылдамдыгы 10 МГцтен ашкан толкун генераторун жана 1%га чейинки гармоникалык бурмалоону алуу зарылчылыгынан келип чыгат, мунун баары арзан баада. Бул документ толкун генераторунун конструкциясын сүрөттөйт
Fast Edge Square толкун генератору: 4 кадам
Fast Edge Square Wave Generator: Эгерде сиз кандайдыр бир компоненттин индуктивдүүлүгүн, сыйымдуулугун өлчөөнү кааласаңыз, анда бул макалада тез кырдуу толкун керек, биз бул жөнүндө билебиз