4
电机推子PID控制
我正在尝试使用Arduino控制电动推子(线性滑动电位器)。 PID控制为“跳到”特定的目标位置提供了良好的结果,但是跟踪斜坡是一个问题,它一点也不平滑。不管我尝试什么,运动都非常生涩。 这是跟踪斜坡时参考位置,测量位置和电机输出的曲线图: 这是相同测试的视频。 在商业系统上,看起来更平滑,请参阅此。 详细信息: 电机推子是Alps RSA0N11M9A0K。为了驱动它,我使用的是ST L293D H桥,由稳定的10 V DC电源(XL6009)供电。 在Arduino UNO(ATmega328P)上,我使用的是引脚9和10,其PWM频率为31.372 kHz,无法听到(Timer1的预分频比为1 TCCR1B = (TCCR1B & 0b11111000) | 0b001)。 电位计连接在地和5V之间,抽头与往常一样进入ADC0。 控制器: 我使用的是具有防饱和功能的简单PID控制器,其更新速率为1 kHz(Ts = 1e-3 s): float update(int16_t input) { int16_t error = setpoint - input; int16_t newIntegral = integral + error; float output = k_p * …