- Платы Ардуино
- Обучение Ардуино
- Мой блог
- Уроки
- Урок № 1 "Пишем свой первый скетч"
- Урок № 2 "Подключение фоторезистора"
- Урок № 3 "Подключение пищалки(BUZZER)
- Урок № 7 "Модуль часов RTC DS3231"
- Урок № 8 - "Шаговый двигатель 28BYJ-48"
- Урок № 10 - "ИК пульт на Ардуино"
- Урок № 11- "Сканер отпечатка пальца"
- Урок № 12- "Датчик наклона SW-200D"
- Урок № 13- "Гирлянда светодиодная WS2812b"
- Книги
- Мой YOUTUBE
Сервомотор с памятью. Arduino сервомотор sg90.
Сервомотор с памятью. Arduino сервомотор sg90.
Научим сервомотор вращаться по заданной программе. Подключим к Ардуино сервомотор. Запишем значения углов поворота, на SD карту, а потом сервомотор будет следовать этим значения. Будем для примеров использовать два сервомотора sg90. Иногда их ещё называют сервоприводы. Управления сервомотором будет программно и так можно создать робота или станок с ЧПУ.
Сегодня рассмотрим пример управления двумя сервомоторами с помощью потенциометров. А потом сохраним все эти передвижения на SD карту и воспроизведём их по памяти с карты. А в конце я покажу ещё один вариант. Он намного проще и удобнее.
Посмотрим что получилось.
Как видите я ничем не управляю, а моторы делают разные движения, которые были выполнены с помощью потенциометров и записаны на карту памяти. Сервомоторов может быть больше чем два. Всё зависит от используемой платы Ардуино.
Сначала просто научимся записывать данные на карту. У меня на канале уже есть несколько видео про использование SD карт. Можете посмотреть их по этой ссылке.
Посмотрим схему подключения.
Резисторы подключены по обычной схеме. Два крайних вывода соединим с плюсом и минусом питания, а центральные контакты подключим к аналоговым входам А0, и А1, Ардуино.
Таким способом мы будем подавать различное напряжение от 0 до напряжения питания. Я специально не сказал что до 5 вольт. Так как получить 5 вольт практически не реально. Оно будет всегда чуть ниже.
Эти значения будут поступать на АЦП(Аналого-цифровой преобразователь), который преобразует их в значение от 0 до 1023. Так как АЦП в Ардуино 10 битный, то есть это значит 2 в 10 степени, то диапазон преобразования будет 1024.
Модуль МикроSD карты подключаем согласно схеме. З вывода с модуля которые подключены к плате к контактам D11, D12, D13 надо подключать именно так, а вот вывод чипселект можно подключать к любому цифровому выводу. Я подключил к D4.
Сервомоторы которые я использовать довольно слабые и их можно подключить к контакту 5 вольт платы. Если у вас будут более мощные сервоприводы, то их надо подключать к контактам VIN или к отдельному источнику питания. И не забудьте соединить земли всех источников питания. Сигнальные выводы можно подключать к любым цифровым выводам. Я подключил к D9 и D10. И в скетче прописаны именно эти контакты.
Со схемой разобрались. Теперь давайте посмотрим скетч.
Сначала просто подключим 2 резистора и вращая их запишем их значения на SD карту.
Никакие библиотеки устанавливать не нужно. Всё есть в Ардуино IDE. Единственное, что если вы подключите вывод чипселект не к 4 выводу, то вам надо будет здесь исправить на ваше значение.
Здесь обычная проверка. И если ошибок нет, то идём дальше.
Создаём переменную для сбора данных значений.
В цикле считываем значения с двух аналоговых входов. А0 и А1 и между ними ставим разделитель, запятую, что бы можно было легко вывести в эксель и строить графики.
Этот код отвечает за открытие файла для записи. Если файл не существует, то он будет создан.
Запишем все значения в этот файл, и параллельно выведем их в последовательный порт для просмотра.
Чтобы легче было смотреть, я сделал паузу между записями в 1 секунду.
Сначала у меня переменные резисторы установлены на 0. Теперь я буду вращать резистор, тем самым подавая напряжения на вход Ардуино. И мы видим меняющиеся значения. Тоже самое я проделаю и с другим резистором. Значения в мониторе меняются и между ними стоит запятая. Это именно то чего мы и хотели. Теперь ещё немного покрутим, что бы было побольше значений.
Теперь отключим питание, вытащим карту и вставим её в компьютер. Сравним значения в мониторе порта и на SD карте.
А используя вот этот скетч, мы могли бы вообще ничего не доставать, а посмотреть всё онлайн.
Я вывел значения в Эксель, в блокнот и в монитор порта. Сравним значения. Я стрелками укажу на некоторые значения.
Мы убедились, что наши значения пишутся на карту и нет никаких пропусков. Теперь можно переходить ко второму этапу. Считывание с SD карты и управление двумя сервомоторами.
Это обновлённая версия скетча. В процессе работы. Мне пришлось изменить запись данных в файл, и я использовал функцию map для преобразования значений.
Значения от нуля до 1023 я преобразовал в угол поворота от 0 до 180 градусов.
Теперь запишем движения сервомоторов на карту. Для примера я каждую из серв покрутил 3 раза. То есть от 0 до 180 градусов и обратно. А ещё у меня не получилось делать полный оборот плавно и без рывков, поэтому при проигрывании движения будут не плавными, а с небольшими рывками.
Можно вращать и одновременно две сервы, но во время съёмки мне было не удобно, и у меня не получилось.
Теперь давайте посмотрим как вращаются сервомоторы, управляемые записанными в предыдущем видео значениями.
Я специально так установил 2 сервомотора. Так они смогут вращаться и по горизонтали, и по вертикали. К верхнему мотору можно прикрепить видеокамеру. А записав нужные значения, можно отслеживать определённые точки.
Теперь смотрим что у нас происходит. Сначала движется нижняя серва. Она перемещается от 0 до 180 градусов по горизонтали, и способна охватить большую площадь обзора. Как мы помним, она сработает 3 раза и передаст управление другому сервомотору, который в свою очередь тоже сделает 3 цикла вращений, но уже в вертикальном направлении. Если развивать проект с видеонаблюдением, то вертикальное вращение можно ограничить. Вряд ли вам понадобится такой большой диапазон в 180 градусов.
Про рывки я говорил раньше. Мне было неудобно вращать переменный резистор во время записи.
Ну вот вроде и всё. Что хотели, то и получили.
Для спонсоров, как дополнительный бонус, будет выложен скетч записи для управления одной сервой. И там я сделал вращение сервомотора при записи значений, чего я просто забыл сделать в скетче с двумя сервами.
Я понимаю, что должно было быть наоборот, но когда я начинал делать это видео, я ещё не планировал, что будет дополнительный материал.
Думаю, что никого не обидел. Материал вышел полный, и всё что показано, лежит в общедоступном пространстве.
Теперь немного информации.
- SD карта должна быть отформатирована в формате FAT16 или FAT32.
- Файлы должны быть в формате 8.3. То есть имя файла не больше 8 символов, а расширение 3 символа.
- Библиотека SD работает по шине SPI поэтому задействованы пины 11, 12, 13.
И самое главное, чуть не забыл. Вы можете сами создать текстовой файл с нужными значениями. Например, указав на какое значение нужно поворачивать тому или другому сервомотору. Запись должна быть в том формате, что и на видео.
Ну и вывод.
Использование SD карты освобождает микроконтроллер от использования встроенной памяти, которой и так немного. И добавляет огромное поле для внешних файлов.
Если вам интересна эта тема, то я могу снять продолжение.
А объём вашего интереса, сразу виден по количеству лайков и комментариев. Чем их будет больше, тем быстрее выйдет новое видео.
Ну, а если вам нравятся мои уроки, то ставьте лайк и делитесь моими видео, с другими.
А ещё вы можете помочь в развитии канала став его спонсором. Все ваши вклады пойдут на закупки новых модулей. Вам же за это будут предоставлены дополнительные бонусы.
Вы видите ссылки на видео, которые, я думаю будут вам интересны. Перейдя на любое из этих видео вы узнаете что-то новое, а ещё поможете мне. Ведь любой ваш просмотр - это знак YOUTUBE, что это кому-то интересно и что его надо показывать чаще.
Спасибо.
А пока на этом всё.