Оглавление:

Метроном на базе микроконтроллера: 5 шагов
Метроном на базе микроконтроллера: 5 шагов

Видео: Метроном на базе микроконтроллера: 5 шагов

Видео: Метроном на базе микроконтроллера: 5 шагов
Видео: Бегать 🏃 быстрее 💨. О каденсе просто и наглядно 2024, Июль
Anonim
Image
Image

Метроном - это устройство отсчета времени, используемое музыкантами для отслеживания ударов в песнях и развития чувства времени у новичков, которые изучают новый инструмент. Это помогает поддерживать чувство ритма, что очень важно в музыке.

Этот построенный здесь метроном можно использовать для установки количества ударов в такт и ударов в минуту. Как только эти данные настройки введены, он издает звуковой сигнал в соответствии с данными, сопровождаемый соответствующим освещением с помощью светодиодов. Данные настройки отображаются на ЖК-экране.

Шаг 1: Необходимые компоненты:

·

  • Микроконтроллер Atmega8A
  • · ЖК-дисплей 16 * 2
  • · Пьезо-зуммер
  • · Светодиоды (зеленый, красный)
  • · Резисторы (220e, 330e, 1k, 5,6k)
  • · Кнопки (2 * антиблокировочная, 1 * запирающая)
  • · Плоская батарейка CR2032 3 В (* 2)
  • Держатель батарейки для монет (* 2)
  • · 6-контактный разъем Relimate (поляризованный)

Шаг 2: Изготовление схемы

Выполните электрические соединения, как показано на картинке, на вертикальной плате и правильно спаяйте соединения.

Шаг 3: особенности метронома

Интерфейс метронома в основном занимает ЖК-экран. Вверху находится микроконтроллер на 8А, расположенный по центру со светодиодами и зуммером справа. Три переключателя и разъем Relimate расположены вверху.

Весь проект питается только от двух батареек типа «таблетка» (последовательно при 6 В 220 мАч) с расчетным временем работы от 20 дней до 1 месяца (не постоянно). Следовательно, он умеренно энергоэффективен и требует тока 3-5 мА.

Самоблокирующийся переключатель расположен в крайнем левом углу и является кнопкой ВКЛ / ВЫКЛ. Кнопка посередине - это кнопка «Настройка», а кнопка справа используется для изменения значений ударов в минуту и ударов (на такт).

При нажатии переключателя ВКЛ / ВЫКЛ ЖК-дисплей включается и отображает значение ударов на такт. Он ожидает в течение 3 секунд, пока пользователь изменит значение, после чего он принимает полученное значение в качестве входных данных. Это значение находится в диапазоне 1/4, 2/4, 3/4, 4/4.

Затем он отображает количество ударов в минуту (ударов в минуту) и снова ждет в течение 3 секунд, чтобы пользователь изменил значение, после чего он устанавливает конкретное значение. Это время ожидания в 3 секунды калибруется после того, как пользователь изменяет значение. Значения ударов в минуту могут варьироваться от 30 до 240. Нажатие кнопки «Настройка» во время настройки ударов в минуту сбрасывает его значение до 30 ударов в минуту, что помогает уменьшить количество нажатий кнопок. Значения ударов в минуту кратны 5.

После завершения настройки подсветка ЖК-дисплея отключается для экономии заряда батареи. Зуммер издает один звуковой сигнал для каждой доли, а светодиоды мигают поочередно для каждой доли. Для изменения значений нажимается кнопка «Настройка». После этого включается подсветка ЖК-дисплея, и появляется подсказка ритма, как упоминалось ранее, с той же процедурой впоследствии.

Микроконтроллер Atmega8A состоит из 500 байтов EEPROM, что означает, что любые введенные значения ударов и ударов в минуту сохраняются даже после выключения метронома. Следовательно, при повторном включении он возобновляет работу с теми же данными, которые были введены ранее.

Разъем Relimate на самом деле является заголовком SPI, который можно использовать для двух целей. Его можно использовать для перепрограммирования микроконтроллера Atmega8A, чтобы обновить его прошивку и добавить новые функции в метроном. Во-вторых, для заядлых пользователей можно использовать внешний источник питания. Но этот источник питания не должен быть выше 5,5 вольт и имеет приоритет над переключателем ВКЛ / ВЫКЛ. По соображениям безопасности этот переключатель ДОЛЖЕН быть выключен, чтобы внешний источник питания не закоротил встроенные батареи.

Шаг 4: Описание

Этот проект выполнен с использованием микроконтроллера Atmel Atmega8A, который программируется с помощью Arduino IDE через Arduino Uno / Mega / Nano, используемый в качестве ISP-программиста.

Этот микроконтроллер представляет собой менее функциональную версию Atmel Atmega328p, которая широко используется в Arduino Uno. Atmega8A состоит из 8 Кбайт программируемой памяти и 1 Кбайт ОЗУ. Это 8-битный микроконтроллер, работающий на той же частоте, что и 328p, то есть 16 МГц.

В этом проекте, поскольку потребление тока является важным аспектом, тактовая частота была снижена и используется внутренний генератор 1 МГц. Это значительно снижает требования к току примерно до 3,5 мА при 3,3 В и 5 мА при 4,5 В.

В Arduino IDE нет возможности программировать этот микроконтроллер. Следовательно, был установлен пакет (плагин) «Minicore» для работы 8A с его внутренним генератором с использованием загрузчика Optiboot. Было замечено, что потребляемая мощность проекта увеличивалась с увеличением напряжения. Следовательно, для оптимального использования мощности микроконтроллер был настроен на работу на частоте 1 МГц, при этом одна плоская батарейка на 3 В потребляла всего 3,5 мА. Но было замечено, что ЖК-дисплей не работал должным образом при таком низком напряжении. Поэтому было принято решение использовать две батарейки типа «таблетка» последовательно, чтобы поднять напряжение до 6 В. Но это означало, что потребление тока увеличилось до 15 мА, что было огромным недостатком, поскольку время автономной работы сильно ухудшилось. Кроме того, он превысил безопасный предел напряжения 5,5 В микроконтроллера на 8 А.

Следовательно, резистор на 330 Ом был подключен последовательно к источнику питания 6 В, чтобы избавиться от этой проблемы. Резистор в основном вызывает падение напряжения на самом себе, чтобы снизить уровень напряжения в пределах 5,5 В для безопасной работы микроконтроллера. Кроме того, значение 330 было выбрано с учетом различных факторов:

  • · Цель заключалась в том, чтобы использовать 8А при как можно более низком напряжении для экономии энергии.
  • · Было замечено, что ЖК-дисплей перестал работать при напряжении ниже 3,2 В, хотя микроконтроллер все еще работал
  • · Это значение 330 гарантирует, что падения напряжения в крайних точках будут точными, чтобы полностью использовать батарейки типа «таблетка».
  • · Когда плоские элементы были на пике, напряжение составляло около 6,3 В, при этом 8A получало эффективное напряжение 4,6 - 4,7 В (@ 5 мА). А когда батареи почти высохли, напряжение составляло около 4 В при 8 А, а на ЖК-дисплее было достаточно напряжения, то есть 3,2 В для правильной работы. (@ 3,5 мА)
  • · Батареи ниже уровня 4 В, они были бесполезны без остатка сока для питания чего-либо. Падение напряжения на резисторе меняется в течение всего времени, поскольку потребление тока микроконтроллером на 8 А и ЖК-дисплеем уменьшается с уменьшением напряжения, что существенно способствует увеличению срока службы батареи.

ЖК-дисплей 16 * 2 был запрограммирован с использованием встроенной библиотеки LiquidCrystal в Arduino IDE. Он использует 6 контактов данных микроконтроллера 8A. Кроме того, его яркость и контраст контролировались с помощью двух выводов данных. Это было сделано для того, чтобы не использовать дополнительный компонент, например, потенциометр. Вместо этого для регулировки контрастности экрана использовалась функция ШИМ вывода данных D9. Кроме того, подсветка ЖК-дисплея должна быть выключена, когда она не требуется, поэтому это было бы невозможно без использования вывода данных для ее питания. Резистор 220 Ом использовался для ограничения тока через светодиод подсветки.

Зуммер и светодиоды также были подключены к выводам данных 8A (по одному на каждый). Для ограничения тока через красный светодиод использовался резистор 5,6 кОм, а для зеленого светодиода - 1 кОм. Номиналы резистора были выбраны с учетом баланса между яркостью и потребляемым током.

Кнопка ВКЛ / ВЫКЛ не связана с выводом данных, а представляет собой просто переключатель, который переключает проект. Один из его выводов подключается к резистору 330 Ом, а другой подключается к контактам Vcc ЖК-дисплея и 8A. Две другие кнопки подключены к выводам данных, которые внутренне подтягиваются к напряжению питания через программное обеспечение. Это необходимо для работы переключателей.

Кроме того, вывод данных, к которому подключается кнопка Setup, является выводом аппаратного прерывания. Его процедура обработки прерываний (ISR) активируется в Arduino IDE. Это означает, что всякий раз, когда пользователь хочет запустить меню настройки, 8A приостанавливает свою текущую операцию работы в качестве метронома и запускает ISR, который в основном активирует меню настройки. В противном случае пользователь не сможет получить доступ к меню настройки.

Опция EEPROM, упомянутая ранее, гарантирует, что введенные данные сохранятся даже после выключения платы. Заголовок SPI состоит из 6 контактов - Vcc, Gnd, MOSI, MISO, SCK, RST. Это часть протокола SPI, и, как упоминалось ранее, можно использовать программиста ISP, чтобы снова запрограммировать 8A для добавления новых функций или чего-либо еще. Вывод Vcc изолирован от положительной клеммы аккумулятора, и, следовательно, Metronome предоставляет возможность использовать внешний источник питания с учетом ограничений, упомянутых ранее.

Весь проект был построен на плате Veroboard путем пайки отдельных компонентов и соответствующих соединений в соответствии с принципиальной схемой.

Рекомендуемые: