Будет ли аналоговый сервопривод работать с библиотекой сервоприводов Arduino?
Я заказал несколько дешевых сервоприводов на Amazon, прежде чем заметил, что их, похоже, два разных вида (цифровые и аналоговые).
У меня Tower Pro SG90 Analog (http://www.towerpro.com.tw/product/sg90-analog/)
Я пытался заставить свой работать с помощью чрезвычайно простого примера кода (ниже) с использованием библиотеки Arduino Servo (используя цифровой вывод 3), и у меня возникли подтормаживания.
Я прочитал решения по адресу: https://electronics.stackexchange.com/questions/77502/is-there-a-way-to-stop-servos-from-shaking
Читая это, я узнал, что существует также цифровая разновидность сервопривода: http://www.towerpro.com.tw/product/sg90-7/
Мне интересно, является ли это частью проблемы, которую я вижу с дрожанием сервопривода. Я не видел, чтобы это где-то еще обсуждалось.
Мои вопросы:
- Эти сервоприводы вообще разные? Может, это просто маркетинговый ход? вещь??
- Нужно ли мне переключиться на использование аналогового контакта для данных сервопривода? связь?
- Возможно ли вообще использовать библиотеку Arduino Servo для этого? или мне нужно использовать какой-то ручной код (вроде analogWrite()) и переместить сервопривод на аналоговый вывод?
- Или, если все будет работать отлично, а дрожание будет просто небольшим не связанная проблема?
Вот простой код, который я использую:
#include <Servo.h>
Servo myservo; // создаем объект сервопривода для управления сервоприводом
// двенадцать сервообъектов можно создать на большинстве плат
int pos = 0; // переменная для хранения положения сервопривода
void setup() {
myservo.attach(3); // прикрепляет сервопривод на контакте 3 к объекту сервопривода
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) { // переходит от 0 градусов к 180 градусам
// с шагом в 1 градус
myservo.write(pos); // приказать сервоприводу перейти в позицию, указанную в переменной 'pos'
delay(15); // ждет 15 мс, пока сервопривод достигнет положения
}
for (pos = 180; pos >= 0; pos -= 1) { // переходит от 180 градусов к 0 градусам
myservo.write(pos); // приказать сервоприводу перейти в позицию, указанную в переменной 'pos'
delay(15); // ждет 15 мс, пока сервопривод достигнет положения
}
}
@raddevus, 👍0
Обсуждение2 ответа
Джиттер может быть вызван недостатком мощности, в этом случае он будет иметь нерегулярный характер, из-за которого сервопривод оказывается в неправильном месте, или же он может быть вызван тем, что команды приращения не передаются сервоприводу достаточно плавно.
У вас достаточно мощности для сервопривода? Откуда поступает питание, соответствует ли этот выход данным?
Для этого аналогового сервопривода требуется ШИМ, так поддерживает ли контакт 3 вашей платы ШИМ?
Как быстро вращается ваш сервопривод? В данный момент вы говорите 1 градус каждые 15 мс, я подозреваю, что это слишком медленно, и именно поэтому рука останавливается, а затем снова вращается, что вызывает ее дрожание.
Здесь есть обсуждение разницы. Короткий ответ: они оба управляются сигналом ШИМ, но отличаются внутренней схемой управления, которая на него реагирует.
- ATMEGA 328P Автономный, питание 3,3 В, управление сервоприводом
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
- Запрограммировать ATMega328P и использовать его без платы Arduino.
- Не удается снова загрузиться после смены платы
- Tower Pro MG996R сервопривод с высоким крутящим моментом 180 °, управляющий с помощью Arduino
- ATMEGA328P-U vs ATMEGA328-PU
- Как заставить сервопривод вращаться на угол больше 180°
- Пповорот сервопривода на 90 градусов
«Аналоговые» сервоприводы — это традиционная форма ШИМ, которую предполагает пример кода сервопривода — на самом деле термин «аналоговый сервопривод» редко используется в контексте хобби, поскольку это обычный тип, в то время как «цифровой» будет обозначать что-то предположительно премиум-класса, либо включающее микроконтроллер внутри и/или взаимодействующее посредством какой-то более сложной схемы. Если у вас возникла проблема, то это что-то иное, чем использование традиционного сервопривода., @Chris Stratton
Если вы хотите поставить это как ответ, я поставлю как ответ. Различие между аналоговым и цифровым на этом сайте Tower Pro смутило меня. Спасибо., @raddevus
Кажется, было бы полезнее, если бы вы отредактировали это так, чтобы оно касалось вашей реальной проблемы., @Chris Stratton
Это хороший момент. Я просто думал о людях, у которых есть проблема с джиттером, и они замечают аналоговый и цифровой сервопривод, а затем находят это и дают конкретный ответ, что это не проблема. Существует много дискуссий о джиттере сервопривода. :), @raddevus
В целом, встроенный процессор, такой как Arduino, имеет меньше проблем с джиттером, чем процессоры, работающие под управлением целой ОС, такие как Raspberry Pi. Это связано с тем, что встроенный процессор, скорее всего, управляет только сервоприводом, в то время как процессор, работающий под управлением ОС, занят распределением своих ресурсов со всеми другими нормально работающими процессами в ОС., @st2000