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.hqwc.cn/news/448643.html

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

相关文章

[激光原理与应用-73]:数据采集卡 - STM32F107

目录 一、STM32F107 概述 二、STM32F107主要指标 三、STM32F107主要接口信号 四、STM32F107使用场景 五、STM32选型 六、STM32F107 ADC详解 七、STM32F107 ADC与专用ADC芯片AD7606的比较 同步采集 八、AD7606专用ADC转换相比STM32F107内嵌ADC的优势 一、STM32F107 概述…

CSS局限属性contain:优化渲染性能的利器

CSS局限属性contain&#xff1a;优化渲染性能的利器 在网页开发中&#xff0c;优化渲染性能是一个重要的目标。CSS局限属性contain是一个强大的工具&#xff0c;可以帮助我们提高网页的渲染性能。本文将介绍contain属性的基本概念、用法和优势&#xff0c;以及如何使用它来优化…

[Linux 进程(六)] 写时拷贝 - 进程终止

文章目录 1、写时拷贝2、进程终止2.1 进程退出场景2.1.1 退出码2.1.2 错误码错误码 vs 退出码2.1.3 代码异常终止引入 2.2 进程常见退出方法2.2.1 exit函数2.2.2 _exit函数 本片我们主要来讲进程控制&#xff0c;讲之前我们先把写时拷贝理清&#xff0c;然后再开始讲进程控制。…

Vue3页面自适应,表格滚动高度

适用场景&#xff1a;在网页的表格中我们需要获取页面的还可以用的高度来为表格做滚动的时候就需要使用响应高度&#xff0c;可以使用原生的calc来计算&#xff0c;但是calc有个缺陷就是&#xff0c;你要去计算多个盒子的高度&#xff0c;使用下面的代码就可以直接获取当前元素…

大创项目推荐 题目:基于深度学习的图像风格迁移 - [ 卷积神经网络 机器视觉 ]

文章目录 0 简介1 VGG网络2 风格迁移3 内容损失4 风格损失5 主代码实现6 迁移模型实现7 效果展示8 最后 0 简介 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习卷积神经网络的花卉识别 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c…

C++面试宝典第26题:螺旋矩阵

题目 给你一个正整数n,生成一个包含1到n的平方的所有元素,且元素按顺时针顺序螺旋排列成n x n的正方形矩阵。 示例: 输入:n = 3 输出:[[1,2,3],[8,9,4],[7,6,5]] 解析 螺旋矩阵是指按照顺时针(或逆时针)螺旋顺序排列元素的二维矩阵。比如:给定一个如下的3x3矩阵,按顺…

Three.js学习3:第一个Three.js页面

一、一图看懂Three.js 坐标 这个没什么好说的&#xff0c;只是需要注意颜色。在 Three.js 提供的编辑器中&#xff0c;各种物体的坐标也这样的色彩&#xff1a; 红色&#xff1a;x 轴 绿色&#xff1a;y 轴 蓝色&#xff1a;z 轴 Three.js 提供的编辑器可以在本地 Three.js …

备战蓝桥杯---数据结构与STL应用(进阶3)

本专题主要围绕并查集。 首先&#xff0c;什么是并查集&#xff1f; 顾名思义&#xff0c;即实现集合的合并与查找。 我们用树的方式来存一个集合&#xff0c;有共同的根即在同一个集合&#xff0c;合并时让一个集合的根作为另一个集合的儿子即可。 现在&#xff0c;当我们合…

yo!这里是c++IO流相关介绍

目录 前言 C语言的输入输出 CIO流基本介绍 流的概念 IO流类库 iostream fstream stringstream 后记 前言 学过C语言的输入输出相关知识点的童鞋应该多多少少会觉得有些许麻烦&#xff0c;反正我就是这么觉得的&#xff0c;scanf、printf等函数不仅数量众多&#xff0c…

统计工具更新了!一站式完成医学研究影响因素分析(线性回归法),比SPSS和R更好用...

郑老师的“风暴统计”平台更新了&#xff01;接下来&#xff0c;我们的平台将陆陆续续形成一站式统计分析模块&#xff0c;包括&#xff1a; 影响因素分析混杂偏倚控制临床预测模型 我们也将春节后形成统计软件的PC端版本&#xff0c;将再也不怕宕机了&#xff01; 今天我们先更…

论文阅读:Brain–Computer EMO: A Genetic Algorithm Adapting to the Decision Maker

Brain–Computer Evolutionary Multiobjective Optimization: A Genetic Algorithm Adapting to the Decision Maker 作者&#xff1a;Roberto Battiti、Andrea Passerini 期刊&#xff1a;IEEE TRANSACTIONS ON EVOLUTIONARY COMPUTA TION、OCTOBER 2010 DOI&#xff1a;10.11…

扫盲软件开发工具低代码

目录 一、低代码是什么&#xff1f; 二、低代码平台的优势和劣势都是什么&#xff1f; 三、低代码操作方式 四、写在最后 一、低代码是什么&#xff1f; 低代码是一套可视化开发工具&#xff0c;它帮开发者把前后端基础功能写扎实&#xff0c;开发者只需要通过填表配置或拖…