Будет ли аналоговый сервопривод работать с библиотекой сервоприводов 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/

Мне интересно, является ли это частью проблемы, которую я вижу с дрожанием сервопривода. Я не видел, чтобы это где-то еще обсуждалось.

Мои вопросы:

  1. Эти сервоприводы вообще разные? Может, это просто маркетинговый ход? вещь??
  2. Нужно ли мне переключиться на использование аналогового контакта для данных сервопривода? связь?
  3. Возможно ли вообще использовать библиотеку Arduino Servo для этого? или мне нужно использовать какой-то ручной код (вроде analogWrite()) и переместить сервопривод на аналоговый вывод?
  4. Или, если все будет работать отлично, а дрожание будет просто небольшим не связанная проблема?

Вот простой код, который я использую:

#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 мс, пока сервопривод достигнет положения
  }
}

, 👍0

Обсуждение

«Аналоговые» сервоприводы — это традиционная форма ШИМ, которую предполагает пример кода сервопривода — на самом деле термин «аналоговый сервопривод» редко используется в контексте хобби, поскольку это обычный тип, в то время как «цифровой» будет обозначать что-то предположительно премиум-класса, либо включающее микроконтроллер внутри и/или взаимодействующее посредством какой-то более сложной схемы. Если у вас возникла проблема, то это что-то иное, чем использование традиционного сервопривода., @Chris Stratton

Если вы хотите поставить это как ответ, я поставлю как ответ. Различие между аналоговым и цифровым на этом сайте Tower Pro смутило меня. Спасибо., @raddevus

Кажется, было бы полезнее, если бы вы отредактировали это так, чтобы оно касалось вашей реальной проблемы., @Chris Stratton

Это хороший момент. Я просто думал о людях, у которых есть проблема с джиттером, и они замечают аналоговый и цифровой сервопривод, а затем находят это и дают конкретный ответ, что это не проблема. Существует много дискуссий о джиттере сервопривода. :), @raddevus

В целом, встроенный процессор, такой как Arduino, имеет меньше проблем с джиттером, чем процессоры, работающие под управлением целой ОС, такие как Raspberry Pi. Это связано с тем, что встроенный процессор, скорее всего, управляет только сервоприводом, в то время как процессор, работающий под управлением ОС, занят распределением своих ресурсов со всеми другими нормально работающими процессами в ОС., @st2000


2 ответа


1

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

У вас достаточно мощности для сервопривода? Откуда поступает питание, соответствует ли этот выход данным?

Для этого аналогового сервопривода требуется ШИМ, так поддерживает ли контакт 3 вашей платы ШИМ?

Как быстро вращается ваш сервопривод? В данный момент вы говорите 1 градус каждые 15 мс, я подозреваю, что это слишком медленно, и именно поэтому рука останавливается, а затем снова вращается, что вызывает ее дрожание.

,

1

Здесь есть обсуждение разницы. Короткий ответ: они оба управляются сигналом ШИМ, но отличаются внутренней схемой управления, которая на него реагирует.

,