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.

[参考译文] DRV8836:使用 DRV8836DSSR (12引脚)驱动3.7V 空心杯电机时出现问题

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

https://e2e.ti.com/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1278160/drv8836-there-is-a-problem-driving-3-7v-hollow-cup-motor-with-drv8836dssr-12-pin

器件型号:DRV8836
主题中讨论的其他器件: TMS320F28035

大家好、

要求:用 DRV8836DSSR 芯片来驱动空心杯电机、但现在有一些问题、如下所示:

所用的主控制芯片是 TMS320F28035 (56引脚)芯片、主控制芯片和 DRV8836芯片的硬件原理图如下:

从原理图可以清楚地看到主控制芯片和 DRV8836的连接关系。

CCS 使用 EPWM1和 EPWM2调节 DRV8836的完整代码如下:

第一个是 main.c 文件:

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "Config.h"
extern Uint16 RamfuncsLoadSize;
void main(void)
{
InitSysCtrl();
DINT;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (Uint32)&RamfuncsLoadSize);
LED_Init(); // LED-
InitMotor(); // -
Timer0_init(); // 01ms-
PieCtrlRegs.PIECTRL.bit.ENPIE = 1;
EINT;
ERTM;
while(1)
{
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

MOTO.c 文件:

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "stdio.h"
#include "Moto.h"
uint8_t Turningmodeselection=Noturn;
uint16_t MOTO1_PWM=0;
/*******************************************************************************
* : void InitMotor(void)
* : DRV8836
*******************************************************************************/
void InitMotor(void)
{
EALLOW;
nSLEEPMUX = 0; nSLEEPDIR = 1; //GPIO;
MODEMUX = 0; MODEDIR = 1;
AIN1MUX = 0; AIN1DIR = 1;
AIN2MUX = 0; AIN2DIR = 1;
BIN1MUX = 0; BIN1DIR = 1;
BIN2MUX = 0; BIN2DIR = 1;
EDIS;
nSLEEPLOW(); // DRV8836
MODELOW(); // DRV8836IN/IN
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Moto.h:

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#ifndef INC_MOTO_H_
#define INC_MOTO_H_
#include "extern_variable.h"
#define PWM_FRE 600000
#define EPWM_TIMER_TBPRD 999
/* */
#define CMPX_MIN 0
#define CMPX_HALF 500
#define CMPX_MAX 999
#define Vertailmotor_PWM 300
extern uint8_t Turningmodeselection;
extern uint16_t MOTO1_PWM;
enum {Noturn = 0,Turnleft,Turnright};
#define nSLEEP GPIO5
#define nSLEEPMUX GpioCtrlRegs.GPAMUX1.bit.nSLEEP
#define nSLEEPDIR GpioCtrlRegs.GPADIR.bit.nSLEEP
#define nSLEEPTOGGLE() GpioDataRegs.GPATOGGLE.bit.nSLEEP = 1
#define nSLEEPON() GpioDataRegs.GPASET.bit.nSLEEP =1
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

这段代码可以正常运行、我个人认为这段代码没有问题、但电机无法正常旋转、所以我不知道问题出在哪里。

当代码正常运行时,我希望图片显示出额定电压为3.7V 的空心杯马达可以正常旋转。

但实际情况是电机根本不旋转、CCS 软件接口跳转到一个奇怪的接口、如下图所示。

空心杯电机的两根电线正确连接到(AOUT1、AOUT2)或(BOUT1、BOUT2)接口、电机不仅无反应、而且软件将进入上面的接口。

尽管空心杯马达的额定电压为3.7V,但它可以通过连接到马达的1.5V 电压进行旋转。

我给 DRV8836的电源电压在1S 锂电池分压后对于整个电路是3.3V、我没有直接将1S 锂电池接至 DRV8836 (VCC 和 GND)。

在我的测试中、我发现在正常运行情况下、当我连接(AOUT1直接连接到 AOUT2)或(BOUT1直接连接到 BOUT2)时、也会出现上图中的 CCS 接口。

我使用 EPWM2A 连接 AIN2和 EPWM2B 来连接 AIN1、给定的占空比为80%。 我通过示波器正确观察到了波形。 根据预期计算,AOUT1和 AOUT2引脚的电压输出为3.3V*0.8=2.64V,足以驱动空心杯电机,但电机在插入后不移动,且软件停止调试。

1.代码有问题吗?

2.硬件电路有问题(1S 锂电池应该直接连接到8836的 VCC 和 GND 吗?)

3、CCS 为什么有一个不熟悉的接口? (我正在使用 XDS100V1仿真器)

4.如何配置中空杯马达以使其正常运行?

您能帮助检查这个问题吗? 谢谢。

此致、

切里

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

    您好 Cherry:

    我会仔细研究您的问题、并尽快与您联系。

    此致、

    巴勃罗·阿梅特

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

    您好 Cherry:

    相关的教程。 请向 CCS 团队咨询、因为我不是这方面的专家。 但是、我可以帮助解决电机和 DRV 相关问题。

    2. 硬件电路有问题(1S 锂电池是否应直接连接到8836的 VCC 和 GND?)

    这应该不是问题。 我的确注意到、VCC 线路上没有大容量电容器。 它在原理图中的其他某个位置吗? 我们建议最小10uF 的大容量电容和0.1uF 的去耦电容。  

    根据预期的计算,AOUT1和 AOUT2引脚的电压输出为3.3V*0.8=2.64V,足以驱动空心杯电机,但电机在插入后不会移动且软件停止调试。[/引述]

    当软件停止 Debug 时。 输入信号是否会变为低电平?

    此致、

    巴勃罗·阿梅特

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

    尊敬的  Pablo Armet:

    感谢您的支持。

    我的 CCS 代码应该没有问题、因为我使用了示波器来观察符合预取指令的 ePWM 波形。

    在我的测试后中空杯马达没有问题。

    1. DRV8836芯片的使用应该存在问题。 DRV8836的数据手册未详述。 例如、未详细指定应输入哪些信号 AIN1和 AIN2。

    您能向我提供 DRV8836用例吗? 包含所用的 C 语言代码和硬件原理图

    请参考数据手册、在 DRV8836的 VCC 处连接一个10uF 电容器。 请参阅下面的硬件原理图。

    3.当软件停止调试时,以下情况将首先出现在 CCS 界面上,然后没有信号输入到 DRV8836的 AIN1\AIN2和 BIN1\BIN2。 如果将直流有刷空心杯电机插入 DRV8836的 XOUT1和 XOUT 端口(X=A 或 B)、则会触发故障。

    4.猜猜可能出现的问题:由于 DRV8836封装很小,它是否与我的焊接有关?

    5.猜测可能的问题:我在软件类型中配置了 DRV8836,但只进行了简单的配置,我不知道是否正确。

    谢谢。此致、

    切里

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

    您好 Cherry:

    1. DRV8836芯片的使用应该存在问题。 DRV8836的数据手册未详述。 例如,没有详细指定应输入的信号 AIN1和 AIN2。

    对于满量程步进、输入应该如下面所示(当处于 PWM 模式时)

    2.i 请参考数据手册、并在 DRV8836的 VCC 处连接一个10uF 电容器。 请查看下面的硬件原理图。

    建议添加一个与10uF 并联的0.1uF 电容器。

    当软件停止调试时、以下情况将首先出现在 CCS 接口上、然后没有信号输入到 DRV8836的 AIN1\AIN2和 BIN1\BIN2。 如果将直流有刷空心杯电机插入 DRV8836的 XOUT1和 XOUT 端口(X=A 或 B)、则将触发故障。[/报价]

    这是 CCS 问题还是电机驱动器问题? 看起来有些东西会导致 CCS 程序停止、输入没有信号导致电机停止。 您能否提供输入信号的波形?

    4. 猜猜可能出现的问题:由于 DRV8836封装很小,它是否与我的焊接有关?

    让我们首先尝试了解 DRV8836是否触发了故障。  

    问题1:此问题是否始终发生、或者电机是否成功旋转了一段时间、然后停止?

    Q2:在不将电机连接到输出的情况下、OUTx 信号是否遵循数据表中的控制逻辑表? 本质上、OUTx 电压是否基于提供的 INx 信号而符合预期?

    Q3:连接电机并尝试驱动电机后、可以使用电流探头检查电机电流吗? 它是否超出 OCP 限制?

    Q4:您能否提供一个波形来显示驱动时和电机停止时的 OUTx 电压?

    5. 猜测可能的问题:我在软件类型中配置了 DRV8836,但仅进行了简单的配置,我不知道它是否正确。

    您能否提供从 uC 到 DRV8836的输入信号? 我可以确认。

    此致、

    巴勃罗·阿梅特

    [/quote]
x 出现错误。请重试或与管理员联系。