单片机AT89C51直流电机控制电路PWM设计

wx供重浩:创享日记
对话框发送:直流电机
获取论文报告+源码源程序+原理图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


此文将介绍一种直流电机,详细阐述了用单片机输出口所给占空比的不同实现电机的调速的设计方法;着重讨论L298用于电机驱动时特有的优势。直流电机调速具有相当的实际意义。依据其调速的基本理论,本电路由模拟电源、控制电路、显示电路、驱动电路四部分组成。准确说就是模拟电源提供各个芯片电源、数码管、驱动L298所需电压;显示电路用于显示电动机转动时的速度大小及正反转所表示的代码。与传统的电动机调速相比具有操作方便,以及其输出速度大小采用数码显示的特点。文章中介绍了Protel 99发展及特点。直流电动机的工作原理、基本组成环节,电路分析、特殊元器件简介,设计方案的提出,更进一步说明了这类电机的好处。

关键词:单片机AT89C51 ;驱动L298;555定时器;直流电机;


一、 系统的设计

1.1 方案论证与选择
方案一:通过电压的大小来控制电机的转动速度;根据电动机在其额定电压时,电动机有一定的额定转速。根据其输入电压的减小,其转动速度也相应的减小。从而在传统的改变电动机的转速问题中,就是利用所给电动机的电压的不同,而达到人们所需要的大约速度。
方案二:以单片机AT89C51为中心通过D/A转换器,将单片机数字量转换为模拟量,从而起到控制电动机的转速问题。其中在单片机控制部分通过按键直接从程序中调出所需要速度的值,同时输到数码显示部分和D/A转换部分以实现电动机的调速。该电路最大的缺点是不能及时的从电动机那里得到相应的转动速度,而是直接从程序哪儿调用相应的数值给数码显示。所以,此处的电路在速度的显示上失去了其真实性。

在这里插入图片描述
方案三:采用AT89C51单片机进行控制。本设计需要使用的软件资源比较简单,只需要完成红外线采样部分、键盘控制部分以及显示输出功能。采用AT89C51进行控制比较简单、易控制、可靠性高、抗干扰能力强、精度高且体积大大减小。输出速度的调节是通过k5键操作,显示速度在最高速度、最低速度的中间即800转每分钟。显示速度一步到位,没有传统的粗调与细调之累赘,并且使用方便等优点。AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器.具有4K字节可编程闪烁存储器,可擦除的的只读存储器(PEROM), ATMEL的AT89C51是一种高效微控制器. AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案. 三级程序存储器锁定、128*8位内部RAM、32可编程I/O线、两个16位定时器/计数器、5个中断源、可编程串行通道、低功耗的闲置和 电模式、片内振荡器和时钟电路:
电路框图2如下
在这里插入图片描述
鉴于上面分析,方案一只能自以为减小所给电压值而能使电动机的转速有相应的减小。方案二只是把理想的速度送到数码显示以表示当时电动机的转速,缺乏真实性。所以,设计采用方案三。
1.2:单元电路设计
(1)电压源设计与选择
方案一:采用电压源直接滤波法.缺点:此稳压电源产生纹波较大.
方案二:采用稳压芯片进行稳压.优点:此稳压电源较稳定,产生的纹波较小,有利于电路功能的实现
系统采用方案二
(2)显示电路的设计与选择
方案一:采用字符型LCD显示.
方案二:采用LED数码管显示.
系统采用方案二
(3)模拟电压源的放大电路设计与选择
方案一:采用集成运放TL084进行放大. 缺点:难以调节.
方案二:采用集成运放TL082进行放大. 优点:易调节,且不过于浪费.
系统采用方案二
(4)输出电路设计与选择
方案一:采用直接输出法.缺点:不能有效地保护电压源和用电器.
方案二:采用再次驱动稳压器和保护电路的输出法.优点:在用电器发生短路时,能够有效地保护用电器和电压源.
(5)电路的控制方式电路设计与选择
方案一:采用直接控制法.
方案二:采用步进和复位法.
系统采用方案二

二.实际电路设计

2.1原理图

根据方案2,得到如下实际原理图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.2工作原理与过程
通电复位,电路进入初始状态:LED数码管显示0000,待电路正常工作时,开始显示电动机的速度和正反转。按S3电动机速度向上增加,按S2电动机速度向下递减,按S1使电动机朝刚才相反的方向转动同时显示相应字样。由于在实际使用中经常用到的速度有1.5v、3v、4.5v,5v,6v,8v,12v等速度值,所以本电路还设置了几个按键,如按下S4,电机的速度直接跳转到速度为****,按下S5, 电机的速度直接跳转到速度为****,电机的速度直接跳转到速度为****,等。
L298是具有15个引脚的单列直插式2位同时驱动芯片。其引脚功能分别为:1、8、15脚为GND引脚,2、3脚为输出引脚, 9脚为VSS引脚,4脚为VS引脚,5、7脚为输入引脚,6脚为选通1通道引脚。其余引脚为通道2所需要引脚,在此没有用到通道2,故其余引脚全部悬空。当6脚数据输入量为1时,1通道正常工作,当5、7脚输入为1、0时,2、3脚输出的电平使电动机正转,并且可以按照单片机所复给6脚的置1、置0的占空比的不同而使电动机的转速得以改变。当5、7脚输入为0、1时,2、3脚输出的电平使电动机反转,并且同理可以按照单片机所复给6脚的置1、置0的占空比的不同而使电动机的转速得以改变。

保护电路由二极管组成,由于电动机是呈电感性很强的,所以在开机或着关机时,会产生很大的感应电压而烧坏芯片,在此,为了保护驱动芯片,接了几个二极管,从而大大的减小了由于感应电压带给驱动芯片的危害。

2.3理论计算与主要芯片的说明与应用
2.3.1 主要芯片说明
(1)单片机AT89C51
a:AT89C51的内部结构原理图见图5
在这里插入图片描述
在这里插入图片描述
主要特性:
·与AT89C2051 兼容
·4K字节可编程闪烁存储器
寿命:1000写/擦循环
数据保留时间:10年
·全静态工作:0Hz-24Hz
·三级程序存储器锁定
·128*8位内部RAM
·32可编程I/O线
·两个16位定时器/计数器
·5个中断源
·可编程串行通道
·片内振荡器和时钟电路
管脚说明:

VCC:供电电压。
GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:

口管脚 备选功能
P3.0 RXD(串行输入口)
P3.1 TXD(串行输出口)
P3.2 /INT0(外部中断0)
P3.3 /INT1(外部中断1)
P3.4 T0(记时器0外部输入)
P3.5 T1(记时器1外部输入)
P3.6 /WR(外部数据存储器写选通)
P3.7 /RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:复位输入。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。
/PSRN:外部程序存储器的选通号。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

(其余完整详见下载!)

(3).555 定时器的工作原理
555 定时器原理图及引线排列如图1 所示。其功能见表1。定时器内部由比较器、分压电路、RS 触发器及放电三极管等组成。分压电路由三个5K 的电阻构
成,分别给1 A 和2 A 提供参考电平2/3 DD U 和1/3 DD U 。1 A 和2 A 的输出端控制RS触发器状态和放电管开关状态。当输入信号自6 脚输入大于2/3 DD U 时,触发器复位,3 脚输出为低电平,放电管T 导通;当输入信号自2 脚输入并低于1/3 DD U时,触发器置位,3 脚输出高电平,放电管截止。4 脚是复位端,当4 脚接入低电平时,则o U =0;正常工作时4 接为高电平。5 脚为控制端,平时输入2/3 DD U作为比较器的参考电平,当5 脚外接一个输入电压,即改变了比较器的参考电平,从而实现对输出的另一种控制。如果不在5 脚外加电压通常接0.01μF 电容到地,起滤波作用,以消除外来的干扰,确保参考电平的稳定。
在这里插入图片描述
在这里插入图片描述
2.3.2 关键电路单元的工程计算:(详见下载)

2.4软件设计与测试
(1)程序流程图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(其余完整详见下载!)

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

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

相关文章

docker devicemapper: Error running DeleteDevice dm_task_run failed

docker 删除容器,遇到: devicemapper: Error running DeleteDevice dm_task_run failed 异常 [hadoophadoop02 ~]$ sudo docker rm 5ede1280f0bf Error response from daemon: container 5ede1280f0bf791e91d40038b15decd42e8923546ae578abd96e08114c76…

Python基础语法之判断语句

1.布尔类型和比较运算符 布尔类型&#xff1a;数字类型的一种。 比较运算符&#xff1a; > < > < ! 2.if语句基本格式 if 要判断的条件&#xff1a; 条件成立&#xff0c;即做~ 例子&#xff1a; 注意&#xff1a;格式上冒号和缩进 3.if else组合…

2023年【道路运输企业安全生产管理人员】最新解析及道路运输企业安全生产管理人员复审考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 道路运输企业安全生产管理人员最新解析是安全生产模拟考试一点通总题库中生成的一套道路运输企业安全生产管理人员复审考试&#xff0c;安全生产模拟考试一点通上道路运输企业安全生产管理人员作业手机同步练习。2023…

matlab三维地形图

matlab三维地形图 %%%%—————Code to draw 3D bathymetry—————————— %-------Created by bobo,10/10/2021-------------------- clear;clc;close all; ncdisp E:\data\etopo\scs_etopo.nc filenmE:\data\etopo\scs_etopo.nc; londouble(ncread(filenm,lon)); lat…

DBeaver连接Oracle时报错:Undefined Error

连接信息检查了很多遍&#xff0c;应该是没问题的&#xff0c;而且驱动也正常下载了&#xff0c;但是就是连不上。 找了好久&#xff0c;终于找到一个可用的方式了&#xff0c;记录一下。 在安装目录修改dbeave.ini文件&#xff0c;最后一行添加 -Duser.nameTest。重启就可以…

如何使用Python在3dMax控制网格对象?

我们以一个在3dMax中使用Python脚本在网格对象对象上创建水波变形作为例子。 首先&#xff0c;在3dmax创建两个对象&#xff0c;一个“box”对象&#xff0c;将长宽方向的分段设置的多一些&#xff08;目的是为了后面的水波变形&#xff09;&#xff0c;一个“点”帮助对象&am…

Yakit工具篇:WebFuzzer模块之热加载技术

简介 官方定义&#xff1a; 什么是热加载&#xff1f; 广义上来说&#xff0c;热加载是一种允许在不停止或重启应用程序的情况下&#xff0c;动态加载或更新特定组件或模块的功能。这种技术常用于开发过程中&#xff0c;提高开发效率和用户体验。 在Yakit 的Web Fuzzer中&…

Docker 部署 Nacos(单机),利用 MySQL 数据库存储配置信息

前面的话 默认你已经懂 Docker、docker-compose Nacos版本&#xff1a;v2.2.3 MySQL 版本&#xff1a;8.2.0 一、下载 打开 Nacos 官网 官网地址&#xff1a;官网 点击手册 左侧 Nacos Docker 克隆项目到本地 # 克隆项目&#xff0c;如果提示连接不到 github 请自行解决 …

【Flutter】设置顶部状态栏的显示、隐藏、半透明灰色显示

【Flutter】设置顶部状态栏的显示、隐藏、半透明灰色显示 设置方法&#xff1a; // 这种模式不现实状态栏 SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky); // 这种模式显示状态栏 SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge); // 修…

运行软件报错找不到vcruntime140_1.dll无法继续执行代码如何解决?-常见问题

关于vcruntime140_1.dll丢失的6个解决方法。在我们使用电脑的过程中&#xff0c;有时候会遇到一些错误提示&#xff0c;其中之一就是“vcruntime140_1.dll丢失”。那么&#xff0c;究竟什么是vcruntime140_1.dll文件呢&#xff1f;又是什么原因导致了它的丢失&#xff1f;接下来…

基于WSL2+Docker+VScode搭建机器学习(深度学习)开发环境

基于WSL2DockerVScode搭建机器学习(深度学习)开发环境 内容概述&#xff1a;由于最近配发了新的工作电脑但不想装双系统&#xff0c;因此通过本博文来记录基于Windows子系统WSLDocker搭建机器学习与深度学习开发环境的流程步骤&#xff0c;同时记录该过程中所遇到的相关问题及解…

交流充电桩与直流充电桩的区别

1、背景 直流充电桩的学名是非车载充电机&#xff0c;是相对于交流充电桩而言的。交流充电桩是采用传导方式为具备车载充电机的电动汽车提供交流电能的专用装置。 2、交流充电桩和直流充电桩 1.1、交流充电桩 交流充电桩包括单相和三相交流充电桩。 图一是交流充电桩原理框…

JMeter 设置请求头信息的详细步骤

在使用 JMeter 的过程中&#xff0c;我们会遇到需要设置请求头信息的场景。比如&#xff1a; POST 传过去的 Body 数据是 json 格式的。需要填添加头信息&#xff1a;Content-Type&#xff1a;application/json。 在 header 中用 token 来传用户的认证信息。 下面&#xff0c;…

5.1 Windows驱动开发:判断驱动加载状态

在驱动开发中我们有时需要得到驱动自身是否被加载成功的状态&#xff0c;这个功能看似没啥用实际上在某些特殊场景中还是需要的&#xff0c;如下代码实现了判断当前驱动是否加载成功&#xff0c;如果加载成功, 则输出该驱动的详细路径信息。 该功能实现的核心函数是NtQuerySys…

位图和布隆过滤器

目录 一. 位图 1.题目&#xff1a; 给40亿个不重复的无符号整数&#xff0c;没排过序。给一个无符号整数&#xff0c;如何快速判断一个数是否在这40亿个数中&#xff1f; 2.解析题目&#xff1a; 3.位图 4.代码以及测试 5.其他题目 二.布隆过滤器 1.介绍 2.实现 …

【Docker】从零开始:12.容器数据卷

【Docker】从零开始&#xff1a;12.容器数据卷 1.什么是容器数据库卷2.数据的覆盖问题3.为什么要用数据卷4.Docker提供了两种卷&#xff1a;5.两种卷的区别6.bind mount7.Docker managed volumevolume 语法volume 操作参数 1.什么是容器数据库卷 卷 就是目录或文件&#xff0c…

python_selenium自动化测试框架

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;交流讨论&#xff1a;欢迎加入我们一起学习&#xff01;&#x1f4e2;资源分享&#xff1a;耗时200小时精选的「软件测试」资…

nginx的n种用法(nginx安装+正向代理+反向代理+透明代理+负载均衡+静态服务器)

nginx的安装 一、安装依赖 # 一键安装四个依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel二、安装nginx yum install nginx三、检查是否安装成功 nginx -v四、启动/停止nginx /etc/init.d/nginx start /etc/init.d/nginx stop五、编辑配置文件…

重生之我是一名程序员 41 ——字符串函数(2)

哈喽啊大家晚上好&#xff01;今天呢我们延续昨天的内容&#xff0c;给大家带来第二个字符串函数——strcat函数。 首先呢&#xff0c;还是先带大家认识一下它。strcat函数是C语言中用于将两个字符串连接起来的函数&#xff0c;其函数原型为&#xff1a; char *strcat(char *…

JAVA毕业设计112—基于Java+Springboot+Vue的宠物领养社区小程序(源码+数据库)

基于JavaSpringbootVue的宠物领养社区小程序(源码数据库)112 一、系统介绍 本系统前后端分离带小程序 小程序&#xff08;用户端&#xff09;&#xff0c;后台管理系统&#xff08;管理员&#xff09; 小程序&#xff1a; 登录、注册、宠物领养、发布寻宠、发布领养、宠物社…