51单片机PWM讲解

前言

51单片机我已经很久没用过了,毕竟是十年前的产物了,但是由于工作室的学弟学妹需要学习,加之马上就要举行循迹小车比赛,很多人反映看不懂PWM,或者看了不会用,于是写一篇文章简单介绍一下。

PWM普遍应用于惯性系统,我们知道单片机几乎只能输出“1”和“0”两种状态,即开和关,想要输出模拟量是不太容易实现的,那么怎样才能使单片机输出平滑的线性信号呢?没接触过PWM的小伙伴可能第一时间想到的就是高中时学过的电位器(也就是滑动变阻器),利用欧姆定律调整阻值而改变电流,但这种方法精度低,效率低,功耗高,故障率也高,于是聪明的人们发明出了PWM,它是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中,如呼吸灯,电机控速、开关电源等(顺嘴一提,来工作室那条路上的灯,走近就缓缓变亮,也运用到了这种技术)。

一、PWM的介绍

 PWM(Pulse Width Modulation)即脉冲宽度调制,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量。

何为脉冲宽度调制?比如说,我们先输出1ms的高电平,再输出1ms的低电平以此快速进行输出(即周期时间为2ms,占空比则为50%),那么这段电信号并没有以全程高电平的状态输出,也没有以全程低电平的状态输出,而是以稳定的中间电平状态输出。再比方说周期的时间是10ms,脉宽时间是8ms 那么低电平时间就是2ms 总的占空比 8/(8+2)= 80%(高电平时间 / 周期时间=占比),就会以80%总电流的强度输出。根据这个就可以控制电机的速度或LED灯的亮度。
 

但是值得一提的是,这种调制方法只适用于惯性系统,例如电机的转动,当从高电平跳变到低电平时,电机不会马上停止转动,而是靠着惯性继续旋转。LED灯则是根据人眼的视觉暂留效果,当它熄灭的一瞬间会留有余晖,连当频率很快的时候,LED灯的亮暗过度就会看上去很自然,所以周期过长,就会出现肉眼可见的闪烁。

pwm的频率:

是指1秒钟内信号从高电平到低电平再回到高电平的次数(一个周期);

也就是说一秒钟PWM有多少个周期
单位: Hz
表示方式: 50Hz 100Hz

pwm的占空比:

是一个脉冲周期内,高电平的时间与整个周期时间的比例
单位: %

取值范围:(0%-100%)

pwm的周期:

即:一个脉冲信号的时间         1s内测周期次数等于频率

T=1/f
周期=1/频率
50Hz = 20ms 一个周期

如果频率为50Hz ,也就是说一个周期是20ms 那么一秒钟就有 50次PWM周期

pwm的脉宽时间:高电平时间

二、 如何在定时器中配置PWM

高级的MCU都有配备相应的PWM功能的,可见PWM这一技术的应用还是偏多的,而8051系列单片机没有配备这一功能,我们需要采用定时器中断的方法来生成。用定时器输出一段连续变化的方波,由于方波的占空比不同输出的电流也不相同,这样就可以模拟出稳定变化的电信号。

简单来说,PWM就是一个DA转换,通过产生数字信号模拟输出了模拟信号。

PWM实现的原理是通过锯齿波/三角波(上图)所需要合成的波形(下图)进行比较,然后确定PWM所需要输出的电平,锯齿波输入,将5V作为参考电压,给比较器同相参考电压输出0~10V的锯齿波,当锯齿波电压小于参考电压则输出低电平,而当锯齿波大于参考电压时比较器输出高电平。 

举一反三,如何产生一个不同占空比的PWM: 

当我们从反相端接锯齿波,大于参考电压输出为0,而小于参考电压为1,通过改变参考电压的值,从而产生了不同占空比的信号。

将PWM转换为正弦波:

三、代码

下边是通过延时的方法,实现LED的亮暗变换实现呼吸灯的代码

其中,100ms为一个周期,在第一个for循环中,Time为高电平,100-Time为低电平,同时Time的值还会变化,也就对应上了上图产生不同占空比的PWM,占空比不一样,电流输出强度也就不一样,灯的亮度自然也不一样,于是就产生了呼吸灯的效果。

使用PWM对电机的控制这里我仅给出部分代码,大家C语言都学的那么好,相信都能看懂。

这是我上学期循迹小车的部分代码

这两个代码其实大差不差 

说白了,PWM就是设置一个恒定的周期内,通过设置计时数和设置的比较值的大小,是在计时数比比较值小置高低电平,则要依据自己的需求来进行设置。

同时,由于单片机PWM信号强度弱,所以一般不直接接在负载上,而是通过驱动电路控制负载。

如L298N、TB6612。 

四、结语

上图的正弦波形只是在理想状态下的,也就是说,PWM的占空比和电机的转速其实并不完全成正比,随着学习的知识越来越多,就会了解到一个叫PID算法的东西(现在不需要了解,就你们做的小车用不了PID),PID算法会用到闭环调节,也就是根据当前误差、误差积分和误差变化率的信息,计算出一个控制量,用于调节输出,以使系统的实际值与期望值尽可能接近。PID控制适用于需要精确控制和稳定性的应用,通过根据实际值与期望值的误差来进行调整,以使系统保持在期望状态。也就是说他具有自适应能力,可以根据实际情况动态调整控制参数。它可以在稳定状态下快速响应,并且能够抵抗外部扰动和系统变化。

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

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

相关文章

IDEA如何配置Git 遇到问题的解决

新建项目 点击 会变红 会生成.git隐藏文件 配置远程仓库路径:点击Manage Remotes:将远程仓库的链接放到这里: 得到如下样式: 此时提交到本地仓库 点击add,添加到暂存文件: 此时文件变绿&#xf…

JDK中lock锁的机制,其底层是一种无锁的架构实现的,公平锁和非公平锁

简述JDK中lock锁的机制,其底层是一种无锁的架构实现的,是否知道其是如何实现的 synchronized与lock lock是一个接口,而synchronized是在JVM层面实现的。synchronized释放锁有两种方式: 获取锁的线程执行完同步代码,…

神经网络 代价函数

神经网络 代价函数 首先引入一些便于稍后讨论的新标记方法: 假设神经网络的训练样本有 m m m个,每个包含一组输入 x x x和一组输出信号 y y y, L L L表示神经网络层数, S I S_I SI​表示每层的neuron个数( S l S_l Sl​表示输出…

使用idea如何快速的搭建ssm的开发环境

文章目录 唠嗑部分言归正传1、打开idea,点击新建项目2、填写信息3、找到pom.xml先添加springboot父依赖4、添加其他依赖5、编写启动类、配置文件6、连接创建数据库、创建案例表7、安装MybatisX插件8、逆向工程9、编写controller10、启动项目、测试 结语 唠嗑部分 小…

MIT线性代数笔记-第21讲-特征值,特征向量

目录 21.特征值,特征向量打赏 21.特征值,特征向量 对于一个方阵 A A A,若 A x ⃗ λ x ⃗ A \vec{x} \lambda \vec{x} Ax λx ,即 A x ⃗ A \vec{x} Ax 平行于 x ⃗ \vec{x} x ,那么 λ \lambda λ是 A A A的特征值…

怎么防止死锁

目录 一、死锁的概念 1、互斥条件 2、 占有和等待条件 3、非抢占条件(No Preemption): 4、环路等待条件(Circular Wait): 二、防止死锁 死锁预防(Deadlock Prevention)&#xf…

内网穿透工具获取一个公网ip

下载地址:点击即可下载很简单 然后将他复制到上面的命令行窗口直接回车

编程怎么学才能快速入门,分享一款中文编程工具快速学习编程思路,中文编程工具之边条主控菜单构件简介

编程怎么学才能快速入门,分享一款中文编程工具快速学习编程思路,中文编程工具之边条主控菜单构件简介 一、前言 零基础自学编程,中文编程工具下载,中文编程工具构件之扩展系统菜单构件教程编程系统化教程链接https://jywxz.blog…

SALib敏感性分析入门实践笔记

1. 敏感性分析 敏感性分析是指从定量分析的角度研究有关因素发生某种变化对某一个或一组关键指标影响程度的一种不确定分析技术。 其实质是通过逐一改变相关变量数值的方法来解释关键指标受这些因素变动影响大小的规律。 敏感性因素一般可选择主要参数(如销售收入、…

autojs-ui悬浮按钮模板

注释很详细,直接上代码 涵盖很多常用知识点,也可当知识点看 运行效果长这样: 开始按钮相当于开关,按钮内容会随点击变换控制台按钮可让运行框显示或隐藏退出按钮退出程序并在3s后关闭运行框只需在对应函数内添加需要实现的内容即可…

算法复习,数据结构 ,算法特性,冒泡法动态演示,复杂度,辗转相除法*,寻找最大公因数

算法复习 知识点 1. 程序 数据结构 算法 2. 算法: 求解问题的策略数据结构:问题的数学模型程序:微计算机处理问题编制的一组指令 3. **特性 ** 有穷性:算法在执行有穷步后能结束确定性:每一指令有确切的含义&a…

2023年12月4日支付宝蚂蚁庄园小课堂小鸡宝宝考考你今日正确答案是什么?

问题:你知道电杆上安装的“小风车”有什么用途吗? 答案:防止鸟类筑巢 解析:小风车一般做成橙色,因为橙色是一种可令野鸟产生恐慌感的颜色;小风车在转动时,会发出令野鸟害怕的噪声;…

LLM推理部署(四):一个用于训练、部署和评估基于大型语言模型的聊天机器人的开放平台FastChat

FastChat是用于对话机器人模型训练、部署、评估的开放平台。体验地址为:https://chat.lmsys.org/,该体验平台主要是为了收集人类的真实反馈,目前已经支持30多种大模型,已经收到500万的请求,收集了10万调人类对比大模型…

4个解决特定的任务的Pandas高效代码

在本文中,我将分享4个在一行代码中完成的Pandas操作。这些操作可以有效地解决特定的任务,并以一种好的方式给出结果。 从列表中创建字典 我有一份商品清单,我想看看它们的分布情况。更具体地说:希望得到唯一值以及它们在列表中出…

uniapp 微信小程序连接蓝牙卡死

解决方法,需要同意隐私保护协议,否则不能开启蓝牙权限和定位权限,会导致定位失败

实用工具网站合集值得收藏![搜嗖工具箱]

最近一段时间有点忙,一直没有更新在此给大家说声抱歉哈,有些小伙伴儿私信说想要用到的工具,茶壶儿也会尽可能满足大家!今天我们要分享的工具主要有以下几款,我们来一起看一下吧? 一帧秒创 https://aigc.y…

万界星空科技灯具行业MES介绍

中国是LED照明产品最大的生产制造国,如今,我国初步形成了包括LED外延片的生产、LED芯片的制备、LED芯片的封装以及LED产品应用在内的较为完超为产业链,随着LED照明市场渗诱率的快速警升,LED下游应用市场将会越来越广阔。这也将推动…

电机工厂怎么才能有效的管理生产?

电机工厂要想更有效地管理,可以从以下几个方面入手:采用数字化软件管理工具 数字化软件管理工具可以帮助电机工厂实现工艺流程自动化、数据管理、生产计划排程等。例如,采用ERP(企业资源计划)系统可以协调管理生产过程…

SpringCloud Gateway

目录 一、gateway简介二、gateway快速入门2.1 引入依赖2.2 编写启动类2.3 编写基础配置和路由规则 三、断言工厂四、过滤器工厂4.1 路由过滤器的种类4.2 请求头过滤器4.3 默认过滤器 五、全局过滤器5.1 全局过滤器作用5.2 自定义全局过滤器5.3 过滤器执行顺序 六、跨域问题6.1 …

Sailfish OS 移动操作系统

Jolla 是一家曾经致力于开发智能手机和平板电脑的公司,但是这些产品并没有取得成功。后来 Jolla 将重心转向了基于 Linux 的 Sailfish OS(旗鱼),并将其应用于现有设备上。Sailfish OS 是由 Jolla 在 MeeGo 基础上开发的移动操作系…