目录

一、实验目的

二、实验设备与环境

三、实验重点

四、实验难点

五、实验内容

5.1实验任务

5.2实验原理

5.3 实验内容

5.4实验结果

5.5思考题


一、实验目的

(1)掌握ULN2003AN驱动阵列的原理,熟悉驱动模块的使用;

(2)熟悉并理解步进电机的基本原理,熟悉步进电机的使用方法;

(3)掌握步进电机驱动电路的连接方法

(4)编写并测试步进电机控制程序

二、实验设备与环境

Arduino UNO套件、Arduino IDE、计算机、步进电机、ULN2003AN驱动模块等

三、实验重点

(1)步进实验电路连接;(2)步进电机驱动控制原理与使用方法;(3)步进电机控制程序编写

四、实验难点

(1)步进电机的程序控制

五、实验内容

5.1实验任务

任务描述:步进电机驱动电路搭建;步进电机驱动程序;步进电机角度控制、转速控制

5.2实验原理

1.步进电机

步进电机是将电脉冲信号转变为角位移或线位移的开环控制电机,是现代数字程序控制系统中的主要执行元件,是打印机、绘图仪、机器人等设备的动力核心,应用极为广泛。

步进电机通过控制脉冲个数控制角位移达到准确定位,通过控制脉冲频率来控制步进电机转速和加速度达到调节和控制电机转速。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”或步进角,它的旋转是以转动固定角度一步一步运行的。步进电机在非超载情况下,电机转速、停止位置只取决于脉冲信号的频率和脉冲数,不受负载变化的影响。

如图所示,采用4相5线连接的28BYJ48型4相8拍步进电机,是减速步进电机,减速比为1:64,步进角为5.625/64度,转动一圈需要360/(5.625/64) = 4096个脉冲信号。当对步进电机施加一系列连续不断的控制脉冲时,使步进电机连续不转地转动。每一个脉冲信号对应步进电机的某一项或两相绕组的通电状态改变一次,对应转子转过一个步进角,通电状态的改变完成一个循环时,转子转过一个齿距。

四相步进电机通常有单4拍(A→B→C→D→A→„)、双4拍(AB→BC→CD→DA→AB→„)、8拍(A→AB→B→BC→C→CD→D→DA→A„)

        2.Stepper 库函数

Stepper 是 Arduino 自带的库函数,用于控制步进电机。

头文件:#include<Stepper.h>

Stepper stepper(steps,pin1,pin2) //两相步进电机实例对象

Stepper stepper(steps,pin1,pin2,pin3,pin4) //四相步进电机实例对象

参数:steps,电机转一周需要的步数(脉冲数);pin1\pin2\pin3\pin4,Arduino 的引脚

Stepper 库函数的成员函数:setSpeed()、step()

setSpeed()

功能:通过脉冲频率控制步进电机转速

语法:stepper.setSpeed(rpms)

参数:rpms,脉冲频率

step()

功能:通过脉冲数控制电机转动的角度

语法:stepper.step(steps)

参数:steps,电机转过的步数(int 型),正负控制转动方向

Stepper 库函数程序示例:

#include <Stepper.h>
#define STEPS 4096 // 常量 STEPS = 4096,表示转一圈的步数
//声明一个实例对象 myStepper,设置步数和接开发板 IN1~IN4 的数字口
Stepper myStepper(STEPS, IN1,IN2,IN3,IN4); //
void setup() {myStepper.setSpeed(2048); // 设置电机的转速 2048 步/分钟,半圈Serial.begin(9600); // 串口初始化
}
void loop() {Serial.println("shun");stepper.step(2048); // 顺时针旋转 2048 步delay(500);Serial.println("ni");stepper.step(-2048); // 逆时针旋转 2048 步delay(500);
} 

        3.ULN2003AN驱动模块

UNL2003APG 驱动阵列

ULN2003 是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。可直接驱 动继电器等负载。输入 5VTTL 电平,输出可达 500mA/50V。

ULN2003 应用电路在自动化密集的的场合会有很多被控元件如继电器,微型电机,风机,电磁阀,空调, 水处理等元件及设备,这些设备通常由 CPU 所集中控制,由于控制系统不能直接驱动被控元件,这需要由 功率电路来扩展输出电流以满足被控元件的电流,电压。

ULN2003 阵列驱动步进电机

步进电机驱动电流很大,用开发板提供电流无法驱动,需要用  ULN2003 芯片 IC 放大电流驱动步进电机

        4.步进电机实验电路

5.3 实验内容

1.直接编写程序驱动步进电机转动

步骤 1:连接电路

步骤 2:编写程序

// 程序示例1,直接编程驱动两相四线制步进电机

#define IN1pin8
#define IN2pin9
#define IN3pin10
#define IN4pin11
int steps = 0;
booleanDirection = true;
unsigned long currentTime;
unsigned long lastTime = 0;
int stepsLeft = 4096;
//电机旋转一周的步数
long time= 0;
voidsetup(){Serial.begin(9600);                          pinMode(IN1pin,OUTPUT);pinMode(IN2pin,OUTPUT);pinMode(IN3pin,OUTPUT);pinMode(IN4pin,OUTPUT);delay(1000);
}
void loop(){while(stepsLeft>0){currentTime= micros();// 获取系统当前时间us数if(currentTime-lastLime>=1000){// 步间时间stepper(1);// 调用步进电机驱动控制函数time=time+micros()-lastTime;lastTime=micros();stepsLeft--;}}Serialprint("Time is:");Serial.println(time);Serial.println("Wait...!");delay(2000);Direction=!Direction;stepsLeft=4096;
}
void stepper(int xz){for (int x=0;x<xw;x++){switch(steps){case 0:digitalWrite(IN1pin, LOW);digitalWrite(IN2pin, LOW);digitalWrite(IN3pin, LOW);digitalWrite(IN4pin, HIGH);break;case 1:digitalWrite(IN1pin, LOW);digitalWrite(IN2pin, LOW);digitalWrite(IN3pin, HIGH);digitalWrite(IN4pin, HIGH);break;case 2:digitalWrite(IN1pin, LOW);digitalWrite(IN2pin, LOW);digitalWrite(IN3pin, HIGH);digitalWrite(IN4pin, LOW);break;case 3:digitalWrite(IN1pin, LOW);digitalWrite(IN2pin, HIGH);digitalWrite(IN3pin, HIGH);digitalWrite(IN4pin, LOW);break;case 4:digitalWrite(IN1pin, LOW);digitalWrite(IN2pin, HIGH);digitalWrite(IN3pin, LOW);digitalWrite(IN4pin, LOW);break;case 5:digitalWrite(IN1, HIGH);digitalWrite(IN2, HIGH);digitalWrite(IN3, LOW);digitalWrite(IN4, LOW);break;case 6:digitalWrite(IN1pin, HIGH);digitalWrite(IN2pin, LOW);digitalWrite(IN3pin, LOW);digitalWrite(IN4pin, LOW);break;case 7:digitalWrite(IN1pin, HIGH);digitalWrite(IN2pin, LOW);digitalWrite(IN3pin, LOW);digitalWrite(IN4, HIGH);break;default:digitalWrite(IN1pin, LOW);digitalWrite(IN2pin, LOW);digitalWrite(IN3pin, LOW);digitalWrite(IN4pin, LOW);break;}SetDirection();//旋转方向控制函数}
}
void SetDirection(){// 步进电机方向控制if(Direction==1){steps++;}if(Direction==0){steps--;}if(steps>7){steps=0;}if(steps<0){steps=7;}
}

步骤3:程序调试

2.调用Stepper库函数驱动步进电机转动

步骤1:连接电路

步骤2:编写程序

// 程序示例2,Stepper库驱动步进电机

//Stepper.h库函数驱动#
include<Stepper.h>
// 设置步进电机旋转一圈的步数
#define steps4096
// 步进电机转一周的步数(脉冲数)
//步进电机实体对象与驱动板上引脚接口IN1~IN4
int IN1pin= 8;
int IN2pin= 9;
intIN3pin= 10;
int IN4pin= 11;
Stepper myStepper(steps,IN1pin,IN2pin,IN3pin,IN4pin);
void setup(){pinMode(8,OUTPUT);pinMode(9,OUTPUT);pinMode(10,OUTPUT);pinMode(11,OUTPUT);myStepper.setSpeed(4096);// 设置电机转速每分钟为4096步Serial.begin(9600);// 初始化串口,以监测调试信息
}
void loop(){// 顺时针旋转一周Serial.println("shun");myStepper.step(4096);//旋转一周delay(500);// 逆时针旋转半周Serial.println("ni");myStepper.step(-2048);delay(500);
}

步骤3:程序调试

3.程序扩展:电位器精确控制步进电机转动

实验任务:通过旋转电位器滑动头,实现步进电机0-360°旋转的精确定位控制。

const int hudon=A0;int hdvalue;
void setup() {for (int i = 2; i < 6; i++) {pinMode(i, OUTPUT);}Serial.begin(9600);}void clockwise(int num)
{for (int count = 0; count < num; count++){for (int i = 2; i < 6; i++){digitalWrite(i, HIGH);delay(3);digitalWrite(i, LOW);}}
}void anticlockwise(int num)
{for (int count = 0; count < num; count++){for (int i = 5; i > 1; i--){digitalWrite(i, HIGH);delay(3);digitalWrite(i, LOW);}}
}void loop() {hdvalue=analogRead(hudon);Serial.println(hudon);delay(500);clockwise(hdvalue);delay(10);anticlockwise(hdvalue);
}

5.4实验结果

结论:连接电路,编写程序实现了电机转动

反思:通过本次实验,我学到了很多的知识,掌握了 ULN2003AN 驱动阵列的原理,熟悉驱动模块的使用,熟悉并理解步进电机的基本原理,通过连接电路,编写程序实现了电机转动。熟悉步进电机的使用方法。

作品:

5.5思考题

1.在生产与生活中有哪些步进电机的应用,试举例说明?你能设计一款步进电机应用吗?

【Arduino实验16 步进电机的控制】相关推荐

  1. Arduino对57步进电机的控制

    最近实验室的智能车从大车路线改到了小车路线,于是笔者也跟着学习一些新的知识.大车的控制可以使用标准的CAN协议,很多方便的指令都能够通过CAN来传输给ECU并得到相应的反馈.然而对于最近接触的电动小白 ...

  2. Arduino UNO+TB6600驱动器按键控制步进电机启动停止

    Arduino UNO+TB6600驱动器按键控制步进电机启动停止 步进电机 TB6600驱动器 **接线说明:**重点内容!!!! //本次实验电机驱动采用共阴极接线方式 1. PUL-, DIR- ...

  3. 【Proteus仿真】Arduino+uln2003驱动步进电机+单按键启保停正反转控制

    [Proteus仿真]Arduino+uln2003驱动步进电机+单按键启保停正反转控制 Proteus仿真 功能实现 采用外部中断来获取按键信息 程序代码 #define LED ( 13 )#de ...

  4. arduino通过CNC SHIELD(A4988)控制两个步进电机

    arduino通过CNC SHIELD(A4988)控制两个步进电机 目的 本例程使用arduino通过CNC SHIELD(A4988模块)控制两个步进电机运动 内容来源 修改太极创客关于Accel ...

  5. 微型计算机测控系统课程设计报告,微机原理课程设计实验报告--步进电机控制.docx...

    文档介绍: 2010-2011学年第一学期 微机原理课程设计实验报告 课题名:步进电机控制 一.课题内容和提示: 编程提示: (1)步进电机驱动原理是通过对每相线圈中的电流的顺序切换来使电机做步进式旋 ...

  6. Arduino + ESP32-C3 + TFT(1.8‘ ST7735S)基础平台(实验六)手机控制 DDS AD9851 (70MHz 正弦波 方波 )

    ---------------------------------------------------------------------------------------------------- ...

  7. Arduino uno使用PCA9685模块实现16路舵机控制

    PCA9685模块 PCA9685是16路12位PWM信号发生器,可用于控制舵机.led.电机等设备,采用I2C通信.主机只需要I2C接口即可实现16路舵机控制. PCA9685的I2C地址默认0x4 ...

  8. 基于STM32F4单片机对步进电机的控制(有代码)

    步进电机简介 步进电机是将电脉冲控制信号转变为角位移或线位移的一种常用的数字控制执行元件,又称为脉冲电机.在驱动电源的作用下,步进电机受到脉冲的控制,其转子的角位移量和速度严格地与输入脉冲的数量和脉冲 ...

  9. 【Arduino】温湿度传感器(DHT11)控制设计 四位数码管,LCD1602,带蜂鸣器、LED灯报警,串口输入设定阈值

    @[TOC]( [Arduino]温湿度传感器(DHT11)控制设计 四位数码管,LCD1602,带蜂鸣器.LED灯报警,串口输入设定阈值 ) 一.实验器材 UNO控制板:1块 共阳极四位数码管:1个 ...

  10. 西电A测|基于Arduino uno的温度检测控制仿真系统

    西电A测|基于Arduino uno的温度检测控制仿真系统 温度检测控制仿真系统 Proteus仿真电路图 Arduino IDE编写程序 结果验证 功能拓展 温度检测控制仿真系统 功能要求:Ardu ...

最新文章

  1. 2022-2028年中国儿童保健品行业市场研究及前瞻分析报告
  2. linux下使用python3_Linux上python3的安装和使用
  3. github快速通道
  4. 史上最大,人工智能算法模型 GPT-3 问世,这意味着什么?
  5. 一、SCVMM2008R2安装部署
  6. PHP openssl加密扩展使用总结
  7. ScrollView中嵌套ListView的完美解决方案
  8. @Transactional(rollbackFor=Exception.class)的作用
  9. php实例视频播放代码,[h5]一个基于HTML5实现的视频播放器代码详解
  10. 面试当中必考的数据结构---树种类大全和相关优秀博客总结
  11. SAP PO中如何打印预览,找到Message type以及找到驱动程序和Form输出程序
  12. win7系统 修改默认管理员用户名administrator方法
  13. JavaScript系列之内置对象Object
  14. lambada表达式总结
  15. 毕业以后读书报告(不定时更新)
  16. 汉高2019年上半年实现销售额101亿欧元
  17. Android监听是否点击了home键或者锁屏键
  18. numpy ndarray与matrix互相转换及转换时维度的变换
  19. 十二生肖在英文中的寓意
  20. 2021年焊工(技师)证考试及焊工(技师)作业考试题库

热门文章

  1. 安卓数字倒数控件_大家有什么好用的安卓倒计时APP?
  2. PDF文件如何修改,怎么裁剪PDF页面
  3. 使用c#实现一个简单绘图软件(绘制矩形、多边形,画笔、橡皮擦功能)的完整教程
  4. IDEA搜索插件时显示search results are not loaded check the internet connection解决办法
  5. 判断一个数是否为质数(素数)
  6. uniapp+微信小程序云函数获取微信openId
  7. 【Word 教程系列第 2 篇】Word 中如何设置每页的表格都有表头
  8. 报表热切换是什么意思?如何做到?
  9. 携手做大做强中国集成电路产业链
  10. 微信公众号粉丝迁移代办最新流程