Мазмұны:

Arduino таймерлері: 8 жоба: 10 қадам (суреттермен)
Arduino таймерлері: 8 жоба: 10 қадам (суреттермен)

Бейне: Arduino таймерлері: 8 жоба: 10 қадам (суреттермен)

Бейне: Arduino таймерлері: 8 жоба: 10 қадам (суреттермен)
Бейне: Output DC or AC Voltage using MCP4725 DAC with LCD and PWM to Voltage Converter with Arduino 2024, Маусым
Anonim
Arduino таймері: 8 жоба
Arduino таймері: 8 жоба

Arduino Uno немесе Nano үш кіріктірілген таймердің көмегімен алты арнайы түйреуіште дәл цифрлық сигналдарды шығара алады. Оларды іске қосу үшін CPU циклдарын орнатуға және қолдануға тек бірнеше пәрмендер қажет!

Егер сіз олардың сипаттамасына арналған 90 беттен тұратын ATMEGA328 толық деректер кестесінен бастасаңыз, таймерлерді пайдалану қорқынышты болуы мүмкін! Бірнеше кіріктірілген Arduino командалары таймерлерді қолданады, мысалы millis (), delay (), tone (), AnalogWrite () және сервистік кітапхана. Бірақ олардың толық қуатын пайдалану үшін оларды регистрлер арқылы реттеу қажет. Мен мұны жеңілдету үшін бірнеше макростар мен функциялармен бөлісемін.

Таймерлерге қысқаша шолу жасағаннан кейін, таймерлермен сигнал генерациясына негізделген 8 керемет жобаны орындаңыз.

1 -қадам: Қажетті компоненттер

Қажетті компоненттер
Қажетті компоненттер

Барлық 8 жобаны жасау үшін сізге қажет:

  • Arduino Uno немесе үйлесімді
  • Шағын протободы бар прототипті қалқан
  • 6 нанға арналған секіргіш кабель
  • 6 қысқа тақтайшаға арналған секіргіш (өзіңізді 10см берік өзекті сымнан жасаңыз)
  • 2 қолтырауын
  • 1 ақ 5мм жарық диодты
  • 220 Ом резистор
  • 10 кОм резистор
  • 10 кОм потенциометр
  • 2 керамикалық 1 мкФ конденсатор
  • 1 электролиттік 10 мкФ конденсатор
  • 2 диод, 1n4148 немесе ұқсас
  • SG90 2 микросерво қозғалтқышы
  • 18Ohm динамигі
  • 20м жұқа (0,13мм) эмальданған сым

2 -қадам: сигнал генерациясына арналған Arduino таймерлеріне шолу

Таймер0 мен таймер2-8 разрядты таймер, яғни олар 0-ден 255-ке дейін санауға болады. Таймер1-16-разрядты таймер, сондықтан ол 65535-ке дейін есептей алады. Әр таймерде екі байланысты шығыс түйреуіштері бар: таймер үшін 6 және 5, таймер1 үшін 9 және 10, таймер2 үшін 11 және 3. Таймер әрбір Arduino сағаттық циклінде немесе 8, 64, 256 немесе 1024 болатын алдын -ала өлшеу коэффициентімен азайтылатын жылдамдықпен өседі (32 және 128 таймер үшін де рұқсат етілген). Таймерлер 0 -ден «TOP» -ке дейін, содан кейін қайта (жылдам PWM) немесе төменге қарай (фазаны түзететін PWM) есептеледі. «TOP» мәні осылайша жиілікті анықтайды. Шығару түйреуіштері шығыс салыстыру регистрінің мәнін орнатуға, қалпына келтіруге немесе аударуға мүмкіндік береді, сондықтан олар жұмыс циклін анықтайды. Тек таймер1 -де екі шығыс түйреуішінің жиілігі мен жұмыс циклін дербес орнату мүмкіндігі бар.

3 -қадам: жарық диоды жыпылықтайды

Image
Image
Жарық диодты жыпылықтау
Жарық диодты жыпылықтау
Жарық диодты жыпылықтау
Жарық диодты жыпылықтау

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

Жарық диодты анодпен (ұзын аяғы) pin9 -ге қосыңыз және катодты 220 Ом резисторымен жерге қосыңыз. Кодты жүктеңіз. Жарық диоды 1%жиілікте жыпылықтайды, жұмыс циклы 50%. Цикл () функциясы бос: таймер setup () кезінде инициализацияланады және қосымша назар аударуды қажет етпейді.

4 -қадам: Жарықдиодты диммер

Image
Image
Жарықдиодты диммер
Жарықдиодты диммер
Жарықдиодты диммер
Жарықдиодты диммер

Импульстік енді модуляция-жарықдиодты шамның қарқындылығын реттеудің тиімді әдісі. Тиісті драйвермен, сонымен қатар электр қозғалтқыштарының жылдамдығын реттеудің таңдаулы әдісі болып табылады. Сигнал 100% қосулы немесе 100% сөндірулі болғандықтан, сериялы қарсылықта қуат жоғалмайды. Негізінде, бұл светодиодты көзге қарағанда тезірек жыпылықтау сияқты. Негізінде 50Гц жеткілікті, бірақ ол әлі де жыпылықтап тұрғандай көрінуі мүмкін, ал жарық диоды немесе көздер қозғалса, тітіркендіргіш үздіксіз «із» пайда болуы мүмкін. 8-разрядты таймермен 64-тің алдын ала шкаласын қолдана отырып, біз мақсатқа сәйкес келетін 16 МГц/(64*256) = 977 Гц аламыз. Біз таймер2 таңдаймыз, осылайша таймер1 басқа функциялар үшін қол жетімді болып қалады және біз таймер0 қолданатын Arduino time () функциясына кедергі жасамаймыз.

Бұл мысалда жұмыс циклы, демек, қарқындылығы потенциометрмен реттеледі. Екінші светодиоды 3 -істегі сол таймермен дербес реттеуге болады.

5-қадам: Сандық-аналогтық түрлендіргіш (DAC)

Image
Image
Сандық-аналогтық түрлендіргіш (DAC)
Сандық-аналогтық түрлендіргіш (DAC)
Сандық-аналогтық түрлендіргіш (DAC)
Сандық-аналогтық түрлендіргіш (DAC)

Arduino -да нақты аналогтық шығыс жоқ. Кейбір модульдер параметрді реттеу үшін аналогты кернеуді қабылдайды (дисплей контрасты, анықтау шегі және т.б.). Тек бір конденсатор мен резистордың көмегімен таймер1 көмегімен ажыратымдылығы 5 мВ немесе одан жоғары аналогты кернеуді жасауға болады.

Төмен өтетін сүзгі PWM сигналын аналогты кернеуге «орташа» жеткізе алады. Конденсатор резистор арқылы PWM түйреуішіне қосылады. Сипаттамалар PWM жиілігімен және резистор мен конденсатордың мәндерімен анықталады. 8-разрядты таймерлердің ажыратымдылығы 5В/256 = 20мВ болады, сондықтан біз 10-разрядты алу үшін Timer1-ді таңдаймыз. RC тізбегі бірінші ретті төмен өткізгішті фильтр болып табылады және оның толқуы болады. RC тізбегінің уақыт шкаласы толқынды төмендету үшін PWM сигналының кезеңінен әлдеқайда үлкен болуы керек. Біз 10-биттік дәлдік үшін алатын кезең-1024/16МГц = 64мус. Егер біз 1 мкФ конденсатор мен 10 кОм резисторды қолданатын болсақ, RC = 10 мс. Шыңнан жоғарыға дейінгі толқу ең көп дегенде 5В*0,5*Т/(РК) = 16мВ құрайды, бұл мұнда жеткілікті деп саналады.

Назар аударыңыз, бұл DAC шығыс кедергісі өте жоғары (10кОм), сондықтан ток тартса кернеу айтарлықтай төмендейді. Бұған жол бермеу үшін оны опамппен буферлеуге болады, немесе басқа R және C комбинациясын таңдауға болады, мысалы 10 мкФ 1кОм.

Мысалда DAC шығысы потенциометрмен басқарылады. Екінші тәуелсіз DAC арнасын 10 -істегіште таймермен іске қосуға болады.

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

Image
Image
Метроном
Метроном
Метроном
Метроном

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

7 -қадам: Дыбыстық спектр

Image
Image
Дыбыстық спектр
Дыбыстық спектр
Дыбыстық спектр
Дыбыстық спектр

Адамдар 20 Гц -тен 20 кГц -ке дейінгі дыбыс жиіліктерінің 3 ретін есте алады Бұл мысал потенциометрмен толық спектрді жасайды. Тұрақты токты блоктау үшін динамик пен Arduino арасына 10 мкФ конденсатор қойылады. Timer1 шаршы толқын шығарады. Толқындық форма генерациялау режимі-бұл PWM фазасын түзету. Бұл режимде санауыш жоғарыға жеткенде артқа қарай бастайды, бұл импульстерге әкеледі, олар жұмыс циклі өзгерсе де. Сонымен қатар, бұл екі есе дерлік кезеңге әкеледі және 8 -дің алдын ала өлшеуімен таймер1 алдын ала шкаланы өзгертуді қажет етпестен, толық дыбыстық спектрді қамтиды. Сондай-ақ, мұнда TOP мәні қозғалыста өзгеріп отыратындықтан, OCR1A-ны қолдану жоғарыдағы ақауларды азайтады.

8 -қадам: Servo Motors

Image
Image
Серво моторлары
Серво моторлары
Серво моторлары
Серво моторлары

Серво кітапханаларында қуатты кітапханалар бар, бірақ егер сізде тек екі серво болса, оны timer1 көмегімен жасауға болады, осылайша процессорды, жадты пайдалануды азайтады және үзілістерді болдырмайды. Танымал SG90 серво 50Гц сигнал қабылдайды, ал импульстің ұзындығы позицияны кодтайды. Таймер үшін өте қолайлы1. Жиілік бекітілген, сондықтан серваларды өз бетінше басқару үшін pin9 мен pin 10 -дағы шығыс екеуін де қолдануға болады.

9 -қадам: кернеу еселігі мен түрлендіргіші

Кернеуді еселейтін және түрлендіргіш
Кернеуді еселейтін және түрлендіргіш
Кернеуді еселейтін және түрлендіргіш
Кернеуді еселейтін және түрлендіргіш
Кернеуді еселейтін және түрлендіргіш
Кернеуді еселейтін және түрлендіргіш

Кейде сіздің жобаңыз 5В жоғары кернеуді немесе теріс кернеуді қажет етеді. Бұл MOSFET -ті іске қосу, пьезо -элементті іске қосу, опампты қосу немесе EEPROM -ды қалпына келтіру болуы мүмкін. Егер ағымдағы тартқыш жеткілікті аз болса, ~ 5мА дейін, зарядтау сорғысы ең қарапайым шешім болуы мүмкін: таймерден импульстік сигналға қосылған 2 диод пен екі конденсатор arduino 5V -дан 10В -қа дейін екі есе арттыруға мүмкіндік береді. Іс жүзінде диодтың 2 тамшысы бар, сондықтан ол дублер үшін 8,6 В немесе инвертор үшін -3,6 В шамасында болады.

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

10 -қадам: сымсыз қуат беру

Image
Image
Сымсыз қуат беру
Сымсыз қуат беру
Сымсыз қуат беру
Сымсыз қуат беру

Ақылды сағатты кабельсіз зарядтау сирек емес, бірақ бұл Arduino жобасының бір бөлігі болуы мүмкін. Жоғары жиілікті сигналы бар катушка электр байланысынсыз индукция арқылы басқа жақын орамға қуатты бере алады.

Алдымен катушкаларды дайындаңыз. Мен 2 катушканы жасау үшін диаметрі 8,5 см болатын қағаз орамы мен диаметрі 0,13 мм эмальданған сымды қолдандым: біріншісі 20 айналыммен, екіншісі 50 айналыммен. N орамасы мен R радиусы бар катушканың өзіндік индуктивтілігі ~ 5мух * Н^2 * Р. Сондықтан N = 20 және R = 0,0425 үшін L = 85 мУх құрайды, бұл компонентті тексерушімен расталды. Біз 516 кГц жиілікті сигнал шығарамыз, нәтижесінде импеданс 2pi*f*L = 275Ohm құрайды. Бұл жеткілікті жоғары, бұл Arduino шамадан тыс токқа түспейді.

Катушканы тиімді пайдалану үшін біз айнымалы ток көзін қолданғымыз келеді. Бір амал бар: таймердің екі шығысы қарама -қарсы фазада, шығыстардың бірін төңкеру арқылы іске қосылуы мүмкін. Оны синусоидалық толқынға ұқсас ету үшін біз фазалық түзетілген PWM қолданамыз. Осылайша, 9 мен 10 түйреуіш арасында кернеу 0В, 9 +5 В, екеуі де 0 В, 10 +5 В арасындағы ауысады. Эффект суретте ауқымды бақылау арқылы көрсетілген (1024 алдын ала шкаласы бар, бұл ойыншықтар ауқымының өткізу қабілеттілігі көп емес).

Бастапқы катушканы 9 және 10 түйреуішке қосыңыз. Жарық диодты қосалқы катушкаға қосыңыз. Қосалқы катушканы бастапқыға жақындатқанда, жарық диоды қатты жанады.

Ұсынылған: