51单片机学习笔记 --步进电机驱动说明

文章目录

        • 工作原理
        • 代码编写
        • 驱动方式
          • 全步进驱动
          • 半步进驱动
          • 微步进驱动

工作原理

工作原理简要说明,和单片机一起配合使用的步进电机多为28BYJ28 五线四相步进电机,配合ULN2003驱动板进行控制,如图所示,对于扭矩、精度要求较高的还有42步进电机,86步进电机等,这里以28BYJ28步进电机做说明
在这里插入图片描述
内部结构方面,28BYJ28步进电机具有四个相数,也就是有四套可独立通电的定子电磁线圈。环绕这些线圈的中间是永磁体制成的转子
在这里插入图片描述
28BYJ-48采用1-2相励磁单极驱动方式,即在工作瞬间只能有一相或两相线圈同时通电。通过这种方式,电机可以以一个相对稳定的步距(角度)旋转。拍数设定,所谓的“拍”是指对某相线圈通电的基本操作单位。对于28BYJ-48而言,它可以设置为4拍或8拍运行模式。4拍模式下,每个脉冲使一相励磁;8拍模式下,则进行一相与两相交替通电。不同的拍数会影响电机的运行分辨率(即转动角度)

代码编写

最直接的,在while函数中循环给每个控制引脚输出高电平,例如当IN1输出高电平时,其他引脚输出都为低电平,循环控制的引脚从IN1 - IN4为一个方向转动,从IN4 - IN1为另一个方向的转动

#include <reg51.h>// 定义步进电机引脚
sbit IN1 = P1^0;
sbit IN2 = P1^1;
sbit IN3 = P1^2;
sbit IN4 = P1^3;// 定义延时函数
void delay(unsigned int t)
{while(t--);
}// 主函数
void main()
{// 循环控制步进电机转动while(1){IN1 = 1;IN2 = 0;IN3 = 0;IN4 = 0;delay(1000); // 延时一段时间IN1 = 0;IN2 = 1;IN3 = 0;IN4 = 0;delay(1000); // 延时一段时间IN1 = 0;IN2 = 0;IN3 = 1;IN4 = 0;delay(1000); // 延时一段时间IN1 = 0;IN2 = 0;IN3 = 0;IN4 = 1;delay(1000); // 延时一段时间}
}

简单驱动代码编写,正反转和停止

#include <reg51.h>// 定义步进电机引脚
sbit IN1 = P1^0;
sbit IN2 = P1^1;
sbit IN3 = P1^2;
sbit IN4 = P1^3;unsigned char phaseccw[4]={0x01,0x02,0x04,0x08};//正转 电机导通相序 IN1-IN2-IN3-IN4
unsigned char phasecw[4] ={0x08,0x04,0x02,0x01};//反转 电机导通相序 IN4-IN3-IN2-IN1// 定义延时函数
void delay(unsigned int t)
{while(t--);
}void MotorData(uchar dat)
{IN1 = 1&(dat>>0);IN2 = 1&(dat>>1);IN3 = 1&(dat>>2);IN4 = 1&(dat>>3);
}//顺时针转动
void MotorCW(uchar Speed)
{uchar i;for(i=0;i<4;i++){MotorData(phaseccw[i]);delay_ms(Speed);//转速调节}
}//停止转动
void MotorStop(void)
{MotorData(0x00);
}//逆时针转动
void MotorCCW(uchar Speed)
{uchar i;for(i=0;i<4;i++){MotorData(phasecw[i]);delay_ms(Speed);//转速调节}
}void main()
{while(1){// 顺时针转动,暂停for(i=500;i>0;i--)MotorCW(3);MotorStop();delay_ms(500);// 逆时针转动,暂停for(i=500;i>0;i--)MotorCCW(3);MotorStop();delay_ms(500);}
}
驱动方式

步进电机常见的三种驱动方式,包括全步进驱动、半步进驱动和微步进驱动

全步进驱动

全步进驱动是最常见的步进电机驱动方式之一。它通过改变电流的方向和大小来实现步进电机的转动。具体工作原理如下:

  • 单相全步进驱动:在单相全步进驱动中,通过向两个相邻线圈施加电流,使得步进电机转动一个步进角度。该驱动方式简单易实现,但转矩较小
  • 双相全步进驱动:双相全步进驱动是一种更为常见的驱动方式。它通过按照特定的顺序向两个线圈施加电流来实现步进电机的转动。该驱动方式相比单相全步进驱动具有更高的转矩和更稳定的运行

全步进驱动方式简单直观,适用于对转矩要求不高的场合

半步进驱动

半步进驱动是介于全步进驱动和微步进驱动之间的一种驱动方式。在半步进驱动中,通过改变电流的方向和大小来实现步进电机的转动。具体工作原理如下:

  • 与全步进驱动类似,半步进驱动也可以采用单相和双相两种驱动方式。其中,双相半步进驱动是最常见的
  • 在双相半步进驱动中,首先向一个线圈施加电流,使得步进电机转动半个步进角度。然后再向另一个线圈施加电流,使得步进电机再次转动半个步进角度。通过交替改变电流的方向和大小,可以实现精确的定位

半步进驱动方式相比全步进驱动方式,具有更高的分辨率和更平滑的运动。适用于对定位要求较高的场合

微步进驱动

微步进驱动是步进电机中最精细的驱动方式,通过分段控制电流的大小和方向来实现步进电机的转动

  • 微步进驱动将每个步进角度细分为更小的微步角度。通过控制电流的大小和方向,可以使步进电机按照微步角度进行转动。
  • 微步进驱动可以实现更高的分辨率和更平滑的运动。它在定位精度和运动平稳性方面优于全步进和半步进驱动

微步进驱动方式适用于对定位精度要求极高的场合,如高精密仪器、光学设备等

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

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

相关文章

基于Springboot的高校心理教育辅导设计与实现(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的高校心理教育辅导设计与实现(有报告)。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;…

20240202在WIN10下使用fast whisper缺少cudnn_ops_infer64_8.dll

20240202在WIN10下使用fast whisper缺少cudnn_ops_infer64_8.dll 2024/2/2 10:48 https://blog.csdn.net/feinifi/article/details/132548556 Could not locate cudnn_ops_infer64_8.dll. Please make sure it is in your library path!解决办法 安装cuDNN c:\faster-whisper-…

小程序中picker多列选择器

需求&#xff1a;实现类似省市联动的效果&#xff0c;选择第一列后&#xff0c;第二列数据变化 html部分: <view class"section"><view>多列选择器</view><picker mode"multiSelector" bindchange"bindMultiPickerChange"…

Unity_ShaderGraph示例项目启动

Unity_ShaderGraph示例项目启动 大前提不变:URP模板,Unity2023.1.19使用 Shader Graph - Unity 手册Shader Graph 是一个工具,能够让您直观地构建着色器。您可以在图形框架中创建并连接节点,而不必手写代码。Shader Graph 提供了能反映所作更改的即时反馈,对于不熟悉着色…

flutter抓包绕过

lutter的证书校验 起因&#xff1a; 最近工作上让做个app的复测&#xff0c;把apk发我后&#xff0c;开始尝试挂代理抓包&#xff0c;结果发现抓不到 为是证书没弄好&#xff0c;想着前几天不是刚导入了吗&#xff08;雾&#xff09;。又重新导入了下还是不行。然后各种lsp模…

【TCP】四次挥手(终止连接)

前言 TCP&#xff08;传输控制协议&#xff09;是互联网协议&#xff08;IP&#xff09;中的一种重要传输层协议&#xff0c;用于在通信的计算机之间建立可靠的、有序的和错误校验的数据传输。在TCP连接中&#xff0c;数据传输是双向的&#xff0c;因此需要一种机制来开始和结…

【数据结构】单向链表实现 超详细

目录 一. 单链表的实现 1.准备工作及其注意事项 1.1 先创建三个文件 1.2 注意事项&#xff1a;帮助高效记忆和理解 2.链表的基本功能接口 2.0 创建一个 链表 2.1 链表的打印 3.链表的创建新节点接口 4.链表的节点插入功能接口 4.1 尾插接口 4.2 头插接口 4.3 指定位…

【无标题】yarn报错 “https://registry.npm.taobao.org/...: certificate has expired“如何处理

前言 今天在jenkins打包项目时yarn打包报错&#xff0c;查看log发现npm淘宝镜像报错 原因 在 1 月 22 日&#xff0c;淘宝原镜像域名&#xff08;registry.npm.taobao.org&#xff09;的 HTTPS 证书正式到期。如果想要继续使用&#xff0c;需要将 npm 源切换到新的源&#…

Dockerfile构建Nginx访问说明

Dockerfile使用情况 20210903 Dockerfile ,Nginx 参考地址&#xff1a;https://yeasy.gitbook.io/docker_practice/image/build 编写简单Dockerfile 在一个空白目录中&#xff0c;建立一个文本文件&#xff0c;并命名为 Dockerfile&#xff1a; $ mkdir mynginx $ cd myngin…

跟着cherno手搓游戏引擎【18】抽象Shader、项目小修改

抽象&#xff1a; Shader.h: #pragma once #include <string>namespace YOTO {class Shader {public:virtual~Shader()default;virtual void Bind()const0;virtual void UnBind()const0;static Shader* Create(const std::string& vertexSrc, const std::string&am…

window 安装 jenkins 编写脚本

set JAVA_HOMED:\RuanJianKaiFa\jdk\jdk11 set CLASSPATH.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOMe%\lib\tools.jar; set Path%JAVA_HOME%\bin; java -jar jenkins.war 下载jenkins.war包&#xff0c;编写一个txt文档&#xff0c;把脚本复制进去&#xff0c;修改文件后缀为.bat文件…

MySQL EXPLAIN查询执行计划

EXPLAIN 可用来查看SQL执行计划&#xff0c;常用来分析调试SQL语句&#xff0c;来使SQL语句达到更好的性能。 1 前置知识 在学习EXPLAIN 之前&#xff0c;有些基础知识需要清楚。 1.1 JSON类型 MySQL 5.7及以上版本支持JSON数据类型。可以将数组存为JSON格式的字符串&#…

本体匹配方法概述

目录 前言1 基于术语匹配的方法1.1 字符串匹配1.2 语言方法 2 基于虚拟文档的方法3 基于结构的匹配方法3.1 结构信息利用3.2 Anchor-prompt方法 4 大型本体匹配4.1 本体划分4.2 匹配分块4.3 实体间映射 结语 前言 本文将深入探讨本体匹配的不同方法&#xff0c;从基于术语匹配…

DES加密原理

DES加密算法综合运用了置换、代替、代数等多种密码技术&#xff0c;具有设计精 巧、实现容易、使用方便等特点。DES加密算法的明文、密文和密钥的分组长度 都是64位&#xff0c;详细的DES加密算法结构如图6-10所示。 图6-10 DES加密算法结构图 DES加密过程如下所示&#xff…

2024PMP考试新考纲-【业务环境领域】典型真题和很详细解析(3)

华研荟继续分享【业务环境Business Environment领域】在新考纲下的真题&#xff0c;帮助大家体会和理解新考纲下PMP的考试特点和如何应用所学的知识和常识&#xff08;经验&#xff09;来解题&#xff0c;并且举一反三&#xff0c;一次性3A通过2024年PMP考试。 2024年PMP考试新…

0202-1-处理机调度与死锁

第三章:处理机调度与死锁 处理机调度算法的目标 处理机调度算法的共同目标 资源利用率:CPU的利用率CPU有效工作时间/(CPU有效工作时间CPU空闲等待时间)公平性平衡性策略强制执行 批处理系统的目标 平均周转时间短系统吞吐量高处理机利用率高 分时系统的目标 响应时间快均…

10MHz 到 80MHz、10:1 LVDS 并串转换器(串化器)/串并转换器(解串器)MS1023/MS1224

产品简述 MS1023 串化器和 MS1224 解串器是一对 10bit 并串 / 串并转 换芯片&#xff0c;用于在 LVDS 差分底板上传输和接收 10MHz 至 80MHz 的并行字速率的串行数据。起始 / 停止位加载后&#xff0c;转换为负载编 码输出&#xff0c;串行数据速率介于 120Mbps…

如何将 h5 页面快速转换成微信小程序

Hello各位朋友们大家新的一月好呀&#xff01;我是咕噜铁蛋&#xff01;我知道在小程序开发中&#xff0c;有时候需要将H5页面转换成微信小程序页面。这样可以将原本的网页内容适配到小程序中&#xff0c;让用户能够更方便地访问和使用。在本文中&#xff0c;我将分享如何快速将…

Vue实现公告循环横向播报组件

一、代码组件 注意&#xff1a;当公告字数很少时会固定不动&#xff0c;当字数达到最大宽度时&#xff0c;则会循环播报 <template><div class"TopCard"><!-- 小喇叭 --><div style"width: 70px"><notify style"width: 2…

git小白进阶之路

git是最常用的版本控制工具&#xff0c;我对其进行了整理后续补充&#xff0c;这个文档欢迎大家来讨论&#xff0c;当前我的视频梳理&#xff1a; git小白进阶之路_哔哩哔哩_bilibili&#xff0c;非常希望大佬们能够批评指正&#xff0c;并多多交流。 目录 初始配置 配置账号…