我们使用 MCT8316Z 控制器来驱动200RPM 到6000RPM 的小型电机。 控制环路的要求是调节进入 MCT8316Z 的 PWM、使其以由各种系统参数决定的固定旋转速度运行。 在低速下(例如200RPM)、我们观察到旋转速度的变化高于预期、即使我们在具有固定 PWM 设置的开环模式下运行也是如此。 频率是旋转速度的倍数、变化约为+/-5%。 下图显示了控制环路尝试消除纹波、但在该频率下实际上无法产生任何影响。 如果建议使用任何控制器自举设置来提高性能、我希望获得帮助。

This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我们使用 MCT8316Z 控制器来驱动200RPM 到6000RPM 的小型电机。 控制环路的要求是调节进入 MCT8316Z 的 PWM、使其以由各种系统参数决定的固定旋转速度运行。 在低速下(例如200RPM)、我们观察到旋转速度的变化高于预期、即使我们在具有固定 PWM 设置的开环模式下运行也是如此。 频率是旋转速度的倍数、变化约为+/-5%。 下图显示了控制环路尝试消除纹波、但在该频率下实际上无法产生任何影响。 如果建议使用任何控制器自举设置来提高性能、我希望获得帮助。

您好、Randy、
[引用 userid="506823" URL"~/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1170527/mct8316z-request-help-to-reduce-ripple-on-the-rotational-speed-at-low-rpm-settings 中的图表显示了控制环路尝试消除纹波、但在该频率下实际上无法产生任何影响。 [/报价]图片上有3个波形、没有任何介绍、我不知道它们是什么。 中间速度是电机速度吗?
Brian
您是否使用 FGOUT 进行速度反馈-- FGOUT_SEL 的值是多少? 还是使用编码器?
速度为200rpm 或每秒3.3转速时速度相当慢、因此在精确速度下控制速度会更困难、这一切都取决于 PID 环路中 P 和 I 的增益设置。 您如何测量速度反馈-脉冲的频率或周期?
P.S. 电机有多少个极对? 高极点将提供高 FGOUT 分辨率、以实现更好的速度控制。
低速时、测得的周期优于测得的速度反馈频率。
Brian
您好、Randy、
[引用 userid="506823" URL"~/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1170527/mct8316z-request-help-to-reduce-ripple-on-the-rotational-speed-at-low-rpm-settings "]此处的变化约为+/-5%,频率是旋转速度的倍数。这似乎您在 PID 中没有足够的增益。 当增加更多增益时会发生什么情况?
242条编码器线路看起来很奇怪;定制编码器? 如何测量电机转速? 是否按增量时间读取增量正交编码器计数、或测量编码器脉冲周期? 您是否使用正交计数或仅对脉冲进行计数?
Brian
您好 Brian、
光学编码器是定制的。 电机速度通过计算光学编码器计数并除以时间来计算。 我们使用正交计数、这样我们实际上每转具有968个计数。 尝试更改控制环路 P 和 I 系数、以使其尝试抑制纹波、这需要付出一些努力。 到目前为止,这种情况没有显著改善。 请注意、我们还有一个双范围电机电压。 在低速(低于600RPM)时、我们为电机功率选择5V、在更高的速度(> 600RPM)下、电机电压设置为14V。
您好 Brian、
电机是一种将小激光点指向皮肤表面的面光轮。 好消息是、细调光编码器允许激光器在车轮上的正确位置发射。 我们根据设置的标称轮速计算激光火灾脉冲的宽度。 在电机 RPM 的正峰值处、可用的侧向时间比预期的时间短5%、我们可以开始使用激光束撞击侧向的边缘。 控制环路可以很好地保持平均速度非常精确(在1%左右)、但我们希望纹波尽可能小。 我们的传统产品在整个范围(200RPM 至6000RPM)内提供低纹波方面实际上做得比这更好、但控制器已停产、电机具有更大量的极点、这很可能会有所帮助。 如果我们不能做得更好、我们可能能够生活在+/-5%的水平上、但我们希望了解还能做些什么。
为了实现最佳速度控制、您可能需要考虑使用锁相环而不是编码器计数。
假设在200rpm 时、您希望将轴编码器信号锁定到200/60*242 = 806.67Hz 的合成时钟;806整数对于计数器而言很容易、而67,100分频值可以通过时钟脉冲抖动更快6倍、更慢10倍来完成。
定时器计数器可用于测量时钟边沿和编码器边沿之间的相位误差、然后使用 PID 将相位误差保持为零或恒定。 然后你把电机锁定到生成的时钟上--非常精确。
Brian
速度采样时间是多少?
Brian
因此电机转速为200/60*242*4/800 =每个样本4次。 因此速度误差分辨率太粗- PWM 输出的偏差为4或25%的其中一个,这可能会导致您所观察到的速度振荡。 将采样时间减至200Hz 将使速度测量提高4倍。 这种方法对于电机高速运转是可以的、但我认为对于低速运转、测量编码器周期更好(误差更小)。
Brian
您好 Brian、
一个实验是给车轮增加大约60克的额外重量(目前只有10克)。 这导致纹波显著降低。 我认为、当绕组通过每个极点(即反电动势)时、我们相对较低的旋转惯性会产生大量纹波。 我们不能轻易地为车轮增加如此多的额外重量来解决这一问题、但这是一个有益的见解。 下一种方法是查看我们是否可以加快 MCT8316强制功能的响应、因为它接收到输入 PWM 的命令变化。 纹波频率仅为30Hz -可能希望控制环路能够在一毫秒左右的时间内做出响应、从而能够抑制纹波。 我已附上原理图和更好的纹波图-我能否通过减小 ILIM 引脚上的电容器来加快响应速度? 
否 电容是用于分压器的滤波器、用于设置电流限制-直流电平;它与电机对 PWM 变化的响应无关。
是的、您可以向负载添加更多惯性以获得更好的稳定性、但惯性负载越高也会降低电机响应速度、例如、当您想要更改电机速度时。
正如我之前所说的,使用编码器计数/增量时间--在200rpm 时为4个计数--速度测量将有太多误差--在这种情况下,由于量化误差,误差为25%。 我建议使用计时器计数器来测量编码器脉冲周期、并且误差很小、因为在本例中计数器时钟频率非常高- MHz。 我认为纹波是由测量的电机转速在4和3之间波动引起的。
Brian
您在上一篇文章中说过800Hz 速度测量采样时间、这就是我为每个样本写入4个计数的原因。
与周期测量速度方法相比、7.5%的速度误差仍然太大、这取决于时钟。 示例:在100Mhz 计数器时、编码器的周期为:
在200rpm 时、编码器频率为806.7Hz;计数器计数的周期为100Mhz / 806.7 = 123961、其中1个计数误差或0.0008%误差、优于7.5%误差。
Brian
[引用 userid="506823" URL"~/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1170527/mct8316z-request-help-to-reduce-ripple-on-the-rotational-speed-at-low-rpm-settings/4406554 #4406554"]另一位信息是 RPM 计算器与我之前了解的不同。 事实证明、我们的系统在每次编码器转换时都计算100Mhz 时钟驱动器。 转速分辨率在200RPM 时实际上仅为1rpm 的一小部分。 [/报价]编码器计数器的100Mhz 时钟与编码器计数分辨率无关、编码器计数分辨率由242x4每转定义、无论时钟周期如何。
很抱歉、您提供了错误信息。 800Hz 更新速率是正确的、但它们不会通过按固定时间间隔除以编码器计数来计算 RPM。 相反、RPM 计算器会测量每个编码器计数的已用时间量(以100Mhz 为单位)、并提供一些滤波功能、以便800Hz 下的 RPM 更新具有比仅测量固定800Hz 采样时间周期内的编码器计数更好的分辨率。
无论如何、伪迹不是由光学编码器分辨率引起的-为滚轮增加质量的实验支持此断言。 考虑到我们不可能作为解决方案增加大量质量、 我认为唯一的解决方案是使 MCT8316能够使电机对 PWM 输入的变化做出相当快的响应、或者可能进入具有更多磁极或类似情况的电机。
等待、那么现在您说电机速度是每个编码器计数的 clk 节拍数吗? 那么、您如何仅获得16个计数?
请注意、处理器计算出的200rpm 电机转速是多少? 16或其他什么?
如果速度是每个编码器计数的时钟节拍数(而不是编码器信号脉冲)、那么如何获得该242x4Hz 信号来触发计数器捕捉功能?
Brian