0
\ \ begingroup \美元

我正在编写PIC24FJ256GA106,通过使用霍尔传感器代替反电动势,使无刷直流电机的PIPD速度控制。目前我可以控制电机的启动、停止和旋转方向。

当我试图测量电机的当前速度时,我遇到了一个问题,因为我正在读取霍尔传感器位置变化之间的时间,这让我可以检测电机何时移动了60个机械等级。利用这个,我可以计算马达的速度,就像马达有一个恒定的速度,但这给我带来了问题,当马达加速或减速时。

在网上寻找,我发现一对夫妇从ST和Microchip的论文,他们描述了特定的ASIC如何模型BLDC电机控制工作,为计算电机的速度。Microchip的文档解释,它们简单地计算速度正如前面解释的那样,测量位置的变化之间的时间,并考虑到速度变化,如果它是线性的。

ST文件如下链接

https://www.st.com/resource/en/application_note/cd00004396-l6235-three-phase-buslless-dc-motor-driver -stmicroelectronics.pdf.pdf.

解释说明他们使用一个单稳态电路,该电路产生由霍尔传感器脉冲的上升沿触发的固定宽度脉冲。该固定宽度脉冲形成一个方形信号,其“按时”是由单稳态电路产生的脉冲的固定宽度,并且“关闭时间”是剩余的时间,直到霍尔传感器的下一个上升沿发生。这最终使得可变占空比的方形信号,并且可以从中获得具有与电动机的速度成比例的电压的DC信号。从那时起,我可以计算电机的速度。

对于第二种方法,我不打算在我的系统中添加单稳态物理电路,但是我可以很容易地将这种行为添加到我的代码中。唯一的问题是,我的汽车的名义速度为4000 r.p.m.当我做固定的代码与适当的脉冲宽度对于这个速度,我认为这将足够窄方波信号的直流电压很低,当电动机的速度太低。结果将是相同的问题,如果我使用测量时间和计算线速度的方法,如前所述。

那么,有没有一种方法来计算速度使用霍尔传感器足够精确,有良好的速度计算时,电机是加速或减速,或不?

\ $ \ end group \ $
8
  • \ \ begingroup \美元 你需要量化,或者至少澄清你所说的“不够准确”的意思。这是从你的描述有什么错误的量在速度测量是可接受或不可接受不清楚。请您谈一下这是一个问题,当电动机加速或减速,在此期间通过定义的速度正在发生变化。为了让别人来评价计算,他们需要知道实际的速度有多快或慢改变速度的方法,因为这会影响速度的测量推断的准确度如何会。 \ $ \ end group \ $- - - - - -GCR. 7月8日20:43
  • \ \ begingroup \美元 对不起,什么是机械级? \ $ \ end group \ $- - - - - -阁楼 07月09日在0:43
  • \ \ begingroup \美元 每60个电气度,而不是60个机械度,您使用的霍尔传感器。否则,您将无法使用它们来换向。如果它们足够准确以换乘电机,它们也应该对其他目的进行准确。如果需要,您可以平均。电频率等于机械频率* n,其中n是转子上的磁极对的数量。 \ $ \ end group \ $- - - - - -mkeith 07月09日在0:47
  • 1
    \ \ begingroup \美元 @mkeith谢谢你的澄清,我刚刚检查了你在微芯片AN885上所说的,感谢你,我看到了我的错误,我的电机有两个极对 \ $ \ end group \ $- - - - - -vram. 07月09日在1:13
  • 1
    \ \ begingroup \美元 @mkeith我必须写“我看到了我的一个错误” \ $ \ end group \ $- - - - - -vram. 7月9日2点33分

3个答案3.

1
\ \ begingroup \美元

所有你必须在你的代码做的是注意,从霍尔传感器的一个上升沿所经过的时间,以相同的传感器的下一个正边缘。这是电频率的周期。如果你有一个输入捕捉定时器,那么它应该是很容易自动获得这一时期。如果不这样做,你仍然可以通过从自由运行定时器每次你得到一个上升沿时间阅读记录经过的时间。我知道你有检测阳性边缘,因为否则你不能就能够在所有电机换向。

你不必尝试与你的代码,模仿单稳态。这不会帮助你以任何方式,我可以看到。

\ $ \ end group \ $
2
  • \ \ begingroup \美元 谢谢,这正是我从一开始所做的,但就像John Birckhead说的,这是平均速度而不是瞬时速度,我可以通过测量反电动势来做到这一点,但这不是使用反电动势项目的目标 \ $ \ end group \ $- - - - - -vram. 7月9日13:14
  • 1
    \ \ begingroup \美元 谢谢你的帮助,这里的问题正是你所说的霍尔传感器检测每60个电子度的变化,在我的代码中只改变一个数字,然后速度打印非常接近用外部转速计测量的,我只需要做一些调整,因为我正在使用浮动,但它现在工作得非常好。 \ $ \ end group \ $- - - - - -vram. 7月9日14:40
2
\ \ begingroup \美元

接下来的时间,然后再开始任何设计,在一份设计说明书中,将所有的定性词汇转化为数量。和一个可接受的,合理的%容忍。

“窄足有一个非常低的直流电压”考虑到TBD,考虑到UC 8位的SNR比率和分辨率给出了高达256:1和占空比范围的可能速度范围。或每个方向4000 rpm至32 rpm。

如果你的最大转速是4000转,你可以使充分规模4800转= 80赫兹或125毫秒/周期的一次拍摄。然后,通过一些代数运算或查找表,您可以使用频率计数器从任何脉冲关闭时间计算RPM。

您也可以从关断时间积分到每个周期用一个计数器和规模。

“霍尔传感器不够准确”这取决于他们是否在低转速和你的最低速度辍学。

英飞凌的I2C芯片和WSS芯片(轮速传感器)还有很多其他方法。

\ $ \ end group \ $
5
  • \ \ begingroup \美元 @mkeith是的,就像你在我弄错60度之前发出的信号一样,再次感谢你让我看到这个 \ $ \ end group \ $- - - - - -vram. 07月09日在1:28
  • \ \ begingroup \美元 @Tony斯图尔特EE75谢谢您的回答,时间间隔正在以一个非常良好的精度(约99.9%)测量。在我有什么问题的部分是我计算数字undertandable人类豆(我没有解释,以前,但我会编辑的问题提及)的部分,最后一部分时便会发送到屏幕是在该项目的未来图形界面显示 \ $ \ end group \ $- - - - - -vram. 7月9日1:40
  • \ \ begingroup \美元 @Tony Stewart EE75我不知道TBD是什么意思(英语不是自然语言),关于你提到的速度范围,这正是问题所在;位于你的计算然后我会无法衡量任何波形32 rpm,我知道4000 rpm电动机,32 rpm可能看起来没有什么或太慢了但是我想看看显示的速度低于32 rpm(位于你的计算)可能虽然再次思考,汽车速度计通常不显示任何速度波形20公里/小时,说得好。 \ $ \ end group \ $- - - - - -vram. 7月9日1点52分
  • \ \ begingroup \美元 @tony stewart ee75关于“霍尔传感器准确的足够”再次我使用了坏语法,我的意图看到是IIF的方法准确或比简单地除以电机制造的转数和变速的时间通过使用电动机的霍尔传感器,ST人们使用单稳态电路的旋转数量或方法。查找表的问题是我没有从制造商中使用的电机的速度曲线,只有电机的基础知识。 \ $ \ end group \ $- - - - - -vram. 07月09日在2:02
  • \ \ begingroup \美元 待定(决议…由你)。一个设计问题是在低通滤波器时延的权衡下,选择Tach滤波器和PWM滤波器的纹波抑制。 \ $ \ end group \ $- - - - - -Tony Stewart EE75. 07月09日在2:09
1
\ \ begingroup \美元

由于转子在霍尔事件之间移动60度,因此暗示了一个双极电机。因此,在4000 rpm,霍尔活动之间的时间是2.5毫秒。但是,您所引用的ST设备从单个霍尔设备执行其速度感测,因此其输入采样时间每次旋转或每15毫秒发生一次。

在15毫秒(忽略所有的保护电路),控制器提供一个PWM信号。PWM电路打开直到电流检测到达一个参考点,然后关闭一个固定的时间。这个参考阈值不会改变,直到革命完成。

这就是PID的作用所在。您将测量获得一个旋转所需的时间量,并且您的PID算法将使用PID循环调整当前阈值。PID常量必须根据扭矩变化的预期频率和负载的惯性来选择,但是,在任何情况下,您的循环都不会做出任何调整,直到下一个样本,15毫秒后(或更长时间,如果运行更慢)。如果您正确地选择了常量,那么该循环将会很好地预测下一个样本什么时候会出现,并且只做很小的调整。如果没有,您的电机将减慢或失速时,加载和超调时,卸载,甚至可能“狩猎”。你只需要测量电流,并可以在软件中做其他一切,但你不能调整电机驱动器超过一次每转,它可能需要超过一圈为你的“赶上”突然变化。如果你担心你的速度可能会有所不同电机的一个革命期间,你可以从每个转换运行您的PID的三个大厅和得到六分之一的PID校正之间的一场革命,但我认为你可能会发现电机惯性会让这种不必要的。

好运!

\ $ \ end group \ $
7
  • 1
    \ \ begingroup \美元 @mkeith我总是知道我的电机有4个极点,但我对传感器的物理位置有一个概念错误,感谢你现在我没有那种概念错误 \ $ \ end group \ $- - - - - -vram. 7月9日2点15分
  • \ \ begingroup \美元 @Johh Birckhead谢谢你的所有评论,我需要澄清一些事情,ST的文件可以像这样使用,因为我有3个霍尔传感器,然后我把它们连接到更改通知中断能力输入,然后在变更通知中断处理程序,我通过考虑所有霍尔传感器输出(这是完美的)很好,然后我可以单稳态行为检测位置变化 \ $ \ end group \ $- - - - - -vram. 7月9日2点22分
  • \ \ begingroup \美元 @Johh Birckhead已经澄清了然后我去下一步,PIPD控制器,现在我已经计算了P,我和D系数也写的代码PIPD控制器实现但我没有,因为我想要速度印刷好了第一,对我是很重要的,看到我插入的时间输入PIPD函数是正确的,这将减少未知的因素,避免系统中结束,这是我为什么想要重新计算控制器输出每个位置变化而不是让它在每个完成革命 \ $ \ end group \ $- - - - - -vram. 7月9日2点32分
  • \ \ begingroup \美元 你说这是可能的,该系统可需要超过一周的计算正确的速度? \ $ \ end group \ $- - - - - -vram. 7月9日2点37分
  • \ \ begingroup \美元 是的,我是。在旋转时思考电机。它的速度比样品(n + 1)更大,而不是在样本(n),但如果您只测量样本之间的时间,则在此期间的答案是平均速度,而不是瞬时速度。要检测到电机正在加速,必须将平均速度与先前样本计算的速度进行比较。这就是差异术语。它有助于通过预测加速并添加它来补偿仅使用平均速度的滞后错误。 \ $ \ end group \ $- - - - - -John Birckhead. 7月9日12:48

你的答案

点击“发布你的答案”,即表示你同意我们的服务条款隐私政策饼干的政策

不是你想要的答案?浏览其他带标签的问题或者问你自己的问题