我正在使用由drv8825驱动器驱动的几个步进电机进行学校项目(实际上,它将是高架行驶起重机) ,与一个Arduino UNO。首先,我们没有大量的钱花。 现在,问题在于:我们将通过MPU6050 acc + gyro使用PID控制来控制电机的速度(在运动期间负载应尽可能牢固),以及只有两种方式来改变步进马达的速度是:直流电机步进电机的速度控制步进电机(电机:NEMA 17;驱动器:drv8825)[频率调节]
1)通过一个延迟的方法,例如:
for (i = 0; i<400; i++)
{
digitalWrite(StepPinB, LOW);
delayMicroseconds(500);
digitalWrite(StepPinB, HIGH);
delayMicroseconds(500);
}
使用这种方法,所述的Arduino将忙于所有的时间,所以我会不能连续检查传感器的值,以达到正确的速度。正因为如此,我不能使用这种方法。 2)通过外部调节drv8825的时钟频率,例如使用“电压 - 频率转换器”(可变电压可以通过“Arduino PWM”+“低通滤波器”给出)或使用“非稳态多谐振荡器”(“非稳态振荡器”)和“数字电位器”来改变频率。 我已经试过了“电压 - 频率转换器”方法,但由于电路的噪音,它没有工作。
我希望你能帮助我找出在程序中连续改变步进电机速度的更好方法(也可以找到更好的方法来产生可变频率,如第2点所示) 。
这不是你如何附加到中断。你只是调用'clockSignal()'并附加'void'。 –
@gre_gor发生这种情况时,当我尝试提出建议(再次,应该是问题下的注释)并使用我能找到的第一个示例(德语:http://playground.arduino.cc/Deutsch/HalloWeltMitInterruptUndTimerlibrary)。随意编辑到正确的实施。但无论如何,背后的想法可能会有所帮助。 –
感谢您的回答,现在我将使用您的代码进行一些尝试,以验证我是否仍然可以检查传感器而不停止电机。 – Jacopo