setMaxTorque

This commit is contained in:
Artur 2026-04-05 00:16:36 +05:00
parent a829438f2d
commit ee0521ca83
3 changed files with 25 additions and 0 deletions

View File

@ -34,6 +34,22 @@ void MKS42C::setEnable(bool state) {
sendRaw(cmd, 3);
}
bool MKS42C::setMaxTorque(uint16_t torque) {
if (torque > 3000) torque = 3000;
uint8_t cmd[] = {_addr, 0xA5, (uint8_t)(torque >> 8), (uint8_t)(torque & 0xFF)};
sendRaw(cmd, 4);
// Ждем подтверждение e0 01 e1
unsigned long wait = millis();
while (_serial->available() < 3 && millis() - wait < 100);
if (_serial->available() >= 3) {
uint8_t res[3];
_serial->readBytes(res, 3);
return (res[1] == 0x01);
}
return false;
}
void MKS42C::run(uint8_t dir, uint8_t speed) {
// Команда 0xF6 (стр. 16 PDF)
// dir: 0 - CW, 1 - CCW

View File

@ -15,6 +15,13 @@ public:
// --- Управление питанием ---
void setEnable(bool state); // Включить/выключить удержание вала
/**
* @brief Установка максимального крутящего момента (MaxT)
* @param torque Значение от 0 до 1200 (0x4B0)
* @return true если успешно
*/
bool setMaxTorque(uint16_t torque);
// --- Движение ---
/**
* @brief Непрерывное вращение (Команда 0xF6)

View File

@ -35,6 +35,8 @@ MKS SERVO42C User Manual V1.1.2.pdf
void stop() Мгновенная программная остановка (торможение).
bool setMaxTorque(uint16_t torque) Ограничение максимального момента (тока). Значение 03000. Позволяет мотору "проскальзывать" при встрече с препятствием, не уходя в ошибку.
3. Чтение данных и обратная связь
float readPosition() Возвращает угол вала в текущем круге (0.00° 359.99°).