ORFA Servo driver — различия между версиями
=DeaD= (обсуждение | вклад) (→Определяем информацию об одном из драйверов) |
=DeaD= (обсуждение | вклад) (→Драйвер сервоприводов) |
||
Строка 1: | Строка 1: | ||
== Драйвер сервоприводов == | == Драйвер сервоприводов == | ||
Драйвер позволяющий управлять сервоприводами, подключенными к портам RoboGPIO или RoboServo, в зависимости от контроллера. | Драйвер позволяющий управлять сервоприводами, подключенными к портам RoboGPIO или RoboServo, в зависимости от контроллера. | ||
+ | |||
+ | Сервоприводы управляются прямоугольными сигналами частотой 50Гц и скважность (временем, которое на линии высокое напряжение) от 1 до 2мс. Поэтому не зная характеристик конкретного подключенного сервопривода с точки зрения генерации управляющего сигнала приходится говорить о положении сервопривода. Например, 1200мкс, это означает что если сервопривод поворачивается на угол +/- 75° при управляющих сигналах 1мс и 2мс соответственно, тогда 1200мкс соответствует примерно -75°+(2*75°)(1200-1000)/(2000-1000)=-45°. | ||
В этом драйвере всегда 2 регистра. Далее будем считать, что начальный регистр этого драйвера - XX, второй регистр YY. | В этом драйвере всегда 2 регистра. Далее будем считать, что начальный регистр этого драйвера - XX, второй регистр YY. |
Версия 16:44, 23 июня 2009
Содержание
Драйвер сервоприводов
Драйвер позволяющий управлять сервоприводами, подключенными к портам RoboGPIO или RoboServo, в зависимости от контроллера.
Сервоприводы управляются прямоугольными сигналами частотой 50Гц и скважность (временем, которое на линии высокое напряжение) от 1 до 2мс. Поэтому не зная характеристик конкретного подключенного сервопривода с точки зрения генерации управляющего сигнала приходится говорить о положении сервопривода. Например, 1200мкс, это означает что если сервопривод поворачивается на угол +/- 75° при управляющих сигналах 1мс и 2мс соответственно, тогда 1200мкс соответствует примерно -75°+(2*75°)(1200-1000)/(2000-1000)=-45°.
В этом драйвере всегда 2 регистра. Далее будем считать, что начальный регистр этого драйвера - XX, второй регистр YY.
Количество управляемых сервоприводов - 16 для драйвера с UID=0x31, 32 для драйвера с UID=0x30.
Типы запросов (регистр, данные…):
XX M1 M2
— с помощью побайтовой маски M1 M2 установить, какие сервоприводы включить, а какие выключить. (для драйвера с UID=0x31, а для драйвера с UID=0x30 все порты сервоприводов всегда включены).YY [{aa} {bb} {cc}]*
— установить положения сервоприводов (сервопривод {aa} в положение 0x{cc}{bb}).
Примеры
Включаем 2й и 3й порты для управления сервоприводами
Запрос:
L40 S40 10 0C 00 P
Ответ:
L40 SWAAAP
Разбор:
- Первый запрос - L40 - установить адрес локального устройства в 0x40. Ответ - L40 - адрес установлен. (Можно не делать, если вы уже установили адрес локального устройства ранее).
- Второй запрос - S40 10 0C 00 P - отправим в устройство 0x40 номер регистра 10 и маску 0C 00 - установить как выходы для управления сервоприводами порты 2 и 3, P - конец запроса. Ответ: SW - начали запись в устройство, AAA - подтверждения записи 3 байт в устройство, P - конец ответа.
Установим положение 2-го сервопривода в 1200мс
Запрос:
L40 S40 11 02 B004 P
Ответ:
L40 SWAAAP
Разбор:
- Первый запрос - L40 - установить адрес локального устройства в 0x40. Ответ - L40 - адрес установлен. (Можно не делать, если вы уже установили адрес локального устройства ранее).
- Второй запрос - S40 00 02 B0 04 P - отправим в устройство 0x40 номер регистра 10 - установить положение сервоприводов и номер + положение сервопривода 02 B004 (сервопривод 0x02, положение 0x04B0 = 1200мс), P - конец запроса. Ответ: SW - начали запись в устройство, AAA - подтверждения записи 3 байт в устройство, P - конец ответа.