【单片机】11-步进电机和直流电机

1.直流电机

1.什么是电机

电能转换为动能

2.常见电机

(1)交流电机【大功率】:两相【200W左右】,三相【1000W左右】

(2)直流电机【小功率】:永磁【真正的磁铁】,励磁【电磁铁】

(3)步进电机【精确控制功率】,伺服电机【非常精确功率】

3.直流电机详解

(1)外观

(2)接线和工作原理

在电池位置有VCC和GND

(3)直流电机的驱动问题:不能用IO口直接驱动

4.直流电机实验

(1)直流电机直接接在开发板的主板的VCC和GND引出接口上看电机是否转动,还可以调换VCC和GND看是否反转

(2)单片机的IO口的数字口,本身的驱动能力非常小(最多20mA级别),这个驱动能力是带不动电动机的。

(3)一般单片机需要实验专门的驱动芯片来驱动电机。驱动芯片的作用就是把单片机的小电流的控制信号转成逻辑上相同的大电流的驱动源。这就是所谓的弱电控制强电。

#include<reg51.h>/**驱动电机驱动直流电机
*/sbit ALine=P0^0;
sbit BLine=P0^1;void main(){ALine=1;BLine=0;//实际上不会动,因为电流不足while(1);}

2.步进电机理论

1.什么是步进电机

1.外观

2.功能特点

(1)步进(step)的动起来,可以控制自己转多少

(2)不是直接给接电就动,要有规律的电才可以动

(3)以步长为单位,不断的转

(4)可以控制转多少就停

3.操作接口

(1)四线步进电机

2.步距角:步长

(1)就是精度,360°的⚪,可以走多少°。

(2)步长==精度

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

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

(5)电机还有一个比固有步距角更小的运动方法,这种方法叫细分,由电机驱动器来支持的。

3.相数

(1)步进电机绕阻的组数

(2)相数多的步距角越小,越精确,引出的线越多

4.细分

(1)电机还有一个比固有步距角更小的运动方法,这种方法叫细分,由电机驱动器来支持的。

5.极性

单极性步进电机和双极性步进电机有什么区别? – AKT Motor and Drive

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

有一些可以通过2种进行驱动。

我们拿到的步进电机中只有电路(线路),没有驱动。真正的驱动在开发板上。

1.单极性

单极性驱动电路使用四颗晶体管来驱动步进电机的两组相位,电机结构则如图1所示包含两组带有中间抽头的线圈,整个电机共有六条线与外界连接。这类电机有时又称为四相电机,但这种称呼容易令人混淆又不正确,因为它其实只有两个相位,精确的说法应是双相位六线式步进电机。六线式步进电机虽又称为单极性步进电机,实际上却能同时使用单极性或双极性驱动电路。

2.双极性

双极性步进电机的驱动电路则如图2所示,它会使用八颗晶体管来驱动两组相位。双极性驱动电路可以同时驱动四线式或六线式步进电机,虽然四线式电机只能使用双极性驱动电路,它却能大幅降低量产型应用的成本。双极性步进电机驱动电路的晶体管数目是单极性驱动电路的两倍,其中四颗下端晶体管通常是由微控制器直接驱动,上端晶体管则需要成本较高的上端驱动电路。双极性驱动电路的晶体管只需承受电机电压,所以它不像单极性驱动电路一样需要箝位电路。

6.拍数

单相和双相的带载能力不同

1.单相四拍

单相:一边的线在工作

A/   B   A    B/        正转

B/    A    B    A/      反转   

解释:想要动起来就在一端有电压差,另外一端没有电压差

A/   B   A    B/     

四根线上电平

A/   A    B    B/   

0     1    0     0               第一拍

0      0   1    0                第二拍

1      0    0   0                第三拍

0      0    0   1                第四拍

4个节拍加起来就是一个完整的周期,按照这个周期给步进电机供电,则步进电机就会转动1个步距角(一个步长)。

2.双相四拍

双相:两边的线在工作

A/B   AB    AB/     A/B/        正转

时序:A/B   AB    AB/     A/B/

            1       0        0         0

             0       1        0        0

             0        0       1         0

             0         0        0        1

               A        A/        B        B/

A/B         0          1        1          0                第一拍

AB         1            0       1       0                  第二拍

AB/         1          0        0          1                第三拍

A/B/         0          1        0          1               第四拍

3.半步八拍

A/    A/B     B    AB    A      AB/     B/      A/B/【实际上就是单相和双相交互】

7.控制器和驱动器

(1)一套步进电机的系统需要三部分:控制器【控制信号】+驱动器【功率部件】+步进电机【负责转动】

控制器

(1)控制器就是我们的单片机

(2)控制器负责产生时序信号

驱动器

(1)驱动器一般是接在单片机的IO口上面的专用的电机驱动芯片(比如我们开发板上的TC1508S)

(2)驱动器负责将时序信号转成功率驱动信号给步进电机用

7.结论

我们使用的是两相步进电机

4.开发板原理图分析说明

1.原理图分析

(1)原理图中INA,INB,INC,IND将来要接单片机的IO口,单片机是控制器的,通过单片机的IO口给驱动器芯片输入1或者0的控制信号,控制信号经过TC1117的转换,从OUTA,OUTB,OUTC,OUTD四个脚输出具有驱动步进电机能力的驱动信号。【将控制信号转换为驱动信号,实际上就是将电流放大输出】

(2)接线:比如可以用P0端口的4个引脚(实际用P0.0-P0.3)接INA,INB,INC,IND

(3)输出端本来符号是OUTA,OUTB,OUTC,OUTD,但是开发板上实际是对应则:OA,OB,OC,OD。所以这里有一个对应关系:OUTA-OA,OUTB-OB,OUTC-OC,OUTD-OD。

(4)但是步进电机上是A,A-,B,B-,让我们方便接线不会接错。

(5)结合之前讲的步进电机的原理,可知:A-和A+是一个相线线圈的2端,B-和B+是另外一个线圈。

2.电机驱动芯片数据手册

https://datasheet.lcsc.com/lcsc/2202252130_Shenzhen-Fuman-Elec-TC1508S_C89480.pdf

5.步进电机编程实践

1.接线

(1)P0端口的P0.0-P0.3接电机驱动芯片TX1508S的4个输入端

(2)TC1508S的4个输出端接步进电机(按照丝印符号相对于即可)

(3)根据上面的接线,实际得到的接线逻辑是:P0.0和P0.1对应的一组线圈,而且P0.2和P0.3对应另一组线圈。【注意A+对应OA,A-对应OB,B+对应OC,B-对应OD

2.单相四排方式驱动

1.时序编程

A/    B    A    B/

#include<reg51.h>/**步进电机编程实践1:单相四排
*/sbit APositive=P0^0;
sbit ANegative=P0^1;
sbit BPositive=P0^2;
sbit BNegative=P0^3;void delay(unsigned char i){  //i越大,延迟时间越大unsigned char a,b;for(a=i;a>0;a--){for(b=240;b>0;b--);}
}void main(){while(1){//循环内实现1个周期//一个周期其实就是各个节拍依次排列构成的,注意节拍之间要延时//延时时间---控制速度//单相四拍//第一拍:  [A/  B    A    B/]//           1   0    0     0APositive=0;ANegative=1;BPositive=0;   //等于1也可以,只要两个相同即可BNegative=0;   //等于1也可以,只要两个相同即可delay(30);//第二拍:  [A/  B    A    B/]//           0   1    0     0APositive=0;ANegative=0;BPositive=1;   //等于1也可以,只要两个相同即可BNegative=0;   //等于1也可以,只要两个相同即可delay(30);//第3拍:  [A/  B    A    B/]//           0   0    1     0APositive=1;ANegative=0;BPositive=0;   //等于1也可以,只要两个相同即可BNegative=0;   //等于1也可以,只要两个相同即可delay(30);//第3拍:  [A/  B    A    B/]//           0   0    0   1APositive=0;ANegative=0;BPositive=0;   //等于1也可以,只要两个相同即可BNegative=1;   //等于1也可以,只要两个相同即可delay(30);}}

2.转速控制

转速是由脉冲信号控制的频率控制的,其实就是delay控制的

延时时间越短,转速越快

3.正转和反转

将时序进行反转

3.双相四拍方式驱动

#include<reg51.h>/**步进电机编程实践2:双相四拍方式驱动
*/sbit APositive=P0^0;
sbit ANegative=P0^1;
sbit BPositive=P0^2;
sbit BNegative=P0^3;//延时时间
//延时时间越短,转速越快
#define TIME 30void delay(unsigned char i){  //i越大,延迟时间越大unsigned char a,b;for(a=i;a>0;a--){for(b=240;b>0;b--);}
}void main(){while(1){//循环内实现1个周期//一个周期其实就是各个节拍依次排列构成的,注意节拍之间要延时//延时时间---控制速度//单相四拍/*正序旋转逆序就是将节拍反过来*///第一拍:  [A/B  AB    AB/   A/B/]//           1   0    0     0APositive=0;ANegative=1;BPositive=1;   BNegative=0;   delay(TIME);//第二拍:  [A/B  AB    AB/   A/B/]//           0   1    0     0APositive=1;ANegative=0;BPositive=1;   BNegative=0;   delay(TIME);//第3拍:  [A/B  AB    AB/   A/B/]//           0   0    1     0APositive=1;ANegative=0;BPositive=0;   BNegative=1;   delay(TIME);//第3拍:  [A/B  AB    AB/   A/B/]//           0   0    0   1APositive=0;ANegative=1;BPositive=0;   BNegative=1;   delay(TIME);}}

4.半步八拍方式驱动

速度越慢,动力越大

#include<reg51.h>/**步进电机编程实践3:半步八拍方式驱动
*/sbit APositive=P0^0;
sbit ANegative=P0^1;
sbit BPositive=P0^2;
sbit BNegative=P0^3;//延时时间
//延时时间越短,转速越快
#define TIME 3void delay(unsigned char i){  //i越大,延迟时间越大unsigned char a,b;for(a=i;a>0;a--){for(b=240;b>0;b--);}
}void main(){while(1){//循环内实现1个周期//一个周期其实就是各个节拍依次排列构成的,注意节拍之间要延时//延时时间---控制速度//单相四拍/*正序旋转逆序就是将节拍反过来*///第一拍:  [A   A/B   B    AB    A    AB/    B/     A/B/]//           1    0    0    0     0     0     0       0APositive=1;ANegative=0;BPositive=0;   BNegative=0;   delay(TIME);//第2拍:  [A   A/B   B    AB    A    AB/    B/     A/B/]//          0   1    0    0     0     0     0       0APositive=0;ANegative=1;BPositive=1;   BNegative=0;   delay(TIME);//第3拍:  [A   A/B   B    AB    A    AB/    B/     A/B/]//           0    0    1    0     0     0     0       0APositive=0;ANegative=0;BPositive=1;   BNegative=0;   delay(TIME);//第4拍:  [A   A/B   B    AB    A    AB/    B/     A/B/]//           0    0    0      1     0     0     0       0APositive=1;ANegative=0;BPositive=1;   BNegative=0;   delay(TIME);//第5拍:  [A   A/B   B    AB    A    AB/    B/     A/B/]//           0    0    0    0     1     0     0       0APositive=1;ANegative=0;BPositive=0;   BNegative=0;   delay(TIME);//第6拍:  [A   A/B   B    AB    A    AB/    B/     A/B/]//           0    0    0    0     0     1     0       0APositive=1;ANegative=0;BPositive=1;   BNegative=1;   delay(TIME);//第7拍:  [A   A/B   B    AB    A    AB/    B/     A/B/]//           0    0    0    0     0     0     1       0APositive=0;ANegative=0;BPositive=0;   BNegative=1;   delay(TIME);//第8拍:  [A   A/B   B    AB    A    AB/    B/     A/B/]//           0    0    0    0     0     0     0       1APositive=0;ANegative=1;BPositive=0;   BNegative=1;   delay(TIME);}}

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

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

相关文章

3种Renko图表形态FPmarkets3秒轻松判断价格走势

Renko图表形态在交易中的应用并不逊色于其他技术分析方法。相较于普通的烛台图表&#xff0c;使用Renko图表时&#xff0c;有些经典模式更容易被发现和识别&#xff0c;FPmarkets总结这些模式包括&#xff1a; 首先是头和肩膀形态。这是一种价格反转形态&#xff0c;由两个较小…

华为智能企业远程办公安全解决方案(1)

华为智能企业远程办公安全解决方案&#xff08;1&#xff09; 课程地址方案背景需求分析企业远程办公业务概述企业远程办公安全风险分析企业远程办公环境搭建需求分析 方案设计组网架构设备选型方案亮点 课程地址 本方案相关课程资源已在华为O3社区发布&#xff0c;可按照以下…

Java编码技巧:验证码

目录 1.1、EasyCaptcha&#xff08;优选&#xff0c;支持种类多&#xff0c;样式多&#xff0c;使用简单&#xff09;1.1.1、作用1.1.2、官方信息1.1.3、使用案例1.1.4、依赖1.1.5、代码1.1.6、效果1.1.7、拓展 1.2、kaptcha1.2.1、作用1.2.2、官方信息1.2.3、使用案例1.2.4、依…

SLAM从入门到精通(amcl定位使用)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 学习slam&#xff0c;一般就是所谓的边定位、边制图的知识。然而在实际生产过程中&#xff0c;比如扫地机器人、agv、巡检机器人、农业机器人&…

聊一聊JDK21-虚拟线程

目录 前言 Virtual Threads的开始 为什么需要Virtual Threads JDK19 预览版初次出现 JDK21 Virtual Threads的正式发布 Virtual Threads 该怎么使用 简单聊聊Virtual Threads的实现 使用时候的注意事项 本地尝鲜一下JDK21及Virtual Threads 结语 前言 2023年9月19日…

字符串改错题(找出代码中所有错误,将一个字符串倒序)

#include "string.h" main() {char *pSrc "hello,world";char *pDest NULL; int iLen strlen(pSrc);pDest (char*)malloc(iLen);char *pD pDest;char* pS pSrc[iLen]; while(iLen--!0){pD pS--;}printf("%s", pDest);return 0; }在使用 m…

C理解(五):编译,链接库,宏,关键字,变量

编译 编译过程 文件.c->(预处理)->文件.i->(编译)->文件.S->(汇编)->文件.o->(链接)->elf程序 预处理 内容:加载头文件(#include),清除注释(//,./*),替换条件编译(#if #elif #endif #ifdef),替换宏定义(#define) …

探索社会工程的深度:从定义到高级攻击策略

在广阔的网络安全领域&#xff0c;社会工程作为一种微妙的威胁而出现&#xff0c;它利用人类的漏洞来访问敏感信息或实施欺诈。网络安全背景下的社会工程的定义很明确&#xff1a;它包括使用欺骗手段操纵个人泄露机密或个人信息&#xff0c;然后将这些信息用于欺诈目的。 此类…

【AI视野·今日CV 计算机视觉论文速览 第257期】Fri, 29 Sep 2023

AI视野今日CS.CV 计算机视觉论文速览 Fri, 29 Sep 2023 Totally 99 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computer Vision Papers Learning to Transform for Generalizable Instance-wise Invariance Authors Utkarsh Singhal, Carlos Esteves, Ameesh M…

WebGL笔记:绘制多个点,三角形,以及画各种不同的线条

绘制多点 1 &#xff09; WebGL 缓冲区 我们在用js定点位的时候&#xff0c;肯定是要建立一份顶点数据的&#xff0c;这份顶点数据是给着色器的&#xff0c;因为着色器需要这份顶点数据绘图然而&#xff0c;我们在js中建立顶点数据&#xff0c;着色器肯定是拿不到的&#xff…

《Python趣味工具》——ppt的操作(刷题版)

前面我们对PPT进行了一定的操作&#xff0c;并将其中的文字提取到了word文档中。现在就让我们来刷几道题巩固巩固吧&#xff01; 文章目录 1. 查看PPT&#xff08;上&#xff09;2. 查看PPT&#xff08;中&#xff09;3. 查看PPT&#xff08;下&#xff09;4. PPT的页码5. 大学…

安防监控/视频汇聚平台EasyCVR云端录像不展示是什么原因?该如何解决?

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。音视频流媒体视频平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视频录像、…

Excel技巧之【锁定工作簿】

Excel工作簿是Excel工作区中一个或多个工作表的集合&#xff0c;我们知道Excel可以设置锁定工作表&#xff0c;防止意外或被他人修改&#xff0c;但可能有小伙伴不知道&#xff0c;Excel工作簿也同样可以设置锁定&#xff0c;防止更改。 那工作簿锁定后会怎么样呢&#xff1f;…

【数据结构】顺序查找,折半查找,分块查找的知识点总结及相应的代码实现

目录 1、顺序查找 定义及步骤 代码实现 2、折半查找 定义及步骤 代码实现 折半查找判定树 3、分块查找 定义及步骤 1、顺序查找 定义及步骤 顺序查找的定义&#xff1a;从数据集合的起始位置开始&#xff0c;逐一比较每个数据元素&#xff0c;直到找到所要查找…

uni-app 实现凸起的 tabbar 底部导航栏

效果图 在 pages.json 中设置隐藏自带的 tabbar 导航栏 "custom": true, // 开启自定义tabBar(不填每次原来的tabbar在重新加载时都回闪现) 新建一个 custom-tabbar.vue 自定义组件页面 custom-tabbar.vue <!-- 自定义底部导航栏 --> <template><v…

react.js在visual code 下的hello World

想学习reacr.js &#xff0c;就开始做一个hello world。 我的环境是visual code &#xff0c;所以我找这个环境下的例子。参照&#xff1a; https://code.visualstudio.com/docs/nodejs/reactjs-tutorial 要学习react.js &#xff0c;还得先安装node.js&#xff0c;我在visual …

github代码提交过程详细介绍

1、下载github上面的代码 &#xff08;1&#xff09;在github网站上&#xff0c;找到想要下载的代码仓库界面&#xff0c;点击Code选项就可以看到仓库的git下载地址&#xff1b; &#xff08;2&#xff09;使用命令下载&#xff1a;git clone 地址&#xff1b; 2、配置本地git…

【通意千问】大模型GitHub开源工程学习笔记(1)

9月25日&#xff0c;阿里云开源通义千问140亿参数模型Qwen-14B及其对话模型Qwen-14B-Chat,免费可商用。 立马就到了GitHub去fork。 GitHub&#xff1a; GitHub - QwenLM/Qwen: The official repo of Qwen (通义千问) chat & pretrained large language model proposed b…

在vue使用wangEditor(简单使用)

wangEditor不同的版本使用方法都不一样&#xff0c;这里以目前最新的参考官网方法使用2023-09-28 首先安装&#xff0c;参考官网&#xff0c;注意editor跟editor-for-vue两个都要装 yarn add wangeditor/editor # 或者 npm install wangeditor/editor --saveyarn add wangedit…

【Linux指令集】---git命令的基本使用

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【Linux专栏】&#x1f388; 本专栏旨在分享学习Linux的一点学习心得&#xff0c;欢迎大家在评论区讨论&#x1f48c; 演示环境&#xff1…