一、特点:
·功能:PWM电机驱动 最高32细分
·具有多种衰减模式:混合衰减 低速衰减 快速衰减
·操作电压 8.2V-45V
·最大2.5A 驱动电流 (24V,25°C)
·简单的 步数/方向 交互
·小电流睡眠模式
·内建3.3V参考电压
·小封装
·安全模式: 过流保护 热关机 欠压锁定 故障指示引脚 nFUAULT
安全说明:内部关闭功能用于过流,短路,欠压锁定和过热
内部引脚说明:
CAP1/CAP2 :两端间连0.01uF/50V电容
VCP:并联 0.1uF /16V 陶瓷电容 和1M电阻 至VM端
VMA,VMB 连接至绕组端, 两端必须是同样的端电压, 连接一个0.1uf的高频滤波电容,和一个大容量电容
V3P3OUT: 连接一个 0.47uF/6,3V陶瓷电容 用来做VREF的支撑电压。
AVREF/BVREF:AB桥的电流控制端,连接至同一参考电压,可以连接至V3P3OUT引脚
DECAY:衰减控制 低电平:低衰减模式 高电平:高速衰减模式 悬空(open) 混合衰减模式 【引脚内置上下拉】
DIR:方向控制: 【内置下拉】
MODE0/1/2:细分设置 【内置下拉】
nENBL:逻辑高电平去禁止驱动输出,逻辑低电平使能 【内置下拉】
nRESRT: 低电平有效,复位输入初始化驱动器逻辑并, 禁用H桥输出【内置下拉】
nSLEEP: 逻辑高使能器件,逻辑低电平进入低功耗睡眠模式【内置下拉】
STEP :上升沿导致驱动器移动一步【内置下拉】
nFAULT:错误会导致 引脚低电平(过热过流)
nHOME: 处于 初始位置时 引脚置低
AOUT1/2: 连接至步进电机绕组A 正向电流由1流向2
BOUT1/2:连接至步进电机绕组B 正向电流由1流向2
ISENA/B:连接到电桥A/B的电流检测电阻。
相管参数: Step Frequency Max= 250M 最佳温度 25°C
电流检测 :斩波电流的设置是由流经检测电阻的电压的五倍去和参考电压做对比
Ichop=VxREF/(5*Risense)
例 I=2.5/(0.25*5)=2A 2.5V的参考电压 0.25的欧姆的电流检测电阻
代码:
#ifndef _MDL_MOTOR_H
#define _MDL_MOTOR_H
#include "stdint.h"
#ifdef _MDL_MOTOR_INIT
#define EXTERN_MOTOR_INIT
#else
#define EXTERN_MOTOR_INIT extern
#endif
#define uSTEP GPIO_PIN_11
#define uSTEP_HIGH gpio_bit_set (GPIOE, uSTEP)
#define uSTEP_LOW gpio_bit_reset (GPIOE, uSTEP)
#define uDIR GPIO_PIN_12
#define uDIR_HIGH gpio_bit_set (GPIOE, uDIR)
#define uDIR_LOW gpio_bit_reset (GPIOE, uDIR)
#define unSlEEP GPIO_PIN_13
#define unSLEEP_HIGH gpio_bit_set (GPIOE, unSlEEP)
#define unSLEEP_LOW gpio_bit_reset (GPIOE, unSlEEP)
#define uVREF GPIO_PIN_14
#define uVREF_HIGH gpio_bit_set (GPIOE, uVREF)
#define uVREF_LOW gpio_bit_reset (GPIOE, uVREF)
#define MCU_OPTIN1 GPIO_PIN_0
#define READ_OPTIN1 gpio_input_bit_get (GPIOD, MCU_OPTIN1)
#define MCU_OPTIN2 GPIO_PIN_1
#define READ_OPTIN2 gpio_input_bit_get (GPIOD, MCU_OPTIN2)
#define MCU_OPTIN3 GPIO_PIN_3
#define READ_OPTIN3 gpio_input_bit_get (GPIOD, MCU_OPTIN3)
#define MCU_OPTIN4 GPIO_PIN_4
#define READ_OPTIN4 gpio_input_bit_get (GPIOD, MCU_OPTIN4)
#define MCU_OPTIN5 GPIO_PIN_5
#define READ_OPTIN5 gpio_input_bit_get (GPIOD, MCU_OPTIN5)
enum
{
Move_ConstantType =0, //恒速运行模式
Move_AddType =1, //只加速运行,无减速段
Move_CurveType =2, //曲线运行模式
};
#define abs(a,b) (a>b)?(a-b):(b-a)
//电机运行 结构体
typedef struct
{
volatile uint8_t lockEn; //电机锁步使能
volatile uint8_t stepMark; //电机脉冲标志
volatile uint16_t testFreq; //测量频率
volatile uint16_t stepCount; //电机运行实时记步
volatile uint8_t dir; //运行方向
volatile uint16_t addDis; //加速步数
volatile uint16_t subDis; //减速步数
volatile uint16_t runFreq; //电机当次运行的最大频率
volatile uint16_t startFreq; //起始频率
volatile uint16_t