【51单片机系列】直流电机使用

本文是关于直流电机使用的相关介绍。


51单片机的应用中,电机控制方面的应用也很多。在学习直流电机(PWM)之前,先使用GPIO控制电机的正反转和停止。但不能直接使用GPIO来驱动电机,需要用相应的驱动芯片来实现。

这里使用ULN2003芯片来驱动电机,实现的功能是:直流电机工作约5s后停止。

一、直流电机介绍

直流电机是指能将直流电能转换成机械能(直流电动机),或将**机械能转换成直流电能(直流发电机)**的旋转电机,它是能实现直流电能和机械能互相转换的电机。

当它作电动机运行时是直流电动机,将电能转换为机械能;作发电机运行时是直流发电机,将机械能转换为电能。

直流电机的结构由定子和转子两大部分组成。

  • 直流电机运行时静止不动的部分称为定子,定子的主要作用是产生磁场,由机座、主磁极、换向极、端盖、轴承和电刷装置等组成。
  • 运行时转动的部分称为转子,其主要作用是产生电磁转矩和感应电动势,是直流电机进行能量转换的枢纽,所以通常又称为电枢,由转轴、电枢铁心、电枢绕组、换向器和风扇等组成。

直流电机没有正负之分,在两端加上直流电就能工作。需要知道直流电机的额定电压和额定功率,不能使之长时间超负荷运作。在交换接线后,可以形成正反转。

其中一种直流电机的参数如下:

轴长:8mm;轴径:2mm;电压1-6V;参考电流:0.35-0.4A;

直流电机外观实物如下:

直流电机实物外观

内部结构如下:

直流电机内部结构图

二、ULN2003芯片介绍

51单片机主要是用来控制而非驱动,如果直接使用芯片的GPIO管脚驱动大功率器件,要么将芯片烧坏,要么驱动不起来。所以要驱动大功率器件,比如电机,就必须搭建外部驱动电路。

这里使用ULN2003芯片进行驱动,该芯片在蜂鸣器使用时已经介绍过,这里再重新介绍下。

ULN2003芯片是一个单片高电压、高电流的达林顿晶体管阵列集成电路,不仅可以用来驱动直流电机,还可以用来驱动五线四相步进电机,比如28BYJ-48步进电机。

ULN2003是由7对NPN达林顿管组成,它的高电压输出特性和阴极箝位二极管可以转换感应负载。单个达林顿对的集电极电流是500mA。达林顿管并联可以承受更大的电流。此电路主要应用于继电器驱动器,字锤驱动器,灯驱动器,显示驱动器(LED气体放电),线路驱动器和逻辑缓冲器。

ULN2003的每对达林顿管都有一个2.7K串联电阻,可以直接和TTL或5V CMOS装置。

ULN2003的主要特点:

  • 500mA额定集电极电流(单个输出)
  • 高电压输出:50V
  • 输入和各种逻辑类型兼容
  • 继电器驱动器

UL2003N的逻辑框图如下:

ULN2003逻辑框图

从上图中可以理解该芯片的使用方法,其内部相当于非门电路,当输入高电平时输出低电平,当输入低电平时输出截止。

如果使用该芯片驱动直流电机,只可实现单方向控制,电机一端接电源正极,另一端接芯片的输出口。

如果想控制五线四相步进电机,则可将四路输出接到步进电机的四相上,点击另一条线接电源正极。

三、在proteus中仿真实现对电机的驱动

使用ULN2003芯片控制五线四相步进电机,proteus仿真设计如下

proteus仿真ULN2003控制五线四相步进电机

芯片的输入通过单片机的P1^0 ~ P1^5 IO口提供,输出连接到步进电机。

软件设计如下:

/*
	实现功能:ULN2003芯片控制直流电机转动
	[2023-12-13] zoya
*/
#include "reg52.h"
#include "intrins.h"
#include "typedef.h"

sbit moto1 = P1^0;

// 延时函数,i=1时延时10us
void Delay(u16 i)
{
    
    
	while(i--);
}

void main()
{
    
    
	u8 i;
	moto1 = 0;  // 关闭电机
	for(i=0;i<10;i++) {
    
    
		moto1 = 1; // 开启电机
		Delay(5000);  // 延时大约50ms
	}
	moto1 = 0;  // 关闭电机
	
	while(1)
	{
    
    
	}	
}

仿真结果:

ULN2003控制电机转动

猜你喜欢

转载自blog.csdn.net/sinat_41752325/article/details/134973910