51单片机STC89C52RC——16.1 五项四线步进电机

news2024/9/9 0:40:45

目的/效果

让步进电机  正向转90度,逆向转90度

一,STC单片机模块

二,步进电机 

 

2.2 什么是步进电机?

步进电机可以理解为:是一个按照固定步幅运动的“小型机器”。它与普通电机不同点在于,普通电机可以持续旋转,而步进电机按照特定的步数或者角度来移动。它每次只能移动一定的距离或者旋转一定的角度,运动更像是按照固定的步伐一步一步地走。这种特性让步进电机在需要精确控制位置和速度的场景中非常有用,比如打印机、机器人、数控机床等。      

2.2.1 步进电机驱动板

步进电机的控制需要按照特定的顺序激活线圈,以产生旋转。驱动板充当了控制器的角色,它能提供正确的电流和顺序来激活步进电机的各个线圈,使得它按照预期的方式运转。步进电机的操纵需要精确的电流控制和时序激活,而驱动板能提供这种控制,让步进电机按照设定的步数或角度进行精确的运动。用通俗的语言解释一下就是,步进电机是个没有“脑子”的机器,需要芯片(ULN2003)把单片机发送过来的电信息,转化为步进电机能够“处理”的脉冲信号,并作出相应处理。

静态参数

相数:线圈的组数,两相步进电机步距角一般为 1.8°,三相的步进电机步距角为 1.2°,相数越多步距角越小。

步距角:一个脉冲信号所对应的电机转动的角度,这个步距角他不一定是电机实际工作的真正步距角,真正的步距角与驱动器的细分有关。

拍数:完成一个磁场周期性变化所需的脉冲数。

定位转矩:电机在不通电状态下,电机转子自身的锁定力矩(由磁场齿形的谐波以及机械误差造成的)。

动态参数

步距角精度:步进电机转动一个步距角度的实际值与理论值的误差。用百分比表示:误差/步距角 *100%。

失步:电机运转的步数,不等于理论上的步数。也可以叫做丢步,一般都是因负载过大或者是频率过快。

最大空载起动频率:不加负载的情况下,能够直接起动的最大频率。

最大空载运行频率:电机不带负载的最高转速频率。

运行距频特性:输出转矩与输入脉冲频率的关系,是电机选型的根本依据。要在该曲线之下才能保证运行时不丢步。

电机正反转控制:改变通电顺序而改变电机的正反转。 

2.2.2 五线四相 

五线四相指的是它的线数相数。在这个28BYJ48步进电机中,有五根线用于连接,四相则表示它具有四组线圈,每个线圈都能独立控制。+为公共端,分A、B、C、D四相

 

 

 

分别给ABCD导通,电机就会转。

单相激励步进

每次通电产生磁性的相只有ABCD其中的一个

步序ABCDP1(HEX)
110000x08
201000x04
300100x02
400010x01

 

		P1=0x08;//A导通	 
		Delay_ms(10);
		P1=0x04;//B导通
		Delay_ms(10);
		P1=0x02;//C导通
		Delay_ms(10);
		P1=0x01;//D导通
		Delay_ms(10); 
双相激励步进

转子却被固定在两个绕阻的极性中间

步序ABCDP1(HEX)
111000x0C
201100x06
300110x03
410010x09
        P1=0x0C;//AB导通	 
		Delay_ms(10);
		P1=0x06;//BC导通
		Delay_ms(10);
		P1=0x03;//CD导通
		Delay_ms(10);
		P1=0x09;//DA导通
		Delay_ms(10); 
混合激励驱动

双相激励的过程中,也可以在装换相位时加一个关闭相位的状态而产生走半步的现象,这将步进电机的整个步距角一分为二

步序ABCDP1(HEX)
110000x08
211000x0C
301000x04
401100x06
500100x02
600110x03
700010x01
810010x09

 


		P1=0x08;//A导通	 
		Delay_ms(10);
		P1=0x0C;//AB导通	 
		Delay_ms(10);
		P1=0x04;//B导通
		Delay_ms(10);
		P1=0x06;//BC导通
		Delay_ms(10);
		P1=0x02;//C导通
		Delay_ms(10);
		P1=0x03;//CD导通
		Delay_ms(10);
		P1=0x01;//D导通
		Delay_ms(10); 		
		P1=0x09;//DA导通
		Delay_ms(10); 

2.3 细分驱动


将步距角以电流分配方法进行细分化的技术。一般电机产品都会集成这种技术,使用时只需细分数即可实现。

原理磁场强度和电流大小成正比

如果Ia = Ib 那么转子将停在相邻两个线圈的中间,如果电流不相等,转子将停在电流较大的一侧;通过改变输入电流的比例,就可以比原来更小的步距角进行驱动;可进行超微小角度,更加平滑的运转,有效地降低振动和噪音的驱动方法。 

2.4 通过数字信号控制旋转位置转速

控制定子绕组ABCD周期性、交替得电,进而控制步进电机一步一步的向前运动的这个控制器就是步进电机驱动器。

电机的旋转位置只取决于脉冲个数,转速只取决脉冲信号的频率

角位移=脉冲个数X步距角。

步进电机的步距角计算公式为:θ=360°/(Z×m×k)。其中,θ是步距角,Z是转子齿数,m是定子绕组的对数,k是通电方式系数。对于单拍通电方式,k=1;对于单双拍通电方式,k=2。1

另外,步距角也可以通过以下公式计算:θ=360°/(转子齿数×运行拍数)。以常规二、四相,转子齿为50齿电机为例,四拍运行时步距角为θ=360°/(50×4)=1.8°,八拍运行时步距角为θ=360°/(50×8)=0.9°。

请注意,步距角是步进电机运动的基础,它取决于电机上的磁极总数,且步距角越小,运转的平稳性越好。

2.5 适用场景     

步进电机有以下的三个特点:

其一是精准定位,步进电机能够准确控制位置,适用于需要精确控制位置和速度的应用。

其二是固定步进,它能按照固定步幅移动,使其在需要确定性移动的应用中很有用。

其三是低速高扭矩:步进电机在低速和高扭矩方面表现出色,这让它们在需要大力矩但不需要高速旋转的场景中很有用。

故而根据以上的三个特性,可以用到那些项目里呢?举几个我曾接触使用到步进电机的项目吧!同学们可以发挥自己的想象力哈哈哈...        

智能窗帘         

打印机         

图书馆取书机器人的机械臂关节处的动力

三,创建Keil项目

详细参考:51单片机STC89C52RC——创建Keil项目-CSDN博客

四,代码 

完整代码参考《https://gitee.com/oopxiajun/STC89C52》

main.c

#include <REGX52.H>
#include "Delay.h"
#include "key.h"
#include "StepMotor.h"
#include "LCD1602.h"
//模式 :1-正转,2-反转
int Model=1;
/**
 * 函    数:主函数
 * 参    数:无
 * 返 回 值:无
 */
void main()
{   
	int step=0;
	LCD_Init();
	//顺时针转90度
	StemMotor_Run(1,90,1);
	Delay_ms(1000);
	//逆时针转90度
	StemMotor_Run(2,90,2);
	while(1)
	{   	
	}
}
  
#include <REGX52.H>
#include "delay.h"
int StepTime = 1000;//steptime表示每步的时间
//八拍
unsigned char code Rotation[]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};

/**
 * 函    数:控制步进电机运行
 * 参    数:Step 转速(单步暂停时长)
			 Angle 角度(0-360)
			 Direction 转动方向(1-顺时针,2-逆时针)
 * 返 回 值:无
 */
void StemMotor_Run(int Step,int Angle,int Direction)
{
	int i=0;
	Angle=(int)(Angle/0.72);
	while((Angle--)>=0)
	{
		if(Direction==1)//正转
		{
			//每执行一次下面的循环,步进电机转角0.72度 ,
			//步进电机运行1周,需执行500次下面的循环
			for(i=0;i<8;i++)
			{
				P1=Rotation[i];//步距角0.09度,4000次转一圈
				Delay_ms(Step);
			}
		}
		else if(Direction==2)//反转
		{
			for(i=7;i>=0;i--)
			{
				P1=Rotation[i];
				Delay_ms(Step);
			}
		}	
	}
}

 

五,代码编译、下载到51单片机

代码编译请参考

《51单片机STC89C52RC——代码编译-CSDN博客》

代码下载请参考

《51单片机STC89C52RC——STCAI-ISP代码下载-CSDN博客》

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

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

相关文章

插入排序——C语言

假设我们现在有一个数组&#xff0c;对它进行排序&#xff0c;插入排序的算法如同它的名字一样&#xff0c;就是将元素一个一个插入到合适的位置&#xff0c;那么&#xff0c;该如何做呢&#xff1f; 如果我们要从小到大进行排序的话&#xff0c;步骤如下&#xff1a; 1.对于…

WAWA鱼曲折的大学四年回忆录

声明&#xff1a;本文内容纯属个人主观臆断&#xff0c;如与事实不符&#xff0c;请参考事实 前言&#xff1a; 早想写一下大学四年的总结了&#xff0c;但总是感觉无从下手&#xff0c;不知道从哪里开始写&#xff0c;通过这篇文章主要想做一个记录&#xff0c;并从现在的认…

大数据之路 读书笔记 Day4 数据同步

回顾&#xff1a; Day 3 总结了无限客户端的日志采集 大数据之路 读书笔记 Day 3Day 2总结了浏览器端的日志采集 大数据之路 读书笔记 Day 2 数据同步 阿里数据体系中的数据同步&#xff0c;主要指的是在不同的数据存储系统之间进行数据的传输与更新&#xff0c;以保证数据的一…

自用款 复制粘贴工具 Paste macOS电脑适配

Paste是一款专为Mac和iOS用户设计的剪贴板管理工具&#xff0c;它提供了强大的剪贴板增强功能。Paste能够实时记录用户复制和剪切的内容&#xff0c;包括文本、图片、链接等多种数据类型&#xff0c;并形成一个可视化的剪贴板历史记录&#xff0c;方便用户随时访问和检索。此外…

【密码学】密码学中的四种攻击方式和两种攻击手段

在密码学中&#xff0c;攻击方式通常指的是密码分析者试图破解加密信息或绕过安全机制的各种策略。根据密码分析者对明文、密文以及加密算法的知识程度&#xff0c;攻击可以分为以下四种基本类型&#xff1a; 一、四种攻击的定义 &#xff08;1&#xff09;唯密文攻击(COA, C…

蚂蚁全媒体总编刘鑫炜谈新媒体时代艺术家如何创建及提升个人品牌

新媒体时代艺术家如何创建及提升个人品牌形象——专访蚂蚁全媒体总编刘鑫炜 图为蚂蚁全媒体总编刘鑫炜 在新媒体风潮席卷全球的今天&#xff0c;传统艺术与新媒体技术的融合越来越紧密。这种变革不仅改变了艺术作品的呈现方式&#xff0c;也给艺术家们提供了更多的可能性。那么…

python 10个自动化脚本

目录 &#x1f31f; 引言 &#x1f4da; 理论基础 &#x1f6e0;️ 使用场景与代码示例 场景一&#xff1a;批量重命名文件 场景二&#xff1a;自动下载网页内容 场景三&#xff1a;数据清洗 场景四&#xff1a;定时执行任务 场景五&#xff1a;自动化邮件发送 场景六…

【面向就业的Linux基础】从入门到熟练,探索Linux的秘密(十二)-管道、环境变量、常用命令

大致介绍了一下管道、环境变量、一些常用的基本命令&#xff0c;可以当作学习笔记收藏学习一下&#xff01;&#xff01;&#xff01; 文章目录 前言 一、管道 二、环境变量 1.概念 2.查看 3.修改 4.常用环境变量 三、系统状况 总结 前言 大致介绍了一下管道、环境变量、一些常…

【因果推断】优惠券政策对不同店铺的影响

这次依然是用之前rossmann店铺竞赛的数据集。 之前的数据集探索处理在这里已经做过了&#xff0c;此处就不再赘述了CSDN链接 数据集地址&#xff1a;竞赛链接 这里探讨数据集中Promo2对于每家店铺销售额的影响。其中&#xff0c;Promo2是一个基于优惠券的邮寄活动&#xff0c;发…

ZYNQ-LINUX环境C语言利用Curl库实现HTTP通讯

前言 在Zynq-Linux环境中&#xff0c;需要使用C语言来编写APP时&#xff0c;访问HTTP一般可以使用Curl库来实现&#xff0c;但是在Zynq的SDK中&#xff0c;并没有集成该库&#xff0c;在寻找了很多资料后找到了一种使用很方便的额办法。这篇文章主要记录一下移植Curl的过程。 …

将iStoreOS部署到VMware ESXi变成路由器

正文共&#xff1a;888 字 19 图&#xff0c;预估阅读时间&#xff1a;1 分钟 前面把iStoreOS部署到了VMware workstation上&#xff08;将iStoreOS部署到VMware Workstation&#xff09;。如果想把iStoreOS直接部署到ESXi上&#xff0c;你会发现转换镜像不能直接生成OVF或者OV…

Redis源码整体结构

一 前言 Redis源码研究为什么先介绍整体结构呢?其实也很简单,作为程序员的,要想对一个项目有快速的认知,对项目整体目录结构有一个清晰认识,有助于我们更好的了解这个系统。 二 目录结构 Redis源码download到本地之后,对应结构如下: 从上面的截图可以看出,Redis源码一…

【2024_CUMCM】T检验、F检验、卡方检验

T检验 T检验主要用于比较两组数据的均值差异&#xff0c;适用于小样本数据分析。它可以分为单样本T检验、独立样本T检验和配对样本T检验。 单样本T检验用于比较一个样本与已知的总体均值差异&#xff0c;独立样本T检验用于比较两个独立样本的均值差异&#xff0c;配对样本T检…

【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【21】【购物车】

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【21】【购物车】 购物车需求描述购物车数据结构数据Model抽取实现流程&#xff08;参照京东&#xff09;代码实现参考 购物车需求描述 用户可以在登录状态下将商品添加到购物车【用户购物…

从FasterTransformer源码解读开始了解大模型(2.1)代码通读03

从FasterTransformer源码解读开始了解大模型&#xff08;2.2&#xff09;代码解读03-forward函数 写在前面的话 本篇的内容继续解读forward函数&#xff0c;从650行开始进行解读 零、输出Context_embeddings和context_cum_log_probs的参数和逻辑 从653行开始&#xff0c;会…

Python实现ABC人工蜂群优化算法优化随机森林回归模型(RandomForestRegressor算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 人工蜂群算法(Artificial Bee Colony, ABC)是由Karaboga于2005年提出的一种新颖的基于群智能的全局优化…

LeetCode Hard|124.二叉树中的最大路径和

力扣题目链接 题目解读&#xff1a; 二叉树路径的定义即从1.任意节点出发&#xff0c;到达任意节点&#xff1b;2.该路径至少包含一个节点&#xff0c;且不一定经过跟节点&#xff1b;3.求所有可能路径和的最大值。 也就是说路径途径一个节点只能选择来去两个方向 考虑一个二叉…

微信公众平台测试账号本地微信功能测试说明

使用场景 在本地测试微信登录功能时&#xff0c;因为微信需要可以互联网访问的域名接口&#xff0c;所以本地使用花生壳做内网穿透&#xff0c;将前端服务的端口和后端服务端口进行绑定&#xff0c;获得花生壳提供的两个外网域名。 微信测试账号入口 绑定回调接口 回调接口的…

2024年06月CCF-GESP编程能力等级认证Python编程二级真题解析

本文收录于专栏《Python等级认证CCF-GESP真题解析》&#xff0c;专栏总目录&#xff1a;点这里&#xff0c;订阅后可阅读专栏内所有文章。 一、单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09; 第 1 题 小杨父母带他到某培训机构给他报名参加CCF组织的GESP认证…

声明队列和交换机 + 消息转换器

目录 1、声明队列和交换机 方法一&#xff1a;基于Bean的方式声明 方法二&#xff1a;基于Spring注解的方式声明 2、消息转换器 1、声明队列和交换机 方法一&#xff1a;基于Bean的方式声明 注&#xff1a;队列和交换机的声明是放在消费者这边的&#xff0c;这位发送的人他…