Оглавление:
- Запасы
- Шаг 1. Обзор
- Шаг 2: Сборка схемы
- Шаг 3: Как работает схема
- Шаг 4: Как работает код
- Шаг 5: программирование песни
- Шаг 6: обратная связь
Видео: Создание песен с помощью Arduino и двигателя постоянного тока: 6 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
На днях, просматривая некоторые статьи об Arduino, я заметил интересный проект, в котором для создания коротких мелодий использовались шаговые двигатели, управляемые Arduino. Arduino использовал вывод PWM (широтно-импульсная модуляция) для запуска шагового двигателя на определенных частотах, соответствующих музыкальным нотам. По времени воспроизведения частот можно было услышать четкую мелодию из шагового двигателя.
Однако, когда я попробовал это сам, я обнаружил, что шаговый двигатель, который у меня есть, не может вращаться достаточно быстро, чтобы создавать звук. Вместо этого я использовал двигатель постоянного тока, который относительно просто запрограммировать и подключить к Arduino. Обычная микросхема L293D может использоваться для простого управления двигателем от вывода ШИМ Arduino, а встроенная функция tone () в Arduino может генерировать необходимую частоту. К моему удивлению, я не нашел в Интернете никаких примеров или проектов, использующих двигатель постоянного тока, и поэтому эта инструкция - мой ответ, чтобы исправить это. Давайте начнем!
P. S. Я предполагаю, что вы уже имеете некоторый опыт работы с Arduino и знакомы с ее языком программирования и оборудованием. Вы должны знать, что такое массивы, что такое ШИМ и как его использовать, как работают напряжение и ток, и это лишь некоторые вещи. Если вы еще не там или только начали Arduino, не волнуйтесь: попробуйте эту страницу начала работы с официального сайта Arduino и возвращайтесь, когда будете готовы.:)
Запасы
- Arduino (я использовал UNO, но вы можете использовать другой Arduino, если хотите)
- Стандартный двигатель постоянного тока 5 В, желательно с вентилятором (см. Рисунок в разделе «Сборка схемы»).
- L293D IC
- Столько кнопок, сколько нот в песне, которую вы хотите сыграть
- Макетная плата
- Провода перемычки
Шаг 1. Обзор
Вот как работает проект: Arduino будет генерировать прямоугольный сигнал на заданной частоте, который он выводит на L293D. L293D подключен к внешнему источнику питания, который он использует для питания двигателя с частотой, заданной Arduino. Предотвращая вращение вала двигателя постоянного тока, можно услышать, как двигатель выключается и включается с такой частотой, которая издает тон или ноту. Мы можем запрограммировать Arduino на воспроизведение нот при нажатии кнопок или на их автоматическое воспроизведение.
Шаг 2: Сборка схемы
Чтобы собрать схему, просто следуйте приведенной выше схеме Fritzing.
Совет: звук двигателя лучше всего слышен, когда вал не вращается. Я надел вентилятор на вал своего двигателя и использовал клейкую ленту, чтобы удерживать вентилятор неподвижно, пока двигатель работал (см. Рисунок). Это предотвращало вращение вала и издавало чистый слышимый звук. Возможно, вам придется немного подправить, чтобы добиться чистого звука от мотора.
Шаг 3: Как работает схема
L293D - это ИС, используемая для управления устройствами с относительно высоким напряжением и током, такими как реле и двигатели. Arduino не может управлять большинством двигателей напрямую со своего выхода (а обратная ЭДС от двигателя может повредить чувствительную цифровую схему Arduino), поэтому такая микросхема, как L293D, может использоваться с внешним источником питания для легкого управления двигателем постоянного тока. Ввод сигнала в L293D будет выводить тот же сигнал на двигатель постоянного тока без риска повреждения Arduino.
Выше представлена распиновка / функциональная схема L293D из его таблицы данных. Поскольку мы управляем только одним двигателем (L293D может управлять двумя), нам нужна только одна сторона ИС. Контакт 8 - это питание, контакты 4 и 5 - GND, контакт 1 - это выход ШИМ от Arduino, а контакты 2 и 7 управляют направлением двигателя. Когда контакт 2 ВЫСОКИЙ, а контакт 7 НИЗКИЙ, двигатель вращается в одну сторону, а когда контакт 2 - НИЗКИЙ, а контакт 7 ВЫСОКИЙ, двигатель вращается в другую сторону. Поскольку нас не волнует, в какую сторону вращается двигатель, не имеет значения, являются ли контакты 2 и 7 НИЗКИМ или ВЫСОКИМ, если они отличаются друг от друга. Контакты 3 и 6 подключаются к двигателю. Вы можете подключить все к другой стороне (контакты 9-16), если хотите, но имейте в виду, что контакты питания и PWM меняются местами.
Примечание. Если вы используете Arduino, у которого недостаточно контактов для каждой кнопки, вы можете использовать сеть резисторов для подключения всех переключателей к одному аналоговому контакту, как в этой инструкции. Как это работает, выходит за рамки этого проекта, но если вы когда-либо использовали ЦАП R-2R, вам он должен быть знаком. Обратите внимание, что использование аналогового вывода потребует перезаписи больших частей кода, поскольку библиотеку кнопок нельзя использовать с аналоговыми выводами.
Шаг 4: Как работает код
Чтобы упростить работу со всеми кнопками, я использовал библиотеку под названием «Button» от Madleech. Я первым делом включил библиотеку. Затем в строках 8-22 я определил частоты для нот, необходимых для воспроизведения Twinkle, Twinkle, Little Star (пример песни), булавки, которую я буду использовать для управления L293D, и кнопок.
В функции настройки я инициализировал последовательный порт, кнопки и установил вывод драйвера для L293D в режим вывода.
Наконец, в основном цикле я проверил, была ли нажата кнопка. Если да, то Arduino проигрывает соответствующую заметку и печатает имя заметки на последовательном мониторе (полезно, чтобы узнать, какие заметки есть на вашей макетной плате). Если нота отпускается, Arduino останавливает любой звук с помощью noTone ().
К сожалению, из-за того, как структурирована библиотека, я не смог найти способ проверить, была ли нажата или отпущена кнопка менее подробным способом, чем использование двух условных выражений для каждой заметки. Другой недостаток этого кода заключается в том, что если вы нажмете две кнопки одновременно, а затем отпустите одну из них, обе заметки будут остановлены, потому что noTone () останавливает создание любых заметок, независимо от того, какая заметка ее запустила.
Шаг 5: программирование песни
Вместо использования кнопок для воспроизведения нот вы также можете запрограммировать Arduino на автоматическое воспроизведение мелодии. Вот модифицированная версия первого скетча, в котором на двигателе воспроизводятся Twinkle, Twinkle, Little Star. Первая часть скетча такая же - определение частот нот и тона. Попадаем в новую часть при bpm = "100". Я устанавливаю количество ударов в минуту (уд / мин), а затем использую математику, чтобы вычислить количество миллисекунд на удар, которому соответствует уд / мин. Для этого я использовал метод, называемый анализом размеров (не волнуйтесь - это не так сложно, как кажется). Если вы когда-либо посещали курс химии в средней школе, вы определенно использовали анализ размеров для преобразования единиц измерения. Поплавки () нужны для того, чтобы ничего в уравнении не округлялось до самого конца для точности.
После того, как мы получили количество миллисекунд на долю, я разделил или умножил его соответствующим образом, чтобы найти значения миллисекунд для различных длительностей нот в музыке. Затем я составляю массив каждой ноты в хронологическом порядке и еще один с продолжительностью каждой ноты. Очень важно, чтобы индекс каждой ноты совпадал с индексом ее длительности, иначе ваша мелодия не будет звучать. В качестве примера я поместил ноты для Twinkle, Twinkle, Little Star, но вы можете попробовать любую песню или последовательность нот по своему усмотрению.
Настоящая магия происходит в функции цикла. Для каждой ноты я играю тон в течение времени, указанного в массиве beat_values. Вместо того, чтобы использовать здесь задержку, из-за которой тон не воспроизводился, я записал время с момента запуска программы с помощью функции millis () и вычитал его из текущего времени. Когда время превышает время, указанное мною как последняя нота в массиве beat_values, я останавливаю ноту. Задержка после цикла for предназначена для добавления промежутка между нотами, гарантируя, что последующие ноты с той же частотой не будут смешиваться вместе.
Шаг 6: обратная связь
Вот и все для этого проекта. Если вы чего-то не понимаете или у вас есть предложения, не стесняйтесь обращаться ко мне. Поскольку это мои первые инструкции, я буду очень признателен за комментарии и предложения о том, как улучшить этот контент. Увидимся в следующий раз!
Рекомендуемые:
Преобразование 35 В постоянного тока в 9 В постоянного тока с помощью регулятора напряжения 7809: 7 шагов
Преобразование 35 В постоянного тока в 9 В постоянного тока с помощью регулятора напряжения 7809: Привет друг, сегодня я собираюсь сделать схему контроллера напряжения. С помощью этой схемы мы можем преобразовать до 35 В постоянного тока в постоянное 9 В постоянного тока. В этой схеме мы будем использовать только напряжение 7809. регулятор. Приступим
Преобразование 12 В постоянного тока в 5 В постоянного тока: 5 шагов
Преобразование 12 В постоянного тока в 5 В постоянного тока: Привет друг, сегодня я расскажу вам, как преобразовать постоянное напряжение до 24 В в постоянное 5 В. Приступим
Преобразователь с повышением тока с 1 А на 40 А для двигателя постоянного тока мощностью до 1000 Вт: 3 ступени
Преобразователь повышающего тока с 1 А на 40 А для двигателя постоянного тока мощностью до 1000 Вт: Привет! В этом видео вы узнаете, как сделать схему повышения тока для высокоамперных двигателей постоянного тока мощностью до 1000 Вт и 40 А с транзисторами и трансформатором с центральным отводом. ток на выходе очень высокий, но напряжение будет r
Сделай сам понижающий преобразователь постоянного тока в постоянный -- Как легко снизить напряжение постоянного тока: 3 шага
Сделай сам понижающий преобразователь постоянного тока в постоянный || Как легко снизить напряжение постоянного тока: понижающий преобразователь (понижающий преобразователь) - это преобразователь постоянного тока в постоянный, который понижает напряжение (при повышении тока) от входа (источника питания) к выходу (нагрузки). Это класс импульсных источников питания (SMPS), обычно содержащий не менее
ШИМ-управление скоростью двигателя постоянного тока и освещением - Диммер постоянного тока: 7 ступеней
ШИМ-управление скоростью двигателя постоянного тока и освещением | Диммер постоянного тока: сегодня в этом видео я собираюсь показать вам, как приглушить свет, контролировать скорость двигателя в постоянном или постоянном токе, так что давайте начнем