直流电机与步进电机

难的东西学不会是因为简单的知识没学好

基础不牢,地动山摇

1.0直流电机

1.0.0什么是电机

(1)电机:就是电动机,有电能产生动能的一种装置。简称电机

1.0.1分类(不完全分类)

(1)交流电机:没有正负,
(2)直流电机:永磁 励磁
(3)步进电机(精度不是特别高)、伺服电机(精度高于步进电机):精确控制

1.0.1直流电机

(1)单片机IO口不能直接驱动直流电机。因为单片机的IO口的驱动能力很弱(一般20ma左右)
(2)单片机的IO口是数字的,
(3)直流电机没有正负之分,调换两个接线柱,电机的运行方向发生翻转,顺时针转动与逆时针转动的区别。

1.1步进电机

1.1.0

(1)特点:精确控制旋转角度。
(2)步距角:也可以说是步长,就是电机一次走多少距离。走的距离越小,那么说明精度越高。步进电机有一个固定的步距角,这个角度和步进电机本身有关。一般有1.8° 与 1.2°的。
(3)相数:步进电机中的绕组的个数。2 3 4相等,相数越多步距角度越小,控制越精确。
(4)细分:一般是控制芯片实现的,对于步进电机的固定步距角再进行细分。使得控制更加精确。

1.1.1

(1)极性:单极性和双极性

(2)拍数
单相四拍 A/ B A B/ 正转
双相四拍 A/B AB AB/ A/B/ 正转
半步八拍 A/ A/B B AB A AB/ B/ A/B/

时序: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个步距角。

时序:A/B AB AB/ 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)要控制步进电机的运转:需要控制器 ,驱动器 步进电机本身三部分。
控制器一般就是MCU 驱动器就是专门的电机驱动芯片,具有强的驱动能力。

1.2代码实践

#include <reg51.h>

/*
**	接线:
		A	P1^0
		B 	P1^1
		C	P1^2
		D	P1^3
		OUTA对应A-、OUTB对应A+、OUTC对应B-、OUTD对应B+。
*/
#define TIME 10

sbit APositive = P1^1;
sbit ANegative = P1^0;
sbit BPositive = P1^3;
sbit BNegative = P1^2;
void delay(unsigned char t);

// 单相四拍	   A/ B A B/
// 双相四拍	   A/B  AB  AB/ A/B/
// 半步八拍	   A/  A/B  B  AB  A  AB/  B/  A/B/
void main(void)
{
	while(1)
	{
		
		// 单相四拍	   A/ B A B/
		ANegative = 1;
		BPositive = 0;	
		APositive = 0;	
		BNegative = 0;
		delay(TIME);
	
		ANegative = 0;
		BPositive = 1;	
		APositive = 0;	
		BNegative = 0;
		delay(TIME);
	
		ANegative = 0;
		BPositive = 0;	
		APositive = 1;	
		BNegative = 0;
		delay(TIME);
	
		ANegative = 1;
		BPositive = 0;	
		APositive = 1;	
		BNegative = 0;
		delay(TIME);
	
		ANegative = 0;
		BPositive = 0;	
		APositive = 0;	
		BNegative = 1;
		delay(TIME);
		
		/*
		// 双相四拍	   A/B  AB  AB/ A/B/
		ANegative = 1;
		BPositive = 1;	
		APositive = 0;	
		BNegative = 0;
		delay(TIME);

		ANegative = 0;
		BPositive = 1;	
		APositive = 1;	
		BNegative = 0;
		delay(TIME);

		ANegative = 0;
		BPositive = 0;	
		APositive = 1;	
		BNegative = 1;
		delay(TIME);

		ANegative = 1;
		BPositive = 0;	
		APositive = 0;	
		BNegative = 1;
		delay(TIME);
		*/

		/*
		// 单相八拍	   A/  A/B  B  AB  A  AB/  B/  A/B/
		ANegative = 1;
		BPositive = 0;	
		APositive = 0;	
		BNegative = 0;
		delay(TIME);

		ANegative = 1;
		BPositive = 1;	
		APositive = 0;	
		BNegative = 0;
		delay(TIME);

		ANegative = 0;
		BPositive = 1;	
		APositive = 0;	
		BNegative = 0;
		delay(TIME);
		//A/  A/B  B  AB  A  
		ANegative = 0;
		BPositive = 1;	
		APositive = 1;	
		BNegative = 0;
		delay(TIME);

		ANegative = 0;
		BPositive = 0;	
		APositive = 1;	
		BNegative = 0;
		delay(TIME);

		//AB/  B/  A/B/

		ANegative = 0;
		BPositive = 0;	
		APositive = 1;	
		BNegative = 1;
		delay(TIME);

		ANegative = 0;
		BPositive = 0;	
		APositive = 0;	
		BNegative = 1;
		delay(TIME);

		ANegative = 1;
		BPositive = 0;	
		APositive = 0;	
		BNegative = 1;
		delay(TIME);
		*/


	}

	
		
}

void delay(unsigned char t)
{
	unsigned char a,b;
	for(a=0;a<200;a++)
		for(b=0;b<t;b++);
}

留几个问题:

(1)单相四拍、双相四拍、半步八拍的之间的特点与差异?
除了每一个后者比前这的速度慢了,动力大了,还有那些差别。半步八拍控制的精度比前者高了。
(2)如果编程严格的按找节拍来,或者说是编程时有失误,假如中间某一个节拍错了,会发生什么情况?有什么隐患?(我代码简单实验了一下,感觉上还是正常转动。但是会不会发热或者什么的不太清楚。)
(3)也就是简单的了解下电机的基础知识而已,有相关的项目了再深入研究吧!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值