ORFA Servo driver — различия между версиями
=DeaD= (обсуждение | вклад) (→Драйвер сервоприводов) |
Vooon (обсуждение | вклад) м |
||
| (не показано 11 промежуточных версий 4 участников) | |||
| Строка 1: | Строка 1: | ||
[[Категория:Open Robotics]] | [[Категория:Open Robotics]] | ||
| + | {{устаревшая статья}} <!-- OR-AVR-M32-D --> | ||
== Коротко об управлении сервоприводами == | == Коротко об управлении сервоприводами == | ||
| − | + | Модельные (RC) [[серво]]приводы управляются прямоугольными сигналами частотой 50Гц и скважность (временем, которое на линии высокое напряжение) от 1 до 2мс. Поэтому не зная характеристик конкретного подключенного сервопривода часто приходится говорить о положении сервопривода, указывая лишь скважность управляющего сигнала. Например, 1200мкс, это означает что если сервопривод поворачивается на угол <math>\pm 75^\circ</math> при управляющих сигналах 1мс и 2мс соответственно, тогда 1200мкс соответствует примерно <math>-75^\circ + \frac{2 \cdot 75^\circ (1200-1000)}{2000-1000} = -45^\circ</math>. | |
== Драйвер сервоприводов == | == Драйвер сервоприводов == | ||
Драйвер позволяющий управлять сервоприводами, подключенными к портам RoboGPIO или RoboServo, в зависимости от контроллера. | Драйвер позволяющий управлять сервоприводами, подключенными к портам RoboGPIO или RoboServo, в зависимости от контроллера. | ||
| − | В этом драйвере всегда 2 регистра. Далее будем считать, что начальный регистр этого | + | В этом драйвере всегда 2 регистра. Далее будем считать, что начальный регистр этого драйвера — XX, второй регистр YY. |
| − | Количество управляемых | + | Количество управляемых сервоприводов — 16 для драйвера с UID=0x31, 32 для драйвера с UID=0x30. |
| + | |||
| + | Для OR-AVR-M32-D установлено следующеее соответствие между номерами серво и портами ввода-вывода: | ||
| + | |||
| + | {| class="standard" | ||
| + | !Номер серво | ||
| + | !Порт вывода | ||
| + | |- | ||
| + | |0 | ||
| + | |PORTA.0 | ||
| + | |- | ||
| + | |1 | ||
| + | |PORTA.1 | ||
| + | |- | ||
| + | |2 | ||
| + | |PORTA.2 | ||
| + | |- | ||
| + | |3 | ||
| + | |PORTA.3 | ||
| + | |- | ||
| + | |4 | ||
| + | |PORTA.4 | ||
| + | |- | ||
| + | |5 | ||
| + | |PORTA.5 | ||
| + | |- | ||
| + | |6 | ||
| + | |PORTA.6 | ||
| + | |- | ||
| + | |7 | ||
| + | |PORTA.7 | ||
| + | |- | ||
| + | |8 | ||
| + | |PORTC.7 | ||
| + | |- | ||
| + | |9 | ||
| + | |PORTC.6 | ||
| + | |- | ||
| + | |10 | ||
| + | |PORTC.5 | ||
| + | |- | ||
| + | |11 | ||
| + | |PORTC.4 | ||
| + | |- | ||
| + | |12 | ||
| + | |PORTB.3 | ||
| + | |- | ||
| + | |13 | ||
| + | |PORTB.2 | ||
| + | |- | ||
| + | |14 | ||
| + | |PORTD.5 | ||
| + | |- | ||
| + | |15 | ||
| + | |PORTD.4 | ||
| + | |} | ||
Типы запросов (регистр, данные…): | Типы запросов (регистр, данные…): | ||
| − | # <code>XX M1 M2</code> | + | # <code>XX M1 M2</code> — с помощью побайтовой маски M1 M2 установить, какие сервоприводы включить, а какие выключить. (для драйвера OR-AVR-M32-D (с UID=0x31), а для драйвера OR-AVR-M128-S (с UID=0x30) все порты сервоприводов всегда включены). |
| − | # <code>YY [{aa} {bb} {cc}]*</code> | + | # <code>YY [{aa} {bb} {cc}]*</code> — установить положения сервоприводов (сервопривод {aa} в положение 0x{bb}{cc}). |
| − | ==Примеры== | + | == Примеры == |
| + | '''ВНИМАНИЕ! Все команды должны оканчиваться переводом строки, который означает окончание команды и передачу её на исполнение!''' | ||
| − | ===Включаем 2й и 3й порты для управления сервоприводами=== | + | === Включаем 2й и 3й порты OR-AVR-M32-D для управления сервоприводами === |
Запрос: | Запрос: | ||
| Строка 28: | Строка 85: | ||
Разбор: | Разбор: | ||
| − | * Первый | + | * Первый запрос — L40 — установить адрес локального устройства в 0x40. Ответ — L40 — адрес установлен. (Можно не делать, если вы уже установили адрес локального устройства ранее). |
| − | * Второй | + | * Второй запрос — S40 10 0C 00 P — отправим в устройство 0x40 номер регистра 10 и маску 0C 00 — установить как выходы для управления сервоприводами порты 2 и 3, P — конец запроса. Ответ: SW — начали запись в устройство, AAA — подтверждения записи 3 байт в устройство, P — конец ответа. |
| − | |||
| − | |||
| + | === Установим положение 2-го сервопривода OR-AVR-M32-D в 1200мс === | ||
Запрос: | Запрос: | ||
| Строка 43: | Строка 99: | ||
Разбор: | Разбор: | ||
| − | * Первый | + | * Первый запрос — L40 — установить адрес локального устройства в 0x40. Ответ — L40 — адрес установлен. (Можно не делать, если вы уже установили адрес локального устройства ранее). |
| − | * Второй | + | * Второй запрос — S40 11 02 04 B0 P — отправим в устройство 0x40 номер регистра 17(0x11) — установить положение сервоприводов и номер + положение сервопривода 02 04B0 (сервопривод 0x02, положение 0x04B0 = 1200мс), P — конец запроса. Ответ: SW — начали запись в устройство, AAA — подтверждения записи 3 байт в устройство, P — конец ответа. |
| + | |||
| + | === Установим положение 2-го сервопривода OR-AVR-M128-S в 1200мс === | ||
| + | |||
| + | Запрос: | ||
| + | L40 | ||
| + | S40 0D 02 04B0 P | ||
| + | |||
| + | Ответ: | ||
| + | L40 | ||
| + | SWAAAP | ||
| + | |||
| + | Разбор: Аналогично предыдущему примеру, просто стартовый регистр драйвера сервоприводов в этом контроллере 0x0C. | ||
Текущая версия на 12:12, 5 февраля 2010
Содержание
Коротко об управлении сервоприводами
Модельные (RC) сервоприводы управляются прямоугольными сигналами частотой 50Гц и скважность (временем, которое на линии высокое напряжение) от 1 до 2мс. Поэтому не зная характеристик конкретного подключенного сервопривода часто приходится говорить о положении сервопривода, указывая лишь скважность управляющего сигнала. Например, 1200мкс, это означает что если сервопривод поворачивается на угол <math>\pm 75^\circ</math> при управляющих сигналах 1мс и 2мс соответственно, тогда 1200мкс соответствует примерно <math>-75^\circ + \frac{2 \cdot 75^\circ (1200-1000)}{2000-1000} = -45^\circ</math>.
Драйвер сервоприводов
Драйвер позволяющий управлять сервоприводами, подключенными к портам RoboGPIO или RoboServo, в зависимости от контроллера.
В этом драйвере всегда 2 регистра. Далее будем считать, что начальный регистр этого драйвера — XX, второй регистр YY.
Количество управляемых сервоприводов — 16 для драйвера с UID=0x31, 32 для драйвера с UID=0x30.
Для OR-AVR-M32-D установлено следующеее соответствие между номерами серво и портами ввода-вывода:
| Номер серво | Порт вывода |
|---|---|
| 0 | PORTA.0 |
| 1 | PORTA.1 |
| 2 | PORTA.2 |
| 3 | PORTA.3 |
| 4 | PORTA.4 |
| 5 | PORTA.5 |
| 6 | PORTA.6 |
| 7 | PORTA.7 |
| 8 | PORTC.7 |
| 9 | PORTC.6 |
| 10 | PORTC.5 |
| 11 | PORTC.4 |
| 12 | PORTB.3 |
| 13 | PORTB.2 |
| 14 | PORTD.5 |
| 15 | PORTD.4 |
Типы запросов (регистр, данные…):
XX M1 M2— с помощью побайтовой маски M1 M2 установить, какие сервоприводы включить, а какие выключить. (для драйвера OR-AVR-M32-D (с UID=0x31), а для драйвера OR-AVR-M128-S (с UID=0x30) все порты сервоприводов всегда включены).YY [{aa} {bb} {cc}]*— установить положения сервоприводов (сервопривод {aa} в положение 0x{bb}{cc}).
Примеры
ВНИМАНИЕ! Все команды должны оканчиваться переводом строки, который означает окончание команды и передачу её на исполнение!
Включаем 2й и 3й порты OR-AVR-M32-D для управления сервоприводами
Запрос:
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-го сервопривода OR-AVR-M32-D в 1200мс
Запрос:
L40 S40 11 02 04B0 P
Ответ:
L40 SWAAAP
Разбор:
- Первый запрос — L40 — установить адрес локального устройства в 0x40. Ответ — L40 — адрес установлен. (Можно не делать, если вы уже установили адрес локального устройства ранее).
- Второй запрос — S40 11 02 04 B0 P — отправим в устройство 0x40 номер регистра 17(0x11) — установить положение сервоприводов и номер + положение сервопривода 02 04B0 (сервопривод 0x02, положение 0x04B0 = 1200мс), P — конец запроса. Ответ: SW — начали запись в устройство, AAA — подтверждения записи 3 байт в устройство, P — конец ответа.
Установим положение 2-го сервопривода OR-AVR-M128-S в 1200мс
Запрос:
L40 S40 0D 02 04B0 P
Ответ:
L40 SWAAAP
Разбор: Аналогично предыдущему примеру, просто стартовый регистр драйвера сервоприводов в этом контроллере 0x0C.