想让门帘自动开合、做个能精确定位的云台、或者干脆来个机械臂关节,舵机的角度范围有限,这时步进电机更合适。28BYJ-48是一款很便宜的五线四相步进电机,配上ULN2003驱动板就能用Arduino精确控制转多少步、转多少角度。这篇文章把接线和转动讲明白。

电机五根线和驱动板认识一下
28BYJ-48是5V的五线四相步进电机,五根线中一根是公共电源线(通常是红色),另外四根是四个相(橙、黄、粉、蓝对应线圈A/B/C/D)。它自带一个约1:64的减速齿轮箱,所以能输出比较大一点的扭矩,但转速不快。
它需要一个驱动板——因为Arduino引脚驱动不了电机线圈需要的电流,通常配套ULN2003驱动板。驱动板上有VCC、GND电源脚,还有IN1到IN4四个输入脚接Arduino的四个数字脚。把电机的五根线插到驱动板的电机插座上就接好了。

怎么接线:电机插板、IN脚接数字脚
接线分两步。第一步接电源:ULN2003驱动板的VCC接电源正(28BYJ-48是5V电机,用5V供电;但驱动板可以承受更高电压,接5V最稳妥),GND接电源地,并且要跟Arduino共地(Arduino的GND和驱动板GND连一起)。
第二步接控制:驱动板的IN1、IN2、IN3、IN4顺序接到Arduino的四个数字脚,比如8、9、10、11号脚。然后就能用Stepper库(Arduino自带)或AccelStepper库,指定步数和转速让它转起来了。
步进角和角度换算
28BYJ-48原始步距角是5.625度,四相工作时每步2.8125度(半步模式)。因为带1/64减速,电机轴转一整圈需要2048步(64×32)。也就是说让电机转一圈,要发2048个步进脉冲。想做“转90度”,就用2048/4=512步。
用Arduino自带Stepper库时,库构造参数里的“每圈步数”就填4096或2048(看是否半步)、以及IN1-4的引脚号,库内部会按顺序驱动四相。用库之后,动起来就是“转到指定步数”或“以指定速度转”,定位由步数精确决定,不靠传感器也能“数着步走”。
供电、共地和三个坑
最大的坑是供电别让Arduino硬扛:28BYJ-48虽然标5V,但转起来电流不小,从Arduino的5V脚直供,轻则转起来没力,重则把板子拖垮。稳妥用USB/5V电源给驱动板供电,并和Arduino共地。有的4节AA电池(约6V)供电也行,但别超压。
还有两个坑:一是IN1-4的顺序和电机相序要对应,接乱了电机会在原地抖不转,通常交换一下某两根相线就好;二是它转速很慢,想要快转的人会失望——它适合“准”不适合“快”,想要高速高扭矩得换42或更大的步进电机和对应驱动。
28BYJ-48是学习步进电机和做精确定位最入门的一颗。五根线插上驱动板、四个IN脚接数字脚、一个库,就能精确控制转多少步,做云台、开合机构都够用。


别让Arduino硬扛供电,外接电源加共地稳
它主打准不主打快,想要高速得换大电机
转一圈要2048步,这个换算别记错
IN脚四根相序接乱会在原地抖,换一下就好