51单片机嵌入式开发:16、STC89C52RC 嵌入式之 步进电机28BYJ48、四拍八拍操作

news2024/9/24 7:18:24

STC89C52RC 嵌入式之 步进电机28BYJ48、四拍八拍操作

  • STC89C52RC 之 步进电机28BYJ48操作
  • 1 概述
    • 1.1 步进电机概述
    • 1.2 28BYJ48概述
  • 2 步进电机工作原理
    • 2.1 基本原理
    • 2.2 28BYJ48工作原理
    • 2.3 28BYJ48控制原理
  • 3 电路及软件代码实现
  • 4 步进电机市场价值


STC89C52RC 之 步进电机28BYJ48操作

在这里插入图片描述

1 概述

1.1 步进电机概述

步进电机是一种电动机类型,用于将电脉冲信号转换为精确的旋转运动。与传统的直流电机相比,步进电机具有以下特点:
(1)精确控制:步进电机可以按照给定的电脉冲信号进行精确的步进运动,每个脉冲对应一个固定的角度移动,从而实现精确的定位和控制。
(2)分步运动:步进电机的运动是通过逐步驱动电机的转子来实现的。每个电脉冲信号引起电机转子旋转一个固定的步距角,从而实现分步运动。
(3)简单控制:步进电机的控制相对简单,只需提供适当的脉冲信号即可控制电机的旋转角度和速度。可以使用计数器、控制器或微处理器来生成脉冲信号,实现精确的步进运动。
(4)高扭矩低速度:步进电机通常具有较高的静态和动态扭矩,适用于需要高力矩输出但速度较低的应用。
(5)不需要反馈:步进电机在运行时不需要位置反馈装置,因为每个脉冲信号对应一个固定的角度移动,电机的位置可以通过计数脉冲数来确定。
步进电机广泛应用于各种自动化和控制系统中,例如机器人、打印机、数控机床、电子仪器、精密仪器等。其精确的控制和定位能力使其成为许多应用中的理想选择。不同类型的步进电机包括单相步进电机、双相步进电机、混合式步进电机等,每种类型的步进电机具有不同的特性和应用场景。

1.2 28BYJ48概述

28BYJ-48是一种步进电机,常用于各种控制和自动化应用中。
28:步进电机的有效最大外径尺寸是28毫米
B:表示是步进式电机
Y:表示是永磁式型号
J:表示是减速型(减速比1:64)
48:可以四拍、八拍运行

在这里插入图片描述

以下是28BYJ-48步进电机的一些常见用途:
机器人运动控制:28BYJ-48步进电机可以用作机器人的关节控制,实现精确的运动和定位,例如机械臂、舵机等。
打印机和扫描仪:步进电机可以用于控制打印机和扫描仪中的进纸、打印头位置和扫描仪移动等功能。
自动门和窗帘控制:步进电机可用于自动门、窗帘等的开启和关闭控制,实现自动化的开关操作。
3D打印机:28BYJ-48步进电机可以用于3D打印机中的X、Y、Z轴的精确定位和运动控制。
绘图仪和CNC机床:步进电机可用于绘图仪和CNC机床中的精确运动和定位控制,实现绘图和切割等操作。
汽车零部件控制:步进电机可用于汽车零部件的控制,如车窗升降、后视镜调节等。
电子设备中的调节和定位控制:步进电机可用于电子设备中的机械臂、摄像头调节、焦距调节等功能。
电子仪器中的精确测量:步进电机可用于电子仪器中的精确测量和定位需求,如显微镜、精密仪器等。
这些只是28BYJ-48步进电机的一些常见用途,实际应用还可以根据需求进行定制和扩展。步进电机的精确控制和定位能力使其成为许多自动化和控制系统中的重要组成部分。

2 步进电机工作原理

2.1 基本原理

步进电机的工作原理基于磁场相互作用和电磁感应的原理,它将电脉冲信号转换为旋转运动。以下是步进电机的一般工作原理:
(1)基本结构:
步进电机通常由定子和转子两部分组成。定子包含电磁线圈,而转子则是带有磁性极性的部分。
(2)磁极排列:
定子上的电磁线圈通常被分成多个相位,每个相位上都有一个磁极。磁极的数目决定了电机的步距角度。
(3)磁场交互作用:
当电磁线圈通电时,产生的磁场与转子上的磁极相互作用,导致转子发生旋转。
(4)相序控制:
为了使步进电机按预期的方向和步距运动,需要正确控制电磁线圈的电流顺序。这称为相序控制。
通过改变电磁线圈的电流顺序,可以使电机按顺时针或逆时针方向旋转,并控制每次步进的角度。
(5)脉冲驱动:
步进电机的旋转运动是通过给定一系列脉冲信号来驱动的。每个脉冲信号对应电机的一个步距角,电机按照脉冲信号的频率和顺序进行步进运动。
(6)步距角度:
步进电机的步距角度取决于电机的结构和磁极的数量。例如,一个4相2线程的步进电机,每个步距角度为360度除以磁极数量。
需要注意的是,步进电机的精确性受到许多因素的影响,如电机的设计、驱动电路的性能、脉冲信号的频率和准确性等。因此,在实际应用中,需要综合考虑这些因素并进行适当的调试和控制,以实现所需的精确控制和定位效果。

2.2 28BYJ48工作原理

(1)28BYJ-48是一种常见的小型步进电机。它是一种四相、八拍驱动的步进电机,采用了无心式转子结构。以下是28BYJ-48步进电机的工作原理:

在这里插入图片描述

(2)28BYJ-48步进电机的内部结构示意图如下所示。转子上有6个齿,分别标注为0至5,每个齿上都带有一块永磁体。

在这里插入图片描述

定子与电机的外壳固定在一起,定子上有8个齿,每个齿上都缠绕着一个线圈绕组。相对的两个齿上的绕组串联在一起,在图中分别标注为A、B、C、D,形成了4相的概念。这意味着这两个绕组总是同时导通或同时断开。
(3)28BYJ-48主要技术参数:

在这里插入图片描述

(4)步进电机的主要特性如下:
驱动方式:
步进电机需要外部驱动才能运转,驱动信号必须是脉冲信号。当没有脉冲信号输入时,步进电机处于静止状态。通过适当的脉冲信号输入,步进电机会按照一定的角度(称为步角)旋转,其转动速度与脉冲信号的频率成正比。
A:28BYJ-48步进电机特性:
28BYJ-48是一种4相5线的减速步进电机,其减速比为1:64,步进角为5.625度/64。若需使其转动一圈,需要4096个脉冲信号(360度/5.625度 × 64)。
B:瞬间启动和急速停止:
步进电机具有瞬间启动和急速停止的优越特性。一旦脉冲信号输入,步进电机能够立即启动,并且可以迅速停止旋转。
C:方向控制:
通过改变脉冲信号的顺序,可以方便地改变步进电机的转动方向。这使得步进电机在许多应用中具有灵活性和可控性。
因此,步进电机目前广泛应用于打印机、绘图仪、机器人等设备中,成为它们的动力核心。

2.3 28BYJ48控制原理

所采用的是5V步进电机,其额定耗电流约为200mA。驱动采用ULN2003,驱动端口分别为P1.0(A)、P1.1(B)、P1.2©和P1.3(D)。
28BYJ48有三种控制原理

在这里插入图片描述

(1)单4拍控制方式
脉冲电平循环发送的方式控制:

unsigned char code F_Rotation[4]={0x02,0x04,0x08,0x10}; //正转表格,换算成二进制 0000 0010,0000 0100,0000 1000,0001 0000
unsigned char code B_Rotation[4]={0x10,0x08,0x04,0x02}; //反转表格,换算成二进制 0001 0000,0000 1000,0000 0100,0000 0010

(2)双4拍控制方式
AC互补,BD互补的方式进行控制:
脉冲电平循环发送的方式控制:

unsigned char code F_Rotation[4]={0x09,0x03,0x06,0x0C}; //正转表格
unsigned char code B_Rotation[4]={0x0C,0x06,0x03,0x09}; //反转表格

(3)8拍控制方式

//正转的步进次序如下:AB组 → BC组 → CD组 → DA组(每个脉冲使电机正转5.625/64度)。
//反转的步进次序如下:AB组 → AD组 → CD组 → CB组(每个脉冲使电机正转5.625/64度)。
unsigned char code F_Rotation[4]={0x03,0x06,0x0c, 0x09}; //正转表格
unsigned char code B_Rotation[4]={0x03,0x09,0x0c,0x06};//反转表格

P1端口变化请参考下表:
正转表:

在这里插入图片描述

反转表:

在这里插入图片描述

3 电路及软件代码实现

将P1端口跳线接到左边位置处,ABCD对应位置,将步进电机的排母接到右边位置,红色引线为VCC。

在这里插入图片描述

软件代码如下:

(1)单四拍代码

//main.c文件

#include "includes.h"



/******************************************************************/
/*                    微秒延时函数  //10us                         */
/******************************************************************/
void delay_us(unsigned int us)//delay us
{
	while(us--)
	{
	}
}

/******************************************************************/
/*                    微秒延时函数                                */
/******************************************************************/
void delay_ms(unsigned int Ms)//delay us
{
	while(Ms--)
	{
		delay_us(100);
	}
}

/*------------------------------------------------
                    延时子程序
------------------------------------------------*/
void delay(unsigned int cnt) 
{
 while(--cnt);
}




//(1)单4拍控制方式
//脉冲电平循环发送的方式控制:
unsigned char code F_Rotation[4]={0x02,0x04,0x08,0x10}; //正转表格,换算成二进制 0000 0010,0000 0100,0000 1000,0001 0000
unsigned char code B_Rotation[4]={0x10,0x08,0x04,0x02}; //反转表格,换算成二进制 0001 0000,0000 1000,0000 0100,0000 0010

(2)双4拍控制方式
AC互补,BD互补的方式进行控制:
脉冲电平循环发送的方式控制:
//unsigned char code F_Rotation[4]={0x09,0x03,0x06,0x0C}; //正转表格
//unsigned char code B_Rotation[4]={0x0C,0x06,0x03,0x09}; //反转表格

(3)8拍控制方式
正转的步进次序如下:AB组 → BC组 → CD组 → DA组(每个脉冲使电机正转5.625/64度)。
反转的步进次序如下:AB组 → AD组 → CD组 → CB组(每个脉冲使电机正转5.625/64度)。
//unsigned char code F_Rotation[4]={0x03,0x06,0x0c, 0x09}; //正转表格
//unsigned char code B_Rotation[4]={0x03,0x09,0x0c,0x06};//反转表格


/******************************************************************/
/*                   主函数                                       */
/******************************************************************/
void main(void)
{

unsigned char i;

	while(1)
	{
		for(i=0;i<4;i++)      //4相
		{
			P1=F_Rotation[i];  //输出对应的相 可以自行换成反转表格
			delay(500);        //改变这个参数可以调整电机转速 ,数字越小,转速越大
		}
	}
}

(2)双四拍代码

//main.c文件

#include "includes.h"



/******************************************************************/
/*                    微秒延时函数  //10us                         */
/******************************************************************/
void delay_us(unsigned int us)//delay us
{
	while(us--)
	{
	}
}

/******************************************************************/
/*                    微秒延时函数                                */
/******************************************************************/
void delay_ms(unsigned int Ms)//delay us
{
	while(Ms--)
	{
		delay_us(100);
	}
}

/*------------------------------------------------
                    延时子程序
------------------------------------------------*/
void delay(unsigned int cnt) 
{
 while(--cnt);
}




(1)单4拍控制方式
脉冲电平循环发送的方式控制:
//unsigned char code F_Rotation[4]={0x02,0x04,0x08,0x10}; //正转表格,换算成二进制 0000 0010,0000 0100,0000 1000,0001 0000
//unsigned char code B_Rotation[4]={0x10,0x08,0x04,0x02}; //反转表格,换算成二进制 0001 0000,0000 1000,0000 0100,0000 0010

//(2)双4拍控制方式
//AC互补,BD互补的方式进行控制:
//脉冲电平循环发送的方式控制:
unsigned char code F_Rotation[4]={0x09,0x03,0x06,0x0C}; //正转表格
unsigned char code B_Rotation[4]={0x0C,0x06,0x03,0x09}; //反转表格

(3)8拍控制方式
正转的步进次序如下:AB组 → BC组 → CD组 → DA组(每个脉冲使电机正转5.625/64度)。
反转的步进次序如下:AB组 → AD组 → CD组 → CB组(每个脉冲使电机正转5.625/64度)。
//unsigned char code F_Rotation[4]={0x03,0x06,0x0c, 0x09}; //正转表格
//unsigned char code B_Rotation[4]={0x03,0x09,0x0c,0x06};//反转表格


/******************************************************************/
/*                   主函数                                       */
/******************************************************************/
void main(void)
{

unsigned char i;

	while(1)
	{
		for(i=0;i<4;i++)      //4相
		{
			P1=F_Rotation[i];  //输出对应的相 可以自行换成反转表格
			delay(500);        //改变这个参数可以调整电机转速 ,数字越小,转速越大
		}
	}
}

(3)八拍代码

//main.c文件

#include "includes.h"



/******************************************************************/
/*                    微秒延时函数  //10us                         */
/******************************************************************/
void delay_us(unsigned int us)//delay us
{
	while(us--)
	{
	}
}

/******************************************************************/
/*                    微秒延时函数                                */
/******************************************************************/
void delay_ms(unsigned int Ms)//delay us
{
	while(Ms--)
	{
		delay_us(100);
	}
}

/*------------------------------------------------
                    延时子程序
------------------------------------------------*/
void delay(unsigned int cnt) 
{
 while(--cnt);
}




(1)单4拍控制方式
脉冲电平循环发送的方式控制:
//unsigned char code F_Rotation[4]={0x02,0x04,0x08,0x10}; //正转表格,换算成二进制 0000 0010,0000 0100,0000 1000,0001 0000
//unsigned char code B_Rotation[4]={0x10,0x08,0x04,0x02}; //反转表格,换算成二进制 0001 0000,0000 1000,0000 0100,0000 0010

(2)双4拍控制方式
AC互补,BD互补的方式进行控制:
脉冲电平循环发送的方式控制:
//unsigned char code F_Rotation[4]={0x09,0x03,0x06,0x0C}; //正转表格
//unsigned char code B_Rotation[4]={0x0C,0x06,0x03,0x09}; //反转表格

//(3)8拍控制方式
//正转的步进次序如下:AB组 → BC组 → CD组 → DA组(每个脉冲使电机正转5.625/64度)。
//反转的步进次序如下:AB组 → AD组 → CD组 → CB组(每个脉冲使电机正转5.625/64度)。
unsigned char code F_Rotation[4]={0x03,0x06,0x0c, 0x09}; //正转表格
unsigned char code B_Rotation[4]={0x03,0x09,0x0c,0x06};//反转表格


/******************************************************************/
/*                   主函数                                       */
/******************************************************************/
void main(void)
{

unsigned char i;

	while(1)
	{
		for(i=0;i<4;i++)      //4相
		{
			P1=F_Rotation[i];  //输出对应的相 可以自行换成反转表格
			delay(500);        //改变这个参数可以调整电机转速 ,数字越小,转速越大
		}
	}
}

4 步进电机市场价值

步进电机在市场上具有广泛的应用和价值。以下是步进电机在市场上的一些主要价值:

  1. 精准定位和控制:步进电机能够以精确的步距角度旋转,使其在许多应用中成为精确定位和控制的理想选择。例如,打印机、CNC机床、精密仪器等领域需要精准位置控制的设备都广泛采用步进电机。
  2. 高可靠性和低噪音:步进电机由于其简单的结构和无刷设计,具有较高的可靠性和寿命。此外,步进电机的运行通常非常平稳,产生的噪音较低,使其在要求低噪音操作的应用中得到广泛应用,如医疗设备、摄影器材等。
  3. 高扭矩和低速控制:步进电机通常具有较高的静态和动态扭矩输出能力,使其适用于需要较大输出力矩和低速控制的应用,例如自动门、机器人关节等。
  4. 成本效益:步进电机相对于其他类型的电机来说,通常具有较低的成本。这使得步进电机成为许多消费电子产品、家用电器和工业自动化设备中的经济选择。
  5. 可编程性和灵活性:步进电机可以通过调整驱动信号的频率和顺序来实现不同的运动模式和速度控制。这种可编程性和灵活性使得步进电机适用于各种应用,从简单的开关控制到复杂的运动序列控制。
    综上所述,步进电机在市场上具有重要的价值,其广泛应用于许多领域,包括工业自动化、电子设备、医疗器械、汽车、航空航天等,推动了步进电机市场的增长和发展。

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

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

相关文章

英语(二)-我的学习方式

章节章节汇总我的学习方式历年真题作文&范文 目录 1、背单词 2、学语法 3、做真题 4、胶囊助学计划 写在最前&#xff1a;我是零基础&#xff0c;初二就听天书的那种。 本专栏持续更新学习资料 1、背单词 单词是基础&#xff0c;一定要背单词&#xff01;考纲要求要…

瑞吉外卖学习(一)

pom文件的导入中 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.6</version><relativePath/> <!-- lookup parent from repository --></…

【STM32 HAL库】DMA+串口

DMA 直接存储器访问 DMA传输&#xff0c;将数据从一个地址空间复制到另一个地址空间。-----“数据搬运工”。 DMA传输无需CPU直接控制传输&#xff0c;也没有中断处理方式那样保留现场和恢复现场&#xff0c;它是通过硬件为RAM和IO设备开辟一条直接传输数据的通道&#xff0c…

构建网络安全之盾:应对“微软蓝屏”教训的全面策略

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

【算法】一致性哈希

一、引言 在分布式系统中&#xff0c;数据存储和访问的均匀性、高可用性以及可扩展性一直是核心问题。一致性哈希算法&#xff08;Consistent Hashing&#xff09;是一种分布式算法&#xff0c;因其出色的分布式数据存储特性&#xff0c;被广泛应用于缓存、负载均衡、数据库分片…

【Django5】模板引擎

系列文章目录 第一章 Django使用的基础知识 第二章 setting.py文件的配置 第三章 路由的定义与使用 第四章 视图的定义与使用 第五章 二进制文件下载响应 第六章 Http请求&HttpRequest请求类 第七章 会话管理&#xff08;Cookies&Session&#xff09; 第八章 文件上传…

如何检查我的网站是否支持HTTPS

HTTPS是一种用于安全通信的协议&#xff0c;是HTTP的安全版本。HTTPS的主要作用在于为互联网上的数据传输提供安全性和隐私保护。通常是需要在网站安装部署SSL证书来实现网络数据加密传输&#xff0c;安全加密功能。 那么如果要检查你的网站是否支持HTTPS&#xff0c;可以看下…

培训第十一天(nfs与samba共享文件)

上午 1、环境准备 &#xff08;1&#xff09;yum源 &#xff08;一个云仓库pepl仓库&#xff09; [rootweb ~]# vim /etc/yum.repos.d/hh.repo [a]nameabaseurlfile:///mntgpgcheck0[rootweb ~]# vim /etc/fstab /dev/cdrom /mnt iso9660 defaults 0 0[rootweb ~]# mount -a[…

软件测试09 自动化测试技术(Selenium)

重点/难点 重点&#xff1a;理解自动化测试的原理及其流程难点&#xff1a;Selinum自动化测试工具的使用 目录 系统测试 什么是系统测试什么是功能测试什么是性能测试常见的性能指标有哪些 自动化测试概述 测试面临的问题 测试用例数量增多&#xff0c;工作量增大&#xff…

数据结构初阶(C语言)-二叉树

一&#xff0c;树的概念与结构 树是⼀种非线性的数据结构&#xff0c;它是由 n&#xff08;n>0&#xff09; 个有限结点组成⼀个具有层次关系的集合。把它叫做树是因为它看起来像⼀棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的。 1.有⼀个特殊的结点&a…

ubuntu22安装拼音输入法

专栏总目录 一、安装命令&#xff1a; sudo apt update sudo apt install fcitx sudo apt install fcitx-pinyin 二、切换输入法

吴恩达深度学习笔记1 Neural Networks and Deep Learning

参考视频&#xff1a;(超爽中英!) 2024公认最好的【吴恩达深度学习】教程&#xff01;附课件代码 Professionalization of Deep Learning_哔哩哔哩_bilibili Neural Networks and Deep Learning 1. 深度学习引言(Introduction to Deep Learning) 2. 神 经 网 络 的 编 程 基 础…

数据库安全:MySQL安全配置,MySQL安全基线检查加固

「作者简介」&#xff1a;冬奥会网络安全中国代表队&#xff0c;CSDN Top100&#xff0c;就职奇安信多年&#xff0c;以实战工作为基础著作 《网络安全自学教程》&#xff0c;适合基础薄弱的同学系统化的学习网络安全&#xff0c;用最短的时间掌握最核心的技术。 这一章节我们需…

【目标检测】Anaconda+PyTorch(GPU)+PyCharm(Yolo5)配置

前言 本文主要介绍在windows系统上的Anaconda、PyTorch、PyCharm、Yolov5关键步骤安装&#xff0c;为使用yolo所需的环境配置完善。同时也算是记录下我的配置流程&#xff0c;为以后用到的时候能笔记查阅。 Anaconda 软件安装 Anaconda官网&#xff1a;https://www.anaconda…

微软蓝屏事件:网络安全与系统稳定性的反思与前瞻

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

MFC:以消息为基础的事件驱动系统和消息映射机制

以消息为基础的事件驱动系统和消息映射机制 (1)消息 A.What&#xff08;什么是消息&#xff09; 本质是一个数据结构&#xff0c;用于应用程序不同部分之间进行通信和交互 typedef struct tagMSG {HWND hwnd; // 接收该消息的窗口句柄UINT message; // 消息标…

二分查找的实现

前提&#xff1a;数组是有序的 #include <stdio.h>//作用&#xff1a;利用二分查找法查找数据 //返回值&#xff1a;数据在数组中的索引 //找到了&#xff1a;真实索引 没找到&#xff1a;返回-1 int search(int arr[], int num, int len) {//查找范围int min 0;int …

DC系列靶场---DC 2靶场的渗透测试(一)

信息收集 Nmap扫描 nmap -sV -p- -sC -T4 172.30.1.141 域名解析 echo 172.30.1.141 dc-2 >> /etc/hosts 目录枚举 gobuster dir -u http://172.30.1.141 -w work/lab/CTF/ATT_CK_01/SecLists-master/Discovery/Web-Content/big.txt -x .php,.rar,.html,.zip -t 20 -b…

将代码转换为图表的 6大工具

文章目录 将代码转换为图表的 6大工具 - 前言1、[Diagrams](https://diagrams.mingrammer.com/) - Python2、[Go-Diagrams](https://github.com/blushft/go-diagrams) - Go3、[Mermaid ](https://mermaid.js.org/) - JavaScript4、[PlantUML](https://plantuml.com/zh/) - Java…

VUE之---slot插槽

什么是插槽 slot 【插槽】&#xff0c; 是 Vue 的内容分发机制&#xff0c; 组件内部的模板引擎使用slot 元素作为承载分发内容的出口。slot 是子组件的一个模板标签元素&#xff0c; 而这一个标签元素是否显示&#xff0c; 以及怎么显示是由父组件决定的。 VUE中slot【插槽】…