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.

[参考译文] DRV2605L:在I2C上产生连续振动

Guru**** 2368790 points
Other Parts Discussed in Thread: DRV2625, DRV2605, DRV2605L
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/655040/drv2605l-creating-continual-vibration-over-i2c

部件号:DRV2605L
主题中讨论的其他部件:DRV2605,DRV2625

您好,

我正在通过I2C接口控制DRV2605触点控制器以驱动ERM电机。 我可以激活振动,但我希望它能够振动,直到我告诉它停止。 我一直在尝试使用效果库,然后通过更改Go位来激活和停止。 影响47 (Buzz-100 %)只做非常简短的蜂鸣,影响118 (程序停止的长蜂鸣)将持续一段时间,并且wlil也会在我向停止命令发送0后停止,但是它也会在几秒钟后自动停止。 是否有一种效果可以激活,并在清除Go位之前一直保持运行? 或者,我是否有办法在不使用效果库的情况下实现这一点?

任何帮助都是非常令人感激的

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

    对于长时间振动,应使用实时回放(RTP)模式。 您可以根据触发模式使用触发器引脚或执行位进行控制。 不存在可连续播放的库效果。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的反馈

    我尝试使用I2C的实时模式,但是我遇到了一些问题。

    我写入一个值0以寄存0x02 (对于0振幅),然后写入值5以寄存0x02 (打开实时波形)。 但是,它仍会完全驱动振幅。 我错过了什么吗? 我的理解是,当我打开实时反馈时,它只会驱动寄存器0x02中的任何振幅。

    此致,

    本杰明

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

    嗨,Benjamin,

    正确,在RTP (实时回放)模式下,DRV2605L以寄存器0x02中RTP_input[7:0]位指定的振幅连续驱动制动器。 但是,无论您是处于开环模式还是闭环模式,它都有不同之处。 数据表的8.5 8节对此进行了概述

    如果您在开环模式下操作,则应检查DATA_FORMAT_RTP是0还是1,因为它将确定当寄存器0x02设置为0时促动器是获得0V还是-OD_箝 位[7:0]。 可能是ERM正被驱动到相反的方向。  

    通常,通过TRIG引脚或GO位将DRV2605L从RTP模式中移除而不是将振幅设置为0V,来停止执行器。 (编辑-不要对RTP模式使用GO位,而是调整振幅0x02)

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

    感谢您的进一步澄清。

    我已将Register 1D (一维寄存器)设置为A8 -以启用无符号数据的开环操作,并将NG阈值保留为数据。

    接下来,只要我写入一个值以注册0x02,它就会立即打开,甚至在我激活模式或打开Go位之前。 为什么这样,我是否必须首先将模式设置为RTP,写入0x05的值以注册0x01,然后通过打开和关闭寄存器0x0C中的Go位来打开和关闭反馈?

    此外,即使它确实振动,它也与您讨论的数据不匹配,这些数据包含在数据表中。

    首先,当我将寄存器0x1D设置为0xA8的值以启用开环无符号数据时

    • 当我将寄存器0x02设置为值0x00时,它会振动
    • 当我将寄存器0x02设置为值0x71时,它不会振动
    • 当我将寄存器0x02设置为0xFF值时,它会再次振动。
    • 当我将寄存器0x02设置为值0x81时,它不会振动

    我还尝试将寄存器0x1D设置为A0 (开环无符号)。 我得到了以下结果

    • 将寄存器0x02设置为值0不会振动
    • 将寄存器0x02设置为0x7F时会振动
    • 将寄存器0x02设置为0xFF的值,它不会振动
    • 将寄存器0x02设置为0x81值时会振动

    您是否知道为什么我会遇到这些问题? 我是否错过了其他步骤?

    此致,本杰明

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

    嗨,Benjamin,

    奇怪的是,当设备不处于RTP模式时,将数据写入0x02会创建输出。 在写入0x02之前,您是否可以先读取0x01以查看它处于何种模式?

    当寄存器0x1D的值为0xA8时,这意味着data_format_rtp为1,因此RTP模式的数据是无符号的。 您的OD_箝 位[7:0]值是什么? 假设默认值为0x8C,它对应于最大值时约3V的输出电压。  

    • 当我将寄存器0x02设置为值0x00时,它会振动
      • 0x00对应100 % 于OD_clamp的-3V,因此在输出上应为-3V。 负电压将导致ERM在相反方向旋转,因此预计会产生振动

    • 当我将寄存器0x02设置为值0x71时,它不会振动
      • 0x71对应于十进制数113,即OD_clamp的11 % ,即-ERM 0.33 V,可能不足以旋转ERM。  
    • 当我将寄存器0x02设置为0xFF值时,它会再次振动。
      • 0xFF是OD_clamp的100 % ,因此在输出上为3V
    • 当我将寄存器0x02设置为值0x81时,它不会振动
      • 0x81是OD_clamp的1 % ,在0.03V时不会移动ERM

    当0x1D为0xA0时,data_format_rtp为0,因此数据已签名(2s补码)。

    • 将寄存器0x02设置为值0不会振动
      • 预计为0伏
    • 将寄存器0x02设置为0x7F时会振动
      • 预计为3V
    • 将寄存器0x02设置为0xFF的值,它不会振动
      • 预计为0伏
    • 将寄存器0x02设置为0x81值时会振动
      • 预期为-3V

    查看输出上的电压值(OD_clamp的百分比)的一种简单方法是下载 触觉控制台 并打开DRV2605L的控制台窗口。 您不需要EVM,它有一个模拟器版本。 在工作模式下,您可以选择"实时回放",并且有一个滑块显示相应的十进制(或十六进制)值。 查看"工具"下的寄存器映射也会有所帮助。 还有一本用户指南可用于触觉控制台,值得一看。  

    希望能有所帮助!

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

    这一解释澄清了Signed和Unsigned的寄存器值-谢谢。

    似乎我现在就可以工作了,这样在我将模式更改为RTP之前,它不会打开。

    2不过,最后的问题是:

    1)您之前说过:"通常,通过TRIG引脚或GO位将DRV2605L从RTP模式中移除而不是将振幅设置为0V,来停止执行器。 "我的触发位与地面连接,如何通过执行位激活/停用?

    2)是否通过开环实时驱动,在启动时间或制动时间提供任何额外速度,或者仅使用闭环操作才正常。 我还对OD_箝 位和额定电压的计算感到困惑。 我正在使用ERM,因此我需要使用方程式2/4/6。 但是,应从数据表等确定哪些值,您是否有此计算的示例。 这是我当前使用的电机(www.pololu.com/.../1637) ,他们不提供太多信息。 也许我需要不同的振动执行器来利用此功能?

    再次感谢您的所有帮助,它非常有用。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨,Benjamin,  

    1)查看数据表时,我意识到我错了。 DRV2625使用Go位触发RTP模式,具体取决于其设置,但DRV2605L没有。 很抱歉这个。 在RTP模式下使用DRV2605L时,您可以通过将非零值写入0x02来创建输出,并通过写入相当于0到0x02的值或通过设置待机位(如 数据表的9.3 .2.2 中所述)将设备置于低功耗模式来停止输出。  

    2)在开环模式下,没有自动超速或制动。 您必须使用闭环模式才能利用这些功能。 在开环模式下,输出将为峰值电压,即OD_clamp (0x17)中设置的电压,除非使用RTP模式进行其他编程,并将输出设置为半OD_clamp。 因此,如果使用开环模式,您只需使用方程式6即可找到OD_clamp寄存器的正确值。

    您可以在开环或闭环中使用您选择的ERM。 从网页上,我看到它推荐的工作电压是2.5 到3.5 伏特,所以我建议将OD_clamp设置为3或3.5 V。要计算这一点,简单的等待是使用Haptic控制台软件并打开DRV2605L控制台窗口:

    或者,您可以使用带OD_clamp值的方程式6 (十进制)。