-
Notifications
You must be signed in to change notification settings - Fork 55
Где какие порты на плате
Для платы версии 4:
Сервомоторы
- JE1 — /sys/class/pwm/ehrpwm.1:1
- JE2 — /sys/class/pwm/ehrpwm.1:0
- JC1 — /sys/class/pwm/ecap.0
- JC2 — /sys/class/pwm/ecap.1
- JC3 — /sys/class/pwm/ecap.2
- JE4 — /sys/class/pwm/ehrpwm.0:1
Для управления ШИМ-генератором используются следующие файлы из данных каталогов.
- request — "включить/выключить" режим ШИМ-генератора для данного порта. Перед работой с портом надо записать туда '1' (0x31) Без этого порт не заработает. Выключать режим не обязательно.
- /run — включить('1' или 0x31)/выключить('0' или 0x30) генератор ШИМ-сигнала.
- /duty_ns — время импульса единичного сигнала ШИМ в наносекундах (PWM duty cycle in nanoseconds)
- /period_ns — период ШИМ в наносекундах. Для ТРИКовских сервомоторов — 20 мс.
- /period_freq — частота ШИМ обратное значение периода). Для ТРИКовских сервомоторов — 50 Гц.
Для каждого типа устройства, подключенного к ШИМ-генератору, значения, которые должны быть записаны в duty_ns и period_ns, различаются. Для ТРИКовских сервомоторов они следующие.
- /period_ns — всегда 20 000 000, что соответствует 20 мс.
- 1800000 — сервомотор крутится с максимальной скоростью "вперед"
- 1200000 — сервомотор крутится с максимальной скоростью в обратную сторону
- 1500000 — сервомотор остановлен -- forcebreak
- 0 — питание на мотор не подается (аналог 0 в /run)
У "угловых" сервомоторов, которые только на 180 крутятся числа иные! Детальное пояснение про ШИМ и сервоприводы
Пример команды для сервомотора, подключенного к JE4:
echo 1 > /sys/class/pwm/ehrpwm.0:0/request
echo 20000000 > /sys/class/pwm/ehrpwm.0:0/period_ns
echo 1700000 > /sys/class/pwm/ehrpwm.0:0/duty_ns
sleep 3
echo 1300000 > /sys/class/pwm/ehrpwm.0:0/duty_ns
sleep 3
echo 1 > /sys/class/pwm/ehrpwm.0:0/run
Силовые моторы и энкодеры
Силовые моторы управляются через шину I2C.
- JB1, JM1 — Порт 1. I2C-адрес для задания частоты PWM: 0x10, для задания мощности: 0x14, для задания значения энкодера: 0x30
- JB2, JM2 — Порт 2. I2C-адрес для задания частоты PWM: 0x11, для задания мощности: 0x15, для задания значения энкодера: 0x31
- JB4, M1 — Порт 3. I2C-адрес для задания частоты PWM: 0x12, для задания мощности: 0x16, для задания значения энкодера: 0x32
- JB3, JM3 — Порт 4. I2C-адрес для задания частоты PWM: 0x13, для задания мощности: 0x17, для задания значения энкодера: 0x33
Для задания значений используется команда i2cset следующего формата:
i2cset -y 2 0x48 ADDRESS VALUE MODE
Для получения значений — команда i2cget следующего формата:
i2cget -y 2 0x48 ADDRESS MODE
Последние два параметра у обеих команд необязательные.
Аргументы принимают следующие значения:
- ADDRESS — i2c-адрес (см. выше)
- VALUE — задаваемое значение. Для частоты PWM это шестнадцатеричное двухбайтовое значение от 0x00 до 0xFFFF. Для задания мощности — однобайтовое значение от 0x9C до 0x64 (от -100 до 100 в десятеричной системе).
- MODE — параметр, определяющий размер аргумента VALUE. w для двухбайтового значения, b для однобайтового.
Для сброса значения энкодера по соответствующему адресу необходимо записать значение 0x00. После этого, выполнив команду i2cget для того же адреса, будет получено изменение значения энкодера с момента сброса.
Аналоговые порты
Аналоговые сенсоры управляются через I2C шину.
-
JA1 — Порт 1. I2C-адрес порта: 0x25
-
JA2 — Порт 2. I2C-адрес порта: 0x24
-
JA3 — Порт 3. I2C-адрес порта: 0x23
-
JA4 — Порт 4. I2C-адрес порта: 0x22
-
JA5 — Порт 5. I2C-адрес порта: 0x21
-
JA6 — Порт 6. I2C-адрес порта: 0x20
Пример запроса значения сенсора с порта JA1: i2cget -y 2 0x48 0x25
Цифровые сенсоры
- JD1 — Файл /sys/devices/platform/da850_trik/sensor_d1
- JD2 — Файл /sys/devices/platform/da850_trik/sensor_d2
Диапазон возвращаемых значений от 30000 до 350000.
LED
- Зеленый — /sys/class/leds/led_green/brightness
- Красный — /sys/class/leds/led_red/brightness
Значение 0 означает выключенный LED, 1 — включенный. Если включить оба, то будет "оранжевый".
Кнопки
Для обработки кнопок используется файл /dev/input/event0, из него возвращается два значения — код кнопки и значение.
Акселерометр
Акселерометру соответствует /dev/input/event1, и из него возвращается три проекции вектора ускорения на оси x, y и z. Диапазон значений от -32767 до 32767. В спокойном состоянии показывает проекции вектора g.
Гироскоп
Гироскоп — /dev/input/event2, возвращает проекции угловой скорости. Диапазон значений от -32767 до 32767.
Для платы версии 5: