一、器件
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、一点要共地、一定要共地、一定要共地!!!
错误视频