记录使用TB6600与STM32驱动42步进电机

一、器件

12V直流电源
在这里插入图片描述
电源控制电路
在这里插入图片描述
STM32F103C8T6
在这里插入图片描述
或者STM32F103VET6
在这里插入图片描述
TB6600
在这里插入图片描述
42步进电机
在这里插入图片描述
电机参数
在这里插入图片描述

接线

这里有两种接法,我们这里使用共阴极接法。步进电机一般都会在电机标注出A+、A-、B+、B-,四线两相。共阴极最后是接地。
在这里插入图片描述
VCC接12V,PUL+接PC7、DIR+接PC6、ENA+接PC4
当然了,这些GPIO可以自己定义
这里只是用了非常简单的给步进电机一个开环脉冲,多少个脉冲是由TB6600的拨码器来决定的。
在这里插入图片描述
这里使用了145ON246OFF的形式,就是4Microstep、800Pulse/rev、1.5A、1.7PK
800个脉冲
那我们给它800个脉冲,是不是就一直转,对的
视频在B站,直接搜索同名Up
VET6
C8T6

以下是相对应的代码

void DelayNms(unsigned int Nms)
{
  for(; Nms != 0;Nms--);
}
  int x;
   //LED端口初始化
  LED_GPIO_Config();
  while(1)
  {
    for(x=0;x<=800;x++){
      GPIO_SetBits(GPIOA,GPIO_Pin_7); 
      DelayNms(0xfff);
      GPIO_ResetBits(GPIOA,GPIO_Pin_7);  
      DelayNms(0xfff);    
    }
  }    
void LED_GPIO_Config (void)
{
  /*定义一个GPIO_InitTypeDef类型的结构体*/
  GPIO_InitTypeDef GPIO_InitStructure;
  
  /*开启LED相关的GPIO外设时钟*/
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
  
  /*选择要控制的GPIO引脚*/
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7|GPIO_Pin_4|GPIO_Pin_6;
  
  /*设置引脚模式为通用推挽输出*/
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  
  /*设置引脚速率为50MHz*/
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  
  /*调用库函数,初始化GPIO*/
  GPIO_Init(GPIOA, &GPIO_InitStructure);
  
  /*关闭绿灯*/
  GPIO_SetBits(GPIOA,GPIO_Pin_7);
  
    /*关闭蓝灯*/
  GPIO_ResetBits(GPIOA,GPIO_Pin_4);
  
    /*关闭红灯*/
  GPIO_SetBits(GPIOA,GPIO_Pin_6);
}

是不是非常简单

填坑

1、接线不要接错
2、可以使用万用表测试同相的端口,有电阻的是同相。
3、一点要共地、一定要共地、一定要共地!!!
错误视频

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

特辣番茄炒鸡蛋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值