【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的逻辑框图如下:
从上图中可以理解该芯片的使用方法,其内部相当于非门电路,当输入高电平时输出低电平,当输入低电平时输出截止。
如果使用该芯片驱动直流电机,只可实现单方向控制,电机一端接电源正极,另一端接芯片的输出口。
如果想控制五线四相步进电机,则可将四路输出接到步进电机的四相上,点击另一条线接电源正极。
三、在proteus中仿真实现对电机的驱动
使用ULN2003芯片控制五线四相步进电机,proteus仿真设计如下
芯片的输入通过单片机的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)
{
}
}
仿真结果: