Непрерывный сервопривод неправильно устанавливает скорость

У меня есть два непрерывных сервопривода, подключенных к моему Uno, и я запускаю на нем этот код:

leftServo.write(91);
rightServo.write(102);
delay(3000);

leftServo.write(112);
rightServo.write(81);
delay(3000);

leftServo.write(91);
rightServo.write(102);
delay(3000);

int i;
while(1) {
  i++;
}

Когда я запускаю код, колеса останавливаются на три секунды (91 и 102 являются нулевыми значениями для этих сервоприводов), затем они вращаются в течение трех секунд, затем останавливается левый сервопривод, а правый замедляется только примерно на полпути. , он не останавливается, хотя используется тот же самый номер, что и раньше.

Я не могу понять, почему это так?

, 👍1

Обсуждение

Мой первый совет — поместить эту функцию (без части «пока (1)») в конец setup() и посмотреть, что произойдет., @ForgeMonkey

Тот же эффект к сожалению, @Owen

Вы поменяли местами двигатели, чтобы проверить, что это не оборудование? Если это то же самое, попробуйте поменять местами последние команды левого/правого сервопривода., @ForgeMonkey

Я добавил задержку в 100 мс между записями сервопривода, и это, кажется, помогло, хотя нулевая точка для правого сервопривода, похоже, теперь сместилась, 106 медленно движется против часовой стрелки, а 107 медленно движется по часовой стрелке., @Owen

Я склоняюсь к выводу, что проблема в аппаратном обеспечении, вероятно, какой-то шум влияет на сервопривод. Двигатели работают от другого питания, чем Uno? Вы убедились, что основания связаны вместе? Вы пробовали развязывающие колпачки на блоке питания сервопривода? Если у вас есть доступ к одному из них, возьмите осциллограф на схему и проверьте наличие нежелательных шумов., @ForgeMonkey

Это для задания, нам дают готовый щит, который нам не разрешено модифицировать. Я использую сетевой адаптер на 3А для питания платы. Основания привязаны., @Owen

Есть ли шанс получить прицел на плате, чтобы проверить теорию шума? Если подтвердится, что это определенно не связано с шумом, у меня заканчиваются идеи. Я должен быть в состоянии провести еще немного времени этим вечером, если я найду что-нибудь подходящее, я вернусь к вам., @ForgeMonkey

Возможно, ваши нулевые значения неверны, но при некоторых обстоятельствах вам все же удается остановить двигатели, если они исходят из предыдущего значения, которое заставляет сервоусилитель решить, что он находится в «мертвой зоне» для предотвращения охоты. Другой возможностью может быть нагрев от работы двигателя, перемещающего нейтральную точку, хотя это кажется менее вероятным. По сути, эти непрерывные модификации могут быть темпераментными, поскольку они берут то, что должно быть замкнутым циклом, и размыкают его., @Chris Stratton


1 ответ


2

Проблема была устранена путем добавления задержки в 100 мс между сервоприводами. Могут работать и меньшие значения, но я еще не пробовал

,