单片机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组合…

result.append(path[:]) 和 result.append(path) 之间的区别

result.append(path[:]) 和 result.append(path) 之间有一个重要的区别&#xff0c;这涉及到对列表的浅拷贝。 result.append(path)&#xff1a; 这样直接将 path 添加到 result 中。由于列表是可变对象&#xff0c;result 中存储的是对 path 列表的引用。如果后续修改了 path…

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…

ruoyi 前后分离部署502

ruoyi 前后分离部署502 我使用了nginx部署前端&#xff0c;使用docker部署。nginx文件如下&#xff1a; server {listen 8086; #设置端口listen [::]:8086; #设置端口server_name localhost;#access_log /var/log/nginx/host.access.log main;location / {root /…

DBeaver连接Oracle时报错:Undefined Error

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

学习Java53天,JDBC中工具类封装v2,以及BaseDao

import com.alibaba.druid.pool.DruidDataSourceFactory;import javax.sql.DataSource; import java.sql.Connection; import java.sql.SQLException; import java.util.Properties; //事物时&#xff0c;Service和dao属于同一线程&#xff0c;不用再传参数了 /* 这个工具类的作…

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

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

vue 条件表达式 树形配置组件

公司需要一个可以配置条件表达式的组件 1、支持多个表达式拼接&#xff08;AND/OR&#xff09; 2、表达式可以分组 3、分组与单个表达式之间可以拼接 &#xff08;AND/OR&#xff09; 4、根据所选属性推断对应表达式连接符与值输入框 5、展示明了&#xff0c;通俗易懂 6、可以…

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

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

c 语言中 unsigned int 类型的负数实际值大小

一 在c 语言中 unsigned int 类型的负数实际值大小 #include <stdio.h>int main() {int a 5;printf("a: %d\n", a);unsigned int b a - 10;printf("b: %d\n", b);printf("%d\n", b 4294967291); // unsigned int -5 4294967291retur…

代码随想录算法训练营第32天|122.买卖股票的最佳时机II 55. 跳跃游戏 45.跳跃游戏II

JAVA代码编写 122. 买卖股票的最佳时机 II 给你一个整数数组 prices &#xff0c;其中 prices[i] 表示某支股票第 i 天的价格。 在每一天&#xff0c;你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买&#xff0c;然后在 同一天 出售…

6 合并两个有序数组

难度&#xff1a;简单 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m 和 n &#xff0c;分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中&#xff0c;使合并后的数组同样按 非递减顺序 排列。 注意&#xff1a;最终…

MySQL 优化器 MRR

什么是 MRR MRR 的全称是 Multi-Range Read Optimization&#xff0c;是优化器将随机 IO 转化为顺序 IO 以降低查询过程中 IO 开销的一种手段&#xff0c;咱们对比一下 mrron & mrroff 时的执行计划&#xff1a; 其中表结构如下&#xff1a; mysql> show create tabl…

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

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

element-plus 一键动态换任何皮肤功能

plus 官方代码给的思路 如果您想要通过 js 控制 css 变量&#xff0c;可以这样做&#xff1a; // document.documentElement 是全局变量时 const el document.documentElement // const el document.getElementById(xxx)// 获取 css 变量 getComputedStyle(el).getPropertyV…

【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;接下来…

跟我学C++中级篇——STL的并行算法

一、并行算法 在STL的算法中&#xff0c;对于大多数程序员的应用&#xff0c;都是普通的单线程的库。同时&#xff0c;很多开发者也都注意到&#xff0c;在STL的库中很多都是非多线程安全的。而且随着硬件和软件技术的不段的发展&#xff0c;许多库面临着在多核和多线程环境下…