uln2003驱动步进电机,ULN2003驱动步进电机的PROTEUS程序

基准/监控/保护电路

66人已加入

描述

  步进电机简而言之就是能够通过输入脉冲的个数,确定旋转的角位移,一般用他来控制小车轮子的偏移角度等。

  ULN2003是内部结构是达林顿管的列阵:

  ULN2003

  ULN2003是一个非门电路,包含7个单元,各二极管的正极分别接各达林顿管的集电极。用于感性负载时,该脚接负载电源正极,起续流作用(在感性负载中,电路断开后会产生很大的反电动势,为防止损坏达林顿管,接反相的二极管来构成通路,使之转换为电流)。

  何为达灵顿管?达林顿管由两个三极管组成,如图2

  ULN2003

  将两个三极管串联,第一个管子的发射极接第2个管子的基极,所以达林顿管的放大倍数是两个三极管放大倍数的乘积,具有很大的放大倍数。集电极开路,能输出较大的电流(集电极电位高)。

  IC的典型应用如图3

  ULN2003

  利用ULN2003与MCU引脚相连,可以驱动步进电机。IC的作用主要在于放大驱动电流。本次实验的驱动对象为28BYJ-48型步进电机(五线四相),基本电路如图所示:

  ULN2003

  再来讲讲二极管的作用,驱动电流断开时,电机内的电感产生很大的反电动势,每一个单元的二极管都与三极管的集电极相连,产生反电动势时就构成了放点回路,从而保护了三极管。

    ULN2003驱动步进电机的PROTEUS程序

  #include 《reg51.h》

  #include 《absacc.h》

  sbit p10=P1^0;

  sbit p11=P1^1;

  sbit p12=P1^2;

  #define UP 20

  #define DOWN 30

  #define STOP 40

  void delay()//延时程序

  {

  unsigned i,j,k;

  for(i=0;i《0x02;i++)

  for(j=0;j《0x02;j++)

  for(k=0;k《0xff;k++);

  }

  main()

  {

  unsigned char temp;

  while(1)

  {

  if(p10==0)

  {

  temp=UP;//控制正转

  P2=0X00;

  delay();

  }

  if(p11==0)

  {

  temp=DOWN;//控制反转

  P2=0X00;

  delay();

  }

  if(p12==0)

  {

  temp=STOP;//控制停止

  }

  switch(temp)

  {

  case DOWN : P2=0X01;//控制反转 //0011

  delay();

  delay();

  P2=0X02;//0110

  delay();

  delay();

  P2=0X04;//1100

  delay();

  delay();

  P2=0X08;//1001

  delay();

  delay();

  break;

  case UP : P2=0X08;//控制正转

  delay();

  delay();

  P2=0X04;

  delay();

  delay();

  P2=0X02;

  delay();

  delay();

  P2=0X01;

  delay();

  delay();

  break;

  case STOP ://控制停止

  P2=0X00;

  delay();

  delay();

  break;

  }

  }

  }

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论(0)
发评论
白夜柏 2018-01-29
0 回复 举报
有么偶有STM32的 收起回复

全部0条评论

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

×
20
完善资料,
赚取积分