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.

[参考译文] DRV8234:DRV8234 通过 I2C 控制电机转速和方向

Guru**** 2810965 points

Other Parts Discussed in Thread: DRV8234, DRV8234EVM

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

https://e2e.ti.com/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1624170/drv8234-drv8234-control-motor-speed-and-direction-over-i2c

器件型号: DRV8234

是否能够单独使用 DRV8234 来通过 I2C 总线控制电机的方向和速度? 请确认以下情况是可能的、或者建议使用更好的方法。

我认为可以通过使用 PMODE 将器件设置为 PH/EN 模式、然后设置 I2C_BC 寄存器来控制方向、以便可以使用 I2C_EN_IN1 和 I2C_PH_IN2、而不是芯片上的物理引脚。  

我认为可以通过设置 DUTY_CTRL 来控制电机的电压、从而在内部控制电桥、使用 PWM_FREQ 设置内部振荡器的 PWM 频率、使用 REG_CTRL 设置要调节的电机电压、然后调整 WSET_VSET 寄存器以更改目标电压。 我们的控制方案由处理器管理、因此我们更愿意直接控制电机电压、而不是直接控制速度。

谢谢你

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

    您好 Sean、

    是的、您可以通过 I2C 以这种方式控制方向和速度。  

    选择 PH/EN 模式并通过 DUTY_CTRL 控制 EN 引脚上的 PWM 将是如何控制输出的占空比。 WSET_VSET 寄存器是另一种通过速度调节或电压调节来控制电机的方法。 听起来您需要通过 I2C 自行控制占空比来进行第一个设置。  

    此致、

    David

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

    您好、David、  

    感谢您的答复。 我不确定我 是否完全理解你的第一个建议。

    您是否建议将 DUTY_CTRL 设置为 1b 以使用 EXT_DUTY 位控制占空比? 在这种情况下、EXT_DUTY 仅在 I2C_BC 设置为 0b(数据表的第 7.6.3.3 节)时可用、这阻止我使用  I2C_EN_IN1 和 I2C_PH_IN2 位来控制方向。 然后、我需要使用连接到 PH 和 EN 引脚的外部 GPIO 来控制方向。 我是否正确理解了这一点?

    谢谢、  

    Sean

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

    您好 Sean、

    明天、我将在实验中在我们的一个 EVM 上运行此设置并记录过程。  

    此致、

    David

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

    您好、David、  

    我能够使用 DRV8234EVM 并自行测试一些配置。 我使用以下设置实现了对 I2C 的方向和速度控制。  


    使用 CONFIG4 寄存器内的几个字段配置对 I2C 总线的方向控制。 PMODE 字段必须首先设置为 0b 以将驱动器置于相位/使能控制模式、I2C_BC 字段必须设置为 1b 以允许通过 I2C_EN_IN1 和 I2C_PH_IN2 字段对 H 桥进行内部控制。 通过将寄存器 CONFIG0 中的 DUTY_CTRL 字段设置为 1b 来配置对 I2C 总线的速度控制。 这允许使用寄存器 REG_CTRL2 中的 EXT_DUTY 字段为驱动内部 H 桥的 PWM 信号设置 6 位占空比。 当然、寄存器 CONFIG0 中的 EN_OUT 字段也必须设置为 1b 才能启用输出。

    这似乎并不直接违反数据表中的表 7-47。 REG_CTRL2 寄存器字段说明、在 EXT_DUTY 字段的说明中指出它“在使用外部电桥控制 (I2C_BC=0b) 时可用“。 我不确定这是不正确还是只是误导、但根据这一描述、我认为这种方法不起作用。

    此外、在关断主题下、数据表还建议 第 29 页和第 30 页的第 7.3.7.1 节中的“可以使用 IN_DUTY 寄存器对占空比进行编程“。 IN_DUTY 是只读寄存器。 再说一次、我不确定这是 不正确还是只是误导、但根据这一描述、我认为这种方法不起作用。

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

    您好 Sean、

    很棒! 很高兴您能够通过 I2C 控制占空比。 您描述的这个顺序是正确的方法。 为了清晰起见、我将在下面的步骤形式中列出该序列。

    1.不得使用速度或电压调节。

    REG_CTRL0 -> REG_CTRL 位应设置为 00b 或仅 01b。

    2.启用占空比控制。

    CONFIG0 -->DUTY_CTRL = 1b

    3.启用 I2C 桥接控制。 将输入设置为 I2C 使能。

    CONFIG4 --> I2C_BC = 1b

               I2C_EN_IN1 = 1b

               I2C_EN_IN2 = 1b

    4.通过 I2C 进行外部占空比控制

    reg_CNTRL2 -> EXT_DUTY = 0x00(0%占空比)至 0x3F(100%占空比)

    感谢您在数据表中提出困惑。 我们将在下一个数据表版本中访问它。  

    此致、

    David