十、51单片机之步进电机

news2025/7/13 3:52:38

1、什么是步进电机

1.1、外观

 1.2、概念

(1)步进电机是一种将电脉冲信号转换成相应角位移线位移的电动机。每输入一个脉冲信号,转子就转动一个角度或前进一步,其输出的角位移或线位移与输入的脉冲数成正比,转速与脉冲频率成正比。因此,步进电动机又称脉冲电动机。

(2)步进电机能够在精度范围内控制转动的方向,角位移,速度等。通常应用于机床中,如PCB生产中的贴片机,就需要精确控制电机。

(3)步进电机的种类非常多。这里示例的是四线步进电机,电机上标有A+、A-、B+、B-。

2、步进电机相关的概念

2.1、步距角

(1)步进电机转动的最小单位,也就是步进电机的精度。

(2)步进电机有一个固有的步距角,这个参数和步进电机有关。

(3)步进电机一般情况下只能以固有步距角的整数倍来运动,这一个固有步距角的移动就叫一个节拍

(4)电机还有比步距角更小的运动方式,叫做细分,由电机驱动器来支持的。

2.2、相数

相数指步进电机内部的线圈组数,一般一组线圈引出一组线。

2.3、细分

初学中不接触细分,我手里的电机驱动器(驱动芯片)也不支持细分。

2.4、单极性和双极性

单极性和双极性是步进电机最常采用的两种驱动架构。

(1)参考如下资料:单极性 (unipolar) 和双极性 (bipolar) 步进电机 - 豆丁网

(2)单极性驱动电路使用四颗晶体管来驱动步进电机的两组相位;双极性驱动电路使用八颗晶体管来驱动两组线位。

(3)单极性驱动电路的电机结构包含两组带有中间抽头的线圈,整个电机共有六条线与外界连接。

(4)双极性驱动电路可以同时驱动四线式或六线式步进电机,虽然四线式电机只能使用双极性驱动电路,它却能大幅降低量产型应用的成本。

(5)双极性驱动电路的晶体管只需承受电机电压便可;双极性驱动电路的晶体管只需承受电机电压便可单极性驱动电路需要箝位电路才能驱动。

3、两相四线式步进电机驱动时序

四线分别是A+    A-    B+    B-

A+  =  A;A/  =  A-;B+  =  B;B/  =  B-;

3.1、单相四拍

正转时序:  A/ B A B/

反转时序:  B/ A B A/

3.2、双相四拍

正转时序:  A/B  AB  AB/ A/B/

反转时序:  A/B/ AB/ AB A/B

3.3、半步八拍

正转时序:  A/  A/B  B  AB  A  AB/  B/  A/B/

反转时序:  A/B/ B/ AB/ A AB B A/B A/

4、控制器和驱动器

(1)一套步进电机的系统需要三部分:控制器+驱动器+步进电机。

(2)一般情况下:控制器就是单片机,驱动器一般是接在单片机的IO口上面的专用电机驱动芯片。

(3)控制器负责产生时序信号,驱动器负责将时序信号转成功率驱动信号给步进电机用。

5、原理图

 (1)原理图中INA、INB、INC、IND与单片机IO口相连接,通过单片机的IO口给驱动器芯片输入0/1产生控制信号,控制信号经过TC1117的转换,从OUTA、OUTB、OUTC、OUTD四个脚输出具有驱动步进电机能力的驱动信号。

(2)INA、INB对应一个相线线圈的两端,INC、IND对应另一个相线线圈的两端。

驱动芯片数据手册:略。

6、步进电机编程示例

#include <reg52.h>
#include "intrins.h"


sbit AN = P0^0;  //A-
sbit AP = P0^1;  //A+
sbit BN = P0^2;  //B-
sbit BP = P0^3;  //B+


/*函数声明*/
void Delay1ms();		//@12.000MHz
void Delay500ms();		//@12.000MHz


void main()
{

	while(1)
	{
		/* 单相四拍: A/ B A B/ */
		AN = 1;
		AP = 0;  
		BN = 0;   
		BP = 0;   
		//Delay1ms();
		Delay500ms();
		
		AN = 0;
		AP = 0;  
		BN = 0;  
		BP = 1;
		//Delay1ms();
		Delay500ms();		
		
		AN = 0;
		AP = 1;  
		BN = 0;  
		BP = 0; 
		//Delay1ms();
		Delay500ms();		
		
		AN = 0;
		AP = 0;  
		BN = 1;  
		BP = 0;  
		//Delay1ms();
		Delay500ms();
	}
}


void Delay1ms()		//@12.000MHz
{
	unsigned char i, j;

	i = 2;
	j = 239;
	do
	{
		while (--j);
	} while (--i);
}


void Delay500ms()		//@12.000MHz
{
	unsigned char i, j, k;

	_nop_();
	i = 4;
	j = 205;
	k = 187;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

(1)单相四拍驱动时序:A/  B  A  B/,如果这当作正传,那么反过来B/  A  B  A/ 就是反转。

(2)转速控制:转速是由脉冲信号的频率控制的,其实就是delay的时间。

(3)delay时间过短电机可能不转。delay时间越长,转速约满。

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

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

相关文章

VSCode调试C/C++项目

最近写完了自己的操作系统&#xff0c;深感有一个方便的调试环境是有多么重要&#xff0c;能够提升不少开发效率。恰好最近在的技术交流群里群友在问如何搭建VSCode调试操作系统的环境&#xff0c;刚考完试&#xff0c;就先把这篇VSCode调试C/C的通用教程发出来&#xff0c;而后…

Hadoop综合项目——二手房统计分析(MapReduce篇)

Hadoop综合项目——二手房统计分析&#xff08;MapReduce篇&#xff09; 文章目录Hadoop综合项目——二手房统计分析&#xff08;MapReduce篇&#xff09;0、 写在前面1、MapReduce统计分析1.1 统计四大一线城市房价的最值1.2 按照城市分区统计二手房数量1.3 根据二手房信息发布…

全网首发“Java面试考点大全”,20+互联网公司,应有尽有

受疫情影响&#xff0c;今年似乎给人感觉时间比往年还要流逝得更快。显然&#xff0c;春节一过&#xff0c;我们又将迎来面试旺季金三银四。对于程序员来说&#xff0c;秋招的失利更意味着在金三银四要打一场“硬战”&#xff0c;可又有多少人做好了面试的准备呢&#xff1f;对…

Fabric.js 监听元素相交(重叠)

本文简介 点赞 关注 收藏 学会了 fabric.js 提供了一个方法可以检查对象是否与另一个对象相交&#xff08;也可以叫元素是否重叠&#xff09;。 这个方法叫 intersectsWithObject()。 本文主要想提一下 fabric.js 存在这么一个方便的方法。 检测元素是否相交有什么用呢&am…

【UE4 第一人称射击游戏】04-血溅效果

素材资料地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1epyD62jpOZg-o4NjWEjiyg 密码&#xff1a;jlhr 效果&#xff1a; 步骤&#xff1a; 1.将图片素材导入UE4 2.创建一个控件蓝图&#xff0c;命名为“Damageeffect” 双击打开“Damageeffect”&#xff0…

【关于时间序列的ML】项目 6 :机器学习中使用 LSTM 的时间序列

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

现在转行学python,前景和优势有哪些?

正所谓“男怕入错行&#xff0c;女怕嫁错郎”&#xff0c;可想而知进入一个正确的行业有多重要。 IT行业的高薪吸引着越来越多转行“入坑”&#xff0c;python作为目前的大势&#xff0c;是很多人转行的首选。 为什么这么多的人都想转行学习python&#xff0c;python有哪些前…

【架构师(第四十九篇)】 服务端开发之认识 Docker-compose

Docker-compose 介绍 通过一个配置文件&#xff0c;可以让系统一键启动所有的运行环境&#xff0c;nodejs&#xff0c;mysql&#xff0c;redis&#xff0c;mongodb 等。 如果开发环境需要多个服务&#xff0c;就需要启动多个 Docker 容器。 要连通多个 Docker 容器&#xf…

转行程序员,如何挑选既高薪又适合的编程语言?

“你为什么要学这个编程语言&#xff1f;” 很多人面对这个问题时&#xff0c;都回答不上来&#xff0c;大部分都只是看到了表象&#xff0c;或是脑子一热&#xff0c;随意给自己选了一个。事实上自己对这个编程语言的特性和市场现状并不了解&#xff0c;甚至都不知道这个语言到…

关于为什么要做量化白皮书这件事

我们一直想着再为行业做点什么 是从什么时候开始 在心里埋下了种子呢 许是从有人说“高频量化不除&#xff0c;市场再无宁日”的时候 是从中国基金报房佩燕老师写“这锅我们不背“的时候 是从部分量化私募主动站出来说话的时候 现今的互联网时代信息太繁杂 有时可以不用太…

ETCD的创建

一&#xff1a; 好原文链接&#xff1a; 搭建高可用Kubernetes集群之etcd v3.4.13集群搭建(一&#xff09; - 人艰不拆_zmc - 博客园1. etcd 简介 coreos 开发的分布式服务系统&#xff0c;内部采用 raft 协议作为一致性算法。作为服务发现系统&#xff0c;有以下的特点&#x…

【Vue】源码—虚拟DOM和diff算法

1.理解虚拟DOM和diff算法 1.1什么是虚拟DOM&#xff1f; 从本质上来说&#xff0c;虚拟DOM是一个JavaScript对象&#xff0c;通过对象的方式来表示DOM结构。将页面状态抽象为JS对象的形式&#xff0c;配合不同的渲染工具&#xff0c;使跨平台渲染成为可能。虚拟DOM是DOM的抽象…

【Python百日进阶-数据分析】Day136 - plotly旭日图:px.sunburst()实例

文章目录四、实例4.1 带有 plotly.express 的旭日图4.1.1 基础旭日图4.1.2 带有 plotly.express 的矩形 DataFrame 的旭日形4.1.3 改变path顺序&#xff0c;从而改变父子关系4.1.4 在 px.sunburst 中具有连续颜色参数的矩形 DataFrame 的 Sunburst4.1.5 在 px.sunburst 中具有离…

20岁电竞选手自学编程转行程序员,轻松拿下大厂offer

话说 人与人之间的差距 貌似挺小的 毕竟 不管是大佬还是我们 都是两只眼睛、一个鼻子、一张嘴 不多不少 醒醒&#xff0c;别睡了 人和人的差距是很大的&#xff01; 同样身为互联网冲浪选手 别人干啥啥都行 你却只会在评论区扣“牛X” #01 在多数人的认知里 电竞选…

校园网上报修系统/宿舍报修系统的设计与实现

摘要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;校园网上报修系统当然也不能排除在外&#xff0c;从报修信息的统计和分析&#xff0c;在过程中会产生大量的、各种各样的数…

Java Number Math 类

一般地&#xff0c;当需要使用数字的时候&#xff0c;我们通常使用内置数据类型&#xff0c;如&#xff1a;byte、int、long、double 等。 实例 int a 5000; float b 13.65f; byte c 0x4a; 然而&#xff0c;在实际开发过程中&#xff0c;我们经常会遇到需要使用对象&…

Java -- OSS对象存储服务(Object Storage Service,简称 OSS)文件服务器

一个成熟的技术架构要有一定的分离性&#xff0c; 平台级的产品一般会这么分&#xff1a;应用服务器、数据库服务器、文件服务器。一般文件、数据库、应用服务器&#xff0c;都应该做逻辑和物理的分离。 以前我们想要做文件上传可能要自己去搭建一个专门的服务器&#xff0c;然…

【Oracle】Oracle学习笔记

【Oracle】Oracle学习笔记 目录【Oracle】Oracle学习笔记P1、Oracle数据库的安装和配置P2、Oracle数据库管理P3-0、初步SQLP3-1、基本SQL SELECT语句课程学习链接&#xff1a; 【尚硅谷】Oracle数据库全套教程&#xff0c;oracle从安装到实战应用 P1、Oracle数据库的安装和配置…

学python以后做什么工作

python是一门很好的编程语言&#xff0c;很多人都在学&#xff0c;那么学完python以后能做什么工作呢&#xff1f;下面小编给大家总结一下。 软件开发&#xff0c;用python做软件是很多人正在从事的工作&#xff0c;不管是B/S软件&#xff0c;还是C/S软件&#xff0c;都能做。…

【自动化测试入门基础知识】离月薪15k的自动化工程师又进了1步

一、首先&#xff0c;什么是自动化测试&#xff1f; 自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常&#xff0c;在设计了测试用例并通过评审之后&#xff0c;由测试人员根据测试用例中描述的过程一步步执行测试&#xff0c;得到实际结果与期望结果的比较…