setMaxTorque
This commit is contained in:
parent
a829438f2d
commit
ee0521ca83
16
MKS42C.cpp
16
MKS42C.cpp
|
|
@ -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
|
||||
|
|
|
|||
7
MKS42C.h
7
MKS42C.h
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -35,6 +35,8 @@ MKS SERVO42C User Manual V1.1.2.pdf
|
|||
|
||||
void stop() Мгновенная программная остановка (торможение).
|
||||
|
||||
bool setMaxTorque(uint16_t torque) Ограничение максимального момента (тока). Значение 0–3000. Позволяет мотору "проскальзывать" при встрече с препятствием, не уходя в ошибку.
|
||||
|
||||
3. Чтение данных и обратная связь
|
||||
|
||||
float readPosition() Возвращает угол вала в текущем круге (0.00° – 359.99°).
|
||||
|
|
|
|||
Loading…
Reference in New Issue