基于单片机的步进电机控制系统研究

news2024/12/22 15:08:03
摘 要 近年来 步进电机凭借其定位精度高 使用方便 性价比高 容易控制等优点 在各领域受到广泛应用 文中利用C52 单片机设计了一种步进电机控制系统 介绍了其总体方案 主控制模块 驱动电路 键盘 晶振电路模块等 并使用Protues绘制仿真图 与编程软件进行联合调试仿真 仿真结果表明 所设计的步进电机控制系统正确有效
关键词 单片机 步进电机 控制系统 研究 仿真

0

步进电机又称脉冲电动机,凭借其定位精度高、使用方便、性价比高、容易控制等优点,在办公自动化、工厂自动化和计算机外部设备等领域中受到广泛应用 ,故对其控制系统的研究颇为重要。
本文采用 C52 单片机 设计步进电机的控制系统,并使用 Protues 绘制仿真图,同时与编程软件( Keil4 )进行联合调试仿真,仿真结果表明,所设计的步进电机控制系统使用便捷、有效。

1 步进电机简介

步进电机是一种感应电动机,根据电子电路的原理将直流电变为分时供电、多相时序控制的电流,用分时电流为步进电机供电,使步进电机正常工作,而驱动器就是一种能为其分时供电,多相时序的控制器
步进电机在不超过负载的情况下,其转速、停止的位置只由脉冲频率以及脉冲数决定,而负载以外的变化对其无影响,当驱动器接收到一个脉冲信号时,便会驱动步进电机按设定好的方向转动一个固定的角度(“步距角”),其旋转按设定方向一步步运行。步进电机通过控制脉冲个数来控制角位移量,从而达到精准定位。同时也可通过控制脉冲频率来控制其速度与加速度,从而达到调速的目的。

2 硬件设计

本文以 STC89C52 单片机为核心处理器,将按键作为输入模块,以控制步进电机的正转、反转、步进,并实现正反转。步进电机选用 28BYJ-48 型四相八拍式步进电机,系统构成如图 1 所示。
由于单片机直接输出的脉冲信号不大,无法让步进电机正常工作,因此不能将其直接连接到步进电机上,需要在它们之间加上一个驱动电路。对于直流电流小于 0.5 A 的步进电机来说,可通过型号为 ULN2003A 的达林顿芯片来驱动步进电机,从而使其正常工作。ULN2003A 系列驱动器的引脚与步进电机连线示意图如图 2 所示。左边 1 7 为输入端,接单片机P2 口的输出端,驱动信号由 P2 口的 P2.0 P2.3 输出,左侧10~ 16 为输出端引脚,接步进电机,引脚 9 5 V 电源,该驱动器提供的电流最高为 0.5 A
键盘是由若干按键组成的按键矩阵,是一种最简单的单片机输入设备,通过键盘输入相应数据和指令来实现人对机器的控制,键盘电路如图 3 所示。
本文采用外部中断的方式。信号输入部分为 P3 口, P1 口为发光二极管显示部分,P2 口作为电机的驱动部分,整体仿真电路如图 4 所示。

3 程序设计

系统主程序流程如图 5 所示。系统上电复位,对参数进行初始化,然后检测串口是否发送数据,当确定串口数据发送后程序便调用相应的子程序 ;如果串口没有发送数据则程序重新初始化。系统上电复位后,键盘初始化并复位,然后进入按键查询,等待操作。当有按键按下后,系统开始调用相应的子程序。按键程序流程如图 6 所示,步进电机工作流程如图 7 所示。

4 仿真调试

使用 Protues 绘制仿真图,与编程软件( Keil4 )进行联合 调试仿真。当步进电机接收到连续不断的脉冲信号时,则持续运转。步进电机的绕组通电状态每改变一次就会产生一个脉冲信号,转子也相应转过一个步距角。当通电状态结束一个循环时,转子会转过一个齿距。四相八拍方式的通电顺序为:A 相线圈最先通电 ;然后转换变为 A B 两相线圈同时通电 ;接着 B 相线圈通电 ;再之后 B C 两相线圈同时通电……(即按 A-AB-B-BC-C-CD-D-DA-A …的顺序进行)。当步进电机定子绕组按顺序周期性通电时,转子沿设定方向一步步转动。步进电机工作波形如图 8 所示。

5

本文采用 C52 单片机来设计步进电机的控制系统,介绍 了其总体方案、主控制模块、驱动电路、键盘、晶振电路模块等, 并使用 Protues 绘制仿真图,与编程软件进行联合调试仿真, 仿真结果表明,所设计的步进电机控制系统正确有效。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1715814.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

洗地机哪个牌子最好用?十大名牌洗地机排行榜

作为一种新兴的智能家居产品,洗地机的市场规模已经突破了百亿大关。如此庞大的市场自然吸引了大量资本的涌入,许多品牌纷纷推出自己的洗地机产品,试图在这个竞争激烈的市场中占据一席之地。然而,面对如此多的品牌和型号&#xff0…

SelfKG论文翻译

SelfKG: Self-Supervised Entity Alignment in Knowledge Graphs SelfKG:知识图中的自监督实体对齐 ABSTRACT 实体对齐旨在识别不同知识图谱(KG)中的等效实体,是构建网络规模知识图谱的基本问题。在其发展过程中,标…

Java面试题分享-敏感词替换 java 版本

入职啦最近更新了一些后端笔试、面试题目,大家看看能快速实现吗? 关注 入职啦 微信公众号,每日更新有用的知识,Python,Java,Golang,Rust,javascript 等语言都有 不要再用replaceAll做…

Django之文件上传(一)

一、环境搭建 建立项目 django-admin startproject project_demo配置数据库(以MySQL为例) # settings.py DATABASES = {default: {ENGINE: django.db.backends.mysql,NAME: django_file4,USER: root,PASSWORD: 123,HOST: 192.168.31.151,PORT: 3306,} }建立模型 class UploadF…

Vue 3 教程:核心知识

Vue 3 教程:核心知识 1. Vue3简介1.1. 【性能的提升】1.2.【 源码的升级】1.3. 【拥抱TypeScript】1.4. 【新的特性】 2. 创建Vue3工程2.1. 【基于 vue-cli 创建】2.2. 【基于 vite 创建】(推荐)2.3. 【一个简单的效果】 3. Vue3核心语法3.1. 【OptionsAPI 与 Compo…

Codeforces Round 948 (Div. 2) E. Tensor(思维题-交互)

题目 n(3<n<100)个点的有向图&#xff0c; 图的边的关系未知&#xff0c;但保证以下两点&#xff1a; 1. 只存在j->i&#xff08;i<j&#xff09;的边 2. 对于任意三个点i、j、k&#xff08;i<j<k&#xff09;&#xff0c;要么k可以到达i&#xff0c;要么…

基于java实现图片中任意封闭区域识别

需求&#xff1a; 在浏览器中给用户呈现一张图片&#xff0c;用户点击图片中的某些标志物&#xff0c;需要系统给出标志物的信息反馈&#xff0c;达到一个交互的作用。 比如下图中&#xff0c;点击某个封闭区域时候&#xff0c;需要告知用户点击的区域名称及图形形状特性等等。…

Django之rest_framework(九)

一、分页-PageNumberPagination类 REST framework提供了分页的支持 官网:Pagination - Django REST framework 1.1、全局设置 # settings.py REST_FRAMEWORK = {DEFAULT_PAGINATION_CLASS: rest_framework.pagination.PageNumberPagination,PAGE_SIZE: 100 # 每页数目 }提示…

相对论表明速度越快时间越慢,为什么速度会影响时间?

在物理学的宏伟殿堂中&#xff0c;相对论以其深邃的洞察力&#xff0c;挑战了我们对时间和空间的传统认识。1905年&#xff0c;阿尔伯特爱因斯坦提出了狭义相对论&#xff0c;揭示了在所有惯性参照系中&#xff0c;光速是常数的惊人事实。 随后在1915年&#xff0c;他进一步发展…

ABAP 在增强中COMMIT

前言 呃&#xff0c;又是很磨人的需求&#xff0c;正常情况下是不允许在增强中COMMIT的&#xff0c;会影响源程序本身的逻辑&#xff0c;但是这个需求就得这么干… 就是在交货单增强里面要再调用一次交货单BAPI&#xff0c;通过SO的交货单自动创建STO的交货单&#xff0c;如果…

uniapp h5项目切换导航栏及动态渲染按钮颜色

1.效果图 2.html,动态渲染按钮样式---三元判断 <!-- 切换栏 --><view class"statusList"><block v-for"(item,index) in list" :key"index"><view class"swiper-tab-list" :class"current item.id?activ…

基于扩散模型的,开源世界模型DIAMOND

日内瓦大学、微软研究院和爱丁堡大学的研究人员联合开源了&#xff0c;基于扩散模型的世界模型—DIAMOND。 研究人员之所以选择扩散模型作为基础&#xff0c;是因为可以更好地捕捉视觉细节&#xff0c;同时具有建模复杂多模态分布的能力&#xff0c;以便在不同的环境下进行训练…

网络融合的力量:企业如何通过“一网多用”提升业务效率

随着企业业务的不断扩展&#xff0c;网络需求变得日益复杂。需要的是一种能够统一承载办公、生产、销售和运营等多业务需求的网络架构。这种“一网多用”的架构&#xff0c;不仅简化了网络部署和管理&#xff0c;还提升了效率并降低了成本。 “一网多用”架构的实际应用&#x…

[ C++ ] 深入理解模板( 初 阶 )

函数模板 函数模板格式 template <typename T1, typename T2,......,typename Tn> 返回值类型 函数名(参数列表){} 注意&#xff1a; typename是用来定义模板参数关键字&#xff0c;也可以使用class(切记&#xff1a;不能使用struct代替class) 函数模板的实例化 模板参数…

文件预览的实现

1.pdf预览 使用iframe 如果是预览本地文件&#xff0c;且是vue项目&#xff0c;pdf文件需要放在public文件夹下。 调试环境&#xff1a;vue、vant、js <template><div style"height: 100%;width: 100%"><iframe :src"pageUrl" style&quo…

Docker容器测试-常见问题+解决

前言 问题1&#xff1a;创建 nginx 容器尝试挂载 nginx.conf 文件时报错&#xff1a; mounting “/root/nginx.conf” to rootfs at “/etc/nginx/nginx.conf” caused: mount through procfd: not a directory: 在自己的服务器上想通过 nginx 镜像创建容器&#xff0c;并挂载…

ROS | C++和python实现发布结点和订阅结点

发布者结点&#xff1a; 代码实现&#xff1a; python: C: C和Python发布结点的差异&#xff1a; python: 发布结点pub 大管家rospy调用publisher函数发布话题 (话题,类型&#xff0c;话题长度&#xff09; C: 先定义一个大管家&#xff1a;NodeHandle 然后大管家发布话题…

【leetcode——栈的题目】——1003. 检查替换后的词是否有效python

题目&#xff1a; 给你一个字符串 s &#xff0c;请你判断它是否 有效 。 字符串 s 有效 需要满足&#xff1a;假设开始有一个空字符串 t "" &#xff0c;你可以执行 任意次 下述操作将 t 转换为 s &#xff1a; 将字符串 "abc" 插入到 t 中的任意位置…

Dinky MySQLCDC 整库同步到 MySQL jar包冲突问题解决

资源&#xff1a;flink 1.17.0、dinky 1.0.2 问题&#xff1a;对于kafka相关的包内类找不到的情况 解决&#xff1a;使用 flink-sql-connector- 胖包即可&#xff0c;去掉 flink-connector- 相关瘦包&#xff0c;解决胖瘦包冲突 source使用 flink-sql-connector- 胖包&#…

2024年西安交通大学程序设计校赛

A题 签到题 代码如下 //A #include<iostream> #include<algorithm> #define int long long #define endl \n #define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); using namespace std; signed main() {IOSint a,b,c,d;cin>>a>>b>>c…