Arduino驱动步进电机小实例
本文介绍了使用Arduino UNO R3开发板驱动五线四相步进电机的原理与方法,其中包括用最基本单个引脚写入和调用内部库函数两种方法。
准备阶段:
Arduino UNO R3开发板
Arduino是一块基于开放原始代码的Simple i/o平台,并且具有开发语言和开发环境都很简单、易理解的特点。让您可以快速使用Arduino做出有趣的东西。它是一个能够用来感应和控制现实物理世界的一套工具。 它由一个基于单片机并且开放源码的硬件平台,和一套为Arduino板编写程序 的开发环境组成。Arduino可以用来开发交互产品,比如它可以读取大量的开关和传感器信号,并且可以控制各式各样的电灯、电机和其他物理设备。Arduino项目可以是单独的,也可以在运行时和你电脑中运行的程序(例如:Flash,Processing,MaxMSP)进行通讯。
ULN2003驱动板
ULN2003是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。可直接驱动继电器等负载。
ULN2003芯片引脚 五线四相步进电机
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
注意图中5条线的颜色:蓝、粉、黄、橙、红,这个顺序很重要
接线指示图
各模块之间的连接
接线图
调试阶段:
方法一:单个引脚写入 // 引脚定义
constintpinsCount = 4; // 所用引脚个数 int Pins[] = { 8,9,10, 11, }; // 对应的引脚 void setup() {// 循环设置,把对应的引脚都设置成输出 for (intthisPin = 0; thisPin void loop() { for (intnum = 0; num< 4; num++) { digitalWrite(Pins[num], HIGH); delay(20); digitalWrite(Pins[num],LOW); // 这样就让4个引脚循环输出高电平了 } } 方法二:调用内部库函数 #include // 将此更改为您的电机上的步骤数 #define STEPS 512 // 定义引脚的连接 Stepper stepper(STEPS, 8, 10, 9, 11); //上一次的读取模拟量 int previous = 0; //初始化电机转动速度 void setup() { stepper.setSpeed(10); } //主循环 void loop() {// 读取AD值,在LY-51S可以直接通过电位器调节 intval = analogRead(0); // 把速度设置为这次和上次读取的差值 stepper.step(val - previous); // 记下这次读取值,方便下次比较 previous = val; } 参考文献 柯博文. Arduino 完全实战. 电子工业出版社. 2016.1 (美)艾戈(Tom Lgoe).创意圣经. 人民邮电出版社.2015.3 作者简介 王丰岳 ,1996 年生,男,山东省济宁市微山县,车辆工程 2015 级本科生,山东建筑大学锐思大学生科技实验室与校 DIY 电子科技协会会员。