【STC单片机学习】第十二课 单片机的电机(步进电机)

【朱老师课程总结 侵删】


第一部分、章节目录

1.12.1.直流电机

1.12.2.步进电机理论1

1.12.3.步进电机理论2

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

1.12.5.步进电机编程实践



第二部分、章节介绍

1.12.1.直流电机
    本节讲述电机的分类,直流电机的工作原理、驱动方法,并且使用电源直接驱动、使用电机驱动芯片驱动2种方式来驱动电机工作。
1.12.2.步进电机理论1
    本节首先介绍什么是步进电机,然后讲了步进电机的三个重要概念:步距角、相数和细分
1.12.3.步进电机理论2
    本节首先讲了步进电机的极性、拍数等2个概念,然后详细论述了步进电机的驱动器和控制器的区别和联系。
1.12.4.开发板原理图分析说明
    本节分析我们开发板平台上的步进电机原理图,以及最重要的步进电机驱动器芯片的数据手册。
1.12.5.步进电机编程实践1
    本节首先确认接线,然后从零开始编程,使用单相四拍的方式驱动步进电机进行正转和反转,通过编程过程让大家进一步体会时序。
1.12.6.步进电机编程实践2
    本节接上节,按照时序来实现双相四拍、半步八拍这两种方式下步进电机的驱动。


  第三部分、随堂记录

1.12.1.直流电机

1.12.1.1、什么是电机
电机就是电动机,把电能转化成动能

原理:通电导线在磁场中受到力的作用

1.12.1.2、常见电机
(1)交流电机:两相(两根火线)、三相(三根火线)
(2)直流电机:永磁(永磁铁)、励磁(电磁铁,线圈磁生电) :玩具小车里面一般都是直流电机
(3)步进电机、伺服电机(可以精确控制,毫米级别的控制):精确控制尺寸,常用在机械的自动化控制。精度:伺服电机>步进电机     
1.12.1.3、直流电机详解
(1)外观


磁生电、电生力---这个力是安培力,微观上叫作洛伦兹力!

(2)接线和工作原理

支出来两根线,两个引脚没有正负之分,不同的接法,控制的是里面线圈的转动方向,也就是电机的转动方向!
可以插在单片机上先演示下:VCC和GND上!

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

1.12.1.4、直流电机实验
(1)直流电机直接接在开发板的主板的VCC和GND引出接口上看电机是否转动,还可以调换VCC和GND看电机是否反转了
(2)单片机的IO口是数字口,本身的驱动能力非常小(最多20mA级别),这个驱动能力是带不动电动机的。达不到额定功率!可以试试!
(3)一般单片机需要使用专门的驱动芯片来驱动电机(作用?)。驱动芯片的作用就是把单片机的小电流的控制信号转成逻辑上相同的大电流的驱动源。这就是所谓的弱电控制强电。用电机驱动芯片来驱动直流电机,具体的电路分析后面讲步进电机时会详细说。
单片机上的芯片,一种使用的驱动芯片是 TC1508S,另一种使用的驱动芯片是 ULN2003,两个都是可以驱动直流电机和步进电机的!


以ULN2003为例:

B是输入,C是输出,输入高输出低!

 

#include "reg52.h" 

typedef unsigned int u16; 
typedef unsigned char u8;

sbit moto=P1^0;

void delay(u16 i)
{
	while(i--);
}

void main()
{
		u8 i;
		moto=0; //关闭电机
		for(i=0;i<100;i++) //循环 100 次,也就是大约 5S
		{
				moto=1; //开启电机
				delay(5000); //大约延时 50ms
		}
		moto=0; //关闭电机
}

 

1.12.2.步进电机理论1

1.12.2.1、什么是步进电机
步进电机有三线式、 四线式、 五线式和六线式,但是控制方式都是一样的,都是用脉冲信号电流来驱动。假设每旋转一圈需要 200 个脉冲信号来励磁, 可以计算出每个励磁信号能使步进电机前进 1.8°。 其旋转角度与脉冲的个数成正比。步进电动机的正、反转由励磁脉冲产生的顺序来控制。
(1)外观

(2)功能特点

  • 给直流,不转
  • 给交流,不转
  • 要想转,必须按照时序给一定规律才可以转
     
  • 可以步进:精确控制旋转(角度)和距离(长度),一般用于精密的设备!

(3)操作接口:怎么接线
六线四相步进电机等效电路图:

B接正,/B接负、A接正,/A接负,每个线圈通电之后就形成电磁铁,就驱动转子转动。
四线双极性步进电机:原理和上图一样的!

1.12.2.2、步距角:步长
表示控制系统每发一个步进脉冲信号, 电机所转动的角度。
(1)每种类的步进电机有一个固有步距角,这个参数和步进电机本身有关。  一般二相电机的步距角为 0.9°/1.8°,三相为 0.75°/1.5°、五相为 0.36°/0.72°。
(2)步进电机一般情况下只能以固有步距角的整数倍来运动,这一个固有步距角的移动就叫一个节拍。
(3)电机还有个可以比固有步距角更小的运动方法,这种方法叫细分,由电机驱动器来支持的。(STC的单片机不支持细分,用到了再讲)
1.12.2.3、相数。步进电机电机内部的线圈组数:一般相数越高,步距角越小
1.12.2.4、细分

结论:我们用的是2相步进电机,四根线!

1.12.3.步进电机理论2

1.12.3.1、极性这里的极性,讲的是开发版上的极性驱动电路(驱动芯片),不是在电动机上!
(1)单极性:四颗晶体管来驱动步进电机的两组相位
(2)双极性:八颗晶体管来驱动两组相位,电路可以同时驱动四线式或六线式步进电机,虽然四线式电机只能使用双极性驱动电路。

1.12.3.2、拍数(就是时序)  链接
A:A+,A/:A-,B:B+,B/:B- 

(1)单相四拍        A-  B+  A+  B-    正转    
(2)双相四拍       A-B+  A+B+  A+B-  A-B- 正转
(3)半步八拍        A-  A-B+  B+  A+B+  A+  A+B-  B-  A-B- 正转   其实上面两个的结合!

反转就是时序反过来就行!

时序就是以时间为顺序的信息,从左到右依次置为1

举例1:
时序:A-  B+  A+  B-
四根线上电平
A+   A-   B+   B-
0    1     0      0        第1拍
0    0     1     0         第2拍
1     0     0     0        第3拍
0    0      0     1        第4拍
4个节拍加起来就是一个完整的周期,按照这个周期给步进电机供电,则步进电机就会正向转动1个步距角。

举例2:
时序:A-B+  A+B+  A+B-  A-B-
四根线上电平
A+  A-   B+   B-
0    1     1      0        第1拍
1    0     1     0         第2拍
1     0     0     1        第3拍
0    1      0     1        第4拍

举例3:
时序:A-  A-B+  B+  A+B+  A+  A+B-  B-  A-B-
四根线上电平
A+  A-   B+   B-
0    1     0     0        第1拍
0    1     1     0        第2拍
0     0    1     0        第3拍
1     0    1     0        第4拍
1     0    0     0        第5拍
1    0     0     1        第6拍
0     0     0    1        第7拍
0    1      0    1        第8拍

1.12.3.3、控制器和驱动器
(1)一套步进电机的系统需要三部分:控制器+驱动器+步进电机
(2)一般情况下:控制器就是单片机驱动器一般是接在单片机的IO口上面的专用电机驱动芯片(譬如我们开发板上的TC1508S)
(3)控制器负责产生时序信号驱动器负责将时序信号转成功率驱动信号给步进电机用。

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

1.12.4.1、原理图分析

把单片机的高低电平转化成可以驱动步进电机的高低电平!
(1)原理图中INA、INB、INC、IND将来要接单片机的IO口,单片机是做控制器的,通过单片机的IO口给驱动器芯片输入1或者0的控制信号,控制信号经过TC1508S的转换,从OUTA、OUTB、OUTC、OUTD四个脚输出具有驱动步进电机能力的驱动信号。

(2)输出端:

所以这里面有个对应关系:OUTA(A+)、OUTB(A-)、OUTC(B+)、OUTD(B-)。
(3)接线:
使用 P1.0-P1.3 管脚来控制 TC1508S 输入,即将 P1.0-P1.3 管脚依次连接到 J80 的 INA、INB、INC、IND 管脚
四线双极性步进电机的 4 根线接到 J81 端子,即将 A+接 OUTA,A-接 OUTB,B+接 OUTC,B-接OUTD。

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

1.12.4.2、电机驱动芯片数据手册


1.12.5.步进电机编程实践

1.12.5.1、接线
(1)使用 P1.0-P1.3 管脚来控制 TC1508S 输入,即将 P1.0-P1.3 管脚依次连接到 J80 的 INA、INB、INC、IND 管脚
(2)四线双极性步进电机的 4 根线接到 J81 端子,即将 A+接 OUTA,A-接 OUTB,B+接 OUTC,B-接OUTD。
(3)根据上面的接线,实际得到的接线逻辑是:P1.0和P1.1对应一组线圈(A+,A-),而P1.2和P1.3对应另一组线圈。(B+,B-)

1.12.5.2、单相四拍方式驱动
(1)时序编程            A- B+ A+ B-

    A+   A-    B+     B-
    0    1     0      0        第1拍(0x02)
    0    0     1      0        第2拍(0x04)
    1    0     0      0        第3拍(0x01)
    0    0     0      1        第4拍(0x08)

(2)转速控制:   转速是由脉冲信号的频率控制的,频率==周期的倒数,你的时间越短,频率越高!时间其实就是delay!小风扇调档!
控制delay时间长短,就可以控制转速!


(3)正转与反转:

#include "reg52.h" 

typedef unsigned int u16; 
typedef unsigned char u8;

//sbit OUTAP = P1^0;
//sbit OUTAN = P1^1;
//sbit OUTBP = P1^2;
//sbit OUTBN = P1^3;

void delay(u16 i)  //
{
	while(i--);
}
u8  motor1_4[] = {0x02,0x04,0x01,0x08};
//u8 	motor2_4[] = {0x06,0x05,0x09,0x0A};
//u8  motor12_8[] = {0x02,0x06,0x04,0x05,0x01,0x09,0x08,0x0A};

void main()
{
		u8 i;
		u8 j;
		for(i=0;i<100;i++) //循环 100 次,也就是大约 5S
		{	
				for(j=0;j<4;j++)
				{
						P1 = motor1_4[j];//正转
						delay(500); //大约延时 5ms
				}	
		}
}

1.12.5.3、双相四拍方式驱动 

 时序:  A-B+   A+B+   A+B-   A-B-

    A+   A-    B+     B-
    0    1     1      0        第1拍(0x06)
    1    0     1      0        第2拍(0x05)
    1    0     0      1        第3拍(0x09)
    0    1     0      1        第4拍(0x0A)

1.12.5.4、半步八拍方式驱动        
时序:A-   A-B+   B+   A+B+   A+   A+B-   B-   A-B-

    A+   A-    B+    B-
    0    1     0     0        第1拍(0x02)
    0    1     1     0        第2拍(0x06)
    0    0     1     0        第3拍(0x04)
    1    0     1     0        第4拍(0x05)
    1    0     0     0        第5拍(0x01)
    1    0     0     1        第6拍(0x09)
    0    0     0     1        第7拍(0x08)
    0    1     0     1        第8拍(0x0A)



本节程序下载链接:电机
本节课结束!

 

  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: 步进电机是一种常见的控制设备,它可以被广泛应用于各种机器人、自动化设备等领域。stc89c52单片机是一种很好的控制器件,它具有多种功能和应用,可以用于控制步进电机的正反转。 首先,我们需要通过stc89c52单片机的GPIO口连接步进电机的驱动电路,并将电机的相序线接在相应的引脚上。接着,我们需要编写程序来控制步进电机的运动。 对于步进电机的正反转,我们可以通过控制GPIO口的电平来实现。具体步骤如下: 1. 定义控制口和方向口,并初始化为输出状态。 2. 设置正转和反转时两端口控制电平的值。 3. 通过控制GPIO口的电平来控制步进电机的正反转。 具体实现代码如下所示: ```c #include "reg52.h" sbit DIR = P2^0; sbit CTRL = P2^1; void delay(int k) //定义一个延迟函数 { int i, j; for (i = 0; i < k; i++) for (j = 0; j < 100; j++); } void main() { DIR = 0; //设定方向口为输出状态 CTRL = 0; //设定控制口为输出状态 while (1) { DIR = 0; //正转方向 CTRL = 1; //控制口电平高 delay(500); CTRL = 0; //控制口电平低 delay(500); DIR = 1; //反转方向 CTRL = 1; //控制口电平高 delay(500); CTRL = 0; //控制口电平低 delay(500); } } ``` 在程序中,我们使用了一个延迟函数,用于将步进电机转动一定角度后再进行下一步操作,这样可以让电机的转动更加精确。需要注意的是,步进电机的转动角度和速度取决于程序中设定的延迟时间,因此需要根据具体要求进行调整。 总的来说,通过stc89c52单片机控制步进电机的正反转需要进行GPIO口的连接和程序的编写,具体实现过程需要注意细节,并进行不断调试才能得到满意的结果。 ### 回答2: 步进电机是一种常用的电机类型,它能够根据控制信号按照一定步长旋转,而且旋转方向也可以控制。stc89c52单片机是一种常见的嵌入式控制器,可以通过编程控制步进电机的正反转。 要实现stc89c52单片机控制步进电机正反转,首先需要了解步进电机控制的基本原理。步进电机有两种控制模式:单相驱动和双相驱动。单相驱动只需要两个输出端口分别接入一组相邻的绕组,然后在两组绕组之间依次切换电压,即可实现单相驱动的步进电机转动。双相驱动需要四个输出端口,分别接入两组独立的绕组,然后通过依次切换绕组的激励顺序,实现步进电机的旋转。 对于stc89c52单片机控制步进电机,需要编写控制程序,将控制信号输出到步进电机的各个端口,实现步进电机的正反转。具体控制程序如下: 1. 定义所需的引脚 在程序开始部分,需要定义所需要的控制引脚。由于步进电机是双相驱动,因此需要4个引脚,分别对应步进电机的两组绕组。例如,P1口的0~3号引脚可以定义为步进电机的A、B、C、D四个引脚。初始化时需要将这4个引脚全部设置为输出模式。 2. 输出控制信号 根据步进电机的型号和控制方式,可以确定控制信号的输出顺序和间隔时间。比如,如果步进电机采用全步进驱动方式,每当接收到一个脉冲信号时,控制程序应该按照AB-BC-CD-DA的顺序依次输出5V和0V,控制步进电机向前进行全步进转动。若需要反转,则反向输出控制信号。 3. 改变控制信号的频率 如果需要控制步进电机转速,可以改变控制信号输出的频率。可以使用定时器控制时间间隔,或者使用PWM控制输出信号的占空比,从而控制步进电机的速度。 需要注意的是,步进电机有很多种驱动模式和控制方式,不同的控制方法需要使用不同的控制程序。在编写程序时,需要根据步进电机的实际情况和厂家提供的控制方法进行选择。另外,步进电机转速和控制信号频率之间存在一定的关系,需要合理选择控制参数以达到预期的转速效果。 ### 回答3: stc89c52单片机是一款高性能、低功耗的8位单片机,具有广泛的应用场景。其中,控制步进电机正反转是常见的应用之一。在实现步进电机正反转控制的过程中,需要考虑以下几个方面的问题。 第一,连接电路设计。步进电机需要采用专用的驱动电路,其中包括四个电平转换器、四个功率驱动管和一个电源电路等。单片机需要通过输出端口控制驱动电路的工作。在电路连接过程中,要合理规划引脚的分配,防止接法错误和电压过载。 第二,程序设计。步进电机正反转的控制是通过程序来实现的。在程序设计中,需要使用STC官方开发工具来编写代码,并将其上传到单片机中。在程序编写中,需要考虑到步进电机的转动速度和步进角度,以及正反转控制等问题。同时,还需要制定严谨的程序测试流程,包括代码调试和单片机模块测试等环节。 第三,电气安全问题。在实现步进电机控制的过程中,一定要注意电气安全问题。步进电机需要使用高压电源进行驱动,而单片机内部的电路也需要与其他电气元件进行连接。因此,在使用过程中一定要注意电路的安全性,防止发生过压、短路等意外情况。 综上所述,stc89c52单片机控制步进电机正反转需要进行严密的连接电路设计、程序代码编写和电气安全问题的考虑。只有通过科学规划和精密实施,才能实现单片机步进电机的完美结合,为实现各类步进电机控制应用提供强有力的保障。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

搞IC的小冯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值