你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32f410 + DRV8834 控制2相4线 步进电机 不转动

[复制链接]
ananbo 提问时间:2019-8-21 14:00 /
主控板用的是ST的 nucleo-F410RB 小白板。 驱动芯片用的是TI的DRV8834,驱动板是按照官方DRV8834的datasheet里的 typical application自己做的板子(附图是自己画的原理图和官方手册推荐的原理图对照,一模一样做的板子

程序是自己按照手册的说明写的。附上电机这部分程序,如下:管脚定义如下:
#define DRV8834_RCC_CLK_ENABLE()         __HAL_RCC_GPIOC_CLK_ENABLE()
#define DRV8834_GPIO_PIN                 (GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2)
#define DRV8834_GPIO_PORT                GPIOC


#define dir_opsitive                    HAL_GPIO_WritePin(DRV8834_GPIO_PORT,GPIO_PIN_0,GPIO_PIN_SET)
#define dir_negative                    HAL_GPIO_WritePin(DRV8834_GPIO_PORT,GPIO_PIN_0,GPIO_PIN_RESET)//方向

#define sleep_off                       HAL_GPIO_WritePin(DRV8834_GPIO_PORT,GPIO_PIN_1,GPIO_PIN_SET)
#define sleep_on                        HAL_GPIO_WritePin(DRV8834_GPIO_PORT,GPIO_PIN_1,GPIO_PIN_RESET)//

#define nENBL_off                       HAL_GPIO_WritePin(DRV8834_GPIO_PORT,GPIO_PIN_2,GPIO_PIN_SET)
#define nENBL_on                        HAL_GPIO_WritePin(DRV8834_GPIO_PORT,GPIO_PIN_2,GPIO_PIN_RESET)//使能





我写的是一个控制正反转的程序,设置一个变量pid_input ,为了方便控制正反转
void user_app_motorcontrol(float pid_input){
  if (pid_input > 0)   //大于0
  {
        
       sleep_off;
       nENBL_on;
       HAL_Delay(2);
       dir_opsitive;   //正转
       HAL_TIM_PWM_Start(&htim9,TIM_CHANNEL_1);
  }
  if (pid_input < 0)  //小于0
  {

      sleep_off;
      nENBL_on;
      HAL_Delay(2);
      dir_negative; //反转
      HAL_TIM_PWM_Start(&htim9,TIM_CHANNEL_1);

  }
}


为了方便测试,在main里 我写了一个跑正转的函数。
while (1)
  {
    user_app_motorcontrol(1);
    HAL_Delay(2000);        
  }
附图有DRV8834的控制时序图(附图有datasheet截图)。默认情况下,nENBL,STEP,DIR,M0,M1,nSLEEP 都是有下拉的(附图有功能方框图)M0 M1 ,我默认悬空为0,查手册table3为full step运行。
对于DRV8834驱动步进电机,都说只要给STEP引脚驱动频率就可以使步进电机转起来。可我这个接上线,我用万用表测,DRV8834有电压(我用的是小白板上的5V和GND)STEP端我用的是TIM9的channe 1 出的PWM,用示波器可以测出,但电机就是不转,连声音也没有,就像没有启动一样。请帮忙看一下。



另外附上datasheet里的简易原理图  。DRV88334 我用的是  nucleo小白板上的5v, 现在电机不转 ,也没有声音,我考虑会不会 是驱动电流的问题。小白板的电流太小了。

原理图.jpg
410.jpg
功能方框图.jpg
简易原理图.jpg
时序图.jpg
细分.jpg
收藏 评论7 发布时间:2019-8-21 14:00

举报

7个回答
ananbo 回答时间:2019-8-21 14:28:27
刚刚换了外接的9V 2.3A的小电源,不管用!!!
TLLED 回答时间:2019-8-21 14:52:14
DRV8834芯片的使能控制打开了吗
子曰好人 回答时间:2019-8-21 15:16:19
建议先看看控制信号正常不,直接上电机不怕烧机么
ananbo 回答时间:2019-8-22 08:26:45
TLLED 发表于 2019-8-21 14:52
DRV8834芯片的使能控制打开了吗

#define nENBL_off         HAL_GPIO_WritePin(DRV8834_GPIO_PORT,GPIO_PIN_2,GPIO_PIN_SET)
#define nENBL_on      HAL_GPIO_WritePin(DRV8834_GPIO_PORT,GPIO_PIN_2,GPIO_PIN_RESET)//使能


main函数里

if (pid_input > 0)   //大于0
  {
        
       sleep_off;
       nENBL_on;
       HAL_Delay(2);
       dir_opsitive;   //正转
      HAL_TIM_PWM_Start(&htim9,TIM_CHANNEL_1);
  }

手册里对eENBL是这么描述的,在indexer  mode下,低电平有效。见截图

nENBL.jpg
ananbo 回答时间:2019-8-22 08:32:30
子曰好人 发表于 2019-8-21 15:16
建议先看看控制信号正常不,直接上电机不怕烧机么

DRV8834 控制STEP引脚用示波器看,是有PWM输出的。我是用TIM9生成的PWM. 现在的问题是,控制端有PWM输入,但是测电机的A,A-,B,B-没有信号输出。。
1.jpg
2.jpg
ananbo 回答时间:2019-8-22 15:10:18
TLLED 发表于 2019-8-21 14:52
DRV8834芯片的使能控制打开了吗

检查了一下硬件,应该是之前有部分引脚,有虚焊的问题,重新焊好。现在问题是步进电机有声音了,但还是不转。请帮忙看一下。

刚才用示波器测输出端,A+A-有波形,B+B-没有,会是什么原因。

A+ ---》AOUT1
A- ---》AOUT2
B+ ---》BOUT1
B- ---》BOUT1
6.JPG
ananbo 回答时间:2019-8-22 15:10:37
子曰好人 发表于 2019-8-21 15:16
建议先看看控制信号正常不,直接上电机不怕烧机么

检查了一下硬件,应该是之前有部分引脚,有虚焊的问题,重新焊好。现在问题是步进电机有声音了,但还是不转。请帮忙看一下。

刚才用示波器测输出端,A+A-有波形,B+B-没有,会是什么原因。

A+ ---》AOUT1
A- ---》AOUT2
B+ ---》BOUT1
B- ---》BOUT1
6.JPG

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版