2025年ULN2003步进电机驱动电路详解

ULN2003步进电机驱动电路详解一 ULN2003 芯片介绍 ULN2003 是高耐压 大电流达林顿陈列 由七个硅 NPN 达林顿管组成 该电路的特点如下 ULN2003 的每一对达林顿都串联一个 2 7K 的基极电阻 在 5V 的工作电压下它能与 TTL 和 CMOS 电路直接相连 可以直接处理原先需要标准逻辑缓冲器来处理的数据 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); } }

讯享网

小讯
上一篇 2025-01-08 15:51
下一篇 2025-03-13 15:04

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/68971.html