当前位置: 首页 > article >正文

51单片机应用——直流电机PWM调速

目标实现功能

单片机引脚输出PWM波形控制直流电机以不同转速工作。

1.PWM简介

PWM技术

PWM的中文全称是脉宽调制,常用于电动机控制、开关电源、音频放大器等。利用PWM技术可以达到微处理器(如单片机)的数字输出对模拟电路控制的效果。

PWM波形

下图的两个PWM波形是由单片机引脚输出,由于单片机引脚只能输出高低电平,而不能输出介于高低电平之间的电压值,因此为周期性的方波,其中周期和占空比是方波的两个重要参数。

方波的周期:信号从高电平到低电平再回到高电平的时间。

方波占空比:一个周期内高电平的持续时间与一个周期的比值。

PWM调节电压 

在研究怎样用PWM调节电压之前,我们先讨论一个小学数学问题(题目我瞎掰的)。

问题:小明的速度是240m/min,小明跑了6分钟,累了休息了4分钟,问这10分钟小明的平均速度是多少?

解:

类似的,假设方波周期是10min,高电平6分钟,低电平4分钟,那么方波的平均电压是多少?

解:

下面说一个重要定理,其内容是冲量相等而形状不同的窄脉冲加在具有相同惯性的环节上其效果基本相同。

这个定理很凹口不好理解,我还是用下面两个问题来说明这个重要定理。

小明以240m/min的速度,跑了6分钟,休息了4分钟,问这10分钟小明的跑的路程?

小明以144m/min的速度,跑了10分钟,问这10分钟小明的跑的路程?

通过计算不难得出路程都是1440m,小明两种跑法虽然速度不一样、跑的时间不一样,但最终的效果却一样。

类似的高电平(5v)持续6分钟、低电平(0v)持续4分钟,跟平均电压(3v)持续10分钟的效果是一样的。

 结论:虽然单片机引脚只能输出高低电平,但可以通过输出周期性的方波再控制方波的占空比,就能达到介于0~5V之间任意电压的作用效果。

2.单片机输出PWM波形

要想输出PWM波形就需要设置两个重要参数:周期和占空比。

PWM周期

PWM波形可以用定时器控制,在12Hz晶振条件下,以定时器T0工作在方式1、定时100us为例,初始化程序如下:

/*定时器T0初始化*/
void timer0_init()
{
	TMOD=0X01;//定时模式、方式1(16计数器)、启停仅受TR0控制
	TH0=0XFF;
	TL0=0X9C;//定时100us
	ET0=1;//定时器0中断允许
	EA=1;//总中断允许
	TR0=1;//启动定时器T0
}

假设定时器每定时100us,会发生一次中断,如果想产生周期为1ms波形,那么中断10次时间就为1ms左右。上述程序仅供参考,具体怎么使用定时器大家自行决定。

PWM占空比

占空比用于控制PWM波形高电平的持续时间,当当前占空比小于目标设定占空比则让该引脚输出高电平,当当前占空比大于目标设定占空比则让该引脚输出低电平。

直流电机调速

关于单片机怎样控制直流电机,我在之前的文章中提到过在此不做赘述,大家可以通过链接翻看。

https://blog.csdn.net/weixin_45755708/article/details/142742152?fromshare=blogdetail&sharetype=blogdetail&sharerId=142742152&sharerefer=PC&sharesource=weixin_45755708&sharefrom=from_linkicon-default.png?t=O83Ahttps://blog.csdn.net/weixin_45755708/article/details/142742152?fromshare=blogdetail&sharetype=blogdetail&sharerId=142742152&sharerefer=PC&sharesource=weixin_45755708&sharefrom=from_link单片机通过控制引脚输出不同占空比的PWM波形,达到一种可调电压作用在直流电机上的效果,可调电压的大小跟PWM波形占空比成正比,占空比越大、电压越大,相应地电机转速就越快。

3.演示视频

演示内容

操作按键控制直流电机的转速,同时数字示波器会显示控制直流电机转速的PWM波形。

视频播放链接如下

基于51单片机的直流电机pwm调速的仿真设计

关于本设计具体Keil工程和Proteus电路图可访问下方链接

https://item.taobao.com/item.htm?ft=t&id=845236527408icon-default.png?t=O83Ahttps://item.taobao.com/item.htm?ft=t&id=845236527408最后祝大家天天开心!!!!


http://www.kler.cn/news/362944.html

相关文章:

  • LeetCode练习-删除链表的第n个结节
  • gtest允许开发者实现自定义的事件监听器,以便在测试执行过程中接收和处理特定的事件(如测试用例开始、结束、断言失败等)。如何实现
  • 【MySQL】表的增删改查(CRUD)
  • 十七、行为型(命令模式)
  • 理解JVM
  • el-table在某些条件下禁止选中
  • TikTok营销实用技巧与数据分析工具:视频洞察
  • konvajs -基础图形-标签-箭头,动画,学习笔记
  • GORM框架中的预加载功能Preload详解
  • Java智慧工地管理平台SaaS源码:打造安全、高效、绿色、智能的建筑施工新生态
  • 如何在PyCharm中安全地设置和使用API Key
  • 开源项目 - yolo v5 物体检测 手检测 深度学习
  • vue使用xlsx以及file-saver进行下载xlsx文件以及Unit8Array、ArrayBuffer、charCodeAt的使用
  • C# 简单排序方法
  • VS 插入跟踪点,依赖断点,临时断点的区别
  • Linux中vim的三种主要模式和具体用法
  • SpringBootWeb请求响应
  • ReactOS系统中搜索给定长度的空间地址区间中的二叉树
  • 外呼机器人的功能特点
  • 即插即用篇 | YOLOv10 引入 MogaBlock | 多阶门控聚合网络 | ICLR 2024
  • Unity3D学习FPS游戏(1)获取素材、快速了解三维模型素材(骨骼、网格、动画、Avatar、材质贴图)
  • spring中xml的解析与beanDefinition封装(1)
  • 集成聚水潭·奇门售后单数据到MySQL的技术实践
  • 从“摸黑”到“透视”:AORO A23热成像防爆手机如何改变工业检测?
  • 关于嵌入式学习的一些短浅经验
  • go 语言 Gin Web 框架的实现原理探究