直流电机驱动c语言程序,单片机PWM控制直流电机驱动程序+仿真+报告

article/2025/9/11 18:33:41

直流电机驱动资料包:

cdfbf3a4c18271960e3ceb75c837b2b1.png

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)

22165b737727f1ce60065b6b15b9a0a0.png

43adc3690c10d31249e8ca3c2b492294.png

电子系统设计报告

课题名称 直流电动机驱动

专    业 电子信息工程技术

目录

第1章              设计题目与要求

第2章              设计方案

2.1              设计方案

2.2              方案选择

2.3              系统框图

第3章              硬件设计

3.1              总体硬件设计

3.2              晶体振荡器电路

3.3              复位电路

3.4              按键输入电路

3.5              显示电路

3.6              电机驱动电路

3.7              电机模块

第4章              图形界面设计

4.1              图形界面设计

第5章              软件设计

5.1              程序流程图

第6章              制作与调试

6.1              硬件调试

6.2              程序调试

6.3              心得体会

参考文献

设计题目与要求

设计题目:直流电机驱动。

设计要求:设计直流电机驱动。

设计液晶屏(LCD1602)显示电路和独立键盘输入电路。

能准确显示电机状态及转速。

能通过按键控制电机状态及转速。设计方案2.1设计方案

方案一:单片机的四组并行口(P0、P1、P2、P3)在复位时是高电平,那么在设计按键接口时可以设计为低电平有效。当低电平时判断按键被按下去,执行相关的操作。

按键按下去会存在抖动现象。如果对按键进行计数,会发现虽然只按下去一次,所计的数却不一致。这样会导致错误的操作。因此需要对按键进行消抖,按键接口只是执行单纯的被检测功能,需要特殊的功能寄存器,所以使用P1口。

显示模块采用LCD1602液晶屏,使用单片机的P0口。P0比较特殊,需要外接上拉电阻才能正常进行输出。考虑到简化仿真图的设计,故使用P0口作为LCD1602液晶屏是数据端口。

由于需要对电机进行测速和状态测,P3存在一些特殊寄存器可以使用,故保留P3口。其它接口均接在除P3口以外的接口。

直流电机的转速与正向电流持续时间成正比,使用PWM方式产生脉冲,电机转速进行调节。具体如何产生则使用定时器T0产生中断。

测速则使用T1定时器、外中断INT1组合测量。通过外中断INT1的负跳变来开启T1计时器,通过测量两次负脉冲的时间间隔即可得到转速(电机转动一圈发出一定时长的高电平)。

状态的测量则在再次使用外中断0、1来完成。状态测量采用这样的测量方式只需要测量一次即可,占用时间很短,并且准确。

方案二:对方案一的部分进行修改。按键部分为了响应准确,采用外接高电平的方法。

电机测速模块:仍然不变。

状态测量改成通过内部编程完成测量,不需要外中断0、1的参与。

方案三:仍然对方案一进行修改。按键部分为确保准确性,按键外部接上高电平。

PWM波形产生模块使用数据选择器对电机的正反转进行控制,降低编程难度。2.2方案选择

方案一过于追求准确性,编程复杂,过多的开启中断实现功能与其它方案是一样的,但是大量标志位的开启需要特别注意,同时要小心时序问题。对编程能力、协调有比较高的要求。

方案二准确的提高了按键的准确性部分,通过仔细考虑,与开外中断测量比较,编程变简单。全部实现比较容易,但为保证准确性、需要通过编程进行调整。

方案三经过仔细考虑,使用数据选择器虽然降低了变成难度,在选择芯片、了解芯片可能需要多花时间。

最终认为方案二比较可行。2.3系统框图

e27adf21c1d1de82d5b1b40358ed8743.png

59f50dafb11cbaf9e6af0500d296c138.png

整个系统以单片机为核心,处理信息。键盘:有7个键盘,每个键盘有不同的功能。键盘的输入信号流入单片机需要进行消抖,避免产生预期外的结果。

STC89C51:负责整个系统的信息处理。包括键盘的输入信号处理、根据键盘的信号发出电机驱动信号、对电机的速度和转向进行测量、测量完成将信息送给显示。

电机驱动芯片:电机所需要的驱动电流相对于STC89C51直接输出的电流要打的多,对电机的控制不理想。反过来同样会影响到单片机的正常工作。所以需要通过驱动芯片来驱动直流电机。

电机:电机为MOTOR-ENCODER,有五条线。其中的两条用来输入电流驱动电机,剩余的三条为电机的编码输出。中间的线输出特征为电机转动一圈输出一个正脉冲。边上两个根线输出的脉冲可调,脉冲的相位相差90度,反应了电机的正反转。

显示:显示所用器件为LCD1602显示器,显示电机转速,正反转状态。硬件设计3.1总体硬件设计


http://chatgpt.dhexx.cn/article/XOSS8Fee.shtml

相关文章

GC9110T 12V 直流电机驱动芯片 GC9110(低压6V驱动)的12V升级版本

GC9110T是一款12V直流电机驱动芯片,为摄像机、消费类产品、玩具和其他低压或者电池供电的运动控制类应用提供了集成的电机驱动解决方案。芯片一般用了驱动一个直流电机或者使用两颗来驱动一个步进电机。GC9110T是GC9110(低压6V驱动)的12V升级…

直流电机驱动

1. 直流电机是一种将电能转化为机械能的装置,一般的直流电机有两个电极;当电极正接时,电机正转;当电机反接时,电机反转; 2. PWM:脉冲宽度调制-------PWM调速的原理就是:我让他转5us…

GC8871一款带内部电流感测功能的刷式直流电机驱动芯片(可替代DRV8871)

GC8871是一款带内部电流感测功能的刷式直流电机驱动芯片, 适用于打印机、电器、工业设备以及其他小型机器。两个逻辑输入控制 H 桥驱动器, 该驱动器由四个NMOS组成, 能够以高达3.6A 的峰值电流双向控制电机。 利用电流衰减模式,可…

几款H桥电机驱动芯片直流有刷电机驱动芯片性能分析

如果您正在寻找一款高性能、可靠、集成度高、能实现卓越电流控制的H桥电机驱动芯片,那么下面介绍的芯片将是不错的选择。 这一系列芯片具有出色的功耗管理能力,以及多种保护功能,精确的电流检测和监控,能够确保系统的长期稳定运…

DRV8872直流电机驱动芯片简要的使用说明

DRV8872直流电机驱动芯片简要的使用说明 ​ (DRV8872) 一、能干什么 DRV8872主要用于直流电机的驱动。它有两个输入端子,控制一个BDC(直流电机)的工作。同时,它还能通过在ISEN引脚外接电阻控制流过电机的电流;通过nFAULT引脚输出错误信息给…

【电机驱动芯片(H桥、直流电机驱动方式)——DRV8833、TB6612、A4950、L298N的详解与比较】

文章目录 一.全H桥电路基础知识1.原理图(以全NMOS管为例)2.H桥工作模式正转模式反转模式电流衰减模式 3.补充 二.DRV8833芯片介绍1.基本介绍2.引脚功能3.功能框图4.结构详细介绍5.逻辑控制6.另外一种DRV8833CPWP型号的区别 三.TB6612FNG芯片介绍1.基本介…

直流电机驱动芯片

由于单片机属于信息类电路,带负载能力极差,不可能直接用来控制电机的运动。因此电机的驱动就显得尤为重要。本文汇总了自己用过的几个电机驱动芯片及其注意事项等等,以后有机会还会继续修正增加等。大家有其他的方案也欢迎交流。 芯片种类 驱…

一些免费Api分享(持续更新中...)

有时候想自己写点有意思的工具,又不想自己搭服务器,这里我们就得找一些有意思的Api供自己使用! 免费API http://api.wpbom.com/ 46 种类多 公共API https://www.qqlykm.cn/ 87 类型多 接口大全 https://www.free-api.com/ 100 类型丰富&#…

夏柔免费API管理系统

系统介绍 基于ZeroArt二开美化 页面方式仿的ApiFox,严禁商用,仅供学习测试交流 内置**100**免费接口(远程),部署即用,内置的远程接口可持续提供调用服务! 接口数据来源:api.aa1.c…

公开的免费API集锦

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl API集锦 在此,介绍部分目前已知的公开的免费API供开发人员使用。 http协议测试 http://httpbin.org/ httpbin非常强大,简单,易用。 文…

免费接口及资源

手机号码归属地API接口: https://www.juhe.cn/docs/api/id/11 历史上的今天API接口: https://www.juhe.cn/docs/api/id/63 股票数据API接口: https://www.juhe.cn/docs/api/id/21 全国WIFI接口: https://www.juhe.cn/docs/…

JavaWeb request用法

request封装了所有的请求信息 如: protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("请求方法:"request.getMethod());System.out.println("URI&#…

@RequestBody的使用

提示:建议一定要看后面的RequestBody的核心逻辑源码以及六个重要结论!本文前半部分的内容都是一些基 本知识常识,可选择性跳过。 声明:本文是基于SpringBoot,进行的演示说明。 基础知识介绍: R…

JSP 内置对象request常见用法

随时随地阅读更多技术实战干货&#xff0c;获取项目源码、学习资料&#xff0c;请关注源代码社区公众号(ydmsq666) 1、访问请求参数 <a href"login.jsp?name张三&sexman&id">传递参数</a> login.jsp关键 代码 <% "name:"new Stri…

jsp的request用法

request用于接受html提交的表单数据 首先如下图先创建一个QQ注册页面 设置昵称input的属性name值,并且设置提交到的页面为reg_success.jsp,这里提交方式有两种: get 和 post 。区别如图: <% page contentType"text/html;charsetUTF-8" language"java" …

uni.request的使用

uniapp中有很多原生的API&#xff0c;其中我们经常会用到的肯定有&#xff0c;uni.request. 那么问题来了&#xff0c;当我们第一次使用的时候&#xff0c;该怎么去用呢, 首先我们来看一看官方文档给出的示例 uni.request({url: https://www.example.com/request, //仅为示例…

el-upload使用http-request自定义上传和进度条实战

介绍 项目中发现使用默认的el-upload上传动作发送上传请求的时候不会带上请求头&#xff0c;于是想通过自定义请求也就是http-request来自定义上传。实践证明这条路是通的&#xff0c;不过有个小问题就是原本上传的进度条没了。于是搞一个自定义进度条。 实现效果 表单 <…

pythonrequest方法_python-request-各方法使用及格式

Request库方法介绍 方法 说明 requests.request() 构造一个请求,支撑一下各方法的基础方法 requests.get() 获取HTML网页的主要方法,对应于HTTP的GET requests.head() 获取HTML网页头信息的方法,对应于HTTP的HEAD requests.post() 向HTML网页提交POST请求的方法,对应于HTTP…

flask框架中request请求用法详解

当浏览器去访问一个地址时&#xff0c;Http协议会向后台传递一个request对象。这个request对象包含请求头、请求参数、以及请求方式&#xff0c;当然后台可以取到request。然后进行逻辑处理。 在flask框架中&#xff0c;request对象是一个全局的&#xff0c;在任何地方都可以使…

Python-request库用法

一、HTTP详解 二、Request主要方法 1、基本方法简介 总共有七个方法&#xff0c;这七个方法最后都是使用requests.request()实现。 2、Request返回 r.encoding是从头部获取的内容编码方式&#xff08;r.text的编码&#xff09; r.apparent_encoding 是根据内容分析出来的&a…