0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

低压步进器电机驱动器STSPIN220开发(1)----驱动STSPIN220

嵌入式单片机MCU开发 来源:嵌入式单片机MCU开发 作者:嵌入式单片机MCU开 2026-05-25 16:29 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

概述

STSPIN220 是一款步进电机驱动器,在一个小型 VFQFPN 3 x 3 x 1.0 mm 封装中集成了控制逻辑和低 RDS(开启)功率级。该套件提供一整套保护功能,包括过电流、过热和短路保护,并且可以强制进入零消耗状态,从而显著延长电池寿命。 本文档的目标是提供关于使用STM32CubeMX驱动低压步进电机驱动器STSPIN220的详尽信息和操作指南。通过本文档,将深入了解如何利用STM32CubeMX来配置电机驱动器,以及如何实现对步进电机的精确控制和运动。

最近在弄ST的课程,需要样片的可以加群申请:615061293 。

样品申请

[https://www.wjx.top/vm/PpC1kRR.aspx]

视频教学

[https://www.bilibili.com/video/BV1Db8gzMEC7]

代码下载

[https://download.csdn.net/download/qq_24312945/91621943]

硬件准备

首先需要准备一个开发板,这里我准备的是自己绘制的开发板,需要的可以进行申请。 主控为STM32H503CBT6,驱动器为STSPIN220

参考程序

https://github.com/CoreMaker-lab/STSPIN220

https://gitee.com/CoreMaker/STSPIN220

功能框图

STSPIN220 是一个集成了控制逻辑和功率级的微步进驱动芯片,用于驱动双极型步进电机。下图图展示了芯片如何接收指令并控制两相电机的四个输出端(OUTA1/A2,OUTB1/B2)。

STSPIN220所有功能

STSPIN220作为一款专为步进电机而设计的芯片,具备多项卓越特性,为电机控制领域提供了高度可靠的解决方案: 宽范围工作电压: STSPIN220支持广泛的工作电压范围,从1.8V至10V,这意味着它适用于各种不同电源供应场景,从低电压到标准电压范围。 高输出电流能力: 最大输出电流1.3 Arms使STSPIN220能够驱动具有较高电流需求的步进电机,确保电机能够以足够的力量进行运动。 低RDS(ON)值: 芯片的高低侧电流传感器MOSFET具有低RDS(ON)值,仅为0.4Ω(典型值)。这将减少功耗和热量损耗,提升电机的效率和性能。 精细的微步进控制: STSPIN220能够实现每次步进高达1/256的微步进,这使得步进电机的运动变得更加平滑和精准,适用于需要高精度控制的应用。 电流控制通过可编程关断时间: 芯片利用可编程关断时间来实现电流控制,这可以根据应用需求调整电机的电流,以获得最佳性能。 全套保护机制: STSPIN220提供全面的保护机制,包括非耗散性过电流保护、短路保护和热关断。这些保护机制确保在异常情况下电机驱动器和步进电机都能够安全运行。 极低待机耗电量: 该芯片的待机模式耗电量不足80 nA,这使得它非常适合在需要节能和延长电池寿命的应用中使用。

综上所述,STSPIN220以其广泛的工作电压范围、高输出电流能力、微步进控制、电流控制方式、保护机制以及低待机耗电量,为步进电机驱动提供了一种先进的解决方案。无论是在性能、效率还是电源管理方面,STSPIN220都为步进电机应用带来了出色的表现和可靠性。

基础配置

对于小电流电机,R10改为10K以下,这里设置为5.1k

REF

REF为参考电压,最大范围是-0.3-1V

电流配置

下图有配置公式。

可以看到R_SNS为0.68R,若设置200mA,那么V_REF=0.68R*200MA=136mV,和上面说的V_REF=136mV相符。

细分配置

STSPIN最高提供了256细分的操作,具体配置如下所示。

IO配置

查看原理图,主要有6个IO需要配置。 分别是STBY、EN、MODE1、MODE2、MODE3、MODE4。

IO说明如下所示。 其中ENFAULT为使能管脚,需要配置为开漏输出。 使能高电平时候STSPIN220正常工作。

输入引脚说明

输出端子说明

细分配置

下图为设置细分示意图。

启动时序图如下所示,具体有如下几个步骤。

  1. 上电:首先,将驱动器供电,即将VS供电电压连接到驱动器。但是保持STBY和EN/FAULT输入都处于低电平状态。
  2. 设置MODEx输入:根据目标步进分辨率(可以参考Table 1),设置MODEx输入引脚的状态。这些引脚决定了步进电机的微步运动模式。
  3. 等待:等待至少1微秒(t MODEsu 最小时间)。这个等待时间是确保MODEx输入被稳定设置的时间。
  4. 将STBY引脚置高:将STBY引脚设置为高电平。这将导致之前设置的MODEx配置在设备内部被锁存。
  5. 等待:再等待至少100微秒(t MODEho 最小时间)。这个等待时间是确保MODEx配置被正确锁存的时间。
  6. 启用电源级:释放EN/FAULT输入,使电源级开始工作。这意味着驱动器已经准备好执行步进操作。 通过按照这个推荐的上电顺序和设置过程,您可以确保在驱动器开始工作之前,各个输入的状态都稳定,并且微步模式配置正确地被锁存,从而实现步进电机的精确控制。这个过程有助于减少潜在的启动问题和不稳定性。

具体配置如下所示。

生成STM32CUBEMX

用STM32CUBEMX生成例程,这里使用MCU为STM32H503CB。 配置时钟树,配置时钟为250M。

启动配置

拉高 EN/FAULT 开始运行 。

STBY配置

MODE1配置

MODE2配置

MODE3配置

初始阶段为 MODE3 微步设定,之后为 Step Clock 输入 。

MODE4配置

定时器配置

STM32CUBEMX中,选择定时器1,并将其配置为PWM输出模式。确保选择了正确的定时器通道(通道1)。

配置定时器1的时钟源和预分频因子。根据应用的要求和系统时钟频率,选择适当的时钟源和预分频因子,以获得所需的脉冲频率。将定时器1的时钟源和预分频因子配置为适合您的应用的值。 PWM频率计算如下所示。

在上述配置中,将定时器1的预分频系数设置为250-1,自动重载值设置为1000-1。根据这些配置,PWM的频率可以计算为250,000,000 / ((250-1+1) * (1000-1+1)) = 1000Hz,即1kHz。 在定时器中,通道的 "pulse"(脉冲)是指定时器输出的信号的一种特性。每个定时器通道都可用于生成脉冲信号,而 "pulse" 通常指的是单个脉冲的持续时间。在这种设置中,我们将脉冲的占空比配置为50%,因此设置为500-1。

STSPIN220驱动

STSPIN220.c 和 STSPIN220.h 文件是用于控制 STSPIN220 步进电机驱动器的 HAL 底层驱动代码。

STSPIN220使能、低功耗、方向初始化如下所示。

//使能操作 1使能0失能
void STSPIN220_enable(uint8_t enable)
{
    if(enable)
        HAL_GPIO_WritePin(EN_GPIO_Port, EN_Pin, 1);
    else
        HAL_GPIO_WritePin(EN_GPIO_Port, EN_Pin, 0);

}

//方向设置 0反1正
void STSPIN220_setDirection(uint8_t direction)
{
    if(direction)
        HAL_GPIO_WritePin(MODE4_GPIO_Port, MODE4_Pin, 1);        
    else
        HAL_GPIO_WritePin(MODE4_GPIO_Port, MODE4_Pin, 0);        
}

//低功耗模式 1使能0失能
void STSPIN220_Stby(uint8_t stby)
{
    if(stby)
        HAL_GPIO_WritePin(STBY_GPIO_Port, STBY_Pin, 0);        
    else
        HAL_GPIO_WritePin(STBY_GPIO_Port, STBY_Pin, 1);    


}

在main.c中添加对应头函数。

/* USER CODE BEGIN Includes */
#include "STSPIN220.h"
/* USER CODE END Includes */

变量定义。

/* USER CODE BEGIN 0 */
// 初始化 MODE3 引脚(即 STCK),用作步进脉冲输出
void MX_GPIO_Init_mode3(void);

uint16_t STSPIN220_PwmNum;      // 控制电机旋转步数(PWM脉冲数量)
uint8_t    STSPIN220_flag = 0;     // PWM计数完成标志
uint8_t    STSPIN220_Dir_flag = 0; // 电机方向标志:0反向,1正向
/* USER CODE END 0 */

初始化mode

由于需要对mode进行初始化,主要操作为4个IO口,所以需要先对mode3管脚进行IO初始化为普通IO,后续切换为TIM模式。

/* USER CODE BEGIN 4 */
/**
  * @brief  初始化 MODE3(STCK)引脚为输出模式,用于产生步进脉冲
  */
void MX_GPIO_Init_mode3(void)
{
  GPIO_InitTypeDef GPIO_InitStruct = {0};

  // 开启 GPIOA 时钟
  __HAL_RCC_GPIOA_CLK_ENABLE();

  // 设置初始电平为低
  HAL_GPIO_WritePin(MODE3_GPIO_Port, MODE3_Pin, GPIO_PIN_RESET);

  // 配置 MODE3 为推挽输出,无上拉下拉,低速
  GPIO_InitStruct.Pin = MODE3_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(MODE3_GPIO_Port, &GPIO_InitStruct);
}
/* USER CODE END 4 */

同时定时器初始化需要关闭。

在初始化完毕mode3之后需要进行en和stby设置,具体如下所示。

/* USER CODE BEGIN 2 */
    MX_GPIO_Init_mode3();
    HAL_Delay(100);

    STSPIN220_SetStepMode(0);//mode1-mode4都关闭
    STSPIN220_enable(0);//使能操作 1使能0失能
    STSPIN220_Stby(1);//低功耗模式 1开启低功耗0关闭低功耗
    HAL_Delay(100);

    STSPIN220_SetStepMode(2);//细分操作
    STSPIN220_Stby(0);//低功耗模式 1开启低功耗0关闭低功耗,加载mode
    HAL_Delay(100);//等待电平稳定
    STSPIN220_setDirection(1);//0反1正
    HAL_Delay(100);//等待电平稳定
    STSPIN220_enable(1);//使能操作 1使能0失能
    HAL_Delay(100);

    MX_TIM1_Init();
    HAL_TIM_PWM_Start_IT(&htim1, TIM_CHANNEL_1); // 启动 TIM1 通道1,PWM带中断

  /* USER CODE END 2 */

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电机驱动器
    +关注

    关注

    16

    文章

    879

    浏览量

    66754
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    低压步进电机驱动器STSPIN220开发(2)----定时中断产生指定数量脉冲

    步进电机控制过程中,为了实现精确的位置和速度控制,经常需要输出指定数量的脉冲。这就需要使用定时功能来生成PWM脉冲信号。本文将详细介绍如何利用STM32CUBEMX配置定时以输出
    的头像 发表于 05-25 16:30 83次阅读
    <b class='flag-5'>低压</b><b class='flag-5'>步进</b><b class='flag-5'>器</b><b class='flag-5'>电机</b><b class='flag-5'>驱动器</b><b class='flag-5'>STSPIN220</b><b class='flag-5'>开发</b>(2)----定时<b class='flag-5'>器</b>中断产生指定数量脉冲

    意法半导体发布STSPIN9P系列75V电机驱动芯片

    意法半导体的STSPIN9P系列75V电机驱动芯片帮助客户加快开发对稳健性要求更高的工业电机驱动器
    的头像 发表于 04-03 17:43 1691次阅读

    步进电机驱动器的作用介绍

    步进电机驱动器是现代工业自动化、精密控制设备中的核心组件之一,其作用远不止简单的“驱动电机转动”,而是通过精确控制电流、细分步距角以及动态响
    的头像 发表于 02-28 15:47 488次阅读
    <b class='flag-5'>步进</b><b class='flag-5'>电机</b><b class='flag-5'>驱动器</b>的作用介绍

    DRV8886AT步进电机驱动器:特性、应用与设计要点

    DRV8886AT步进电机驱动器:特性、应用与设计要点 在工业和消费电子领域,步进电机驱动器的性
    的头像 发表于 01-09 10:10 466次阅读

    DRV8434A - Q1汽车步进驱动器:技术剖析与设计指南

    DRV8434A - Q1汽车步进驱动器:技术剖析与设计指南 在汽车电子领域,步进电机的应用愈发广泛,而一款优秀的
    的头像 发表于 01-07 09:30 444次阅读

    HR4988微特步进电机驱动器:高效便捷的驱动解决方案

    在自动化设备、智能机器人、精密仪器等领域,步进电机的稳定驱动是保障设备精度与可靠性的核心环节,而HR4988作为一款内部集成译码的微特步进
    的头像 发表于 10-28 16:37 1111次阅读
    HR4988微特<b class='flag-5'>步进</b><b class='flag-5'>电机</b><b class='flag-5'>驱动器</b>:高效便捷的<b class='flag-5'>驱动</b>解决方案

    STSPIN958可扩展全桥驱动器技术解析与应用设计

    STMicroelectronics STSPIN958可扩展全桥驱动器是一款具有高动态性能功率级的5A器件,支持用户通过精确占空比实现高频PWM控制。STSPIN958具有可调节阈值电流限流
    的头像 发表于 10-24 09:28 774次阅读
    <b class='flag-5'>STSPIN</b>958可扩展全桥<b class='flag-5'>驱动器</b>技术解析与应用设计

    STSPIN32G4智能驱动器技术解析:面向下一代智能执行的完整解决方案

    STMicroelectronics EVLSPIN32G4-ACT基于STSPIN32G4的参考设计是用于实施基于STSPIN32G4电机控制的下一代智能执行
    的头像 发表于 10-22 11:37 1292次阅读
    <b class='flag-5'>STSPIN</b>32G4智能<b class='flag-5'>驱动器</b>技术解析:面向下一代智能执行<b class='flag-5'>器</b>的完整解决方案

    ‌DRV8821 双路步进电机控制驱动器技术文档总结

    该DRV8821提供双微步进步进电机控制/驱动器 打印机、扫描仪和其他办公自动化设备应用的解决方案。 两个独立的步进
    的头像 发表于 10-21 11:27 924次阅读
    ‌DRV8821 双路<b class='flag-5'>步进</b><b class='flag-5'>电机</b>控制<b class='flag-5'>器</b>与<b class='flag-5'>驱动器</b>技术文档总结

    ‌DRV8824-Q1 汽车级步进电机驱动器技术文档总结

    DRV8824-Q1 为汽车应用提供集成电机驱动器解决方案。 该器件具有两个 H 桥驱动器和一个微步进索引
    的头像 发表于 10-17 14:07 1080次阅读
    ‌DRV8824-Q<b class='flag-5'>1</b> 汽车级<b class='flag-5'>步进</b><b class='flag-5'>电机</b><b class='flag-5'>驱动器</b>技术文档总结

    ‌基于STSPIN32G0A1的无刷电机驱动器评估板技术解析

    STMicroelectronics EVLSPIN32G0A1无刷电机驱动器评估板采用具备STM32G0 MCU的STSPIN32G0A1先进无刷
    的头像 发表于 10-17 10:46 927次阅读
    ‌基于<b class='flag-5'>STSPIN32G0A1</b>的无刷<b class='flag-5'>电机</b><b class='flag-5'>驱动器</b>评估板技术解析

    ‌基于STSPIN32G4的伺服驱动参考设计技术解析

    STMicroelectronics EVLSERVO1基于STSPIN32G4的参考设计是一款紧凑型参考设计,用于驱动低压、大电流伺服电机
    的头像 发表于 10-16 17:31 1239次阅读
    ‌基于<b class='flag-5'>STSPIN</b>32G4的伺服<b class='flag-5'>驱动</b>参考设计技术解析

    STSPIN32G0系列无刷电机控制技术解析

    STMicroelectronics STSPIN32G0无刷电机控制是一系列高度集成的系统级封装解决方案,适用于使用不同驱动模式驱动三相
    的头像 发表于 10-16 15:54 998次阅读
    ‌<b class='flag-5'>STSPIN</b>32G0系列无刷<b class='flag-5'>电机</b>控制<b class='flag-5'>器</b>技术解析

    ‌DRV8818A 35V步进电机驱动器技术文档总结

    该DRV8818A为打印机、扫描仪和其他自动化设备应用提供集成步进电机驱动器。该器件具有两个H桥驱动器和微步进索引
    的头像 发表于 10-11 09:29 1095次阅读
    ‌DRV8818A 35V<b class='flag-5'>步进</b><b class='flag-5'>电机</b><b class='flag-5'>驱动器</b>技术文档总结

    求助,STSPIN32G4内部驱动电压输出问题求解

    STSPIN32G4的内部驱动器时,我发现一个问题,无论我做什么,GHS的电压都是5.8V,GLS的电压是0V,out也是5.8V,板子的电流是0.02A。我已经尝试过让PE8处于高电平或接地或者
    发表于 06-11 08:20