roboforum.ru

Технический форум по робототехнике.

Сервоприводы Feetech SCS

Шестерни и колёса, тяги и тросики... Каркасы, скелеты ...

Сервоприводы Feetech SCS

Сообщение Hamulus » 01 июл 2017, 19:16

Кто-нибудь имел дело с сервами Feetech серии SCS?

я пытаюсь запустить в связке с ArduinoDue.
Пока что использую тестовую программу с последовательностью команд для 2 сервоприводов:

Код: Выделить всёРазвернуть
SERVO.WritePos(1, 1023, 2000); 
SERVO.WritePos(2, 1023, 2000);
delay(3000);
SERVO.WritePos(1, 20, 2000);
SERVO.WritePos(2, 20, 2000);
delay(3000);


и это работает глючно: работает только первый привод, второй не работает
если же добавить делей между командами

Код: Выделить всёРазвернуть
SERVO.WritePos(1, 1023, 2000); 
delay(10);
SERVO.WritePos(2, 1023, 2000);
delay(3000);
SERVO.WritePos(1, 20, 2000);
delay(10);
SERVO.WritePos(2, 20, 2000);
delay(3000);


то все работает как надо: обе привода синхронно двигаются (ну естественно с делеем 10 милисекунд, который на глаз не заметен)

если поставить delay от 1 до 9 милисекунд, то в принципе тоже работает, но чем он меньше, тем больше вероятность того, что какой-то из приводов пропустит свое движение


соединение у меня 1000000 бод

вопрос: можно ли заставить все команды выполняться без делея между ними? или хотя бы с минимально возможным?
например такой код не помогает:
Код: Выделить всёРазвернуть
while (!Serial2.available()) {
         delay(1);
      }

Hamulus
 
Сообщения: 53
Зарегистрирован: 19 июн 2016, 14:48

Re: Сервоприводы Feetech SCS

Сообщение Anidal » 05 мар 2018, 19:56

В ардуине (с точки зрения систем реального времени), всё сделано через одно место.
Поэтому когда Вы хотите послать сразу 2 посылки без разделения времени - происходит эпик фейл.
Что можно сделать?
1. Написать свою библиотеку для посылки сообщений из прерывания (в этом случае промежуток между 2-мя командами будет равен времен обмена с одной сервой)
2. Использовать 2 порта uart - для посылки одновременно (опять же требуется переделка библиотеки).
3. Таки прочитать документацию к серве и поменять заводские ID серв, чтобы в одной посылке посылать команды сразу всем. Тут я не уверен, что штатная библиотека может объединять посылки, но собрать самому посылки не сложно.
Anidal
 
Сообщения: 3
Зарегистрирован: 05 мар 2018, 19:45


Вернуться в Механика

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12