【28BYJ-48】STM32同时驱动4个步进电机,支持调速与正反转


  资料下载:待更新。。。。

先驱动起来再说,干中学!!!

1、实现功能

STM32同时驱动4个步进电机,支持单独调速与正反转控制
需要资源:16个任意IO口+1ms定时器中断
在这里插入图片描述


目录

    •   资料下载:待更新。。。。
    • 先驱动起来再说,干中学!!!
  • 1、实现功能
  • 一、28BYJ-48 步进电机
  • 二、ULN2003 驱动模块
  • 三、STM32 驱动代码实现
  • 3、修改引脚


【28BYJ-48】STM32同4个步进电机正反转与调速

一、28BYJ-48 步进电机

  28BYJ-48 是一款常见的四相八拍式步进电机,它由定子和转子两部分组成。定子上有四组绕组,按照一定的顺序通电,就能产生旋转磁场,吸引转子转动。
  其步距角通常为 5.625°/64(约 0.08789°,这里的 64 是八拍驱动方式下细分后的步数),这意味着电机每接收到一个脉冲信号,转子就会精确地转动一个微小的角度,通过连续不断地给脉冲,实现电机的连续旋转。
电机参数
  工作电压:一般为 5V - 12V,常见的是 5V 供电,这使得它可以方便地与微控制器(如 STM32)直接配合使用,无需复杂的电压转换电路。
  相电阻:每相绕组的电阻值在几十欧姆到上百欧姆不等,例如典型值约为 200Ω 左右,这个参数影响电机的电流和驱动电路的设计。
  扭矩:它的扭矩相对较小,适用于一些对驱动力要求不高的轻载场合,如小型自动化设备的指针转动、简易机器人关节的微调等,一般启动力矩在 30 - 40gf.cm 左右。

二、ULN2003 驱动模块

功能概述
  ULN2003 是一个高耐压、大电流达林顿阵列集成电路,主要用于驱动感性负载,如步进电机、继电器等。它内部集成了 7 个 NPN 达林顿复合晶体管,在驱动 28BYJ-48 步进电机时,通常只用其中 4 个通道对应电机的四相绕组。
工作原理
  当微控制器(如 STM32)的引脚输出高电平信号给 ULN2003 的输入端时,对应的达林顿管导通,将电机绕组与电源接通;当输入低电平时,达林顿管截止,绕组断电。通过控制 4 个输入引脚的电平序列,按照特定的时序给电机绕组通电,就能驱动电机旋转。
  它还具有续流二极管,当电机绕组断电时,为绕组产生的感应电动势提供泄放回路,保护驱动芯片和其他电路元件,防止反向电压击穿。
电气特性
  输出电流能力:每路输出可承受最大 500mA 的电流,足以驱动 28BYJ-48 电机,因为该电机在正常运行时每相电流一般在几十毫安。
  耐压值:集电极 - 发射极耐压可达 50V,这为电机在不同电压供电情况下提供了足够的电压裕量,确保可靠工作。

三、STM32 驱动代码实现

#include "stm32f10x.h"			//STM32库函数的头文件
#include "timer.h"				//STM32定时器
#include "step_motor.h"			//步进电机驱动
int main(void) //主函数
{	SystemInit();delay_init();NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //   2组中断分RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOA,ENABLE);	//打开GPIO口时钟,先打开复用才能修改是否停用复用功能GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);  	//能用PB3,PB4,PA15做普通IO,PA13&14用于SWD调试	TIM2_Int_Init(99,719);		//72000000HZ/(99+1)/(719+1)=1000HZ  1ms中断Step_Motor_Init1();stepmotor_speed1 = 4;  		//5ms一个脉冲  stepmotor_set1 = -4096;		//4096为一圈,设置电机反转一圈Step_Motor_Init2();stepmotor_speed2 = 3;		//4ms一个脉冲stepmotor_set2 = 4096;Step_Motor_Init3();stepmotor_speed3 = 2;		//3ms一个脉冲stepmotor_set3 = 4096;Step_Motor_Init4();stepmotor_speed4 = 1;		//2ms一个脉冲//速度 360*1000/(1+1)*4096 = 43.965°/sstepmotor_set4 = 4096;while(1){	}
}
void TIM2_IRQHandler(void)   //TIM2中断
{if(TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)  //检查TIM2更新中断发生与否{TIM_ClearITPendingBit(TIM2, TIM_IT_Update  );  //清除TIMx更新中断标志stepmotor_run1();stepmotor_run2();stepmotor_run3();stepmotor_run4();}
}

3、修改引脚

  通过宏定义快速修改引脚

/* 步进电机1参数宏 */
/* A相 */
#define LA_GPIO_PORT1    	GPIOA
#define LA_GPIO_PIN1     	GPIO_Pin_9
#define LA_GPIO_CLK1     	RCC_APB2Periph_GPIOA
/* B相 */
#define LB_GPIO_PORT1    	GPIOA
#define LB_GPIO_PIN1     	GPIO_Pin_10
#define LB_GPIO_CLK1     	RCC_APB2Periph_GPIOA
/* C相 */
#define LC_GPIO_PORT1    	GPIOA
#define LC_GPIO_PIN1    	GPIO_Pin_11
#define LC_GPIO_CLK1     	RCC_APB2Periph_GPIOA
/* D相 */
#define LD_GPIO_PORT1    	GPIOA
#define LD_GPIO_PIN1     	GPIO_Pin_12
#define LD_GPIO_CLK1     	RCC_APB2Periph_GPIOA

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/74272.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Lc6_记忆化搜索] 不同路径 | 解决智力问题 | 有序三元组中的最大值

目录 1.不同路径 题解 2140. 解决智力问题 题解 2873. 有序三元组中的最大值 题解 1.不同路径 链接:62. 不同路径 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步…

软件重构与项目进度的矛盾如何解决

软件重构与项目进度之间的矛盾可以通过明确重构目标与范围、采用渐进式重构策略、优化项目管理流程、提高团队沟通效率、建立重构意识文化等方式解决。其中,采用渐进式重构策略尤为关键。渐进式重构是指在日常开发过程中,以小步骤持续进行重构&#xff0…

多台服务器上docker部署 Redis 集群

规划集群节点 确保你的服务器有固定 IP,比如: 172.16.17.100 172.16.17.101 172.16.17.102 每台服务器运行 2 个 Redis 节点,总共 6 个节点,满足 Redis Cluster 最小节点数要求。 2. 在每台服务器上运行 Redis 在每台服务器上执行…

【Pandas】pandas DataFrame dtypes

Pandas2.2 DataFrame Attributes and underlying data 方法描述DataFrame.index用于获取 DataFrame 的行索引DataFrame.columns用于获取 DataFrame 的列标签DataFrame.dtypes用于获取 DataFrame 中每一列的数据类型 pandas.DataFrame.dtypes pandas.DataFrame.dtypes 属性用…

如何实现局域网内无痛访问Jupyter Notebook?

Jupyter Notebook是数据科学和机器学习领域非常常用的交互式开发环境。默认情况下,Jupyter Notebook启动后只能本地访问,并且会自动生成一个token用于身份验证。当需要从其他电脑远程访问时,往往需要对配置进行修改。 本文将详细介绍如何通过…

[Windows] eDiary 4.3.6 日记软件

[Windows] eDiary 链接:https://pan.xunlei.com/s/VOMq6xmKTbEJtNaW-BXZ7KKSA1?pwdcrvu# 【应用功能】 加密 无论本地还是云端,都可以选择高强度加密。系统以用户密码为种子,对数据进行…

掌握 Flexbox 布局:为容器添加竖向滚动条的完美方案

掌握 Flexbox 布局:为容器添加竖向滚动条的完美方案 前言 在现代网页设计中,Flexbox 布局因其灵活性和强大的对齐功能而备受欢迎。然而,在实际开发过程中,我们有时会遇到需要在一个具有最小高度的 Flex 容器中实现内容溢出时显示…

Node.js v22.14.0 多平台安装指南:Windows、Linux 和 macOS 详细教程

Node.js作为现代Web开发的基石,持续为开发者带来性能提升和新特性支持。本文将详细介绍在Windows、macOS和Linux系统上安装最新Node.js的多种方法,助您快速搭建高效的JavaScript开发环境。 📦 当前最新版本 截至2025年4月,Node.…

动态规划学习——回文子串系列问题【C++】

一,回文子串 题目链接:LCR 020. 回文子串 - 力扣(LeetCode) 【问题描述】 求一个字符串中有多少个回文子串,其中一个字符也算是一个回文子串。 【解法】 动态规划 求一个字符串中回文子串的个数,我么可…

My first day in QT programming

My first QT code this->setWindowTitle("HelloWorld"); //设置窗口名称 this->resize(400, 300); //设置窗口大小 QPushButton* btn new QPushButton; //新建按钮组件 btn->setParent(this); //为按钮指定父对象 …

基于python开发的邮箱合并群发工具

智能邮件群发系统 一个基于Python和PyQt5开发的智能邮件群发工具,支持Word模板和Excel数据源的自动匹配,具有现代化UI界面和友好的用户体验。 Github项目地址:https://github.com/liugang926/Auto-mail-sent.git dist目录有编译好的exe程序&…

大模型-提示词(Prompt)技巧

1、什么是提示词? 提示词(Prompt)是用户发送给大语言模型的问题、指令或请求,用来明确地告诉模型用户想要解决的问题或完成的任务,是大语言模型理解用户需求并据此生成相关、准确回答或内容的基础。对于大语言模型来说…

Android开发:support.v4包与AndroidX

Android中的support.v4包与AndroidX support.v4包概述 Android Support Library中的android.support.v4包是Google为保持Android应用向后兼容而提供的重要支持库集合。它主要解决以下问题: API版本兼容:让新版API能在旧版Android系统上使用功能增强&a…

TCP-IP模型

书接上回(OSI通信模型) TCP-IP协议结构 (略讲) ARP:IP-->MAC RARP:MAC-->IP ICMP:控制报文信息协议,主要是涉及到主机就去连接路由器时控制传输报文&#xff08…

雪花算法生成的主键存在哪些问题,为什么不能使用自增ID或者UUID做MySQL的主键

MySQL 分布式架构中的主键选择:自增ID、UUID与雪花算法 为什么MySQL分布式架构中不能使用自增主键? 在分布式架构中,自增主键存在以下问题: 主键冲突风险:多个数据库实例同时生成自增主键会导致ID重复分片不均匀&am…

RapidJSON 处理 JSON(高性能 C++ 库)(四)

第四部分:RapidJSON 处理 JSON(高性能 C++ 库) 📢 快速掌握 JSON!文章 + 视频双管齐下 🚀 如果你觉得阅读文章太慢,或者更喜欢 边看边学 的方式,不妨直接观看我录制的 RapidJSON 课程视频!🎬 视频里会用更直观的方式讲解 RapidJSON 的核心概念、实战技巧,并配有…

chromem-go + ollama + bge-m3 进行文档向量嵌入和查询

Ollama 安装 https://ollama.com/download Ollama 运行嵌入模型 bge-m3:latest ollama run bge-m3:latestchromem-go 文档嵌入和查询 package mainimport ("context""fmt""runtime""github.com/philippgille/chromem-go" )func ma…

【LeetCode 题解】数据库:180. 连续出现的数字

一、问题描述 给定一个Logs表,包含自增 ID 和数字字段: CREATE TABLE Logs (id INT PRIMARY KEY AUTO_INCREMENT,num VARCHAR(50) );要求编写 SQL 查询,找出所有至少连续出现三次的数字。例如: --------- | id | num | -------…

MaxEnt模型进阶:基于R语言自动化与GIS空间建模的物种栖息地精准预测

生物多样性的空间分布规律及其对环境变化的响应机制,是生态学与地理学研究的前沿议题。在气候变化加剧和人类活动干扰的双重压力下,如何精准预测物种潜在分布范围、识别关键环境驱动因子,已成为制定生物保护策略的核心科学问题。物种分布模型…

缓存雪崩解决方案:二级缓存VS随机TTL

背景 在学习缓存雪崩的时候,了解到有二级缓存和随机TTL两个解决方案,但是在学习之后,个人认为二级缓存本质上还是利用两层缓存的过期时间不一致来实现缓存过期时间随机化,这不就是和随机TTL一样吗,故有了这篇思考&…