Добрый день.
Вижу крохотный лаг во вращении шагового двигателя которому надо передавать скорость по modbus
от Мастера не зависит, пробовал разные, при отключении шины RS485 вращается без запинок.
Пожалуйста помогите, что можно сделать?
Вижу крохотный лаг во вращении шагового двигателя которому надо передавать скорость по modbus
от Мастера не зависит, пробовал разные, при отключении шины RS485 вращается без запинок.
Пожалуйста помогите, что можно сделать?
C++:
#define StepperEnb 10
#define StepperDir 9
#define StepperPul 8
#define ledPin 3
#include "GyverStepper.h"
#include <ModbusRtu.h>
GStepper<STEPPER2WIRE> MainSt(800, StepperPul, StepperDir, StepperEnb); // двигатель драйвер step, dir, пин enable
int modbus_array[1] = {2000}; //Готовим массив данных
Modbus bus(2,1,4); // this is slave @2 and RS-232 or USB-FTDI
long LEDTimer = 0; int ledState = LOW;
void setup() {
MainSt.setRunMode(KEEP_SPEED); // режим поддержания скорости
MainSt.setSpeed(2000); // скорость в шагах/сек
MainSt.reverse(true);
MainSt.autoPower(true);
MainSt.enable();
pinMode(ledPin, OUTPUT);
bus.begin( 19200 ); // baud-rate at 19200
}
void loop() {
MainSt.tick(); //тикаем
bus.poll(modbus_array,1); //Used to receive or write value from Master
if(millis() - LEDTimer > 500) {
LEDTimer = millis();
ledState = !ledState;
digitalWrite(ledPin, ledState); //мигаем
if (modbus_array[0] ==0) {
MainSt.brake();
} else {
MainSt.setSpeed(modbus_array[0]); //обновляем скорость
}
}
}