03_DRV8825驱动两相步进电机(GD32或者STM32)

这篇博客详细介绍了如何使用DRV8825驱动两相步进电机,包括其特点、操作电压、电流规格和安全模式。还提供了GPIO配置代码,展示了电机方向控制、细分设置、使能控制等关键步骤,适用于GD32或STM32平台。
摘要由CSDN通过智能技术生成

一、特点:

·功能: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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值