步进电机驱动&&STM32代码实现控制
一、驱动电路说明
1.芯片简介
步进电机驱动所用芯片为TB67S109AFNAG。
TB67S109A是一种配备PWM斩波器的两极步进电机驱动器。内置时钟解码器。本驱动器采用BICD工艺制作,额定值为50V/4.0A。
特点:
◉能控制一台双极步进电机。
◉由PWM控制的恒流驱动。
◉允许全步,半步,四分,1/8,1/16,1/32步运行。
◉低导通电阻(高+低侧 = 0.49(经典值))MOSFET输出级。
◉高效电机电流控制机构(高级动态混合衰减)
◉高电压与电流
◉错误检测(TSD/ISD)信号输出功能。
◉内置错误检测电路()热关断(TSD),过流关断(ISD),以及上电复位(POR)。
◉内置VCC调节器供内部电路使用。
◉可通过外电阻与电容自定义电路使用。
该芯片具体信息,包含中数据手册,英文数据手册。可小编博客上传资料“芯片——步进电机驱动芯片TB67S109AFNAG中英文手册”下载,或者中下面QQ群文件里下载。
2.芯片原理图
芯片驱动原理图如图:
具体实物图:
步进电机驱动具体PCB工程。可在下面QQ群文件里下载。
二STM32软件控制实现
1.硬件说明
①控制主板 “司南电气控制STM32单片机开发板”,如图
②驱动板 "步进电机TB67S109AFNAG 驱动 ",如图
③42步进电机
④接线说明:
◉驱动板VCC与GND接12V或者24V电源
◉COM+ → 司南主板步进电机接口3.3v
◉ DIR- → 司南主板步进电机接口 DIR
◉CLK- → 司南主板步进电机接口 CLK
◉EN- → 司南主板步进电机接口 EN
2.代码说明
PWM配置
void TIM3_PWM_Init(u16 arr,u16 psc)
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);//
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO , ENABLE);
//GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //TIM_CH1
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值 计数到5000为500ms
TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值 10Khz的计数频率
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //选择定时器模式:TIM脉冲宽度调制模式2
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性:TIM输出比较极性高
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能
TIM_OC3Init(TIM3, &TIM_OCInitStructure); //根据TIM_OCInitStruct中指定的参数初始化外设TIMx
TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable);
TIM_Cmd(TIM3, ENABLE);
}
主函数
#include "stm32f10x.h"
#include "led.h"
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "pwm.h"
#include "timer.h"
//说明
//连接好线后,细分数调到6400
int main(void)
{
u8 key;
RS485_Init(9600); //串口初始化为9600
RS232_Init(9600); //串口初始化为9600
TIM3_PWM_Init(30,111);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
delay_init(); //延时函数初始化
LED_Init(); //输出I/O初始化函数
LED1=0;LED2=0;LED3=0;LED4=0;LED5=0;LED6=0;LED7=0;LED8=0; BEEP=0;
while(1)
{
TIM_SetCompare3(TIM3,20);
// delay_ms(300);
}
}
}
具体源码工程压缩包可在本博客上传资料下载。或者下面QQ群下载,“星云视界”资料共享群:626051465
“星云视界”资料共享群资料二维码如下:

非常感谢大家的观看,希望对大家有所帮助。小编常接外包设计定单哦!非常乐意为大家提供毕设技术指导以及产品设计等服务。
如需要可直接联系小编(添加请备注博客添加哈):
QQ : 3778615131
微信号 : a13428153731