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


1 ответ


1

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

,