单片机第一季:零基础9——直流电机和步进电机

目录

1,直流电机

2,步进电机 


1,直流电机

直流电机是指能将直流电能转换成机械能(直流电动机)或将机械能转换成直流电能(直流发电机)的旋转电机。它是能实现直流电能和机械能互相转换的电机。当它作电动机运行时是直流电动机,将电能转换为机械能;作发电机运行时是直流发电机,将机械能转换为电能。

直流电机的结构应由定子和转子两大部分组成。直流电机运行时静止不动的部分称为定子,定子的主要作用是产生磁场,由机座、主磁极、换向极、端盖、轴承和电刷装置等组成。运行时转动的部分称为转子,其主要作用是产生电磁转矩和感应电动势,是直流电机进行能量转换的枢纽,所以通常又称为电枢,由转轴、电枢铁心、电枢绕组、换向器和风扇等组成。
直流电机没有正负之分,在两端加上直流电就能工作。需要知道直流电机的额定电压和额定功率,不能使之长时间超负荷运作。在交换接线后,可以形成正反转。

前面讲过,51 单片机主要是用来控制而非驱动,如果直接使用芯片的GPIO管脚去驱动大功率器件,要么将芯片烧坏,要么就驱动不起来。所以要驱动大功率器件,比如电机。就必须搭建驱动电路,开发板上板载的驱动芯片是ULN2003,该芯片是一个单片高电压、高电流的达林顿晶体管阵列集成电路。不仅可以用来驱动直流电机,还可用来驱动五线四相步进电机,比如28BYJ-48 步进电机。本章我们使用ULN2003 来驱动直流电机,下面来具体介绍下ULN2003 芯片的使用。


ULN2003 是一个单片高电压、高电流的达林顿晶体管阵列集成电路。它是由7 对NPN 达林顿管组成的,它的高电压输出特性和阴极箝位二极管可以转换感应负载。单个达林顿对的集电极电流是500mA。达林顿管并联可以承受更大的电流。此电路主要应用于继电器驱动器,字锤驱动器,灯驱动器,显示驱动器(LED 气体放电),线路驱动器和逻辑缓冲器。ULN2003 的每对达林顿管都有一个2.7k串联电阻,可以直接和TTL 或5V CMOS 装置。 

单片机第一季:零基础9——直流电机和步进电机_第1张图片 

从上图中可以看出,该电路是独立的,芯片的输入通过J46 端子提供,芯片的输出由J47 端子引出。J46 输入对应J47 输出,而J47 则是提供给外部连接电机的接口,可以支持直流电机、五线四相步进电机28BYJ-48 连接。由于该模块电路是独立的,所以使用任意单片机管脚都可以,为了与我们例程程序配套,这里使用P1.0 管脚来控制ULN2003 输出,即将P1.0 管脚连接到J46 的IN1,直流电机的两根线接J47 端子的1、2 脚即5V 和O1。

因此可通过单片机P1.0 口输出高电平来控制电机旋转,输出低电源控制电机停止。注意:单片机P1.0 输出低电平时,ULN2003 的OUT1 并不会输出高电平导致停止,而是因为集电极开路,导致电机无电流流入致使停止。  

/********************************************************************
******************
实验名称:直流电机实验
接线说明:
实验现象:下载程序后,直流电机旋转5S 后停止
注意事项:将直流电机两根线分别连接到“步进电机模块”输出端子J47 的5V 和O1 上。
*********************************************************************
******************/
#include "reg52.h"
typedef unsigned int u16; //对系统默认数据类型进行重定义
typedef unsigned char u8;

//定义直流电机控制管脚
sbit DC_Motor=P1^0;
#define DC_MOTOR_RUN_TIME 5000 //定义直流电机运行时间为5000ms
/********************************************************************
***********
* 函数名: delay_ms
* 函数功能: ms 延时函数,ms=1 时,大约延时1ms
* 输入: ten_us
* 输出: 无
*********************************************************************
**********/
void delay_ms(u16 ms)
{
	u16 i,j;
	for(i=0;i0;j--);
}
/********************************************************************
***********
* 函数名: main
* 函数功能: 主函数
* 输入: 无
* 输出: 无
*********************************************************************
**********/
void main()
{
	DC_Motor=1;//开启电机
	delay_ms(DC_MOTOR_RUN_TIME);
	DC_Motor=0;//关闭电机
	while(1)
	{
	}
}

2,步进电机 

 本章所要实现的功能是:通过ULN2003 驱动模块控制28BYJ48 步进电机运行方向及速度,当按下KEY1 键可调节电机旋转方向;当按下KEY2 键,电机加速;当按下KEY3 键,电机减速。

步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。这一线性关系的存在,加上步进电机只有周期性的误差而无累计误差等特点。使得在速度、位置等控制领域用步进电机来控制变的非常的简单。虽然步进电机已被广泛的应用,但步进电机并不能像普通的直流电机,交流电机在常规下使用。它必须由双环形脉冲信号、功率驱动电路等组成控制系统方可使用。因此用好步进电机也并非易事,它涉及到机械、电机、电子及计算机等多专业知识。 

通常步进电机的转子为永磁体,当电流流过定子绕组时,定子绕组产生一矢量磁场。磁场会带动转子旋转一定的角度,使得转子的一对磁场方向与定子的磁场方向一致。当定子的矢量磁场旋转一个角度。转子也随着该磁场转步距角。每输入一个电脉冲,电动机转动一个角度前进一步。它输出的角位移与输入的脉冲数成正比、转速与脉冲频率成正比。改变绕组通电的顺序,电机就会反转。所以可以控制脉冲数量、频率及电动机各相绕组的通电顺序来控制步进电机的转动。 

 

 

 

你可能感兴趣的:(单片机,单片机,嵌入式硬件)