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