【雕爷学编程】Arduino动手做(87)---ULN2003步进电机模组

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来---小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验八十七:步进电机+ULN2003驱动板 4相 5线 5V步进电机模组

03.jpg
09.jpg

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

00.jpg
0-.jpg

LN2003芯片引脚介绍
引脚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脚信号输入端。

0--.jpg

ULN2003 是高耐压、大电流复合晶体管阵列,由七个硅NPN 复合晶体管组成。
ULN2003内部还集成了一个消线圈反电动势的二极管,可用来驱动继电器。它是双列16脚封装,NPN晶体管矩阵,最大驱动电压=50V,电流=500mA,输入电压=5V,适用于TTL COMS,由达林顿管组成驱动电路。 ULN是集成达林顿管IC,内部还集成了一个消线圈反电动势的二极管,它的输出端允许通过电流为200mA,饱和压降VCE 约1V左右,耐压BVCEO 约为36V。用户输出口的外接负载可根据以上参数估算。采用集电极开路输出,输出电流大,故可直接驱动继电器或固体继电器,也可直接驱动低压灯泡。通常单片机驱动ULN2003时,上拉2K的电阻较为合适,同时,COM引脚应该悬空或接电源。ULN2003是一个非门电路,包含7个单元,单独每个单元驱动电流最大可达350mA,9脚可以悬空。比如1脚输入,16脚输出,你的负载接在VCC与16脚之间,不用9脚。

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

0.jpg
01.jpg
02 (1).jpg

达林顿管
又称复合管。他将两个三极管串联,以组成一只等效的新的三极管。这只等效三极管的放大倍数是原二者之积,因此它的特点是放大倍数非常高。达林顿管的作用一般是在高灵敏的放大电路中放大非常微小的信号,如大功率开关电路。在电子学电路设计中,达林顿接法常用于功率放大器和稳压电源中。

图示ULN2003,内部是7个达林顿管(比ULN2803少一个达林顿管),可以看出来,每个达林顿管是两个三极管组合起来了,相当于一个NPN三极管。IN端加控制电压,OUT端接负载,输出是低电平有效。

![
02 (2).jpg
02.jpg

实验八十七:步进电机+ULN2003驱动板 4相 5线 5V步进电机模组

ULN2003驱动板

外形尺寸:31×35mm

使用ULN2003大功率达林顿芯片驱动步进电机;

A、B、C、D发光二极管指示四相步进电机工作时的状态;

配有步进电机的标准接口,使用时可直接插拨


z.jpg

模块电原理图


05 (1).jpg
05 (2).jpg
08.jpg
11.jpg

步进电机
是将电脉冲信号转变为角位移或线位移的开环控制电机,是现代数字程序控制系统中的主要执行元件,应用极为广泛。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。步进电机是一种感应电机,它的工作原理是利用电子电路,将直流电变成分时供电的,多相时序控制电流,用这种电流为步进电机供电,步进电机才能正常工作,驱动器就是为步进电机分时供电的,多相时序控制器。虽然步进电机已被广泛地应用,但步进电机并不能像普通的直流电机,交流电机在常规下使用。它必须由双环形脉冲信号、功率驱动电路等组成控制系统方可使用。因此用好步进电机却非易事,它涉及到机械、电机、电子及计算机等许多专业知识。步进电机作为执行元件,是机电一体化的关键产品之一,广泛应用在各种自动化控制系统中。随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。

电机名称:减速永磁步进电机
电机型号:28BYJ-48
驱动电压:5V
驱动方式:四相八拍
齿轮减速比:1/64
采用ULN2003驱动,使用方便
优质步进电机,带齿轮减速,噪音极低,运转平稳
5V即可驱动,方便单片机开发者使用
开放性接口,也可用通过本板驱动其他步进电机
适用于51/AVR/Arduino/ARM等各种平台,机器人设计开发必备

11.jpg

28BYJ-48工作原理
假定电机的起始状态,逆时针方向转动,起始时是 B 相绕组的开关闭合,B 相绕组导通,那么导通电流就会在正上和正下两个定子齿上产生磁性,这两个定子齿上的磁性就会对转子上的 0 和 3 号齿产生最强的吸引力,就会如图所示的那样,转子的 0 号齿在正上、3 号齿在正下而处于平衡状态;此时我们会发现,转子的 1 号齿与右上的定子齿也就是 C 相的一个绕组呈现一个很小的夹角,2 号齿与右边的定子齿也就是 D 相绕组呈现一个稍微大一点的夹角,很明显这个夹角是 1 号齿和 C 绕组夹角的 2 倍,同理,左侧的情况也是一样的。

接下来,把 B 相绕组断开,而使 C 相绕组导通,那么很明显,右上的定子齿将对转子 1 号齿产生最大的吸引力,而左下的定子齿将对转子 4 号齿,产生最大的吸引力,在这个吸引力的作用下,转子 1、4 号齿将对齐到右上和左下的定子齿上而保持平衡,如此,转子就转过了起始状态时 1 号齿和 C 相绕组那个夹角的角度。

再接下来,断开 C 相绕组,导通 D 相绕组,过程与上述的情况完全相同,最终将使转子2、5 号齿与定子 D 相绕组对齐,转子又转过了上述同样的角度。

那么很明显,当 A 相绕组再次导通,即完成一个 B-C-D-A 的四节拍操作后,转子的 0、3 号齿将由原来的对齐到上下 2 个定子齿,而变为了对齐到左上和右下的两个定子齿上,即转子转过了一个定子齿的角度。依此类推,再来一个四节拍,转子就将再转过一个齿的角度,8 个四节拍以后转子将转过完整的一圈,而其中单个节拍使转子转过的角度就很容易计算出来了,即 360 度/(8*4)=11.25 度,这个值就叫做步进角度。而上述这种工作模式就是步进电机的单四拍模式——单相绕组通电四节拍。

具有更优性能的工作模式,那就是在单四拍的每两个节拍之间再插入一个双绕组导通的中间节拍,组成八拍模式。比如,在从 B 相导通到 C 项导通的过程中,假如一个 B 相和 C 相同时导通的节拍,这个时候,由于 B、C 两个绕组的定子齿对它们附近的转子齿同时产生相同的吸引力,这将导致这两个转子齿的中心线对比到 B、C 两个绕组的中心线上,也就是新插入的这个节拍使转子转过了上述单四拍模式中步进角度的一半,即 5.625度。这样一来,就使转动精度增加了一倍,而转子转动一圈则需要 8*8=64 拍了。另外,新增加的这个中间节拍,还会在原来单四拍的两个节拍引力之间又加了一把引力,从而可以大大增加电机的整体扭力输出,使电机更“有劲”了。

除了上述的单四拍和八拍的工作模式外,还有一个双四拍的工作模式——双绕组通电四节拍。其实就是把八拍模式中的两个绕组同时通电的那四拍单独拿出来,而舍弃掉单绕组通电的那四拍而已。其步进角度同单四拍是一样的,但由于它是两个绕组同时导通,所以扭矩会比单四拍模式大,在此就不做过多解释了。

八拍模式是这类 4 相步进电机的最佳工作模式,能最大限度的发挥电机的各项性能,也是绝大多数实际工程中所选择的模式。


14.jpg

实验八十七:步进电机+ULN2003驱动板 4相 5线 5V步进电机模组
实验接线示意图


17.jpg
18.jpg

实验八十七:步进电机+ULN2003驱动板 4相 5线 5V步进电机模组
项目一:逆时针旋转一圈,顺时针旋转半圈,串口监控
实验开源代码

/*

 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

  实验八十七:步进电机+ULN2003驱动板 4相 5线 5V步进电机模组

  项目一:逆时针旋转一圈,顺时针旋转半圈,串口监控

  连接引脚:分别将28BYJ-48驱动器的IN1 IN2 IN3 IN4连接到

      Arduino Uno R3 4 6 5 7引脚 

*/



#include <Stepper.h>

// 这里设置步进电机旋转一圈是多少步

#define STEPS 100

//设置步进电机的步数和引脚(就是注意点2里面说的驱动板上IN1~IN4连接的四个数字口)。

Stepper stepper(STEPS, 4, 6, 5, 7);



void setup(){

 // 设置电机的转速:每分钟为90步

 stepper.setSpeed(90);

 // 初始化串口,用于调试输出信息

 Serial.begin(9600);

}



void loop(){

  // 逆时针旋转一周

  Serial.println("Counterclockwise rotation");

  stepper.step(2048); //4步模式下旋转一周用2048 步

  delay(500);

  // 顺时针旋转半周

  Serial.println("Clockwise rotation");

  stepper.step(-1024); //4步模式下旋转一周用2048 步

  delay(500);

}

实验串口返回情况


19.jpg

实验开源仿真编程(Linkboy V4.5)

21.jpg

实验开源图形编程(Mind+、Mixly、编玩边学)

20.jpg

实验开源仿真编程(Linkboy V4.52)

19.jpg

项目四实验开源代码

/*

 【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程)

  实验八十七:步进电机+ULN2003驱动板 4相 5线 5V步进电机模组

  项目四:顺时针旋转1圈,逆时针旋转1/4圈,串口监控

  连接引脚:分别将28BYJ-48驱动器的IN1 IN2 IN3 IN4连接到

      Arduino UNO R3 8,9,10,11引脚

*/



//使用arduino IDE自带的Stepper.h库文件

#include <Stepper.h>

// 这里设置步进电机旋转一圈是多少步,依据步距角计算,及走一圈需要多少脉冲

#define STEPS 64

//设置步进电机的步数和引脚(就是驱动板上IN1~IN4连接的四个数字口)。

Stepper stepper(STEPS, 8, 9, 10, 11);



void setup(){

 // 设置电机的转速:每分钟为90步

 stepper.setSpeed(290);

 // 初始化串口,用于调试输出信息

 Serial.begin(9600);

}



void loop(){

 // 顺时针旋转

 Serial.println("顺时针旋转1圈");

 stepper.step(2048);

 delay(500);

 // 逆时针旋转

 Serial.println("逆时针旋转1/4圈");

 stepper.step(-512);

 delay(500);

}

实验串口返回情况


25.jpg

项目五,实验开源代码

/*

 【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程)

  实验八十七:步进电机+ULN2003驱动板 4相 5线 5V步进电机模组

  项目三:极慢转动4步用于观察ULN2003电机驱动板LED变化,

  慢速顺时针旋转一圈,快速逆时针旋转一圈,间隔0.5秒

  连接引脚:分别将28BYJ-48驱动器的IN1 IN2 IN3 IN4连接到

      Arduino UNO R3 8,10,9,11引脚

*/

//本实验程序使用Stepper库

#include <Stepper.h>

// 定义电机控制用常量

// 电机内部输出轴旋转一周步数

const int STEPS_PER_ROTOR_REV = 32;

// 减速比

const int GEAR_REDUCTION = 64;

/*

  转子旋转一周需要走32步。转子每旋转一周,电机输出轴只旋转1/64周。

  (电机内部配有多个减速齿轮,这些齿轮会的作用是让转子每旋转一周,

  输出轴只旋转1/64周。)

  因此电机输出轴旋转一周则需要转子走32X64=2048步,即以下常量定义。

*/

// 电机外部输出轴旋转一周步数 (2048)

const float STEPS_PER_OUT_REV = STEPS_PER_ROTOR_REV * GEAR_REDUCTION;

// 定义电机控制用变量

// 电机旋转步数

int StepsRequired;

// 建立步进电机对象

// 定义电机控制引脚以及电机基本信息。

// 电机控制引脚为 8,9,10,11

// 以上引脚依次连接在ULN2003 驱动板 In1, In2, In3, In4

Stepper steppermotor(STEPS_PER_ROTOR_REV, 8, 9, 10, 11);

void setup()

{

 //setup函数内无内容

}

void loop()

{

 // 极慢转动4步用于观察ULN2003电机驱动板LED变化

 steppermotor.setSpeed(1);

 StepsRequired = 4;

 steppermotor.step(StepsRequired);

 delay(500);

 // 慢速顺时针旋转一圈

 StepsRequired = STEPS_PER_OUT_REV;

 steppermotor.setSpeed(500);

 steppermotor.step(StepsRequired);

 delay(500);

 // 快速逆时针旋转一圈

 StepsRequired = - STEPS_PER_OUT_REV;

 steppermotor.setSpeed(800);

 steppermotor.step(StepsRequired);

 delay(500);

}

补充实验场景图


26.jpg
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,332评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,930评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,204评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,348评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,356评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,447评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,862评论 3 394
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,516评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,710评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,518评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,582评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,295评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,848评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,881评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,121评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,737评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,280评论 2 341

推荐阅读更多精彩内容

  • 让电机转起来 再重新看一下上面的步进电机外观图和内部结构图:步进电机一共有 5 根引线,其中红色的是公共端,连接到...
    风情云阅读 1,018评论 0 0
  • 步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的...
    TonyCode阅读 27,005评论 5 19
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,520评论 28 53
  • 信任包括信任自己和信任他人 很多时候,很多事情,失败、遗憾、错过,源于不自信,不信任他人 觉得自己做不成,别人做不...
    吴氵晃阅读 6,178评论 4 8
  • 步骤:发微博01-导航栏内容 -> 发微博02-自定义TextView -> 发微博03-完善TextView和...
    dibadalu阅读 3,123评论 1 3