电机

*觉得有用有帮助的评论下,谢谢~

电机

  • 电机的分类有挺多的,按用途来看的话就有 驱动类电机控制类电机

dainj

左为 四线双极性电机 ,右为 直流电机

直流电机

  • 属于驱动类电机,是将动能转化为机械能,主要用在电钻、电风扇、洗衣机等设备上,如我们小时候玩的四驱车大多数为直流电机

步进电机

  • 又分为 反应式永磁式混合式 三种
反应式

结构简单成本低,但动态性能差、效率低、发热大、可靠性低,基本被淘汰

永磁式

动态性能好、输出力矩较大,但误差相对来说较大一些,价格低,广泛应用于消费产品

混合式

综合了上两种的优势,精度也很高,但结构相对复杂,价格也相对较高,主要用于工业。

驱动

  • 驱动 直流电机 的方法也很简单,像我们小时玩的时候,直接是用电池一正一负接上去,这里我们也是一样,但是单片机的IO口的驱动能力不足以驱动我们的直流电机,所以我们需要用到芯片来帮我们驱动直流电机
ULN2003芯片

如图,输入与输出之间用的是 逻辑非 ,也就是说我们在 输入端 输入 0 ,在 输出端 得到的就是 1

而驱动 直流电机 只需让它的两个引脚一正一负就行了

  • 驱动步进电机需了解该电机的特性与相位,我用的步进电机则是 四线双极性 电机,它有两个绕组,每个绕组有两根线(A+A-B+B-),想要驱动它,我看教程上的运行方式是(A+)—(A-)—(B+)—(B-),但我试了一下后,电机并没有转动,只是一直在抖动,后来我将它改为 A+B+A-B-轮流为高电平,它就正常转动了
  • 同样,想要驱动步进电机,IO口的驱动能是达不到要求的,我们同样要用芯片来帮我们驱动它
TC1508S芯片

该芯片可以用来驱动四线双极性步进电机,同时也可以用它来驱动直流电机,上一个芯片驱动直流电机无法做到控制正反转

步进电机驱动程序

#include <STC89C5xRC.H>
#include "intrins.h"

void delay2ms()   //误差 0us
{
    unsigned char a,b;
    for(b=4;b>0;b--)
        for(a=248;a>0;a--);
    _nop_();  //if Keil,require use intrins.h
}

//unsigned char code BeatCode[4]=
//{
//	0x0d,0x07,0x0e,0x0b    //A+—B+—A-—B-
//};
unsigned char code BeatCode[4]=
{
	0x0b,0x0e,0x07,0x0d    //B-—A-—B+—A+
};

void main()
{
	unsigned char x;
	unsigned char tmp;
	while(1)		
	{
		tmp=P1;
		tmp=tmp&0xf0;				//与上0,低四位清零
		tmp=tmp|BeatCode[x];		//在或,给低四位输入数据
		P1=tmp;						//在把低四位的数据和高四位的原值传回给P1
		x++;
		if(x==4)						//x=x&0x03,到4归零
		{
			x=0;
		}
		delay2ms();					//延时,不然会发现步进电机在抖动
	}
}

要注意的是在切换时要有延时,不同的步进电机所需的延时时间也是有所不同,需要自己去测试

  • 这样就完成了简单的电机驱动,精确的驱动等我学会了在说哈,目前实力不足。。。
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值