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

news2025/4/12 19:24:16

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

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

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°/s
	stepmotor_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.coloradmin.cn/o/2327422.html

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

相关文章

Gradle-基础

一.安装 1. 2.配置环境变量 GRADLE_HOME D:\gradle\gradle-5.6.4 GRADLE_USER_HOME D:\gradle\localRepository 3.下载源配置 安装目录下的init.d文件夹里创建一个init.gradle文件,下载顺序从上到下,内容&#xff1…

Anolis系统下安装Jenkins

1.安装java、maven yum install -y java-17-openjdk-devel maven git wget 2.配置环境变量 1.查看java和maven所在目录 [rootlocalhost ~]# which java /usr/bin/java [rootlocalhost bin]# ll /usr/bin/java lrwxrwxrwx 1 root root 22 4月 1 17:20 /usr/bin/java ->…

LabVIEW 调用 Python 函数

此程序是 LabVIEW 调用 Python 函数实现双精度数相加的典型示例。通过 LabVIEW 搭建交互框架,借助 “Open Python Session” 创建 Python 代码运行环境,定位 Python 模块路径后调用 “Add” 函数,最终实现数据处理并关闭会话。整个流程展现了…

视频分析设备平台EasyCVR视频结构化AI智能分析:筑牢校园阳光考场远程监控网

一、背景分析​ 近年来,学校考试的舞弊现象屡禁不止,严重破坏考试的公平性,不仅损害广大考生的切身利益,也在社会上造成恶劣的影响。为有效制止舞弊行为,收集确凿的舞弊证据,在考场部署一套可靠的视频监控…

AWS用Glue读取S3文件上传数据到Redshift,再导出到Quicksight完整版,含VPC配置

1. 项目背景 AWS的官方文档,关于Glue和Vpc配置部分已经比较旧了,按照官方文档配置的流程始终跑不通,花了一番时间和波折后,才终于完整的跑通了。 在数据分析和商业智能(BI)领域,我们常需要将存…

Python爬虫第3节-会话、Cookies及代理的基本原理

目录 一、会话和Cookies 1.1 静态网页和动态网页 1.2 无状态HTTP 1.3 常见误区 二、代理的基本原理 2.1 基本原理 2.2 代理的作用 2.3 爬虫代理 2.4 代理分类 2.5 常见代理设置 一、会话和Cookies 大家在浏览网站过程中,肯定经常遇到需要登录的场景。有些…

OkHttpHttpClient

学习链接 okhttp github okhttp官方使用文档 SpringBoot 整合okHttp okhttp3用法 Java中常用的HTTP客户端库:OkHttp和HttpClient(包含请求示例代码) 深入浅出 OkHttp 源码解析及应用实践 httpcomponents-client github apache httpclie…

c++柔性数组、友元、类模版

目录 1、柔性数组: 2、友元函数: 3、静态成员 注意事项 面试题:c/c static的作用? C语言: C: 为什么可以创建出 objx 4、对象与对象之间的关系 5、类模版 1、柔性数组: #define _CRT_SECURE_NO_WARNINGS #…

Centos 8 安装教程(新手版)

1.需要在阿里开源镜像站下载对应的镜像,如下:https://mirrors.aliyun.com/centos/8.5.2111/isos/x86_64/ 2.打开VM虚拟机,创建新的虚拟机,选择自定义 如图所示点击进行: 选择下载好的镜像 选择“Linux”,版…

Vue2函数式组件实战:手写可调用的动态组件,适用于toast轻提示、tip提示、dialog弹窗等

Vue2函数式组件实战:手写可调用的动态组件 一、需求场景分析 在开发中常遇到需要动态调用的组件场景: 全局弹窗提示即时消息通知动态表单验证需要脱离当前DOM树的悬浮组件 传统组件调用方式的痛点:必须预先写入模板,可能还要用…

大象如何学会太空漫步?美的:科技领先、To B和全球化

中国企业正处在转型的十字路口。一边是全新的技术、全新的市场机遇;一边是转型要面临的沉重负累和巨大投入,无数中国制造、中国品牌仍在寻路,而有的人已经走至半途。 近日,美的集团交出了一份十分亮眼的2024年财报。数据显示&…

已经使用中的clickhouse更改数据目录

在更换的目录操作,这里更换的目录为home目录,原先安装的目录在/soft/clickhouse/ ,在该目录下有data目录和log目录 更改前目录 更改后目录 1、停止clickhouse服务 sudo systemctl stop clickhouse-server 2、在home目录创建clickhouse目录,在clickho…

PHP的相关配置和优化

进入etc下面 去掉注释 pid run/php-fpm.pid #指定pid文件存放位置 生成一下子配置文件 这些都是生成的fastcgi的配置文件 进入php中,然后复制模版,生成配置文件 然后编辑文件更改时区 改完之后可以生成启动脚本 这时候刷新之后,再启动会报…

【leetcode100】每日温度

1、题目描述 给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。 示例 1: 输…

<贪心算法>

前言:在主包还没有接触算法的时候,就常听人提起“贪心”,当时是layman,根本不知道说的是什么,以为很难呢,但去了解一下,发现也不过如此嘛(bushi),还以为是什么高级东西呢…

基于银河麒麟桌面服务器操作系统的 DeepSeek本地化部署方法【详细自用版】

一、3种方式使用DeepSeek 1.本地部署 服务器操作系统环境进行,具体流程如下(桌面环境步骤相同): 本例所使用银河麒麟高级服务器操作系统版本信息: (1)安装ollama 方式一:按照ollama官网的下载指南,执行如下命令: curl -fsSL https://ollama.com/install.sh | sh方…

「2025最新版React+Ant Design+Router+TailwindCss全栈攻略:从零到实战,打造高颜值企业级应用

一站式掌握最新技术栈!手把手教你配置路由、集成UI组件库、高效开发秘籍大公开 ReactAntrouteraxiosmocktailwind css等组合安装使用教程 官网:React Native 中文网 使用React来编写原生应用的框架 一,安装 npx create-react-app my-app …

Ubuntu 24.04.2 LTS 系统安装python,创建虚拟环境

在 Ubuntu 24.04.2 LTS 系统中,系统本身自带了 Python 3,不过你还是可以按照下面的步骤来安装和配置 Python 环境。 1. 检查系统自带的 Python 版本 在终端中输入以下命令查看系统自带的 Python 版本: python3 --version如果显示了 Python…

redis7.0搭建redis-cluster集群部署实战

环境 基于3台centos服务 host节点1端口节点2端口master70007001slave170007001slave270007001 安装redis,以及环境准备 安装可以参考https://blog.csdn.net/tao1992/article/details/132614567 安装路径设置了/usr/local/redis 分别在3台服务器上执行 #配置文…

CMake学习--如何在CMake中编译静态库、动态库并在主程序中调用

目录 一、背景知识二、使用方法(一)编译静态库(二)编译动态库(三)在主程序中调用库 三、总结 一、背景知识 在C/C开发中,库(Library)是预先编译好的代码集合&#xff0c…