ULN2003芯片的主要作用

描述

一.ULN2003芯片介绍

ULN2003 是高耐压、大电流达林顿陈列,由七个硅 NPN 达林顿管组成。该电路的特点如下:

  1. ULN2003 的每一对达林顿都串联一个 2.7K 的基极电阻,在 5V 的工作电压下它能与 TTL 和 CMOS 电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。
  2. ULN2003 工作电压高,工作电流大,灌电流可达 500mA,并且能够在关态时承受 50V 的电压,输出还可以在高负载电流并行运行。
  3. ULN2003 采用 DIP-16 或 SOP-16 塑料封装。

步进电机

ULN2003内部电路框图及封装图

主要作用:ULN2003的主要作用就是为单片机提供大电流的驱动能力,以此达到驱动步进电机所需的电流。

二.28BYJ-48五线四相电机介绍

28BYJ-48步进电机为五线四相永磁式步进电机,其名称含义为:“28”为电机直径28mm,B为步进电机,Y表示电机为永磁式,J表示内部自带减速箱,48表示驱动方式为四相八拍;

(1)28BYJ-48步进电机参数

步进电机

对于初学者,对于以上参数,可以先注意以上几个主要参数:工作电压为DC5-12V;步距角为5.625°,即电机转一圈需要的步数=360/5.625*64=4096步,驱动方式为四相四拍或四相八拍。

(2)28BYJ-48步进电机电路图

步进电机

从电路图可以看出,五线四相表示电机有4个线圈,5根接线端子,其中引脚5为公共端。

三.ULN2003步进电机驱动模块

(1)驱动模块电路图如下:

步进电机

其中IN1-4引脚为ULN2003的控制端,主要连接单片机引脚,高电平导通,低电平截止;OUT1-4为ULN2003的驱动端,主要连接步进电机4个相线。LED1-4为指示作用,ULN2003通道导通时亮,截止时灭。

VCC主要为ULN2003内部续流二极管的公共端,VM为步进电机的驱动电压;VCC与VM的工作电压需保持一直。

步进电机

ULN2003模块与电机实物图

(2)单片机与驱动模块连接图

步进电机

ULN2003与单片机、步进电机电路连接图,步进电机以5V为工作电压。

四.驱动程序

步进电机的驱动方式主要为四相四拍或四相八拍;

四相四拍为步进电机的导通顺序为:

(1)正转:A-B-C-D;

(2)反转:D-C-B-A;

四相八拍为步进电机的导通顺序为:

(3)正转:AD-A-AB-B-CB-C-DC-D;

(4)反转:D-DC-C-CB-B-BA-A-AD;

程序以四相四拍为例:

*******************************************************
接线方式:
IN1 ---- P00
IN2 ---- P01
IN3 ---- P02
IN4 ---- P03
*********************/
#include< reg52.h >
#define uchar unsigned char
#define uint  unsigned int
#define MotorData P0                    //步进电机控制接口定义
uchar phasecw[4] ={0x08,0x04,0x02,0x01};//正转 电机导通相序 D-C-B-A
uchar phaseccw[4]={0x01,0x02,0x04,0x08};//反转 电机导通相序 A-B-C-D
//ms延时函数
void Delay_xms(uint x)
{
 uint i,j;
 for(i=0;i< x;i++)
  for(j=0;j< 112;j++);
}
//顺时针转动
void MotorCW(void)
{
 uchar i;
 for(i=0;i< 4;i++)
  {
   MotorData=phasecw[i];
   Delay_xms(4);//转速调节
  }
}
//逆时针转动
void MotorCCW(void)
{
 uchar i;
 for(i=0;i< 4;i++)
  {
   MotorData=phaseccw[i];
   Delay_xms(4);//转速调节
  }
}
//停止转动
void MotorStop(void)
{
 MotorData=0x00;
}
//主函数
void main(void)
{
 uint i;
 Delay_xms(50);//等待系统稳定
 while(1)
 {
  for(i=0;i< 500;i++)
  {
   MotorCW();   //顺时针转动
  } 
  MotorStop();  //停止转动
  Delay_xms(500);
  for(i=0;i< 500;i++)
  {
   MotorCCW();  //逆时针转动
  } 
  MotorStop();  //停止转动
  Delay_xms(500);  
 }
}
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分