Оглавление:
- Шаг 1. Необходимые компоненты
- Шаг 2: Обзор таймеров Arduino для генерации сигналов
- Шаг 3: мигание светодиода
- Шаг 4: светодиодный диммер
- Шаг 5: Цифро-аналоговый преобразователь (ЦАП)
- Шаг 6: метроном
- Шаг 7: звуковой спектр
- Шаг 8: серводвигатели
- Шаг 9: Удвоитель напряжения и инвертор
- Шаг 10: Беспроводная передача энергии
Видео: Таймеры Arduino: 8 проектов: 10 шагов (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:50
Arduino Uno или Nano могут генерировать точные цифровые сигналы на шести выделенных контактах с помощью трех встроенных таймеров. Для их настройки требуется всего несколько команд, и для их работы не используются циклы процессора!
Использование таймеров может напугать, если вы начнете с полного описания ATMEGA328, в котором 90 страниц посвящены их описанию! Некоторые встроенные команды 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 или аналогичный
- 2 микро-серводвигателя SG90
- 1 динамик 8Ом
- 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 также разрешены для таймера2). Таймеры отсчитывают от 0 до «TOP», а затем снова (быстрая ШИМ) или в обратном порядке (ШИМ с правильной фазой). Таким образом, значение «TOP» определяет частоту. Выходные контакты могут устанавливаться, сбрасываться или переключаться на значение регистра сравнения выходных данных, поэтому они определяют рабочий цикл. Только timer1 может независимо устанавливать частоту и рабочие циклы для обоих выходных контактов.
Шаг 3: мигание светодиода
Самая низкая частота, которую можно достичь с помощью 8-битных таймеров, составляет 16 МГц / (511 * 1024) = 30,6 Гц. Итак, чтобы светодиод мигал с частотой 1 Гц, нам нужен timer1, который может достигать частоты в 256 раз меньшей, 0,12 Гц.
Подключите светодиод анодом (длинной ножкой) к выводу 9 и подключите его катод с резистором 220 Ом к земле. Загрузите код. Светодиод будет мигать с частотой точно 1 Гц при рабочем цикле 50%. Функция loop () пуста: таймер инициализируется в setup () и не требует дальнейшего внимания.
Шаг 4: светодиодный диммер
Широтно-импульсная модуляция - эффективный способ регулирования яркости светодиода. При наличии соответствующего драйвера это также предпочтительный метод регулирования скорости электродвигателей. Поскольку сигнал либо на 100% включен, либо на 100% выключен, на последовательное сопротивление не тратится энергия. По сути, это похоже на мигание светодиода быстрее, чем может заметить глаз. 50 Гц в принципе достаточно, но может показаться, что он немного мерцает, и когда светодиод или глаза двигаются, может возникнуть раздражающий прерывистый «след». Используя предварительное масштабирование 64 с 8-битным таймером, мы получаем 16 МГц / (64 * 256) = 977 Гц, что соответствует цели. Мы выбираем timer2, чтобы timer1 оставался доступным для других функций, и мы не вмешивались в функцию Arduino time (), которая использует timer0.
В этом примере рабочий цикл и, следовательно, интенсивность регулируются потенциометром. Второй светодиод может регулироваться независимо с тем же таймером на контакте 3.
Шаг 5: Цифро-аналоговый преобразователь (ЦАП)
У Arduino нет настоящего аналогового выхода. Некоторые модули используют аналоговое напряжение для регулирования параметра (контрастность дисплея, порог обнаружения и т. Д.). Имея всего один конденсатор и резистор, таймер 1 может использоваться для создания аналогового напряжения с разрешением 5 мВ или лучше.
Фильтр нижних частот может «усреднить» сигнал ШИМ до аналогового напряжения. Конденсатор подключен через резистор к выводу ШИМ. Характеристики определяются частотой ШИМ и номиналами резистора и конденсатора. Разрешение 8-битных таймеров будет 5 В / 256 = 20 мВ, поэтому мы выбираем Timer1, чтобы получить 10-битное разрешение. Цепь RC представляет собой фильтр нижних частот первого порядка, и в нем будет присутствовать некоторая пульсация. Временной масштаб RC-цепи должен быть намного больше, чем период сигнала ШИМ, чтобы уменьшить пульсации. Период, который мы получаем для 10-битной точности, составляет 1024/16 МГц = 64 мкс. Если мы используем конденсатор 1 мкФ и резистор 10 кОм, RC = 10 мс. Пульсации от пика к пику составляют не более 5 В * 0,5 * T / (RC) = 16 мВ, что здесь считается достаточным.
Обратите внимание, что этот ЦАП имеет очень высокий выходной импеданс (10 кОм), поэтому напряжение значительно упадет, если он потребляет ток. Чтобы избежать этого, его можно буферизовать с помощью операционного усилителя или выбрать другую комбинацию R и C, например, 1 кОм с 10 мкФ.
В этом примере выход ЦАП управляется потенциометром. Второй независимый канал ЦАП может работать с таймером 1 на выводе 10.
Шаг 6: метроном
Метроном помогает отслеживать ритм при воспроизведении музыки. Для очень коротких импульсов выход таймера Arduino может подаваться непосредственно на динамик, который будет производить отчетливо слышимые щелчки. С помощью потенциометра частоту ударов можно регулировать от 40 до 208 ударов в минуту с 39 ступенями. Timer1 необходим для требуемой точности. Значение TOP, определяющее частоту, изменяется внутри функции loop (), и это требует внимания! Здесь вы видите, что режим WGM отличается от других примеров с фиксированной частотой: этот режим с TOP, установленным регистром OCR1A, имеет двойную буферизацию и защищает от пропуска TOP и получения длинных сбоев. Однако это означает, что мы можем использовать только 1 выходной контакт.
Шаг 7: звуковой спектр
Люди могут слышать более 3 порядков звуковых частот, от 20 Гц до 20 кГц. Этот пример генерирует полный спектр с помощью потенциометра. Между динамиком и Arduino установлен конденсатор емкостью 10 мкФ, который блокирует постоянный ток. Timer1 выдает прямоугольную волну. Режим генерации сигнала здесь - фазокорректная ШИМ. В этом режиме счетчик начинает обратный отсчет, когда достигает максимума, что приводит к импульсам с фиксированным средним значением, даже если рабочий цикл изменяется. Однако это также приводит к (почти) двойному периоду, и просто так получилось, что с предварительным масштабированием 8 таймер 1 охватывает весь слышимый спектр без необходимости изменения предварительного масштабирования. Также здесь, поскольку значение TOP изменяется на ходу, использование OCR1A в качестве top уменьшает сбои.
Шаг 8: серводвигатели
Существуют мощные библиотеки сервоприводов, но если у вас есть только два сервопривода для управления, вы также можете сделать это напрямую с помощью timer1, тем самым уменьшив использование ЦП, памяти и избегая прерываний. Популярный сервопривод SG90 принимает сигнал 50 Гц, а длина импульса кодирует положение. Идеально подходит для таймера1. Частота фиксирована, поэтому оба выхода на выводе 9 и выводе 10 могут использоваться для независимого управления сервоприводами.
Шаг 9: Удвоитель напряжения и инвертор
Иногда для вашего проекта требуется напряжение выше 5 В или отрицательное напряжение. Это может быть запуск МОП-транзистора, пьезоэлемент, питание операционного усилителя или сброс EEPROM. Если потребляемый ток достаточно мал, до ~ 5 мА, подкачка заряда может быть самым простым решением: всего 2 диода и два конденсатора, подключенные к импульсному сигналу от таймера, позволяют удвоить напряжение Arduino с 5 В до 10 В. На практике есть 2 диодных спада, поэтому на практике это будет больше похоже на 8,6 В для удвоителя или -3,6 В для инвертора.
Частота прямоугольной волны должна быть достаточной для прокачки достаточного заряда через диоды. Конденсатор 1 мкФ перемещается на 5 мкКл при изменении напряжения от 0 до 5 В, поэтому для тока 10 мА частота должна быть не менее 2 кГц. На практике более высокая частота лучше, поскольку она уменьшает пульсации. С таймером 2, отсчитывающим от 0 до 255 без предварительного масштабирования, частота составляет 62,5 кГц, что хорошо работает.
Шаг 10: Беспроводная передача энергии
Зарядка умных часов без кабелей - не редкость, но они легко могут быть частью проекта Arduino. Катушка с высокочастотным сигналом может передавать энергию другой соседней катушке посредством индукции без электрического контакта.
Сначала подготовьте катушки. Я использовал рулон бумаги диаметром 8,5 см и эмалированный провод диаметром 0,13 мм, чтобы сделать 2 катушки: первичная с 20 витками, вторичная с 50 витками. Самоиндукция этого типа катушки с N обмотками и радиусом R составляет ~ 5 мкГн * N ^ 2 * R. Таким образом, для N = 20 и R = 0,0425 получается L = 85 мкГн, что было подтверждено тестером компонентов. Мы производим сигнал с частотой 516 кГц, что дает полное сопротивление 2pi * f * L = 275 Ом. Это достаточно много, чтобы Arduino не перегрузился по току.
Чтобы катушка работала наиболее эффективно, мы хотели бы использовать настоящий источник переменного тока. Есть трюк, который можно сделать: два выхода таймера могут работать в противофазе, инвертируя один из выходов. Чтобы сделать его еще более похожим на синусоидальную волну, мы используем ШИМ с коррекцией фазы. Таким образом, между контактами 9 и 10 напряжение будет меняться между 0 В, контактом 9 + 5 В, обоим 0 В, контактом 10 + 5 В. Эффект показан на картинке по кривой осциллографа (с предварительным масштабированием 1024, этот игрушечный прицел не имеет большой полосы пропускания).
Подключите первичную катушку к контактам 9 и 10. Подключите светодиод к вторичной катушке. Когда вторичная катушка приближается к первичной, светодиод загорается ярко.
Рекомендуемые:
Классный взлом тачпада ноутбука для проектов Arduino !: 18 шагов (с изображениями)
Отличный взлом тачпада ноутбука для проектов Arduino! Некоторое время назад, когда я возился с тачпадом PS / 2 с микроконтроллером Arduino, я обнаружил, что два из его встроенных разъемов могут использоваться как цифровые входы. В этом руководстве давайте узнаем, как мы можем использовать добавление тачпада PS / 2
Беспроводная связь с использованием модуля приемопередатчика NRF24L01 для проектов на базе Arduino: 5 шагов (с изображениями)
Беспроводная связь с использованием модуля приемопередатчика NRF24L01 для проектов на базе Arduino: это мой второй поучительный учебник о роботах и микроконтроллерах. Это действительно потрясающе видеть вашего робота живым и работающим, как ожидалось, и поверьте мне, будет веселее, если вы будете управлять своим роботом или другими вещами по беспроводной сети с помощью быстрых и
Микроконтроллер AVR. Светодиоды мигают с использованием таймера. Таймеры прерываний. Режим таймера CTC: 6 шагов
Микроконтроллер AVR. Светодиоды мигают с использованием таймера. Таймеры прерываний. Timer CTC Mode: Всем привет! Таймеры - важная концепция в области электроники. Каждый электронный компонент работает по расписанию. Эта временная шкала помогает синхронизировать всю работу. Все микроконтроллеры работают на определенной тактовой частоте
10 базовых проектов Arduino для начинающих! Сделайте как минимум 15 проектов на одной доске !: 6 шагов
10 базовых проектов Arduino для начинающих! Сделайте как минимум 15 проектов на одной плате !: Arduino Project & Учебная доска; Включает 10 базовых проектов Arduino. Все исходные коды, файл Gerber и многое другое. Нет SMD! Легкая пайка для всех. Легко снимаемые и заменяемые компоненты. Вы можете сделать не менее 15 проектов с одной
Бесплатные детали для электронных проектов и экспериментов: 26 шагов (с изображениями)
Бесплатные детали для проектов в области электроники и экспериментов: это руководство посвящено получению бесплатных деталей для проектов в области электроники. У вас, вероятно, есть все необходимое для начала работы, и ваши запасы со временем будут расти, когда вы ломаете вещи, покупаете новые или иногда люди отдадут вам свои старые или ун