Сервопривод: различия между версиями
(Новая страница: «справа|230x230пкс|Сервопривод MG995 '''Сервопривод''' — это мотор, положен...») |
Artecoll (обсуждение | вклад) (У Джека Воробья не было картинки кода) |
||
(не показаны 4 промежуточные версии 1 участника) | |||
Строка 1: | Строка 1: | ||
[[Файл:Сервопривод.png|справа| | [[Файл:Сервопривод.png|справа|210x210px|Сервопривод MG995|альт=]]'''Сервопривод''' — это мотор, положением вала которого мы можем управлять. От обычного мотора он отличается тем, что ему можно точно в градусах задать положение, в которое встанет вал. Сервоприводы используются для моделирования различных механических движений роботов, в том числе сервоприводом может управляться "клешня-захват", с помощью которой робот будет захватывать кубики-грузы и перевозить их по указанным маршрутам. | ||
'''Сервопривод''' — это мотор, положением вала которого мы можем управлять. От обычного мотора он отличается тем, что ему можно точно в градусах задать положение, в которое встанет вал. Сервоприводы используются для моделирования различных механических движений роботов, в том числе сервоприводом может управляться "клешня-захват", с помощью которой робот будет захватывать кубики-грузы и перевозить их по указанным маршрутам. | |||
== Виды сервоприводов == | == Виды сервоприводов == | ||
Строка 17: | Строка 16: | ||
# ''У бесколлекторных моторов'' нет щёток, а значит они не создают сопротивление вращению и не изнашиваются, скорость и момент выше при токопотреблении равном коллекторным моторам. Сервоприводы с бесколлекторным мотором — самые дорогие сервоприводы, однако при этом они обладают лучшими характеристиками по сравнению с сервоприводами с другими типами моторов. | # ''У бесколлекторных моторов'' нет щёток, а значит они не создают сопротивление вращению и не изнашиваются, скорость и момент выше при токопотреблении равном коллекторным моторам. Сервоприводы с бесколлекторным мотором — самые дорогие сервоприводы, однако при этом они обладают лучшими характеристиками по сравнению с сервоприводами с другими типами моторов. | ||
== Библиотека Servo == | |||
Можно генерировать управляющие импульсы самостоятельно, для этого существует стандартная библиотека '''Servo'''. | |||
Библиотека Servo позволяет осуществлять программное управление сервоприводами. Управление осуществляется следующими функциями: | |||
*'''attach()''' - присоединяет объект к конкретному выводу платы. Возможны два варианта синтаксиса для этой функции: servo.attach(pin) и servo.attach(pin, min, max). При этом pin - номер пина, к которому присоединяют сервопривод, min и max - длины импульсов в микросекундах, отвечающих за углы поворота 0° и 180°. По умолчанию выставляются равными 544 мкс и 2400 мкс соответственно. Возвращаемого значения нет. | |||
*'''write()''' - отдаёт команду сервоприводу принять некоторое значение параметра. Синтаксис: servo.write(angle), где angle - угол, на который должен повернуться сервопривод. | |||
*'''writeMicroseconds()''' - отдаёт команду послать на сервопривод импульс определённой длины, является низкоуровневым аналогом предыдущей команды. Синтаксис следующий: servo.writeMicroseconds(uS), где uS - длина импульса в микросекундах. Возвращаемого значения нет. | |||
*'''read()''' - читает текущее значение угла, в котором находится сервопривод. Синтаксис: servo.read(), возвращается целое значение от 0° до 180°. | |||
*'''attached()''' - проверка, была ли присоединён объект к конкретному пину. Синтаксис следующий: servo.attached(), возвращается логическая истина, если объект была присоединён к какому-либо пину, или ложь в обратном случае. | |||
*'''detach()''' - производит действие, обратное действию attach(), то есть отсоединяет объект от пина, к которому был приписан. Синтаксис: servo.detach() | |||
В библиотеке Servo для Arduino по умолчанию выставлены следующие значения длин импульса: 544 мкс - для 0° и 2400 мкс - для 180°. | |||
== Подключение к Arduino == | == Подключение к Arduino == | ||
Для сборки модели с сервоприводом нам потребуется: | Для сборки модели с сервоприводом нам потребуется: | ||
Строка 32: | Строка 44: | ||
[[Файл:Подключение сервопривода к Arduino.jpg]] | [[Файл:Подключение сервопривода к Arduino.jpg]] | ||
Для работы этой модели подойдет следующая программа: | |||
<syntaxhighlight lang="c"> | |||
#include <Servo.h> //библиотека для сервопривода (есть в Ардуино) | |||
Servo servo; // Объявляем переменную servo типа Servo | |||
void setup() { | |||
servo.attach(10); //привязываем привод к порту 10 | |||
} | |||
void loop() { | |||
servo.write(0); // ставим вал под 0 градусов | |||
delay(2000); | |||
servo.write(180); // вал под 180 градусов | |||
delay(2000); | |||
} | |||
</syntaxhighlight> | |||
Последние четыре команды программы задают угол поворота вала сервопривода и время ожидания (в миллисекундах) до следующего поворота (эти цифры можно поменять). |
Текущая версия от 16:01, 8 июня 2021
Сервопривод — это мотор, положением вала которого мы можем управлять. От обычного мотора он отличается тем, что ему можно точно в градусах задать положение, в которое встанет вал. Сервоприводы используются для моделирования различных механических движений роботов, в том числе сервоприводом может управляться "клешня-захват", с помощью которой робот будет захватывать кубики-грузы и перевозить их по указанным маршрутам.
Виды сервоприводов
Сервоприводы бывают аналоговые и цифровые. Различаются они лишь внутренней управляющей электроникой. Вместо специальной микросхемы аналогового сервопривода у цифрового на плате микропроцессор, который принимает импульсы, анализирует их и управляет мотором. Таким образом, отличие заключается только в способе обработки импульсов и управлении мотором.
Шестерни для сервоприводов бывают из разных материалов:
- Пластиковые шестерни очень лёгкие, не подвержены износу, более всего распространены в сервоприводах, но их недостаток - это то, что они не выдерживают больших нагрузок.
- Карбоновые шестерни более долговечны, практически не изнашиваются, в несколько раз прочнее пластиковых. Основной недостаток - дороговизна.
- Металлические шестерни являются самыми тяжёлыми, однако они выдерживают максимальные нагрузки. Недостаток - достаточно быстро изнашиваются.
Существует три типа моторов сервоприводов:
- Обычный мотор с сердечником обладает плотным железным ротором с проволочной обмоткой и магнитами вокруг него. Ротор имеет несколько секций, поэтому, когда мотор вращается, ротор вызывает небольшие колебания мотора при прохождении секций мимо магнитов, а в результате получается сервопривод, который вибрирует и является менее точным, чем сервопривод с мотором без сердечника.
- Мотор с полым ротором(без сердечника) обладает единым магнитным сердечником с обмоткой в форме цилиндра или колокола вокруг магнита. Конструкция без сердечника легче по весу и не имеет секций, что приводит к более быстрому отклику и ровной работе без вибраций. Такие моторы дороже, но они обеспечивают более высокий уровень контроля, вращающего момента и скорости по сравнения со стандартными.
- У бесколлекторных моторов нет щёток, а значит они не создают сопротивление вращению и не изнашиваются, скорость и момент выше при токопотреблении равном коллекторным моторам. Сервоприводы с бесколлекторным мотором — самые дорогие сервоприводы, однако при этом они обладают лучшими характеристиками по сравнению с сервоприводами с другими типами моторов.
Библиотека Servo
Можно генерировать управляющие импульсы самостоятельно, для этого существует стандартная библиотека Servo.
Библиотека Servo позволяет осуществлять программное управление сервоприводами. Управление осуществляется следующими функциями:
- attach() - присоединяет объект к конкретному выводу платы. Возможны два варианта синтаксиса для этой функции: servo.attach(pin) и servo.attach(pin, min, max). При этом pin - номер пина, к которому присоединяют сервопривод, min и max - длины импульсов в микросекундах, отвечающих за углы поворота 0° и 180°. По умолчанию выставляются равными 544 мкс и 2400 мкс соответственно. Возвращаемого значения нет.
- write() - отдаёт команду сервоприводу принять некоторое значение параметра. Синтаксис: servo.write(angle), где angle - угол, на который должен повернуться сервопривод.
- writeMicroseconds() - отдаёт команду послать на сервопривод импульс определённой длины, является низкоуровневым аналогом предыдущей команды. Синтаксис следующий: servo.writeMicroseconds(uS), где uS - длина импульса в микросекундах. Возвращаемого значения нет.
- read() - читает текущее значение угла, в котором находится сервопривод. Синтаксис: servo.read(), возвращается целое значение от 0° до 180°.
- attached() - проверка, была ли присоединён объект к конкретному пину. Синтаксис следующий: servo.attached(), возвращается логическая истина, если объект была присоединён к какому-либо пину, или ложь в обратном случае.
- detach() - производит действие, обратное действию attach(), то есть отсоединяет объект от пина, к которому был приписан. Синтаксис: servo.detach()
В библиотеке Servo для Arduino по умолчанию выставлены следующие значения длин импульса: 544 мкс - для 0° и 2400 мкс - для 180°.
Подключение к Arduino
Для сборки модели с сервоприводом нам потребуется:
- плата Arduino
- 3 провода “папа-папа”
- сервопривод
Многие сервоприводы могут быть подключены к Arduino непосредственно. Для этого от них идёт шлейф из трёх проводов:
- красный - питание; подключается к контакту 3.3/5V или напрямую к источнику питания
- коричневый или чёрный - земля (GND)
- жёлтый или белый - сигнал; подключается к цифровому выходу Arduino
Для работы этой модели подойдет следующая программа:
#include <Servo.h> //библиотека для сервопривода (есть в Ардуино) Servo servo; // Объявляем переменную servo типа Servo void setup() { servo.attach(10); //привязываем привод к порту 10 } void loop() { servo.write(0); // ставим вал под 0 градусов delay(2000); servo.write(180); // вал под 180 градусов delay(2000); }
Последние четыре команды программы задают угол поворота вала сервопривода и время ожидания (в миллисекундах) до следующего поворота (эти цифры можно поменять).