我想用pid算法控制电机,我这里编码器用外部中断记录脉冲数,测速用定时中断(进中断后记录脉冲数)把这个脉冲数当成速度,带到pid里面,然后返回值给占空比,这里面有什么问题吗?我的电机现在不转了,不知道哪里出了问题,求指导
现在的情况是不加Pid函数,电机就转,我那个测速也正常(先不考虑,外部中断的信号毛刺,和测速公式,因为我的就是简单地用脉冲数除了1ms当速度了,没去考虑编码器那个比例)。
总之就是我的速度是粗测出来的,然后后面有的问题,我实在想不出来了,求帮助
我想用pid算法控制电机,我这里编码器用外部中断记录脉冲数,测速用定时中断(进中断后记录脉冲数)把这个脉冲数当成速度,带到pid里面,然后返回值给占空比,这里面有什么问题吗?我的电机现在不转了,不知道哪里出了问题,求指导
现在的情况是不加Pid函数,电机就转,我那个测速也正常(先不考虑,外部中断的信号毛刺,和测速公式,因为我的就是简单地用脉冲数除了1ms当速度了,没去考虑编码器那个比例)。
总之就是我的速度是粗测出来的,然后后面有的问题,我实在想不出来了,求帮助
参考GPT和自己的思路:
根据你提供的信息,我能找到一些潜在的问题。
首先,你需要确保你的pid算法实现正确。同时,你也需要检查你的定时中断是否按照你的期望进行。另一个需要考虑的问题是,电机驱动电路是否正确连接。最后,你还需要检查编码器的输出是否正确。
为了更好地排查问题,你可以通过以下方式进行调试:
1.检查你的pid算法中是否有错误。你可以手动设置一个固定的占空比,看看电机是否会启动。
2.检查你的定时中断是否正常工作。你可以打开示波器,查看定时器触发的时间是否正确。
3.检查电机驱动电路。确保电机的电源和控制信号都正确连接。
4.检查编码器的输出是否正确。你可以手动旋转电机,观察编码器的输出是否符合你的期望。
希望以上信息对你有所帮助,并能解决你的问题。