Съдържание:
- Стъпка 1: Необходими компоненти
- Стъпка 2: Преглед на таймерите Arduino за генериране на сигнали
- Стъпка 3: LED мигане
- Стъпка 4: LED димер
- Стъпка 5: Цифро-аналогов конвертор (DAC)
- Стъпка 6: Метроном
- Стъпка 7: Звуков спектър
- Стъпка 8: Серво мотори
- Стъпка 9: Удвоител на напрежение и инвертор
- Стъпка 10: Безжичен трансфер на енергия
Видео: Таймери на Arduino: 8 проекта: 10 стъпки (със снимки)
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:51
Arduino Uno или Nano могат да генерират точни цифрови сигнали на шест специални пина, като използват трите вградени таймера. Те изискват само няколко команди за настройка и не използват цикли на процесора за изпълнение!
Използването на таймерите може да бъде плашещо, ако започнете от пълния лист с данни ATMEGA328, който има 90 страници, посветени на тяхното описание! Няколко вградени Arduino команди вече използват таймерите, например millis (), delay (), tone (), AnalogWrite () и серво библиотеката. Но за да използвате пълната им мощност, ще трябва да ги настроите чрез регистрите. Споделям тук някои макроси и функции, за да направя това по -лесно и по -прозрачно.
След много кратък преглед на таймерите, следвайте 8 готини проекта, които разчитат на генериране на сигнал с таймерите.
Стъпка 1: Необходими компоненти
За да направите всички 8 проекта, ще ви трябва:
- Arduino Uno или съвместим
- Прототипен щит с мини протоборд
- 6 кабела за джъмпери
- 6 къси джъмпера за макет (направете си от 10 -сантиметрова жица за свързване)
- 2 изводи за крокодил
- 1 бял 5 мм светодиод
- резистор 220 ома
- 10kOhm резистор
- потенциометър 10 kOhm
- 2 керамични 1muF кондензатора
- 1 електролитен 10muF кондензатор
- 2 диода, 1n4148 или подобни
- 2 микро серво мотора SG90
- 1 8Ohm високоговорител
- 20 м тънка (0,13 мм) емайлирана тел
Стъпка 2: Преглед на таймерите Arduino за генериране на сигнали
Timer0 и timer2 са 8-битови таймери, което означава, че те могат да броят най-много от 0 до 255. Timer1 е 16-битов таймер, така че може да брои до 65535. Всеки таймер има два свързани изходни пина: 6 и 5 за timer0, 9 и 10 за timer1, 11 и 3 за timer2. Таймерът се увеличава при всеки тактов цикъл на Arduino или със скорост, която се намалява с коефициент на предварително мащабиране, който е или 8, 64, 256 или 1024 (32 и 128 също са разрешени за timer2). Таймерите се броят от 0 до „ТОП“и след това отново (бърза ШИМ) или надолу (фазова правилна ШИМ). Така стойността на „TOP“определя честотата. Изходните щифтове могат да задават, нулират или обръщат стойността на регистъра за сравнение на изхода, така че те определят работния цикъл. Само таймер 1 има възможност за независимо задаване на честотата и работните цикли за двата изходни щифта.
Стъпка 3: LED мигане
Най-ниската честота, която може да бъде достигната с 8-битовите таймери, е 16MHz/(511*1024) = 30, 6Hz. Така че, за да мига светодиод с 1Hz, се нуждаем от таймер 1, който може да достигне 256 пъти по -малки честоти, 0,12 Hz.
Свържете светодиод с неговия анод (дълъг крак) към pin9 и свържете неговия катод с резистор 220 Ohm към земята. Качете кода. Светодиодът ще мига точно на 1Hz с работен цикъл от 50%. Функцията loop () е празна: таймерът се инициализира при setup () и не се нуждае от допълнително внимание.
Стъпка 4: LED димер
Модулацията с широчина на импулса е ефективен начин за регулиране на интензитета на светодиода. С подходящ драйвер, той също е предпочитаният метод за регулиране на скоростта на електродвигателите. Тъй като сигналът е или 100% включен, или 100% изключен, не се губи мощност при последователно съпротивление. По принцип, това е като мигането на светодиода по -бързо, отколкото окото може да проследи. 50 Hz по принцип е достатъчно, но все пак може да изглежда, че леко примигва и когато светодиодът или очите се движат, може да се получи досадна непрекъсната „следа“. Използвайки предварителна скала от 64 с 8-битов таймер, получаваме 16MHz/(64*256) = 977Hz, което отговаря на целта. Избираме timer2, така че timer1 остава на разположение за други функции и не се намесваме във функцията Arduino time (), която използва timer0.
В този пример работният цикъл и следователно интензитетът се регулират от потенциометър. Втори светодиод може да се регулира независимо със същия таймер на щифт 3.
Стъпка 5: Цифро-аналогов конвертор (DAC)
Arduino няма истински аналогов изход. Някои модули приемат аналогово напрежение за регулиране на параметър (контраст на дисплея, праг на откриване и т.н.). Само с един кондензатор и резистор timer1 може да се използва за създаване на аналогово напрежение с резолюция 5mV или по -добра.
Нискочестотният филтър може да „усредни“PWM сигнала до аналогово напрежение. Кондензатор е свързан чрез резистор към PWM щифт. Характеристиките се определят от честотата на ШИМ и стойностите на резистора и кондензатора. Разделителната способност на 8-битовите таймери ще бъде 5V/256 = 20mV, затова избираме Timer1 да получи 10-битова резолюция. RC веригата е нискочестотен филтър от първи ред и ще има известни вълни. Времевата скала на RC веригата трябва да бъде много по-голяма от периода на PWM сигнала, за да се намали пулсацията. Периодът, който получаваме за 10-битова прецизност, е 1024/16MHz = 64mus. Ако използваме 1muF кондензатор и 10kOhm резистор, RC = 10ms. Пикът на върха на върха е най-много 5V*0.5*T/(RC) = 16mV, което се счита за достатъчно тук.
Обърнете внимание, че този ЦАП има много висок изходен импеданс (10 kOhm), така че напрежението ще спадне значително, ако тече ток. За да се избегне това, той може да бъде буфериран с opamp или може да бъде избрана друга комбинация от R и C, например 1kOhm с 10muF.
В примера изходът на DAC се управлява с потенциометър. Втори независим DAC канал може да бъде пуснат с таймер 1 на щифт 10.
Стъпка 6: Метроном
Метрономът помага да се следи ритъма при възпроизвеждане на музика. За много кратки импулси изходът на таймера arduino може да се подава директно към високоговорител, което ще произведе ясно чуваеми щраквания. С потенциометър честотата на биене може да се регулира от 40 до 208 удара в минута, в 39 стъпки. Таймер1 е необходим за необходимата точност. Стойността на „TOP“, която определя честотата, се променя във функцията loop () и това изисква внимание! Тук виждате, че режимът WGM се различава от другите примери с фиксирана честота: този режим, с TOP зададен от регистъра OCR1A, има двойно буфериране и предпазва от липсващ TOP и дълъг проблем. Това обаче означава, че можем да използваме само 1 изходен щифт.
Стъпка 7: Звуков спектър
Хората могат да чуят над 3 порядъка на звукови честоти, от 20Hz до 20kHz Този пример генерира пълния спектър с потенциометър. Между високоговорителя и Arduino е поставен 10muF кондензатор за блокиране на DC тока. Таймер 1 произвежда квадратна вълна. Режимът на генериране на вълновата форма тук е фазово-правилен ШИМ. В този режим броячът започва да брои назад, когато достигне върха, което води до импулси, чиято средна стойност е фиксирана, дори когато работният цикъл варира. Въпреки това, това също води до период, който е (почти) удвоен, и просто се случва, че с предварително скалиране 8, timer1 обхваща целия звуков спектър, без да се налага да се променя предварителното мащабиране. Също така тук, тъй като стойността на TOP се променя в движение, използването на OCR1A като върх намалява грешките.
Стъпка 8: Серво мотори
Има мощни серво библиотеки, но ако имате само две серво за управление, можете също да го направите директно с timer1 и по този начин да намалите процесора, използването на паметта и да избегнете прекъсвания. Популярното серво SG90 приема 50Hz сигнал и дължината на импулса кодира позицията. Идеален за таймер 1. Честотата е фиксирана, така че и двата изхода на щифт 9 и щифт 10 могат да се използват за независимо управление на сервомоторите.
Стъпка 9: Удвоител на напрежение и инвертор
Понякога вашият проект изисква напрежение, по -високо от 5V, или отрицателно напрежение. Възможно е да стартирате MOSFET, да стартирате пиезо елемент, да захранвате opamp или да нулирате EEPROM. Ако токът е достатъчно малък, до ~ 5mA, помпата за зареждане може да е най -простото решение: само 2 диода и два кондензатора, свързани към импулсен сигнал от таймер, позволяват да се удвоят arduino 5V до 10V. На практика има 2 диодни капки, така че това ще бъде по -скоро 8,6V на практика за удвоителя, или -3,6V за инвертора.
Честотата на квадратната вълна трябва да е достатъчна, за да изпомпва достатъчно заряд през диодите. 1muF кондензатор се движи с 5muC промяна, когато напрежението се промени между 0 и 5V, така че за 10mA ток, честотата трябва да бъде най -малко 2kHz. На практика по -високата честота е по -добра, тъй като намалява пулсациите. С таймер 2, който брои от 0 до 255 без предварително скалиране, честотата е 62,5 kHz, което работи добре.
Стъпка 10: Безжичен трансфер на енергия
Не е необичайно да зареждате интелигентен часовник без кабели, но същото може лесно да бъде част от проект на Arduino. Бобина с високочестотен сигнал може да предава мощност на друга близка бобина чрез индукция, без електрически контакт.
Първо подгответе намотките. Използвах хартиена ролка с диаметър 8,5 см и емайлирана тел с диаметър 0,13 мм, за да направя 2 намотки: първичната с 20 завъртания, вторичната с 50 завъртания. Самоиндукцията на този тип намотка с N намотки и радиус R е ~ 5muH * N^2 * R. Така че за N = 20 и R = 0.0425 дава L = 85muH, което беше потвърдено с компонентния тестер. Ние произвеждаме сигнал с честота 516kHz, което води до импеданс 2pi*f*L = 275Ohm. Това е достатъчно високо, че Arduino не влиза в свръхток.
За да работим намотката най -ефективно, бихме искали да използваме истински източник на променлив ток. Има един трик, който може да бъде направен: двата изхода на таймер могат да се изпълняват в противоположна фаза, чрез обръщане на един от изходите. За да го направим още по-подобен на синусоида, използваме ШИМ с корекция на фазата. По този начин между щифт 9 и 10 напрежението се редува между 0V, щифт 9 +5V, и двете 0V, щифт 10 +5V. Ефектът е показан на снимката от проследяване на обхвата (с 1024 предварително скала, този обхват на играчки няма голяма честотна лента).
Свържете първичната намотка към щифт 9 и 10. Свържете светодиод към вторичната намотка. Когато вторичната намотка се доближи до първичната, светодиодът светва ярко.
Препоръчано:
Лапи за измиване - Котката отговаря на проекта за измиване на ръцете Covid: 5 стъпки (със снимки)
Лапи за измиване - Котката отговаря на проекта за измиване на ръцете Covid: Тъй като всички сме отдалечени у дома, Paws to Wash е проект „Направи си сам“, който води родителите и децата през процеса на изграждане на сладък таймер за обратна връзка с размахваща се котка, за да насърчи здравословните навици за миене на ръце. По времето на Covid-19 миенето на ръцете
Псевдоним на проекта: 5 стъпки (със снимки)
Псевдоним на проекта: Псевдонимът е обучаващ се „паразит“, който е предназначен да даде на потребителите по -голям контрол над техните интелигентни асистенти, както по отношение на персонализирането, така и по отношение на поверителността. Чрез просто приложение потребителят може да обучи псевдонима да реагира на персонализирана пробуждаща дума/звук и веднъж tr
WIND - Ускорител на проекта за пера от Adafruit: 9 стъпки (със снимки)
WIND - Ускорител на проекта за Adafruit Feather: Бавно събирам различните микроконтролери и сензорни платки Adafruit Feather, които се предлагат от Adafruit. Те правят прототипирането и тестването супер лесно и аз съм голям фен на оформлението на платката. Откакто се озовах в употреба
10 основни проекта Arduino за начинаещи! Направете поне 15 проекта с един съвет!: 6 стъпки
10 основни проекта Arduino за начинаещи! Направете поне 15 проекта с един съвет !: Arduino Project & Учителски съвет; Включва 10 основни проекта Arduino. Всички изходни кодове, файлът Gerber и др. Без SMD! Лесно запояване за всички. Лесно свалящи се и сменяеми компоненти. Можете да направите поне 15 проекта с един бо
3 невероятни проекта за управление на BRAIN / MIND LedStrip LED с Arduino и Neurosky: 6 стъпки (със снимки)
3 Невероятни проекта за управление на BRAIN / MIND Светлини LedStrip LED С Arduino и Neurosky: Искали ли сте някога да включите или изключите светлините само като мислите за това? Или искате да знаете колко сте стресирани, като погледнете цвета на RGB светодиод? Докато сега можете, като следвате тези инструкции! За да почувствате какво ще правим, ще