STM32F107+ULN2003+步进电机
步进电机驱动原理及应用程序

∙ULN2003步进电机驱动原理及应用程序∙发布时间:2011-5-9 10:38:11 | 来源: 第一价值网| 查看: 1191次| 收藏| 打印TAG:ULN2003 步进电机驱动 ULN2003原理 ULN2003应用程序步进电机的基本原理我就不说了,百度能找出一大片来,,简而言之就是能够通过输入脉冲的个数,确定旋转的角位移,一般用他来控制小车轮子的偏移角度等。
来看看步进电机:型号为MP28GA的步进电机(左)和ULN2003APG的驱动芯片(右),具体参数如下:电压DC.V电阻(25°C)Ω步距角°减速比牵入转矩mN.m自定位转矩mN.m5 50 5.625/64 1/64 ≥40≥34.3空载牵入频率Hz空载牵出频率Hz绝缘电阻DC.500V绝缘介电强度AC.600V.1mA.1S温升K噪音dB(A)≥500≥900≥50MΩ无击穿或飞弧<40 <40 MP28GA的步进电机相关参数接线端导线分配顺序序号颜色 1 2 3 4 5 6 7 8 5 红 + + + + + + + + 4 橙 - - - 3 黄 - - -2 粉- - -1 蓝 - - -ULN2003APG的驱动芯片驱动原理图如下所示:FOSC = 12MHz说得通俗uln2003相当于继电器的作用,例如7个继电器的一端连某电压[也即uln2003电源电压](<50)在一起,而另一端作为则作为输出,又好如一个二极管,只不过因电路集成功能的因素,输出的电压等同于uln2003的电压罢了,常用于步进电机;--------------------------------------------------; 步进电机的驱动信号必须为脉冲信号!!! 转动的速度和脉冲的频率成正比!!!; 本步进电机步进角为5.625度 . 一圈360 度, 需要64个脉冲完成!!!;--------------------------------------------------; A组线圈对应P2.4; B组线圈对应P2.5; C组线圈对应P2.6; D组线圈对应P2.7; 正转次序: AB组--BC组--CD组--DA组(即一个脉冲,正转5.625度);------------------------------------------------ORG 0000HLJMP MAINORG 0100HMAIN:;----------------------------正转MOV R3,#192 ;正转3圈共192个脉冲START:MOV R0,#00HSTART1:MOV P2,#00HMOV A,R0MOV DPTR,#TABLEMOVC A,@A+DPTRJZ START ;对A的判断,当A=0时则转到START MOV P2,ALCALL DELAYINC R0DJNZ R3,START1MOV P2,#00HLCALL DELAY1;-----------------------------反转MOV R3,#64 ;反转一圈共64个脉冲START2:MOV P2,#00HMOV R0,#05START3:MOV A,R0MOV DPTR,#TABLEMOVC A,@A+DPTRJZ START2MOV P2,ACALL DELAYINC R0DJNZ R3,START3MOV P2,#00HLCALL DELAY1LJMP MAIN;---------------------------转速控制DELAY: MOV R7,#40 ;步进电机的转速M3: MOV R6,#248DJNZ R6,$DJNZ R7,M3RET;---------------------------延时控制DELAY1: MOV R4,#20 ;2S 延时子程序DEL2: MOV R3,#200DEL3: MOV R2,#250DJNZ R2,$DJNZ R3,DEL3DJNZ R4,DEL2RET;---------------------------正反转表TABLE:DB 30H,60H,0C0H,90H; 正转表DB 00; 正转结束DB 30H,90H,0C0H,60H; 反转表DB 00; 反转结束END/**************************************//*杭州电子&计算机工作室*//* *//*步进电机演示程*//*目标器件:AT89S51 *//*晶振:11.0592MHZ *//*编译环境:Keil 7.50A *//****************************//*************包含头文件*******/#include/**************端口定义****************/ sbit key = P1^4;/*********************************函数功能:延时子程序入口参数:出口参数:*****************************************/ void delay(void){int k;for(k=0;k<500;k++);}/*************************************函数功能:主程序入口参数:出口参数:********************************/void main(){P1=0x00; //输出全高key=1; //按键置输入状态while(1) //主循环{if(key==1) //无键按下正转{P1=0xFC; //1100delay();P1=0xF6; //0110delay();P1=0xF3; //0011delay();P1=0xF9; //1001delay();}else //有键按下反转{P1=0xFC; //1100delay();P1=0xF9; //1001delay();P1=0xF3; //0011delay();P1=0xF6; //0110delay();}}}1.步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。
uln2003驱动步进电机原理

uln2003驱动步进电机原理
ULN2003是一种集成电路芯片,常用于驱动步进电机。
它通常被用作步进电机驱动器,可以简化步进电机的控制和驱动。
ULN2003芯片内部包含7个开关二极管阵列,每个开关都能够承受较大的电流,因此可以直接驱动步进电机,而不需要外部电流放大器。
ULN2003驱动步进电机的原理是通过控制芯片内部的开关二极管来改变电流的流向,从而控制步进电机的转动。
步进电机是一种特殊的电动机,它通过控制电流的大小和方向来实现精确的角度转动。
ULN2003芯片内部的开关二极管可以提供所需的电流和电压,以驱动步进电机的不同相。
具体来说,ULN2003芯片内部有7个开关二极管,分别对应步进电机的不同相。
通过控制这些开关二极管的通断,可以实现对步进电机的精确控制。
通常情况下,通过外部的控制信号来控制
ULN2003芯片内部的开关二极管,从而控制步进电机的转动。
总的来说,ULN2003驱动步进电机的原理是利用芯片内部的开关二极管来控制电流的流向,从而控制步进电机的转动。
这种集成芯片的使用简化了步进电机的控制电路,提高了系统的稳定性和可
靠性。
ULN2003芯片在控制步进电机方面具有成本低、使用方便等优点,因此在各种应用中得到广泛的应用。
步进电机驱动技术3:基于ULN2003的步进电机驱动

步进电机驱动技术3:基于ULN2003的步进电机驱动 在我们的项⽬中,经常使⽤到低电压⼩功率的步进电机,此类步进电机若采⽤驱动器控制不断成本⾼也过于复杂,我们可以直接使⽤场效应管或者达林顿管来实现对其的驱动。
在本篇中,我们就来讨论⼀下基于ULN2003A达林顿管实现对步进电机的驱动。
1、功能概述 我们先来了解⼀下基本的功能。
ULN2003A达林顿管为7个输出通道,当导通时该通道连接到负端,所以⾮常适合于驱动4相5线步进电机。
1.1、ULN2003A达林顿管 ULN2003A 器件是⾼电压⼤电流达林顿晶体管阵列。
每款器件均由7个NPN 达林顿对组成,这些达林顿对具有⾼压输出,带有⽤于开关感性负载的共阴极钳位⼆极管。
单个达林顿对的集电极电流额定值为500mA。
将达林顿对并联可以提供更⾼的电流。
应⽤包括继电器驱动器、电锤驱动器、灯驱动器、显⽰驱动器(LED 和⽓体放电)、线路驱动器和逻辑缓冲器。
其基本结构图如下:1.2、步进电机基本原理 在我们的测试中,我们使⽤4相5线步进电机。
所谓4相5线步进电机就是该电机具有4组线圈5根连接线,实际上可能不只5根线,但公共端不管抽出多少根线,实际状态与1根⽆异。
我们⼀般将这4组线圈记为A相、B相、C相和D相,当然,也可以⽤别的称呼,只要便于标记分别就好。
4相5线步进电机⼀般采⽤单极性直流电源供电。
只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动。
⼀般电机都会提供控制表,具体如下所⽰: 结合ULN2003A结构和4相5线步进电机的驱动要求,我们可以设计ULN2003A达林顿管驱动4相5线步进电机的驱动电路。
1.3、步进电机驱动模式 步进电机的驱动虽然按照电机的驱动表就可以实现,但实际的驱动⽅式有多种,常见的如单波驱动⽅式、全步驱动⽅式、半步驱动⽅式以及微步驱动⽅式等。
这⾥我们可以看⼀看前⾯三种⽐较简单的驱动⽅式。
单波驱动⽅式⼜称之为单四拍⼯作⽅式。
uln2003芯片

uln2003芯片ULN2003芯片:功能、特点及应用ULN2003芯片是一款常用的高电压、高电流驱动器芯片,常被用于电机控制、步进驱动、继电器驱动等应用。
本文将介绍ULN2003芯片的功能、特点及应用。
一、功能ULN2003芯片是一个集成了7个高电压、高电流驱动器的集成电路,每个驱动器的输出端可承受500mA电流,并且可以工作在电压高达50V的条件下。
除了输出端的高电压、高电流特性外,ULN2003芯片还具有以下几个主要的功能:1. 综合保护功能:ULN2003芯片内部具有电压和电流保护电路,当输入信号超过芯片额定电压时,可以自动进行断电保护,避免对芯片造成损坏。
2. 高速驱动能力:ULN2003芯片具有较快的开关速度,可以快速响应输入信号,并输出相应的驱动信号。
3. 高电流承受能力:每个驱动器的输出端可以承受高达500mA电流,可以满足多种高功率设备的驱动要求。
4. 低功耗设计:ULN2003芯片采用精细的低功耗设计,工作时能够有效地减少功耗,提高芯片的稳定性和可靠性。
二、特点除了以上功能外,ULN2003芯片还具有以下几个特点:1. 丰富的输出端口:ULN2003芯片共有7个输出端口,可以同时控制多个设备,方便用户实现多路控制。
2. 输出端口具有隔离功能:ULN2003芯片的输出端口具有隔离功能,可以隔离输入和输出信号,避免干扰和电压噪声对芯片的影响。
3. 可靠性高:ULN2003芯片采用高品质的材料和工艺制造,具有很高的可靠性和稳定性,在长时间工作和恶劣环境下能够正常运行。
4. 简单的引脚布局:ULN2003芯片的引脚布局非常简单明了,用户容易理解和操作。
三、应用ULN2003芯片的广泛应用涉及到多个领域:1. 电机控制:ULN2003芯片可用于控制直流电机的开关和转向等功能,例如电动车、无人机等。
2. 步进驱动:ULN2003芯片可用于步进电机的驱动控制,例如打印机、数码相机等设备。
3. 继电器驱动:ULN2003芯片可用于继电器的驱动控制,常用于工控领域。
单片机结合ULN2003驱动步进电机

U N 03 L 2 0是一种高耐压、 大电流的达林顿陈
列, 由七 ̄' N 林顿管组成 。 NP 达 每—对达林顿都
串联 一 个 27 . K的基 极 电阻 , V的工作 电压 下与 在5P5 】f 啊前 p T 源自 N4 6P1 伍 弼 7
p5 1 P 目爱 3/。 6
脉 冲个数来完成的, 通过控制脉 冲个数控制角位 移量 , 从而达 到准确定位的 目的。 四相电机具有 四相绕 组, 有八个独 立的引线终端 , 接方 式如 连
应制模 型, 判断是否大幅度 转向, 并 采用变脉 冲
宽度方式 来实现 电机 调速 。 程序设计 时把步 进
电机 的控 制方式 建 立成 控制模 型 , 以数 据表 并 形式 存于程序存储器中, 程序在应用过程就可 以 直接使用。 以四相 电机为例 , 设按照四相八拍 假 控制模式 ( 如图4 进行设置 , ) 把单片机 A 8 C T 9 5 1
序如表 l它以半步方式驱 动, , 也就是在某一通电 时间, 步进角仅前进一半。 对 四相步进 电机 驱动 的程 序设置按八 拍工 作 方 式 进 行 设 置 , 照 流 程 图 分 别 设 置 各 个 子 按 程序, 然后根据不同情况分别调用。
p e iey r cs l .
Ke wo ds S y r : CM Drv S e ie tpmo o tr
借助单片机 A 8 C T 9 5 对四相步进 电机进行 l 控制时, 需要通过I 输出具有一定时序的方波 / OH 作为步进电机的控制信号, 但仅靠该T L T 电平无 法直接驱动电机 。 如果采用7 L 3 3 4 7进行驱动电 S
输出运行。 其中, 由单片机A 8 C 1 5 2脚作 T 9 5的2 — 8 为UL 2 0 的l 4 N 0 3 ~ H输入 端所构成 的步进 电机
ULN2003步进电机接线图

void Delay(unsigned int i)//延时 { while(--i); }
main()
{
unsigned char i;
while(1)
{
for(i=0;i<4;i++)
//4 相
{
P1=F_Rotation[i]; //输出对应的相 可以自行换成反转表格
Delay(500);
//改变这个参数可以调整电机转速
//八拍方式驱动,顺序为 A AB B BC C CD D DA
unsigned char code clockWise[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x0d};
void Delay(unsigned int i)//延时 { while(--i); }
三、驱动板接 5V 和 12V 电机与单片机系统板的连接图
PDF 文件使用 "pdfFactory Pro" 试用版本创建
四、步进电机工作方式 电机可以使用单四拍、双四拍和八拍方式驱动 4.1 单四拍: A-B-C-D (0001、0010、0100、1000) #include <reg52.h>
}
}
}
4.2 双四拍:AB-BC-CD-DA(0011、0110、1100、1001) #include <reg52.h>
unsigned char code F_Rotation[4]={0x03,0x05,0x0D,0x09};//正转表格
unsigned char code B_Rotation[4]={0x09,0x0D,0x05,0x03};//反转表格
}
STM32通过ULN2003对步进电机进行控制

STM32通过ULN2003对步进电机进⾏控制1 前⾔本实验是基于STM32103芯⽚和ULN2003进⾏对步进电机的控制。
2 ULN2003的基本介绍2.1 ULN2003的概述ULN2003是⾼耐压、⼤电流复合晶体管阵列,由七个硅NPN 复合晶体管组成。
⼀般采⽤DIP—16 或SOP—16 塑料封装。
ULN2003的主要特点:ULN2003 的每⼀对达林顿都串联⼀个2.7K 的基极电阻,在5V 的⼯作电压下它能与TTL 和CMOS 电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。
ULN2003 ⼯作电压⾼,⼯作电流⼤,灌电流可达500mA,并且能够在关态时承受50V 的电压,输出还可以在⾼负载电流并⾏运⾏。
2.2 ULN2003的作⽤ULN2003是⼤电流驱动阵列,多⽤于单⽚机、智能仪表、PLC、数字量输出卡等控制电路中,可直接驱动继电器等负载。
输⼊5VTTL电平,输出可达500mA/50V。
简单地说,ULN2003其实就是⽤来放⼤电流的,增加驱动能⼒。
⽐如说单⽚机输出引脚⼀般输出就⼏mA,是⽆法驱动电机、继电器或者电磁阀的,像要让直流电机转需要500mA,⽽⽤ULN2003放⼤后,可以通过单⽚机的输出引脚直接控制这些设备。
⽽我们⽂章的⽬的是使⽤ULN2003芯⽚来增⼤单⽚机的输出电流使得单⽚机的输出电流可以驱动步进电机。
2.3 ULN2003的引脚图和功能引脚1:CPU脉冲输⼊端,端⼝对应⼀个信号输出端;引脚2:CPU脉冲输⼊端;引脚3:CPU脉冲输⼊端;引脚4:CPU脉冲输⼊端;引脚5:CPU脉冲输⼊端;引脚6:CPU脉冲输⼊端;引脚7:CPU脉冲输⼊端;引脚8:接地;引脚9:该脚是内部7个续流⼆极管负极的公共端,各⼆极管的正极分别接各达林顿管的集电极。
⽤于感性负载时,该脚接负载电源正极,实现续流作⽤。
如果该脚接地,实际上就是达林顿管的集电极对地接通;引脚10:脉冲信号输出端,对应7脚信号输⼊端;引脚11:脉冲信号输出端,对应6脚信号输⼊端;引脚12:脉冲信号输出端,对应5脚信号输⼊端;引脚13:脉冲信号输出端,对应4脚信号输⼊端;引脚14:脉冲信号输出端,对应3脚信号输⼊端;引脚15:脉冲信号输出端,对应2脚信号输⼊端;引脚16:脉冲信号输出端,对应1脚信号输⼊端。
ULN2003步进电机接线图及程序

ULN2003步进电机接线图及程序ULN2003 步进电机驱动板使用说明一、主要技术参数1、工作电压 DC 4-12V2、工作电流≤500mA3、适用于 2 相 5 线步进电机4、带工作指示灯,方便客户观察工作状态。
同时也可以用于板子自测,5-12V 处通上电源后,将电源的正极分别去接 IN1-IN4 对应的指示灯会亮,表明板子是好的。
5、ULN2003 最高工作电压可以达到DC30V,如果客户需要接24V 等步进电机,需要将板子上的限流电阻加大,以免烧坏工作指示灯。
二、ULN2003 简介三、驱动板接 5V 和 12V 电机与单片机系统板的连接图四、步进机工作式电机可以使用单四拍、双四拍和八拍方式驱动4.1 单四拍: A-B-C-D(0001、0010、0100、1000)#includeunsigned char code F_Rotation[4]={0x01,0x02,0x01,0x08};//正转表格unsigned char code B_Rotation[4]={0x08,0x04,0x02,0x01};//反转表格void Delay(unsigned int i)//延时{while(--i);main(){unsigned char i;while(1){for(i=0;i<4;i++) //4 相 {P1=F_Rotation[i]; //输出对应的相可以自行换成反转表格Delay(500); //改变这个参数可以调整电机转速}}}4.2 双四拍:AB-BC-CD-DA(0011、0110、1100、1001)#include unsigned char code F_Rotation[4]={0x03,0x05,0x0D,0x09};//正转表格unsigned char code B_Rotation[4]={0x09,0x0D,0x05,0x03};//反转表格void Delay(unsigned int i)//延时{while(--i);}main(){unsigned char i;while(1){for(i=0;i<4;i++) //4 相 {P1=F_Rotation[i]; //输出对应的相可以自行换成反转表格Delay(500); //改变这个参数可以调整电机转速}}4.3 八拍方式:A-AB-B-BC-C-CD-D-DA(0001、0011、0010、0110、0100、1100、1000、1001)#includesbit key=P2^0; //按键控制步进电机的方向//八拍方式驱动,顺序为 A AB B BC C CD D DAunsigned char code clockWise[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x0d}; void Delay(unsigned int i)//延时{while(--i);}void main(){unsigned char i;while(1){for(i=0;i<8;i++){if(key) //按键未按下,正转{P0=clockWise[i];Delay(500);}else //按键按下,反转{P0=clockWise[8-i];Delay(500);}}。