打印
[STM32F4]

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

[复制链接]
1533|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tcdbobo|  楼主 | 2019-8-21 13:35 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 tcdbobo 于 2019-8-21 14:24 编辑

主控板用的是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,用示波器可以测出,但电机就是不转,连声音也没有,就像没有启动一样。请帮忙看一下。




原理图.jpg (234.46 KB )

原理图.jpg

时序图.jpg (105.1 KB )

时序图.jpg

功能方框图.jpg (175.59 KB )

功能方框图.jpg

410.jpg (402.69 KB )

410.jpg

细分.jpg (64.79 KB )

细分.jpg

使用特权

评论回复
沙发
tcdbobo|  楼主 | 2019-8-21 13:54 | 只看该作者
本帖最后由 tcdbobo 于 2019-8-21 13:57 编辑

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

简易原理图.jpg (53.63 KB )

简易原理图.jpg

使用特权

评论回复
板凳
tcdbobo|  楼主 | 2019-8-21 14:28 | 只看该作者
tcdbobo 发表于 2019-8-21 13:54
附上datasheet里的简易原理图  。DRV88334 我用的是  nucleo小白板上的5v, 现在电机不转 ,也没有声音,我 ...


刚刚换了外接的9V 2.3A的小电源,不管用!!!

使用特权

评论回复
地板
香水城| | 2019-8-22 14:57 | 只看该作者
一步步来,先看看波形对不对,即驱动时序对不对,
然后 考虑驱动能力方面的问题。

使用特权

评论回复
5
grant_jx| | 2019-8-22 15:08 | 只看该作者
你问STSPIN220我还能回答你,问TI的就真没使用经验了。这片子看你贴出的资料,只要外围硬件没缺啥零件,用I/O就可以控制的。确认DRV88334外围硬件没啥问题,看看你控制的GPIO是不是输出电流不够,该高的没高,该低的没低啊

使用特权

评论回复
6
观海| | 2019-9-19 11:44 | 只看该作者
万用表量量 供电有了吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

83

帖子

0

粉丝