江协科技STM32:TIM输出比较

输出比较模块的主要功能:输出一定频率和占空比的PWM波形

CC是捕获比较的意思,R是Register,寄存器的意思,CCR捕获比较寄存器它是输入捕获和输出比较共用的

当使用输入捕获,它就是捕获寄存器

当使用输出比较,它就是比较寄存器,在这里,会比较CNT和CCR的值

CNT计数自增,CCR是我们给定的一个值

当CNT大于CCR,小于CCR或等于CCR时,图上就会,然后就可以输出一个电平不断跳变的PWM波形了

这就是输出比较的基本功能

主要学习通用定时器的输出比较功能

输出比较就是用来输出PWM波形,那什么是PWM波形呢

PWM是数字信号,也是由高低电平组成的

使用PWM波形,是用来等效地实现一个模拟信号到输出,也就是控制灯的亮度,数字输出端口控制LED,理论上说,应该只有完全亮和完全灭灭两种状态,怎么实现控制亮度大小呢,那就需要PWM波形实现,我们让LED不断点亮,熄灭,点亮,熄灭,当点亮,熄灭到频率足够大时,LED就不会闪烁,而是呈现出一个中等亮度

当我们调控点亮和熄灭的时间比例时,就能让LED呈现出不同的亮度级别

对于电机调速也是一样,我们以一个很快的频率,给电机通电,断电,通电,断电,电机的速度就能维持在一个中等的速度

这就是PWM的基本思想

当然PWM到应用场景必须是一个惯性系统,就是说LED在熄灭的时候,由于余晖和人眼视觉暂留的现象,LED不会立马被熄灭,而是有一定的惯性,过一小段时间才会熄灭,电机也是,,当电机断电时,电机的转动不会立马停止,而是有一定的惯性,过一会才停,这样具有惯性的系统,才能使用PWM

在使用PWM时有几个重要的参数:

第一个频率,TS代表一个高低电平变换周期的时间,PWM的频率越快,那它等效模拟的信号就越平稳,性能开销也会越大,一般来说PWM的频率都在几K到几十KHz

第二个占空比,TON是高电平到时间,TS是一个周期的时间,TON/TS就是高电平时间相对整个周期时间的比例,一般用百分比来表示

比如占空比为50%,那就是高低电平时间相等的方波

占空比为20%,那就是高电平占20%,低电平占80%

占空比100%,那就是高电平不带变的

占空比0%,那就直接是低电平

这就是占空比

占空比决定了PWM等效出来的模拟电压的大小。占空比越大,那等效的模拟电压就越趋近于高电平,占空比越小,那等效的模拟电压就越趋近于低电平,这个等效关系一般来说是线性的,比如高电平5V,低电平0v,那50%占空比就等效中间电压就是2.5V,20%占空比就等效于,五分之一处的电压,就是1V

第三个分辨率,它等于占空比变化步距

比如有的占空比只能是1%,2%,3%等等,这样以1%的步距跳变,那它的分辨率就是1%

如果是1.1%,1.2,1.3等等这样以0.1%的步距跳变,那它的分辨率就是0.1%

所以这个分辨率就是占空比变化的精细程度,分辨率多高,看你的项目需求,如果是高频率,又要高分辨率,这对硬件电路要求就高了,如果要求不高的话,一般都是1%的分辨率,就够用了

这就是PWM知识点,使用PWM波形,就可以在数字系统等效输出模拟量,就能实现LED控制亮度,电机控速灯功能了

那下面就来分析一下,定时器的输出比较模块是怎么输出PWM波形的

它对应下图这里

左边是CNT和XCR比较的结果,右边就是输出比较电路,最后通过TIM_CH1输出到GPIO引脚上

下面还有三个同样的单元,分别输出到CH2,CH3,CH4

第一个模式是冻结,当CNT=CCR时维持原状态,那CCR和CNT就根本没有用,所以可以理解成CNT和CCR无效,REF保持为原状态,当你正在输出PWM波,突然想暂停一会输出,就可以设置成这个模式,一旦切换为冻结模式后,输出就暂停了

,并且高低电平也维持为暂停时刻的状态,保持不变,这就是冻结模式的作用

这几个有效电平和无效电平,一般是高级定时器里面的一个说法,是和关断,刹车这些功能配合表述的,为了理解方便,可以直接认为,置有效电平就是置高电平,置无效电平就是置低电平

这三个模式就可以用作波形输出了

比如电平反转模式,这个可方便地输出一个频率可调,占空比始终为50%的PWM波形

比如你设置CCR为0,那CNT每次更新清0时,就会产生一次CNT=CRR的事件,这就会导致输出电平翻转一次,每更新两次,输出为一个周期,并且高电平和低电平的时间是始终相等的,也就是占空比始终为50%,当你改变定时器的更新频率时,输出波形的频率也会随之改变,它俩的关系是,输出波形的频率=更新频率/2,因为更新两次输出才为一个周期,这就是匹配时电平翻转模式的用途

这两个很重要,它们可以用于输出频率和占空比都可调的PWM波形,也是我们主要使用的模式

一般我们用向上计数,所以分析向上计数

也是只看向上计数

两个向上计数条件是一样的,区别就是输出的高低电平反过来了,所以PWM模式2,就是PWM模式1输出的取反,改变PWM模式1和PWM模式2,只是改变了REF电平的极性而已,这就是两个模式的区别

我们使用的话,就使用PWM1并且向上计数这一种模式就行

那这种模式是怎么输出频率和占空比都可调的PWM波形的呢

看这个

然后看看PWM是如何计算的

第一个PWM频率

第二个占空比参数

第三个参数分辨率

然后是外设

先看舵机

舵机内部执行逻辑:

PWM信号输入到控制板,给控制板一个指定的目标角度,然后电位器检测输出轴的当前角度,如果大于目标角度,电机就会反转,如果小于目标角度,电机就会正转

,最终使舵机输出固定在指定角度,这就是舵机内部工作流程

我们只需要知道,输入一个PWM波形,输出轴固定在一个角度就行了

然后现在来看看输入PWM信号要求

直流电机

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RK3588 NPU 研究(二)

RK提供了两个模型,mobilenet和YOLO5。 mobilenet模型相对小,使用起来不是很明显yolo5模型大一些,可以对88种目标进行检测,提供检测的结果包括类别、包围框坐标、可信度等信息。基于rknn_yolov5_demo进行分析。 rknn_yolov5_demo基…

Vue3全家桶和小兔鲜儿案例

查看node.js版本,需要是16.0以上版本 node -v创建一个vue应用 npm init vuelatest在windows窗口中进入vs code命令 code ./创建项目后vs code打开安装依赖 npm install安装好以后运行程序 打开页面 deep有性能损耗,尽量不开启deep 生命周期函数指…

记录Linux系统中vim同时开多个窗口编辑文件

在使用Linux进行文本编辑的时候,通常使用vim编辑器编辑文件,当然啦,vim也可以创建文件,如果只是一个一个创建,只需要vim创建即可,但是如何一次性打开多个窗口编辑呢? 目录 1、目标:…

Unity和Android的交互

Unity和Android的交互 一、前言二、Android导出jar/aar包到Unity2.1 版本说明2.2 拷贝Unity的classes.jar给Android工程2.2.1 classes.jar的位置2.2.2 Android Studio创建module2.2.3 拷贝classes.jar 到 Android工程并启用 2.3 编写Android工程代码2.3.1 创建 MainActivity2.…

springboot之mybatisPlus多表查询及分页查询

文章目录 一、多表查询二、mybatis-plus条件查询三、分页查询 一、多表查询 可能会用到的注解 这里的场景是,查询每个用户及其所有的订单。就是查询你的id号的同时,把你所有的历史订单信息都拉出来。 表结构这样 CREATE TABLE User ( id INT PRIMARY…

docker笔记(一):安装、常用命令

一、docker概述 1.1docker为什么会出现 各种环境配置十分繁琐,每一个机器都需要配置环境,难免出现各种问题。 发布一个项目jar需要配置(MySQL、redis、jdk、…),项目不能都带上环境安装打包: 传统&…

PostgrerSQL基本使用与数据备份

前言 上篇了解了 PostgrerSQL 数据库的部署PostgreSQL关系型数据库介绍与部署-CSDN博客,本篇将继续就其基本操作、备份与还原内容做相关介绍。 目录 一、数据库的操作 1. 本机登录 2. 开启远程登录 2.1 开放远程端口 2.2 编辑配置文件 2.3 修改配置密码 2.…

前端三剑客 —— JavaScript (第一天)

目录 回顾内容 1.弹性布局 2.网格布局 JavaScript 概述 发展 浏览器 什么是Javascript JavaScript 能干什么 JavaScript需要的环境 JavaScript初体验 基本数据 JS书写方式 行内JS 页面JS 外部JS 1)创建外部JS文件 2)编写页面 对话框 警…

【踩坑日记】因不同系统换行符不同导致的文本读取结果不同的问题

文章目录 1 问题现象描述2 解决过程(点击直接跳到解决方法)3 原因解释4 如何避免踩坑4.1 格式转换4.2 格式查看 1 问题现象描述 起因是群友问了这么一个问题 确实很奇怪,按理说第二个printf不会完全不输出,于是想到,…

C++数据结构与算法——回溯算法组合问题

C第二阶段——数据结构和算法,之前学过一点点数据结构,当时是基于Python来学习的,现在基于C查漏补缺,尤其是树的部分。这一部分计划一个月,主要利用代码随想录来学习,刷题使用力扣网站,不定时更…

SD-WAN如何解决更有性价比地跨境网络问题

云桥通SD-WAN利用智能路由和负载均衡技术,优化数据传输路径,提高网络性能和可靠性。这意味着数据在跨国传输时可以更快到达目的地,减少延迟和丢包率。跨境SD-WAN提高了网络连接速度和质量,使用户能够更快地访问跨国业务所需的资源…

索引的概念

索引的概念    1.索引是一种可选的与表相关的数据库对象,用于提高数据的查询效率。    2.索引是一种有序的数据结构。    3.如果一个表没有创建索引,则对该表进行查询时需要进行全表扫描;如果创建了索引,则在有条件查询时…

应用性能分析工具CPU Profiler

简介 本文档介绍应用性能分析工具CPU Profiler的使用方法,该工具为开发者提供性能采样分析手段,可在不插桩情况下获取调用栈上各层函数的执行时间,并展示在时间轴上。 开发者可通过该工具查看TS/JS代码及NAPI代码执行过程中的时序及耗时情况…

福州装修答疑 | 飘窗能不能砸掉?福州中宅装饰,福州装修

装修中的飘窗是一种常见的装饰元素,它不仅可以增加室内的采光和通风效果,还能为居室增添一份雅致和温馨。然而,很多业主在装修中都会遇到一个共同的问题:装修中的飘窗到底能不能砸?什么情况下可以砸?什么情…

IO流【带有缓冲区的字节输入、输出流;字符输入、输出流 转换流】

day35 学习注意事项 按照流的发展历史去学习注意流与流之间的继承关系举一反三 IO流 继day36 字节流继承图 字节流 应用场景:操作二进制数据(音频、视频、图片) abstract class InputStream – 字节输入流的基类(抽象类&#xff0…

基于R、Python的Copula变量相关性分析及AI大模型应用

在工程、水文和金融等各学科的研究中,总是会遇到很多变量,研究这些相互纠缠的变量间的相关关系是各学科的研究的重点。虽然皮尔逊相关、秩相关等相关系数提供了变量间相关关系的粗略结果,但这些系数都存在着无法克服的困难。例如,…

Anaconda环境命令样例

启动命令行Anaconda Powershell Prompt 查看环境列表 (base) PS C:\Users\Administrator> conda env list # conda environments: # base * G:\ProgramData\anaconda3 MoneyprinterTurbo G:\ProgramData\anaconda3\envs\MoneyprinterTurbo pytorc…

C++ 标准库类型stackqueue

C/C总述:Study C/C-CSDN博客 栈与队列详解(数据结构):栈与队列_禊月初三-CSDN博客 stack(栈) stack的常用函数 函数说明功能说明stack()构造空栈push(T& val)将元素val压入栈中size()返回栈中元素个…

数据结构之二叉树由浅入深最终章!

题外话 我说清明节想放松一下没更新大家信吗? 博客毕竟是文字不是视频,大家如果有不明白的地方,可以使用数形结合的方式,画图一边通过图片,一边通过对照代码进行推导一下,有什么问题都可以私信我或者写在评论区 正题 第一题 寻找二叉树中p,q最近公共祖先 第一题思路 先…

【C++】红黑树讲解及实现

前言: AVL树与红黑树相似,都是一种平衡二叉搜索树,但是AVL树的平衡要求太严格,如果要对AVL树做一些结构修改的操作性能会非常低下,比如:插入时要维护其绝对平衡,旋转的次数比较多,更…