MKS42C/README.md

61 lines
3.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# MKS SERVO42C Arduino Library (V1.1.2)
Удобная библиотека для управления сервошаговыми моторами MKS SERVO42C через UART (RS485). Позволяет работать с мотором как с полноценным сервоприводом, используя данные встроенного 16-битного энкодера.
**Документация**
Подробное описание протокола, регистров и электрических характеристик можно найти в официальном руководстве пользователя:
MKS SERVO42C User Manual V1.1.2.pdf
**Описание функций (API)**
1. Инициализация и Питание
MKS42C(HardwareSerial& serial, uint8_t address = 0xE0) Конструктор. Передайте объект Serial (например, Serial2) и HEX-адрес мотора из настроек экрана.
void setEnable(bool state) Управление током обмоток.
true — вал заблокирован (удержание);
false — вал расслаблен (можно крутить рукой).
2. Управление движением
void run(int16_t speed) Рекомендуемый метод для свободного вращения.
Принимает скорость от -127 до 127.
Положительная скорость — CW (по часовой), отрицательная — CCW (против).
void run(uint8_t dir, uint8_t speed) Классический метод. dir: 0 (CW) или 1 (CCW). speed: 0127.
void rotateDegrees(float degrees, uint8_t speed) Поворот на заданный угол относительно текущего положения.
Пример: rotateDegrees(-180.0, 60) повернет вал на пол-оборота против часовой.
void stop() Мгновенная программная остановка (торможение).
bool setMaxTorque(uint16_t torque) Ограничение максимального момента (тока). Значение 03000.
3. Чтение данных и обратная связь
float readPosition() Возвращает угол вала в текущем круге (0.00° 359.99°).
Вернет -1.0 при потере связи.
long readAbsolutePosition() Самая важная функция для навигации. Возвращает общее число импульсов с момента включения.
1 оборот = 65536 единиц.
bool isBusy() Проверка движения. Возвращает true, если мотор еще выполняет команду или если вал вращается.
⚠️ **Технические заметки**
Протокол: Команды передаются пакетами с проверкой CRC8 (сумма байтов).
Скорость: Оптимальная скорость работы UART — 38400 бод.
Лимиты: Команда rotateDegrees имеет внутренний лимит прошивки на максимальное число шагов за раз. Для очень больших перемещений (сотни оборотов) используйте метод run().