我正在做一个学校项目,使用一些由 drv8825 驱动器驱动的步进电机(实际上,它将是一台桥式起重机)和一个 Arduino UNO。首先,我们没有一大笔钱可以花。现在,问题是这样的:我们将使用 PID 控制,通过 MPU6050 acc+gyro 来控制电机的速度(负载应该在运动过程中尽可能牢固),并且唯一的改变步进电机速度的两种方法是:
1)通过延迟方法,例如:
for (i = 0; i<400; i++)
{
digitalWrite(StepPinB, LOW);
delayMicroseconds(500);
digitalWrite(StepPinB, HIGH);
delayMicroseconds(500);
}
使用这种方法,Arduino会一直忙,所以我将无法连续检查传感器的值,以达到正确的速度。因此,我不能使用这种方法。
2)通过外部调节drv8825的时钟频率,例如使用“电压频率转换器”(可变电压可以由“Arduino PWM”+“低通滤波器”给出)或使用“非稳态多谐振荡器” (“非稳态振荡器”)用“数字电位器”改变频率。我已经尝试过“电压频率转换器”的方法,但由于电路的噪音它没有工作。
我希望你能帮助我找出在程序期间连续改变步进电机速度的更好方法(以及找到更好的方法来制作可变频率,如第 2 点所示)。