基于单片机的直流电机检测与控制系统

摘要: 文章设计一款流电机控制系统,以 STC89C51 作为直流电机控制系统的主控制器,采用 LM293 做为驱动器实现 对直流电机的驱动,采用霍尔实现对直流电机速度的检测;本文对直流电机控制系统功能分析,选择确定直流控制系 统各个模块的参数和型号;然后对该直流电机的硬件电路和软件算法进行设计,最后对该直流电机控制系统的实物制 作和测试,对测试结果显示,在 5 个按键输入控制的作用下,直流电机能够实现加速、减速、正反转以及暂停功能,实现 功能。
关键词: 流电机;速度检测与控制;单片机;霍尔传感器
在国民生活、生产的每一个领域中,都渗进了直流电机的 控制与应用。因而有关的研究多多。直流电机用定角转动控 制,其以突出的优点被广泛应用,如开环控制较易实现,不会 产生积累误差等。因此,被应用在家居行业中的指针式电子 钟表、电动窗帘等,工业中的包装机械的计量系统、光盘选取 机、数控切割机等,建筑业中的喷泉喷头角度控制系统等。随 着现代控制技术的智能化和网络化,也将单片机引入到直流 电机控制系统中,从上述状况看来,对基于单片机的直流电机 控制系统,有必要性进行进一步的研究与改进。

1 系统方案设计

本直流电机控制系统实现的功能主要是,实现对直流电 机的速度检测、控制以及显示,通过按键实现直流电机的正反 转,加速以及暂停控制,所以设计的框图如图 1 所示。
主要包括 6 个部分实现直流电机的驱动功能,按键实 现正反转、加减速以及暂停的功能;单片机扫描到按键后对 驱动模块进行驱动,实时显示直流电机速度和占空比等信 息。
电机速度在硬件电路上对电机的速度调节是通过对加在 直流电机上的电压进行调整的,因为直流电机的速度与加在 直流电机上的电压为一个正比例关系,二PWM 技术对于线下 调节电路非常实用,所以采用 PWM 技术。简单的介绍 PWM 技术,PWM 技术实际就是使得单片机的引脚输出波形,引脚 输出高时直流电机转动并且是最高转速,输出低时直流电机 不动最低转速,所以在一定周期下,改变两者的时间,实现对 加在直流电机上的电压进行调节。
设计的硬件电路如图 2 所示,主要包括单片机控制电路, 显示电路,按键调节电路以及直流电机驱动电路。

2 系统硬件电路设计

2.1 单片机最小系统电路设计

单片机其中一个复位电路,属于手动执行;同时采用电压 不能实现突变特性采用电容 C1 和限流作用的 R7 电阻,实现 另外一种复位,保证不论在何时上电,单片机的程序都是从最 开始执行的,这一复位原理是基于电容上所加电压不能突变 的原理,在上电瞬间保持加在电容上 5V RESET 引脚上的 高电平电压时间大于单片机所需复位两个周期的典型时间而 实现复位。
通过晶振与单片机的 XTAL11 XTAL22 连接构成的晶 振电路,作为单片机工作的基准,电容的取值范围大多数在 15 到 33pF 之间,主要就是辅助晶振实现快速起动振荡的作用, 晶振就是单片机工作时基的基准,晶振值大小与工作时基的 基准成反比例关系,越大工作时基频率越快。为了提高晶振 实现快速起动30pf电容,晶振选择 12M 对应工作时间为( 1/12 ) us;

2.2 速度检测电路设计

速度作为系统检测的基础,霍尔实现对速度的检测。霍 尔检测电路输出的输出信号与单片机的 P33 外部中断引脚连 接,因为输出的 PWM 信号,采用其外部中断对里程和速度进 行换算实现速度检测。

2.3 速度显示电路设计

需要在该系统中液晶用来显示时间倒计时和界面信息, 使用液晶字符式来显示倒计时,在控制方面可以用软件来实 现精准的控制,并且可以显示不同形式的字符内容,缺点就是 价格昂贵。显示电路主要由单片机的 P0 口对液晶的 8 个数 据口控制,进行数据读写操作,相关的读写指令则由单片机的 P1.0、 P1.1 控制实现。

2.4 电机驱动电路设计

系统的电机驱动电路设计所示采用 H 桥实现对直流电机 的速度和方向控制,单片机的 P34 P37 分别对一个桥臂进 行控制,H 桥由四个 NPN 三极管构成,单片机 P34 引脚输出 高电平 P37 输出低电平时, Q3 Q4 导通, Q5 Q6 断开,在 电机的左端为高电平,右端接电源地,电机正转,反之电机反 转,实现对电机方向的控制,通过 PWM 原理实现对电机的速 度进行控制。

2.5 按键电路设计

五个按键电路功能分别对应的是电机的启停控制、转速 方向控制以及速度加减控制。K1 按键实现的功能是控制电机 的正转控制,由单片机的 P1.0 控制; K2 按键实现的电机反旋 转方向的控制,由单片机的 P1.1 控制; K3 按键实现的是电机 速度加控制,由单片机的 P1.2 控制; K4 按键实现的是电机的 速度减控制,由单片机的 P1.3 控制; K5 按键实现的是电机的 停止控制,由单片机的 P1.4 控制,按键按下引脚被接地,单片 机读取引脚状态即可实现功能。

3 软件设计

主程序流程图如图 3 所示,读取扫描按键值,实现对电机 不同状态的控制,加速、减速以及启停控制,根据检测到的值 对 LCD 进行控制,实现直流电机显示、控制系统。

4 系统仿真分析

Proteus 上联合 keil 软件对硬件和软件算法进行仿真, 得到仿真电路如图 4 所示。
接下来,就对直流电机的主要功能进行验证和调试,通过 四个按键来实现启停控制,同时还对显示功能进行验证。通 过上述实验,本文对基于单片机的直流电机控制系统的相关 功能进行验证,实现了对直流电机的速度控制以及精确显示, 完成了预期的设计功能。

5 结语

虽然本文完成了对直流电机控制系统,但是还有很多需 要改进的地方,比如可以对软件部分进行优化,通过更先进的 控制算法实现直流电机控制精度的提高,还可采取触摸屏实 现对直流电机控制系统的触摸操作等 本文基于单片机设计了一款直流电机控制系统,实现 了对直流电机的精确控制,满足了对直流电机的加速、减 速、正反转及暂停等控制操作。整个系统包括单片机核心 控制电路、按键功能电路、直流电机驱动电路以及指示灯电 路,在硬件电路以及软件代码的设计基础上,本文通过 protues 以及 keil 对系统进行了联合仿真,验证了硬件以及软 件设计。

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

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

相关文章

WAAP全站防护理念,发现和保护敏感数据

数据是现代企业的新石油:正确使用它可以促进公司的发展并帮助企业在竞争中领先。就像石油一样,原始数据和未被发现的数据是毫无用处的,企业将无法从中受益;在最坏的情况下,它可能会导致安全事件。这也是企业投资敏感数…

A计算机上的程序与B计算机上部署的vmware上的虚拟机的程序通讯 如何配置?

环境: 在A计算机上运行着Debian11.3 Linux操作系统;在B计算机上运行着Windows10操作系统,并且安装了VMware软件,然后在VMware上创建了虚拟机C并安装了CentOS 6操作系统 需求: 现在A计算机上的程序需要同虚拟机C上的软…

【负载均衡式在线OJ项目day6】源文件路由功能及文件版题库构建

一.前言 前文讲到了OJ模块的设计思路,毫无疑问这是一个网络服务,我们先使用httplib,将源文件的路由功能实现,先把框架写好,后续再更改回调方法。 随后计划编写Modify模块,提供增删查改题库的功能(主要是查…

【贪心算法】最小生成树Kruskal算法Python实现

文章目录 [toc]问题描述最小生成树的性质证明 Kruskal算法Python实现时间复杂性 问题描述 设 G ( V , E ) G (V , E) G(V,E)是无向连通带权图, E E E中每条边 ( v , w ) (v , w) (v,w)的权为 c [ v ] [ w ] c[v][w] c[v][w]如果 G G G的一个子图 G ′ G^{} G′是…

acer笔记本怎样进行系统还原?教你两招!

acer笔记本怎样进行系统还原?教你两招! 作为笔记本用户,你在日常使用中可能会遇到各种各样的电脑问题。一般来说,对于一些小问题,我们可以通过一些简单的操作来解决,比如重新启动电脑或者长按电源键强制关机…

提高静态住宅代理稳定性妙招

在数字化时代的浪潮中,静态住宅代理因其独特的优势,如固定的IP地址、更高的隐私保护性等,逐渐成为网络爬虫、数据分析等领域不可或缺的工具。然而,静态住宅代理的稳定性问题一直是用户关注的焦点。本文将为您揭示提高静态住宅代理…

docker compose kafka集群部署

kafka集群部署 目录 部署zookeeper准备工作2、部署kafka准备工作3、编辑docker-compose.yml文件4、启动服务5、测试kafka6、web监控管理 部署zookeeper准备工作 mkdir data/zookeeper-{1,2,3}/{data,datalog,logs,conf} -p cat >data/zookeeper-1/conf/zoo.cfg<<EOF…

JS代码随想录(一):数组

代码随想录 一、数组理论基础 二、LeetCode 704. 二分查找 三、LeetCode 27. 移除元素 四、LeetCode 977.有序数组的平方 五、LeetCode 209.长度最小的子数组 六、LeetCode 59.螺旋矩阵II 七、数组总结 一、数组理论基础 数组是存放在连续内存空间上的相同类型数据的集合。 数组…

boost asio同步编程(附源码api)

首先注明&#xff0c;这里我写的都是关于tcp的通信。 通信大致流程 创建端点 创建tcp端点的api是boost::asio::ip::tcp::endpoint; 当然创建udp端点的api则是boost::asio::ip::udp::endpoint; 是一个表示 TCP/UDP 端点的类&#xff0c;在 Boost.Asio 库中用于网络编程。它通…

鸿蒙ArkUI:【编程范式:命令式->声明式】

命令式 简单讲就是需要开发用代码一步一步进行布局&#xff0c;这个过程需要开发全程参与。 开发前请熟悉鸿蒙开发指导文档&#xff1a;gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 Objective-C ObjectiveC 复制代码 UIView *cardView …

day3_prefixSum

一、前缀和技巧 重点 前缀和技巧适用于快速、频繁地计算一个索引区间内的元素之和 个人理解&#xff1b;预计算&#xff0c;空间换时间 1.(一维数组的前缀和)303区域和检索-数组不可变 获取闭区间值 [left,right] -> preSum[right 1] - preSum[left],其中preSum[right…

Linux下VMamba 环境复现+环境测试

# 1. 创建自己的虚拟环境 conda create -n VMamba python3.10.13 conda activate VMamba # 2. cuda-11.8 conda install cudatoolkit11.8 -c nvidia # 3. torch torchvision torchaudio 与 官网命令一致 pip install torch2.1.1 torchvision0.16.1 torchaudio2.1.1 --index-url…

苹果电脑怎么清内存?2024有哪些好用的工具?

在使用苹果电脑的过程中&#xff0c;我们可能会遇到系统运行缓慢、程序响应迟缓或频繁出现应用程序崩溃的情况&#xff0c;这些问题很可能是由于内存占用过高所导致。内存&#xff0c;或称为RAM&#xff08;RandomAccessMemory&#xff09;&#xff0c;是计算机的临时存储区&am…

超级好看的html网站维护源码

源码介绍 好看的html网站维护源码&#xff0c;源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面&#xff0c; 源码截图 源码下载 好看的html网站维护源码

py黑帽子学习笔记_网络编程工具

tcp客户端 socket.AF_INET表示使用标准IPV4地址和主机名 SOCK_STREAM表示这是一个TCP客户端 udp客户端 udp无需连接&#xff0c;因此不需要client.connect这种代码 socket.SOCK_DGRAM是udp的 tcp服务端 server.listen(5)表示设置最大连接数为5 发现kill server后端口仍占用…

【服务治理中间件】consul介绍和基本原理

目录 一、CAP定理 二、服务注册中心产品比较 三、Consul概述 3.1 什么是Consul 3.2 Consul架构 3.3 Consul的使用场景 3.4 Consul健康检查 四、部署consul集群 4.1 服务器部署规划 4.2 下载解压 4.3 启动consul 五、服务注册到consul 一、CAP定理 CAP定理&#xff…

i春秋-Backdoor

题目 考点 git源码泄露 Linux文件恢复 代码审计 http 解题 参考wp https://blog.csdn.net/cbhjerry/article/details/105791056https://www.pianshen.com/article/19461342501/扫描 题目给出提示&#xff1a;敏感文件泄漏 于是使用dirsearch扫一下 python dirsearch.py -…

ICode国际青少年编程竞赛- Python-4级训练场-while语句综合

ICode国际青少年编程竞赛- Python-4级训练场-while语句综合 1、 for i in range(4):while not Flyer[i].disappear():wait()Spaceship.step(6)Spaceship.turnLeft()2、 Dev.turnLeft() for i in range(4):Spaceship.step(2)while Flyer[i].disappear():wait()Dev.step(4)Dev.…

Failed to parse source map (@toast-ui/editor/dist/purify.js.map)

使用 toast-ui-editor 时出现报错&#xff1a;Failed to parse source map (toast-ui/editor/dist/purify.js.map) 解决方法很简单&#xff1a; "start": "set "GENERATE_SOURCEMAPfalse" && react-scripts start ",在启动脚本时添加执…

程序员代码面试指南题目解析(一)

题目一&#xff1a;如何仅用递归函数和栈操作逆序一个栈 题目要求&#xff1a; 一个栈依次压入 1、2、3、4、5&#xff0c;那么从栈顶到栈底分别为5、4、3、2、1。将这个栈 转置后&#xff0c;从栈顶到栈底为 1、2、3、4、5&#xff0c;也就是实现栈中元素的逆序&#xff0c;但…