Мазмуну:

Arduino таймерлери: 8 долбоор: 10 кадам (сүрөттөр менен)
Arduino таймерлери: 8 долбоор: 10 кадам (сүрөттөр менен)

Video: Arduino таймерлери: 8 долбоор: 10 кадам (сүрөттөр менен)

Video: Arduino таймерлери: 8 долбоор: 10 кадам (сүрөттөр менен)
Video: #6 Как запрограммировать таймер задержки ПЛК Outseal Arduino 2024, Июнь
Anonim
Arduino таймерлери: 8 долбоор
Arduino таймерлери: 8 долбоор

Arduino Uno же Nano үч камтылган таймерди колдонуу менен алты атайын казыкта так санарип сигналдарды түзө алат. Алар иштетүү үчүн CPU циклдерин орнотуу жана колдонуу үчүн бир нече буйруктарды талап кылат!

Таймерлерди колдонуу ATMEGA328 толук маалымат барагынан башталса, коркутуп -үркүтүшү мүмкүн, анын сүрөттөмөсүнө арналган 90 барак бар! Бир нече камтылган Arduino буйруктары таймерлерди колдонот, мисалы millis (), delay (), tone (), AnalogWrite () жана серво китепкана. Бирок алардын толук күчүн колдонуу үчүн аларды реестрлер аркылуу орнотуу керек болот. Мен муну жеңил жана ачык кылуу үчүн кээ бир макростар менен функцияларды бөлүшөм.

Таймерлер жөнүндө кыскача сереп салгандан кийин, таймерлер менен сигналды түзүүгө таянган 8 сонун долбоорду ээрчиңиз.

1 -кадам: Керектүү компоненттер

Керектүү компоненттер
Керектүү компоненттер

Бардык 8 долбоорду ишке ашыруу үчүн сизге керек болот:

  • An Arduino Uno же шайкеш
  • Мини протобоард менен прототип калкан
  • 6 панелдик секирүүчү кабель
  • 6 кыска токтоочу секиргич (өзүңүздү 10 см катуу өзөктүү зымдан жасаңыз)
  • 2 крокодил жетелейт
  • 1 ак 5мм LED
  • 220 Ом каршылыгы
  • 10kOhm резистор
  • 10kOhm потенциометр
  • 2 керамикалык 1мФ конденсатор
  • 1 электролитикалык 10 мФ конденсатор
  • 2 диод, 1n4148 же ушуга окшош
  • 2 микро серво мотору SG90
  • 1 8Ohm динамиги
  • 20м ичке (0.13мм) эмаль зым

2 -кадам: Signal Generation үчүн Arduino таймерлерине сереп

Timer0 жана timer2 8-бит таймер болуп саналат, башкача айтканда, алар эң көп дегенде 0дон 255ке чейин санай алышат. Timer1-16-разряддуу таймер, андыктан ал 65535ке чейин санай алат. Ар бир таймерде эки байланышкан чыкма бар: таймер үчүн 6 жана 5, таймер1 үчүн 9 жана 10, таймер2 үчүн 11 жана 3. Таймер ар бир Arduino саат циклинде же 8, 64, 256 же 1024 болгон алдын ала эсептөөчү факторго азаят (32 жана 128 таймер үчүн да уруксат берилген). Таймерлер 0ден "TOP" га чейин, андан кийин кайра (тез PWM) же төмөн карай (фазанын туура PWM) эсептешет. "TOP" мааниси жыштыкты аныктайт. Чыгуу казыктары Чыгууну салыштыруу реестринин маанисин орнотуп, баштапкы абалга келтире же оодара алат, андыктан алар кызмат циклин аныктайт. Бир гана таймер1 чыгуучу казыктар үчүн жыштыкты жана иштөө циклдерин өз алдынча орнотуу мүмкүнчүлүгүнө ээ.

3 -кадам: LED Blink

Image
Image
LED Blink
LED Blink
LED Blink
LED Blink

8-бит таймер менен жетүүгө мүмкүн болгон эң төмөнкү жыштык 16 МГц/(511*1024) = 30, 6 Гц. Ошентип, 1 Гц диодду жаркыратуу үчүн бизге таймер1 керек, ал 256 эсе кичирээк, 0.12 Гц жыштыкка жетет.

LEDди анод (узун буту) менен pin9га туташтырыңыз жана катодун 220 Ом резистору менен жерге туташтырыңыз. Кодду жүктөңүз. Светодиод 1%га чейин ирмелет жана 50%милдети менен. Цикл () функциясы бош: таймерди орнотууда () баштапкы абалга келтирет жана башка көңүл бурууну талап кылбайт.

4 -кадам: LED Dimmer

Image
Image
LED Dimmer
LED Dimmer
LED Dimmer
LED Dimmer

Импульстун туурасы модуляциясы-бул диоддун интенсивдүүлүгүн жөнгө салуунун эффективдүү жолу. Туура айдоочу менен, ошондой эле электромоторлордун ылдамдыгын жөнгө салуунун артыкчылыктуу ыкмасы. Сигнал же 100% күйүк же 100% өчүк болгондуктан, серия каршылыгында эч кандай күч текке кетпейт. Негизинен, бул LED ээрчигенге караганда, көз ээрчип кетет. 50Гц негизи жетиштүү, бирок ал дагы эле бир аз дирилдеп жаткандай сезилиши мүмкүн жана LED же көздөр жылганда, тажатма үзгүлтүксүз "из" пайда болушу мүмкүн. 8-разряддуу таймер менен 64кө чейинки өлчөөнү колдонуп, биз 16МГц/(64*256) = 977Гц алабыз, бул максатка ылайыктуу. Биз таймер2ди тандайбыз, ошондуктан timer1 башка функциялар үчүн жеткиликтүү бойдон калат жана биз timer0 колдонгон Arduino time () функциясына тоскоолдук кылбайбыз.

Бул мисалда кызмат цикли, демек, интенсивдүүлүк потенциометр менен жөнгө салынат. Экинчи светодиод 3 -пиндеги эле таймер менен өз алдынча жөнгө салынышы мүмкүн.

5-кадам: Digital-to-Analog Converter (DAC)

Image
Image
Digital-to-Analog Converter (DAC)
Digital-to-Analog Converter (DAC)
Digital-to-Analog Converter (DAC)
Digital-to-Analog Converter (DAC)

Arduino чыныгы аналогдук чыгууга ээ эмес. Кээ бир модулдар параметрди жөнгө салуу үчүн аналогдук чыңалууга ээ болушат (дисплейдин контрасты, аныктоо чеги ж. Б.). Бир гана конденсатор жана резистор менен, таймер1 5мВ же андан да жакшыраак аналогдук чыңалуу түзүү үчүн колдонулушу мүмкүн.

Төмөн өтүү чыпкасы PWM сигналын аналогдук чыңалууга "орточо" бере алат. Конденсатор резистор аркылуу PWM пинине туташтырылган. Мүнөздөмөлөр PWM жыштыгы жана резистор менен конденсатордун мааниси менен аныкталат. 8-разряддуу таймерлердин чечилиши 5V/256 = 20мВ болмок, ошондуктан 10-разрядды алуу үчүн Timer1ди тандап алабыз. RC микросхемасы-бул биринчи даражадагы төмөн өткөрүлүүчү чыпка жана анын толкундары болот. RC схемасынын убакыт масштабы толкунду азайтуу үчүн PWM сигналынын мезгилинен алда канча чоң болушу керек. Биз 10-биттик тактыкка ээ болгон мезгил 1024/16МГц = 64мус. Биз 1muF конденсатор жана 10kOhm каршылыгын колдоно турган болсо, RC = 10ms. Чокусунан чокусуна чейин толкун эң көп 5V*0.5*T/(RC) = 16mV, бул жерде жетиштүү деп эсептелет.

Белгилей кетчү нерсе, бул DAC өтө жогорку импеданска ээ (10kOhm), андыктан чыңалуу токту тартса, бир кыйла төмөндөйт. Мунун алдын алуу үчүн, аны опамп менен буферлөөгө болот, же R жана Cдин башка айкалышын тандап алса болот, мисалы 10 мкФ менен 1kOhm.

Мисалда, DAC чыгышы потенциометр менен башкарылат. Экинчи көз карандысыз DAC каналын 10 -пиндеги таймер1 менен иштетсе болот.

6 -кадам: Метроном

Image
Image
Metronome
Metronome
Metronome
Metronome

Метроном музыка ойногондо ритмди көзөмөлдөөгө жардам берет. Өтө кыска импульстар үчүн, arduino таймеринин чыгышы түздөн -түз динамикке берилиши мүмкүн, ал так угулган чыкылдатууну чыгарат. Потенциометрдин жардамы менен сокку жыштыгы 39 кадам менен 40тан 208ге чейин жөнгө салынышы мүмкүн. Таймер1 керектүү тактык үчүн керек. Жыштыкты аныктоочу "TOP" мааниси loop () функциясынын ичинде өзгөртүлөт жана бул көңүл бурууну талап кылат! Сиз бул жерде WGM режими белгиленген жыштыктын башка мисалдарынан айырмаланып турганын көрүп турасыз: бул режим OCR1A реестри тарабынан орнотулган TOP менен кош буферге ээ жана TOPтун жоголушунан жана узун ката кетүүдөн коргойт. Бирок, бул биз 1 чыгуучу пинди гана колдоно алабыз дегенди билдирет.

7 -кадам: Үн спектри

Image
Image
Үн спектри
Үн спектри
Үн спектри
Үн спектри

Адамдар 20 Гцтен 20 кГцке чейинки үн жыштыгынын 3 заказын уга алышат. Бул мисал потенциометр менен толук спектрди түзөт. Туруктуу токту бөгөө үчүн динамик менен Arduino ортосунда 10 мкФ конденсатор коюлган. Timer1 чарчы толкунду чыгарат. Бул жерде толкун формасын түзүү режими-этаптуу PWM. Бул режимде, эсептегич чокусуна жеткенде артка санай баштайт, мунун натыйжасында импульс пайда болот, ал тургай, кызмат цикли өзгөрсө да. Бирок, бул дагы (дээрлик) эки эсе көп мезгилге алып келет, жана алдын ала өлчөө 8 менен, таймер1 алдын ала өлчөөнү өзгөртпөстөн, толук угулуучу спектрди камтыйт. Ошондой эле бул жерде, TOP мааниси баратып өзгөртүлүп жаткандыктан, OCR1A колдонуу мүчүлүштүктөрдү азайтат.

8 -кадам: Servo Motors

Image
Image
Servo Motors
Servo Motors
Servo Motors
Servo Motors

Күчтүү серво китепканалар бар, бирок эгерде сизде айдоого эки гана сервос болсо, анда аны таймер1 менен түз кылып, ошону менен CPUну, эс тутумду колдонууну азайтып, үзгүлтүккө учурабашыңыз мүмкүн. Популярдуу SG90 servo 50Hz сигналын алат жана импульстун узундугу позицияны коддойт. Таймер үчүн идеалдуу1. Жыштык белгиленет, андыктан pin9 жана pin 10 боюнча чыгуулардын экөө тең серволорду өз алдынча башкаруу үчүн колдонулушу мүмкүн.

9 -кадам: Voltage Doubler жана Inverter

Voltage Doubler жана Inverter
Voltage Doubler жана Inverter
Voltage Doubler жана Inverter
Voltage Doubler жана Inverter
Voltage Doubler жана Inverter
Voltage Doubler жана Inverter

Кээде сиздин долбоор 5Вдан жогору же терс чыңалууну талап кылат. Бул MOSFETти иштетүү, пьезо элементин иштетүү, опампты иштетүү же EEPROMду баштапкы абалга келтирүү болушу мүмкүн. Эгерде учурдагы тартуу ~ 5mAга чейин кичине болсо, анда заряд насосу эң жөнөкөй чечим болушу мүмкүн: таймерден импульстук сигналга туташкан 2 диод жана эки конденсатор arduino 5Vдан 10Vга чейин эки эсе көбөйтүүгө мүмкүндүк берет. Иш жүзүндө, 2 диоддун тамчысы бар, андыктан ал дублер үчүн 8,6В, же инвертор үчүн -3,6V сыяктуу болот.

Квадрат толкунунун жыштыгы диоддор аркылуу заряддын жетиштүү болушуна жетиштүү болушу керек. 1 мФФ конденсатор чыңалуу 0 менен 5В ортосунда өзгөргөндө 5 мкч өзгөрүүнү жылдырат, андыктан 10мА ток үчүн жыштык кеминде 2 кГц болушу керек. Иш жүзүндө, жогорку жыштык жакшы, анткени ал толкунду азайтат. Таймер2 менен 0дөн 255ке чейин эсептөө менен, жыштыгы 62,5 кГц, бул жакшы иштейт.

10 -кадам: Wireless Power Transfer

Image
Image
Wireless Power Transfer
Wireless Power Transfer
Wireless Power Transfer
Wireless Power Transfer

Кабелсиз акылдуу саатты кубаттоо сейрек эмес, бирок ошол эле Arduino долбоорунун бир бөлүгү болушу мүмкүн. Жогорку жыштыктагы сигналга ээ болгон катуш электрди тийбестен, индукция аркылуу башка жакын жердеги катушка өткөрүп бере алат.

Алгач катушкаларды даярдаңыз. Мен диаметри 8,5 см болгон кагаз түрмөктү жана диаметри 0.13 мм болгон эмалдалган зымды колдонуп, 2 катушка жасадым: биринчиси 20 бурулуш менен, экинчиси 50 бурулуш менен. N түрмөктүү жана радиусу R болгон бул түрдөгү катушкалардын өздүк индуктивдүүлүгү ~ 5muH * N^2 * R. Ошентип N = 20 жана R = 0.0425 үчүн L = 85muH берет, бул компонент текшерүүчү менен тастыкталган. Биз 516 кГц жыштыкта сигнал чыгарабыз, натыйжада 2pi*f*L = 275Ohm импеданс пайда болот. Бул жетишерлик бийик, Arduino ашыкча агымга кирбейт.

Катушканы эң натыйжалуу иштетүү үчүн, биз чыныгы AC булагын колдонууну каалайбыз. Жасала турган бир амал бар: таймердин эки чыгышы карама -каршы фазада, чыгуулардын бирин тескери буруп иштетилиши мүмкүн. Аны синус толкунуна дагы окшош кылуу үчүн, Фазаны туура PWM колдонобуз. Ошентип, пин 9 менен 10 ортосунда чыңалуу 0V, пин 9 +5V, экөө тең 0V, пин 10 +5V ортосунда алмашат. Эффект сүрөттө масштабдык изден көрсөтүлөт (1024 алдын ала өлчөө менен, бул оюнчуктун диапазону көп өткөргүчкө ээ эмес).

Негизги катушканы 9 жана 10 -пинге туташтырыңыз. Экинчи катарга LED туташтырыңыз. Экинчи катушка баштапкыга жакындаганда, LED жаркырап күйөт.

Сунушталууда: