【单片机】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.xdnf.cn/news/148701.html

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

相关文章

免费 AI 代码生成器 Amazon CodeWhisperer 初体验

文章作者&#xff1a;浪里行舟 简介 随着 ChatGPT 的到来&#xff0c;不由让很多程序员感到恐慌。虽然我们阻止不了 AI 时代到来&#xff0c;但是我们可以跟随 AI 的脚步&#xff0c;近期我发现了一个神仙 AI 代码生产工具 CodeWhisperer &#xff0c;它是一项基于机器学习的服…

【多模态融合】TransFusion学习笔记(1)

工作上主要还是以纯lidar的算法开发,部署以及系统架构设计为主。对于多模态融合(这里主要是只指Lidar和Camer的融合)这方面研究甚少。最近借助和朋友们讨论论文的契机接触了一下这方面的知识&#xff0c;起步是晚了一点&#xff0c;但好歹是开了个头。下面就借助TransFusion论文…

C/C++字符函数和字符串函数详解————内存函数详解与模拟

个人主页&#xff1a;点我进入主页 专栏分类&#xff1a;C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 C语言刷题 欢迎大家点赞&#xff0c;评论&#xff0c;收藏。 一起努力&#xff0c;一起奔赴大厂。 目录 1.前言 2 .memcpy函数 3.memmove函…

RTP/RTCP 协议讲解

文章目录 前言一、RTP 协议1、RTP 协议概述2、RTP 工作机制3、RTP 协议的报文结构4、wireshark 抓取 RTP 报文 二、RTCP 协议1、RTCP 协议概述2、RTCP 工作机制3、RTCP 数据报4、wireshark 抓取 RTCP 报文 三、RTSP 和 RTP 的关系四、易混淆概念1、RTP over UDP 和 RTP over RT…

一键智能视频语音转文本——基于PaddlePaddle语音识别与Python轻松提取视频语音并生成文案

前言 如今进行入自媒体行业的人越来越多&#xff0c;短视频也逐渐成为了主流&#xff0c;但好多时候是想如何把视频里面的语音转成文字&#xff0c;比如&#xff0c;录制会议视频后&#xff0c;做会议纪要&#xff1b;比如&#xff0c;网课教程视频&#xff0c;想要做笔记&…

【软件设计师-中级——刷题记录6(纯干货)】

目录 管道——过滤器软件体系结构风格优点&#xff1a;计算机英语重点词汇&#xff1a;单元测试主要检查模块的以下5个特征&#xff1a;数据库之并发控制中的事务&#xff1a;并发产生的问题解决方案:封锁协议原型化开发方法&#xff1a; 每日一言&#xff1a;持续更新中... 个…

CocosCreator3.8研究笔记(二十五)CocosCreator 动画系统-2d骨骼动画spine

大家都知道&#xff0c;在游戏中 一般用帧动画或者骨骼动画&#xff0c;实现 人物的行走、奔跑、攻击等动作。 帧动画&#xff0c;在上一篇已经做了介绍&#xff0c;感兴趣的朋友可以前往阅读&#xff1a; CocosCreator3.8研究笔记&#xff08;二十四&#xff09;CocosCreator …

linux入门---信号的保存和捕捉

目录标题 信号的一些概念信号的保存pending表block表handler表 信号的捕捉内核态和用户态信号的捕捉 信号的一些概念 1.进程会收到各种各样的信号&#xff0c;那么程序对该信号进行实际处理的动作叫做信号的递达。 2.我们之前说过当进程收到信号的时候可能并不会立即处理这个信…

计算机考研 | 2016年 | 计算机组成原理真题

文章目录 【计算机组成原理2016年真题44题-9分】【第一步&#xff1a;信息提取】【第二步&#xff1a;具体解答】 【计算机组成原理2016年真题45题-14分】【第一步&#xff1a;信息提取】【第二步&#xff1a;具体解答】 【计算机组成原理2016年真题44题-9分】 假定CPU主频为5…

51单片机可调幅度频率波形信号发生器( proteus仿真+程序+原理图+报告+讲解视频)

51单片机可调幅度频率信号发生器( proteus仿真程序原理图报告讲解视频&#xff09; 讲解视频1.主要功能&#xff1a;2.仿真3. 程序代码4. 原理图4. 设计报告5. 设计资料内容清单&&下载链接***[资料下载链接](https://docs.qq.com/doc/DS1daV1BKRXZMeE9u)*** 51单片机可…

软件工程与计算总结(三)示例项目描述

本节介绍一个标准的项目描述&#xff0c;大家可以作为蓝本学习~ 目录 一.背景 二.目标 三.系统用户 四.用户访谈要点 1.收银员 2.客户经理 3.总经理 4.系统管理员 五.项目实践过程 一.背景 A是一家刚刚发展起来的小型连锁商店&#xff0c;其前身是一家独立的小百货门面…

算法-数学-斜率-直线上最多的点数

算法-数学-斜率-直线上最多的点数 1 题目概述 1.1 题目出处 https://leetcode.cn/problems/max-points-on-a-line/ 1.2 题目描述 给你一个数组 points &#xff0c;其中 points[i] [xi, yi] 表示 X-Y 平面上的一个点。求最多有多少个点在同一条直线上。 2 暴力搜索斜率…

虚拟机VMware的使用流程以及出现的问题附解决方法

虚拟机VMware的使用流程以及出现的问题附解决方法 下载安装 略。。。 创建虚拟机 虚拟机的设置如下&#xff1a;注意网络适配器为NAT 如果出现ip addr 命令&#xff1a;不显示IP地址的话&#xff1a; 解决方式如下&#xff1a; 首先设置网卡&#xff1a;先查看一下onboot是…

OpenCV读取图像时按照BGR的顺序HWC排列,PyTorch按照RGB的顺序CHW排列

OpenCV读取RGB图像 在OpenCV中&#xff0c;读取的图片默认是HWC格式&#xff0c;即按照高度、宽度和通道数的顺序排列图像尺寸的格式。我们看最后一个维度是C&#xff0c;因此最小颗粒度是C。 例如&#xff0c;一张形状为2562563的RGB图像&#xff0c;在OpenCV中读取后的格式…

【Java 进阶篇】JDBC 管理事务详解

在数据库操作中&#xff0c;事务是一个非常重要的概念。事务可以确保一系列的数据库操作要么全部成功执行&#xff0c;要么全部失败回滚&#xff0c;以保持数据库的一致性和完整性。在 Java 中&#xff0c;我们可以使用 JDBC 来管理事务。本文将详细介绍 JDBC 管理事务的方法和…

Leetcode1071. 字符串的最大公因子(三种方法,带详细解析)

Leetcode1071. 字符串的最大公因子 对于字符串 s 和 t&#xff0c;只有在 s t … t&#xff08;t 自身连接 1 次或多次&#xff09;时&#xff0c;我们才认定 “t 能除尽 s”。 给定两个字符串 str1 和 str2 。返回 最长字符串 x&#xff0c;要求满足 x 能除尽 str1 且 x 能…

【面试总结大纲】

面试 1. springSpring AOP的具体实现核心概念分别指的是什么?基于注解的切面实现主要包括以下几个步骤&#xff1a;两个切面&#xff0c;它们之间的顺序是怎么控制的 springmvc的工作流程设计模式原则Spring 框架中用到了哪些设计模式&#xff1f; 2. Java-锁2.1锁的分类可重入…

开发调试管理系统遇到的问题大全错误解决大全收集

问题大全错误解决大全 多模块项目依赖中&#xff0c;项目启动失败-org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException报错&#xff1a;Error: The project seems to require yarn but it‘s not installednpm ERR! fatal: Could not read fro…

动态规划-状态机(188. 买卖股票的最佳时机 IV)

状态分类&#xff1a; f[i,j,0]考虑前i只股票&#xff0c;进行了j笔交易&#xff0c;目前未持有股票 所能获得最大利润 f[i,j,1]考虑前i只股票&#xff0c;进行了j笔交易&#xff0c;目前持有股票 所能获得最大利润 状态转移&#xff1a; f[i][j][0] Math.max(f[i-1][j][0],f[…

Linux高性能服务器编程 学习笔记 第十章 信号

信号是由用户、系统、进程发送给目标进程的信息&#xff0c;以通知目标进程某个状态的改变或系统异常。Linux信号可由以下条件产生&#xff1a; 1.对于前台进程&#xff0c;用户可通过输入特殊终端字符来给它发送信号&#xff0c;如输入CtrlC通常会给进程发送一个中断信号。 2…