当前位置: 首页 > news >正文

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

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

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

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

在这里插入图片描述
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 塑料封装。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
模块电原理图

在这里插入图片描述

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

在这里插入图片描述
Arduino实验接线示意图

在这里插入图片描述
【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程)

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

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

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

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

Arduino实验开源代码

/*【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);
}

实验串口返回情况

在这里插入图片描述

Stepper库函数
是Arduino 自带的第三方库,用于步进电机运行用,并支持两相和四相两种类型的步进电机。主要包括:

Stepper(steps, pin1, pin2)
Stepper(steps, pin1, pin2, pin3, pin4)
setSpeed(rpm)
step(steps)

1、Stepper
两种调用形式,Stepper(steps, pin1, pin2)与Stepper(steps, pin1, pin2, pin3, pin4),主要是看电机是两相还是四相,该函数作用是创建Stepper类的实例,参数steps应该是所使用的的电机转一周需要的步数(脉冲数),通过电机步距角计算。后面的pin1,2,3,4,依据实际情况填写。注意这个函数需要写在程序开始,即在void setup()之上。

说明
本语句用于建立一个新的步进电机对象。请在setup() and loop()前面使用本语句。stepper语句的参数根据连接在Arduino开发板上的步进电机实际情况而定。

参数
steps: 电机旋转一周的步数(整数型)
pin1, pin2: 连接电机的引脚编号(整数型)
pin3, pin4: (可选参数)连接电机的引脚编号(整数型)

返回值
A new instance of the Stepper motor class.
步进电机对象

示例

Stepper myStepper = Stepper(100, 5, 6);
Stepper myStepper = Stepper(100, 8, 9,10,11);

2、setSpeed
调用形式setSpeed(rpms),这个是控制转速的函数,实际是脉冲频率,参数为每分钟电机转的步数。数值为正整数。该函数不会使电机旋转。

说明
设置步进电机运行速度(每分钟转数)。此函数无法让电机旋转,只用于设置转速。如要让电机旋转,需要使用step函数。

参数
rpms: 转速参数(每分钟电机转数)(长整型)

返回值

3、step
step(steps),这个函数是使电机转过固定的步数,只有当电机转过指定步数之后才会执行该语句的下一条语句。参数应该是整数,正负号控制旋转方向。

说明
通过step函数您可以让步进电机旋转相应的步数。具体旋转的步数由stepper函数的参数决定。旋转速度则由 setSpeed函数决定。

注意:此函为“blocking”类型函数,即Arduino在运行此函数时,将会等待电机执行完运行要求以后才会执行下一条语句。举例说明,假如您通过setSpped函数设置电机的运行速度为1。然后通过调用step(100)指令让电机运转100步。这一操作的执行时间可能要一分多钟才能完成。为了让程序可以更好的运行,建议每一次调用step函数时尽量让电机少执行步数,同时提高电机的运行速度。

参数
steps: 电机运行的步数(整数型)

返回值

Arduino实验接线示意图

在这里插入图片描述
在这里插入图片描述
【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程)

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

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

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

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

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

Arduino实验开源代码

/*【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, In4Stepper 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);
}

补充实验场景图

在这里插入图片描述

实验说明
1、关于接脚,程序设为“Stepper steppermotor(STEPS_PER_ROTOR_REV, 8, 9, 10, 11);”,实际接脚需要把9和10脚对调一下即可。

2、通过以上实验示例中将看到,首先步进电机将以非常慢的速度旋转,这么做的目的是为了便于观察UNL2003驱动板上LED变化与电机运动之间的关系。接下来电机将以较为缓慢的速度顺时针旋转一圈然后会以较快的速度逆时针旋转一圈。这里可以通过调整“setSpeed” 的参数来改变电机的旋转速度。

3、有一点需要特别注意。强烈建议在用Arduino驱动28BYJ-48步进电机时,为ULN电机驱动板单独配上一个电源。这一点正如上图所示,ULN2003驱动板的电源是由一个独立的+5V电源所提供的(这里使用USB口接入5V电源),如果用Arduino开发板的+5V电源直接为ULN2003驱动板供电的方法短时间测试是可以的,但是不要在长时间使用Arduino为ULN2003驱动板进行供电(实测总电流约为310mA)。

在这里插入图片描述

相关文章:

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

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…...

【C#】微软的Roslyn 是个啥?

一、说明 Roslyn 是微软重写的C#编译器并开源。 Roslyn 是 C# 和 Visual Basic.NET 开源编译器的代号。以下是它如何在过去十年企业Microsoft的最黑暗中开始&#xff0c;并成为所有C#&#xff08;和VB&#xff09;的开源&#xff0c;跨平台&#xff0c;公共语言引擎&#xff0c…...

两个小封装电机驱动芯片:MLX813XX、A4950

一&#xff0e;MLX813XX MELEXIS的微型电机驱动MLX813XX系列芯片集成MCU、预驱动以及功率模块等能够满足10W以下的电机驱动。 相对于普通分离器件的解决方案&#xff0c;MLX813XX系列电机驱动芯片是一款高集成度的驱动控制芯片&#xff0c;可以满足汽车系统高品质和低成本的要…...

数据结构【绪论】

数据结构入门级 第一章绪论 什么是数据结构&#xff1f;什么是数据类型&#xff1f; 程序数据结构算法 一、基本概念&#xff1a; 数据&#xff1a;指所有能被计算机处理的&#xff0c;无论图、文字、符号等。数据元素&#xff1a;数据的基本单位&#xff0c;通常作为整体考…...

掌握无人机遥感数据预处理的全链条理论与实践流程、典型农林植被性状的估算理论与实践方法、利用MATLAB进行编程实践(脚本与GUI开发)以及期刊论文插图制作等

目录 专题一 认识主被动无人机遥感数据 专题二 预处理无人机遥感数据 专题三 定量估算农林植被关键性状 专题四 期刊论文插图精细制作与Appdesigner应用开发 近地面无人机植被定量遥感与生理参数反演 更多推荐 遥感技术作为一种空间大数据手段&#xff0c;能够从多时、多…...

Angular中组件设计需要注意什么?

在 Angular 中设计组件时&#xff0c;有几个重要的方面需要注意。以下是一些建议&#xff1a; 1、单一职责原则&#xff1a;确保每个组件只负责一个明确定义的任务。这有助于保持组件简单、可维护&#xff0c;并且易于重用。 2、组件通信&#xff1a;了解组件之间的通信方式。…...

电容触摸屏(TP)的工艺结构

液晶显示屏(LCM),触摸屏(TP) “GG、GP、GF”这是结构分类&#xff0c;第一个字母表面材质&#xff08;又称为上层&#xff09;&#xff0c;第二个字母是触摸屏的材质&#xff08;又称为下层&#xff09;&#xff0c;两者贴合在一起。 G玻璃&#xff0c;FFILM&#xff0c;“”贴…...

Qt小妙招:如何在可执行文件生成后,在pro文件中添加其他命令操作?

问题描述&#xff1a; 场景1&#xff1a;我的可执行文件设置生成路径为某个最终目录的bin目录下&#xff0c;当我要修改某些config.ini或者xxx.json,或者一些qss&#xff0c;css文件的时候&#xff0c;我想直接在构建的时候&#xff0c;Qtcreator帮我直接拷贝过去&#xff0c;…...

做好防雷检测的意义和作用

防雷检测是指对雷电防护装置的性能、质量和安全进行检测的活动&#xff0c;是保障人民生命财产和公共安全的重要措施。我国对防雷检测行业有明确的国家标准和管理办法&#xff0c;要求从事防雷检测的单位和人员具备相应的资质和能力&#xff0c;遵守相关的技术规范和规程&#…...

计算机启动过程uefi+gpt方式

启动过程&#xff1a; 一、通电 按下开关&#xff0c;不用多说 二、uefi阶段 通电后&#xff0c;cpu第一条指令是执行uefi固件代码。 uefi固件代码固化在主板上的rom中。 &#xff08;一&#xff09;uefi介绍 UEFI&#xff0c;全称Unified Extensible Firmware Interface&am…...

探索容器镜像安全管理之道

邓宇星&#xff0c;Rancher 中国软件架构师&#xff0c;7 年云原生领域经验&#xff0c;参与 Rancher 1.x 到 Rancher 2.x 版本迭代变化&#xff0c;目前负责 Rancher for openEuler(RFO)项目开发。 最近 Rancher v2.7.4 发布了&#xff0c;作为一个安全更新版本&#xff0c;也…...

【MySQL】内置函数

​&#x1f320; 作者&#xff1a;阿亮joy. &#x1f386;专栏&#xff1a;《零基础入门MySQL》 &#x1f387; 座右铭&#xff1a;每个优秀的人都有一段沉默的时光&#xff0c;那段时光是付出了很多努力却得不到结果的日子&#xff0c;我们把它叫做扎根 目录 &#x1f449;函…...

使用arm-none-eabi-gcc编译器搭建STM32的Vscode开发环境

工具 make&#xff1a;Windows中没有make&#xff0c;但是可以通过安装MinGW或者MinGW-w64&#xff0c;得到make。gcc-arm-none-eabi&#xff1a;建议最新版&#xff0c;防止调试报错OpenOCDvscodecubeMX VSCODE 插件 Arm Assembly&#xff1a;汇编文件解析C/C&#xff1a;c…...

图数据库Neo4j学习二——cypher基本语法

1命名规范 名称应以字母字符开头&#xff0c;不以数字开头&#xff0c;名称不应包含符号&#xff0c;下划线除外可以很长&#xff0c;最多65535( 2^16 - 1) 或65534字符&#xff0c;具体取决于 Neo4j 的版本名称区分大小写。:PERSON和:Person是:person三个不同的标签&#xff…...

ChatGPT:人工智能交互的未来之光

一、ChatGPT&#xff1a;开启自然语言交流新纪元 ChatGPT 是基于 GPT&#xff08;生成式预训练&#xff09;技术的最新版本&#xff0c;它采用深度学习模型&#xff0c;通过在大规模文本数据上的预训练来理解自然语言&#xff0c;并生成具有连贯性和合理性的回复。ChatGPT 是一…...

128最长连续数组

题目描述 最长连续序列 https://leetcode.cn/problems/longest-consecutive-sequence/class Solution {public:int longestConsecutive(vector<int>& nums) {unordered_set<int> st(...

redis 1

shell 1&#xff1a;安装1. 源码安装&#xff08;CENTOS&#xff09; 2.999:可能会出现得问题1. 编译出错 1&#xff1a;安装 1. 源码安装&#xff08;CENTOS&#xff09; 官方下载源码包 wget https://download.redis.io/redis-stable.tar.gz # 安装依赖 yum install gcc解压…...

vue+Element项目中v-for循环+表单验证

如果在Form 表单里有通过v-for动态生成&#xff0c;如何设置验证呢&#xff1f; <el-form ref"ruleFormRef" :model"ruleForm" status-icon :rules"rules" label-width"120px"class"demo-ruleForm" hide-required-aster…...

Day 66-68 主动学习之ALEC

代码&#xff1a; package dl;import java.io.FileReader; import java.util.*; import weka.core.Instances;/*** Active learning through density clustering.*/ public class Alec {/*** The whole dataset.*/Instances dataset;/*** The maximal number of queries that …...

local-path-provisioner与pvc本地磁盘挂载helm部署

1.helm拉取安装包 helm repo add containeroo https://charts.containeroo.ch helm pull containeroo/local-path-provisioner --version 0.0.19 tar -zxvf local-path-provisioner-0.0.19.tgz cd local-path-provisioner mv values.yaml values.yaml.back grep -v "#&qu…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

uniapp手机号一键登录保姆级教程(包含前端和后端)

目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号&#xff08;第三种&#xff09;后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测

uniapp 中配置 配置manifest 文档&#xff1a;manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号&#xff1a;4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...

windows系统MySQL安装文档

概览&#xff1a;本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容&#xff0c;为学习者提供全面的操作指导。关键要点包括&#xff1a; 解压 &#xff1a;下载完成后解压压缩包&#xff0c;得到MySQL 8.…...

Easy Excel

Easy Excel 一、依赖引入二、基本使用1. 定义实体类&#xff08;导入/导出共用&#xff09;2. 写 Excel3. 读 Excel 三、常用注解说明&#xff08;完整列表&#xff09;四、进阶&#xff1a;自定义转换器&#xff08;Converter&#xff09; 其它自定义转换器没生效 Easy Excel在…...

6.9本日总结

一、英语 复习默写list11list18&#xff0c;订正07年第3篇阅读 二、数学 学习线代第一讲&#xff0c;写15讲课后题 三、408 学习计组第二章&#xff0c;写计组习题 四、总结 明天结束线代第一章和计组第二章 五、明日计划 英语&#xff1a;复习l默写sit12list17&#…...

Unity-ECS详解

今天我们来了解Unity最先进的技术——ECS架构&#xff08;EntityComponentSystem&#xff09;。 Unity官方下有源码&#xff0c;我们下载源码后来学习。 ECS 与OOP&#xff08;Object-Oriented Programming&#xff09;对应&#xff0c;ECS是一种完全不同的编程范式与数据架构…...

rk3506上移植lvgl应用

本文档介绍如何在开发板上运行以及移植LVGL。 1. 移植准备 硬件环境:开发板及其配套屏幕 开发板镜像 主机环境:Ubuntu 22.04.5 2. LVGL启动 ​ 出厂系统默认配置了 LVGL,并且上电之后默认会启动 一个LVGL应用 。 LVGL 的启动脚本为/etc/init.d/pre_init/S00-lv_demo,…...

开源项目实战学习之YOLO11:12.6 ultralytics-models-tiny_encoder.py

👉 欢迎关注,了解更多精彩内容 👉 欢迎关注,了解更多精彩内容 👉 欢迎关注,了解更多精彩内容 ultralytics-models-sam 1.sam-modules-tiny_encoder.py2.数据处理流程3.代码架构图(类层次与依赖)blocks.py: 定义模型中的各种模块结构 ,如卷积块、残差块等基础构建…...