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.

[参考译文] ccs/tm4c123gh下午6:有关使用 GPtimer 在电机方向上对孔脉冲进行计数的问题

Guru**** 2455360 points
Other Parts Discussed in Thread: TM4C123GH6PM

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/632905/ccs-tm4c123gh6pm-question-about-using-gptimer-for-counting-hole-pulse-with-direction-of-the-motor

器件型号:TM4C123GH6PM

工具/软件:Code Composer Studio

您好!

我想使用 GPtimer 对电机的孔脉冲信号进行计数、并对驱动电机的方向信号进行计数  

由电机驱动 IC 提供。

我想使用 GPtimer 作为"边沿计数"模式。

我想知道用于这个目的的方法、例如、使用方向信号= GPIO 输入的 GPtimer

信号(高电平或低电平)。

是否有应用手册?

高贵须

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在第一读时、我想您是指"全脉冲"信号、而不是"孔脉冲"。 然而、在反射时、您可能描述的是光学编码器、它实际上可能具有"间隙"(您会将其记为孔洞)、而正是您寻求的脉冲、即"边沿计数"。

    虽然编码器始终很有用-某些更高级的电机(想到 BLDC)可能会规避此类要求-因为计算与速度直接相关的"换向周期"相当容易。 (并提供方向)

    您对电机的描述-以及是否存在"编码器"(如果有)将会澄清-保存"帮助者"猜测-并产生更"基于事实"的响应...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 CB1_MOBILE、

    感谢你的答复。

    我们使用电机驱动 IC 和 FET 驱动无刷电机,使用 TM4C PWM 模块,PWM 信号输出连接到电机驱动 IC 输入引脚。
    电机驱动 IC 输出在无刷电机(U、V、W)的电相发生变化时切换的信号。
    电机没有编码器,我们想通过使用两个信号来知道电机旋转的位置,一个信号是切换信号(当无刷电机的电相发生变化时切换)。 另一个是由电机驱动 IC 驱动的电机方向信号。 电机驱动 IC 自动确定方向。
    我们想通过两个信号了解电机的旋转情况。

    我尝试这样做、并将 GPtimer 设置为"边沿计数"模式。
    在不改变方向的情况下驱动电机时、我们可以得到很好的计数。
    并尝试更改"GPTIMER"的计数方向当方向信号改变时、计数值不匹配。
    我们想知道对此的关注点。

    我会努力描述更多基于事实的信息。
    感谢你的建议。

    高贵须
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="hiroyasu Matsubara"]我们使用电机驱动 IC 和 FET 来驱动无刷电机,使用 TM4C PWM 模块,PWM 信号输出连接到电机驱动 IC 输入引脚

    谢谢-因此没有编码器。    我们是否可以要求您指定"电机驱动 IC "的制造商和型号?   我怀疑您(现在)所说的"电机驱动 IC"-更经常被称为"栅极驱动器!   此类栅极驱动器能够提供(尽管很短)高电流、以完全/正确增强(从而打开/关闭)功率 FET。    请确认我的理解。

    确定"无刷电机速度"的传统方法是"计算在测量的时间间隔内发生的电机换向次数"。    这种方法早已成为"标准操作程序"-并且应该证明 Cortex M4 "简单"。   (我们和其他人通过更低成本、更简单的 Cortex M0 MCU 实现了"仅此而已"。)

    您可能会"翻转"您的"换向表"以实现"方向改变"。   您(当然)知道何时完成此操作-因此"电机方向"应该提供最小(即不)的挑战。   大多数 MCU 设计提供一个 MCU 输入引脚-可将其切换(高电平或低电平)以"实现"此类"方向改变"。

    如果您尝试"改变 BLDC 电机的方向-当它以"超过低速!"运行时、会有(一些)危险   我们公司的软件处理此类问题、要求 BLDC 电机"低于指定速度-然后才能启用(任何)"方向改变"。   怀疑您在"方向改变"后检测电机速度时可能会遇到的问题、这是因为您没有对"在测量的时间间隔内发生的电机换向次数"保持一致的测量。   这种情况应不受电机方向的影响。   请注意、"特定的" BLDC 电机会"偏置"以在一个方向上以更快的速度运行-如果您注意到这一点、则应咨询电机制造商。   您还应确认您的 PWM 包络波形是一致的-与电机方向无关。  (当然、电机在每个方向调整为"相同的速度"。。

    我相信这篇文章能够合理地回答您的问题...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    感谢你的答复。

    我们使用的 MOSFET 驱动器的部件号是,Allegro Microsystems A3930。

    高贵须

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我对配置 GPTimer 有疑问。
    当我们更改计时器的计数方向(向上/向下)时,例如,从向下到向上,
    定时器从值“0”重新启动。

    要连续计数电机的脉冲计数、我认为有两种方法:
    在重新配置 GPTIMER.时、我们将定时器寄存器的值(在改变定时器的方向之前)置位。
    2.在更改计时器的计数方向之前,我们将保存该值,然后,
    读取计时器计数,并将保存的值添加到计时器计数值中。

    您能给我们一些建议吗?

    高贵须
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您-我们的收据已确认。

    您的方法与我们自己的方法不同! (我们的标准/常规标准"合理")
    我没有足够的时间提供所需的详细信息(现在)-但在客户访问之后会回来-可能是今天下午早些时候。 (美国时间芝加哥)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我的朋友-您的方法"不同于传统方法"-我更喜欢使用"kiss"(简单、直接、可测量)、并且仅一次偏离(根据需要/如果需要)、"一切正常"。   我们是否可以坚持这种方法?

    让我们回顾一些 BLDC 电机基础知识-"典型的 BLDC 电机"(如果存在这种情况)可能具有4个磁极-并采用3个霍尔传感器-因此:

    • 单次电机旋转将产生(4*3=12)实心霍尔脉冲/旋转
    • 因此、电机转速是"频率"

    现在计算"频率"要求:

    • 到达信号的计数
    • 精确测量(部分)单位时间

    我们必须在所选的时间间隔内"启用此类计数"-(仅限)。   我们是否能同意这些陈述-支持这种(基本)测量方法?

    您会说"电机持续脉冲计数"。   在我看来,这种情况最常证明是"过度杀戮"。   例如、如果我们"使霍尔信号计数持续0.5秒"-如果我们遇到"一个甚至几个"错误的计算、在我们的"120个读数"期间、每分钟都不会有太大的顾虑!

    您描述的方法-其中包括:"重新配置计时器、更改其计数方向、然后"添加保存的值"-对我来说-增加了极大的复杂度-而(原谅)几乎没有达到...

    霍尔脉冲的到达应"独立于方向"。   与计数脉冲的"定时周期"一样。   捕获的脉冲数越多、电机的速度就越快。

    现在、您(必须)有"一些理由"认为这种"方向改变"至关重要。   然而、您并未分享这一信息、而是减去这一信息、我很少有动力提供比所介绍的更多的信息。

    我所介绍的方法不是我的发明、它已被许多(大公司和小公司)"众所周知"、并且"经常"证明是足够的。  (当然、"对 Gov't 工作很好!" -我公司的(特许和持续)目标之一...)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    感谢你的答复。

    我们希望使用 GPTimer 来测量电机的精确位置(电机总旋转数)、而不是测量速度。

    我尝试使用"边沿计数"模式来改变 GPtimer 的方向。

    我阅读了 TM4C123GH6PM 手册(SPMS376E GPTimer)、当从"递减计数"更改为"递减计数"时、我们可以保存定时器计数值

    递增计数"。 如手册中所述、当将方向从下变到上时、定时器重新开始从值"0"递增计数。

    但是、当尝试"从上至下"改变方向时、我认为保存的定时器计数值不准确。

    例如、在改变方向之前、计数值大约为22000、但是在改变方向后、定时器计数值立即为

    10378、

    我想、

    将方向从向下更改为向上:重新开始计数从"0"

    从上至下:从上一个计时器计数值重新启动

    正确吗?

    高贵须

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="hiroyasu Matsubara"]使用 GPTimer 测量精确位置 (电机旋转总数)

    您之前的帖子说:“电机没有编码器,我们想通过使用两个信号来知道电机旋转的位置,一个信号是切换信号(在无刷电机的电相发生变化时切换), 另一个是由电机驱动 IC 驱动的电机方向信号。"

    前面我问过您对"电机驱动 IC"的定义-您注意到了"A3930"、它执行的功能控制(远远超出正常的"栅极驱动器"。   (需要栅极驱动器来充分驱动/增强功率 FET -用于驱动 BLDC 电机的三个相位)。   我(现在)花了时间/精力来查看 A3930的数据-我相信它不能提供您所寻求的"准确的位置数据"。   不是很近!   (我也不知道具有此功能的"其他"器件、除非有一个器件采用(正如我最初建议的)某种形式的"电机编码器!")

    为清晰起见(&确认)-我介绍了从我对 A3930规范的回顾中得出的关键结论-这表明它"无法"满足您的"准确位置"检测要求: (请复制一份真实副本)

    请注意、"转速"提供基于"电机速度"的信号-但远未实现(任何)"精确位置"检测/报告!   正如上面描述的那样:"在每个换向点上-转速输出改变!"   这些"换向点"会每个霍尔信号的变化而发生-这些霍尔信号的变化是"许多电机旋转度分开!"  因此-来自 A3930的"转速"信号证明"太粗糙"、可提供任何"准确"(您的字/定义)位置信息。   (甚至"尝试这样做"也需要大量的软件工作!)  

    因此,正如我先前指出的那样,你的"攻击方法"(赦免)有缺陷,但成功的机会(很少)。   (您可能能够在霍尔脉冲之间"内插"、但这是(高度)非标准-并且超出了(此处的大部分)的关注范围。)

    如前所述-电机编码器存在是出于"合理的理由"-您希望"精确的位置"成为"第一"、指示编码器的使用。  ("约定"-有时(大多数情况?) 确实有它的地方!)

    鉴于这些发现、您在改变计时器方向方面的困难似乎"不再需要"。。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    感谢你的答复。

    我理解您的意思、以及为什么使用编码器有利于检测准确的位置。

    高贵须

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可能会注意到、如果需要准确的位置信息、"使用编码器"证明"非常好"-可能是"必需的"...