【江科协-STM32】5. 输出比较

1. 输出比较简介

OC(Output Compare)输出比较。

输出比较可以通过CNT(CNT计数器)与CCR寄存器值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形。

:::tip
CNT计数器是正向计数器。它只能正向累加。

CCR是捕获/比较寄存器,通常是我们给的一个固定值,正如其名,捕获数值后比较数值,这样就可以捕获CNT的数值并进行比较,看是大了、等于还是小了。

TIM输出比较就是这样来决定置1、置0或翻转输出电平。
:::

每个高级定时器和通用定时器都拥有4个输出比较通道。

高级定时器的前三个通道额外拥有死区生成和互补输出的功能。

2. 通用定时器

使用输入捕获时,CCR是作为捕获寄存器;使用输出比较时,CCR是作为比较寄存器。

请添加图片描述

3. PWM简介

PWM(Pulse Width Modulation)是脉冲宽度调制。

在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常应用于电机控速等领域。

PWM参数:

  • 频率 = 1 T s = \frac{1}{T_s} =Ts1
  • 占空比 = T o n T s \frac{T_{on}}{T_s} TsTon
  • 分辨率 = 占空比变化步距

当上面电平时间长一点,下面的短一点的时候,上面的模拟量占主导;反之则是下面的模拟量占主导。

请添加图片描述

T o n T_{on} Ton是高电平的时间, T S T_S TS是一个时钟周期的时间。 T o n T S \frac{T_on}{T_S} TSTon为占空比,指的是高电平时间占整个周期的比例。用百分比表示。

占空比决定了等效的模拟电压的大小。占空比越大,等效的模拟电压就趋近于高电平;越小,等效的模拟电压就趋近于低电平。
请添加图片描述

电机工作也是一个惯性系统。所以直流电机也是可以用PWM调速的。

下图是
请添加图片描述

输入是CNT(CNT计数器)与CCR寄存器值的关系,输出是REF的高低电平。

4. 输出比较模式

模式描述
冻结CNT=CCR时,REF保持为原状态(可用于定速巡航)
匹配时置有效电平CNT=CCR时,REF置有效电平
匹配时置无效电平CNT=CCR时,REF置无效电平
匹配时电平翻转CNT=CCR时,REF电平翻转
强制为无效电平CNT与CCR无效,REF强制为无效电平(可用于暂停波形输出)
强制为有效电平CNT与CCR无效,REF强制为有效电平(可用于暂停波形输出)
PWM模式1向上计数:CNT<CCR时,REF置有效电平, CN>=CCR时,REF置无效电平;向下计数:CNT>CCR时,REF置无效电平, CN<=CCR时,REF置有效电平
PWM模式2向下计数:CNT<CCR时,REF置无效电平, CN>=CCR时,REF置有效电平;向下计数:CNT>CCR时,REF置有效电平, CN<=CCR时,REF置无效电平

改变PWM模式1和2,只是改变了REF电平的极性。使用PWM1的正极性和PWM2的反极性是一样的效果。

5. PWM基本结构

请添加图片描述

蓝色线是CNT的值,黄色线是ARR的值,蓝色线从0开始自增,一直增到ARR,也就是99,之后清零继续自增。

红色线就是CCR,是我们预设的值。绿色线是电平大小。

当CNT<CCR时,置高电平;CNT>=CCR时,置低电平。CNT溢出时,清零,重新置高电平。

进一步分析,我们发现,电平的占空比是受CCR的值影响的。如果我们的CCR设置的低一些,占空比就小一些;如果CCR设置的高一些,占空比就大一些。

REF是一个频率可调,占空比也可调的PWM波形。最终经过极性选择、输出使能,通向GPIO口。

6. 参数计算

我们回到节5的图。

  • PWM频率: F r e q = C K P S C / ( P S C + 1 ) / ( A R R + 1 ) Freq = CK_PSC / (PSC+1) / (ARR+1) Freq=CKPSC/(PSC+1)/(ARR+1)
  • 占空比: D u t y = C C R / ( A R R + 1 ) Duty = CCR / (ARR+1) Duty=CCR/(ARR+1)
  • 占空比变化步距: D u t y S t e p = 1 / ( A R R + 1 ) DutyStep = 1 / (ARR+1) DutyStep=1/(ARR+1)

我们按高电平第一次回落的点算,此时占空比为 $30 /(99+1) \times 100 % = 30% $

CCR的范围取决于ARR,因为CCR去到和ARR差不多甚至相等的时候,占空比就是百分之百,这样便失去了意义。所以CCR需要始终小于ARR。

变化步距是越小越好的,CCR越大越好。这样代表其变化越细腻。

7. 输出比较通道(高级)

为了更好地切换MOS管开关状态,有了死区生成电路。

请添加图片描述

8. 舵机简介

舵机是一种根据输入PWM信号占空比来控制输出角度的装置。

输入PWM信号要求:周期为20ms,高电平宽度为0.5ms-2.5ms。

请添加图片描述

PWM在此图中是当一个通信协议来用。

9. 舵机硬件电路

请添加图片描述

PWM信号线直接接到STM32引脚上就可以,比如PA0。舵机内部有驱动电路。

10. 直流电机及驱动简介

直流电机是一种将电能转换为机械能的装置,有两个电极,当电极正接时,电机正转,当电极反接时,电机反转。

直流电机属于大功率器件,GPIO口无法直接驱动,需要配合电机驱动电路来操作。

TB6612是一款双路H桥(一路四个开关管)型的直流电机驱动芯片,可以驱动两个直流电机并且控制其转速及方向。

请添加图片描述

ULN2003则一路只有一个开关管,只能控制电机在一个方向转。

右边的电路即是H桥电路的基本结构,它是由两路推挽电路组成的。上管导通,下管断开,左边输出就是接在VM的电机电源正极。下管导通,上管断开,那就是PGND的电源负极。

如果有两路推挽电路,中间O1和O2接一个电机,左上右下导通,电流就是从左流向右边;右上和左下导通,电流方向就反过来,从右流向左。H桥可以控制电流流过的方向,从而控制电机正反转。

11. 电机硬件电路

左边就是这个电机驱动模块的硬件电路。

右下角的表中,输入是IN1、IN2、PWM和STBY。STBY低电平就待机,高电平就正常工作。右边是输出,O1、O2和模式状态。有电压差电机才会转,否则就是制动状态。此外还有正反转状态之分,取决于O1和O2的高低电平相对状态。

请添加图片描述

要接一个可以输出大电流的电源.

VM是驱动电压输入端,输入电压一般和额定电压保持一致。

VCC不需要大功率,可以和控制器共用一个电源。

GND接系统的负极。随便一个GND就可以。

AO1和AO2是A路的两个输出,其控制端是上面的PWMA、AIN2、AIN1。

PWMA引脚接PWM的信号输出端,其他两个引脚可以任意接两个普通的GPIO口。

三个引脚给一个低功率的控制信号,驱动电路就会从VM汲取电流,输出到电机。从而就能完成低功率控制大功率电路的目的。

BO1和BO2是B路的两个输出,其控制端是上面的PWMB、BIN2、BIN1。

STBY如果不需要待机模式的话,可以直接接VCC(3.3V)。

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

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

相关文章

轻量级日志管理平台Grafana Loki

文章目录 轻量级日志管理平台Grafana Loki背景什么是Loki为什么使用 Grafana Loki&#xff1f;架构Log Storage Grafana部署使用基于 Docker Compose 安装 LokiMinIO K8s集群部署Loki采集Helm 部署方式和案例 参考 轻量级日志管理平台Grafana Loki 背景 在微服务以及云原生时…

使用 Postman 访问 Keycloak 端点

1. 引言 在本教程中&#xff0c;我们将首先快速回顾 OAuth 2.0、OpenID 和 Keycloak。然后&#xff0c;我们将了解 Keycloak REST API 以及如何在 Postman 中调用它们。 2. OAuth 2.0 OAuth 2.0 是一个授权框架&#xff0c;它允许经过身份验证的用户通过令牌向第三方授予访问…

WEB1~6通杀

##解题思路 这六道题&#xff0c;通杀了&#xff0c;只因为是PHP的特性 来&#xff0c;看web6&#xff0c;过滤最复杂的正则&#xff0c;而且不能解析成大于999的值&#xff0c;但是&#xff0c;php是弱类型的语言&#xff0c;我只要输入任意字符数字&#xff0c;最终值就为0&…

I2C协议简介:串行通信的关键技术

目录 一、总线通信基本概念 二、I2C总线协议介绍 1. 时序图解析 &#xff08;1&#xff09;起始信号 &#xff08;2&#xff09;应答信号 &#xff08;3&#xff09;终止信号 &#xff08;4&#xff09;设备地址 &#xff08;5&#xff09;I2C传输方法 ​编辑 &#…

第二十四:5.2【搭建 pinia 环境】axios 异步调用数据

第一步安装&#xff1a;npm install pinia 第二步&#xff1a;操作src/main.ts 改变里面的值的信息&#xff1a; <div class"count"><h2>当前求和为&#xff1a;{{ sum }}</h2><select v-model.number"n">  // .number 这里是…

Web漏洞——命令注入漏洞学习

一、什么是命令注入漏洞 想象一下&#xff0c;你家有一个智能管家机器人。这个机器人可以通过你发出的指令来完成各种任务&#xff0c;比如“请打开电视机、播放音乐、开灯等等”。你只需要对它说&#xff1a;“请打开电视”&#xff0c;它就会去执行这个任务。但是&#xff0…

大模型自动提示优化(APO)综述笔记

自大型语言模型&#xff08;LLMs&#xff09;出现以来&#xff0c;提示工程一直是各种自然语言处理&#xff08;NLP&#xff09;任务中激发期望响应的关键步骤。然而&#xff0c;由于模型的快速进步、任务的多样性和相关最佳实践的变化&#xff0c;提示工程对最终用户来说仍然是…

快速排序(详解)c++

快速排序(Quick Sort)&#xff0c;既然敢起这样的名字&#xff0c;说明它是常⻅排序算法中较为优秀的。事实上&#xff0c;在很多情况下&#xff0c;快排确实是效率较⾼的算法&#xff1b;c的排序是以快排为基础&#xff0c;再加上堆排和插入排序做优化实现的&#xff0c;我们这…

【工具变量】公司企业数字领导力(2004-2023年)

数据简介&#xff1a;企业数字化领导力是指在数字经济时代&#xff0c;领导者通过战略性地使用数字资产、引领组织变革&#xff0c;使企业在数字化环境中获得持续成功的能力。对于上市公司而言&#xff0c;这种领导力尤为重要&#xff0c;因为它直接关系到企业的战略方向、市场…

浅谈新能源汽车充电桩建设问题分析及解决方案

摘要&#xff1a; 在全球倡导低碳减排的大背景下&#xff0c;新能源成为热门行业在全球范围内得以开展。汽车尾气排放会在一定程度上加重温室效应&#xff0c;并且化石能源的日渐紧缺也迫切对新能源汽车发展提出新要求。现阶段的新能源汽车以电力汽车为主&#xff0c;与燃油汽…

seacmsv9报错注入

1、seacms的介绍 ​ seacms中文名&#xff1a;海洋影视管理系统。是一个采用了php5mysql架构的影视网站框架&#xff0c;因此&#xff0c;如果该框架有漏洞&#xff0c;那使用了该框架的各个网站都会有相同问题。 2、源码的分析 漏洞的部分源码如下&#xff1a; <?php …

python学习四

python运算符与表达式 表达式: Python中的表达式是一种计算结果的代码片段。它可以包 含变量、运算符、常数和函数调用,用于执行各种数学、逻辑 和功能操作 算术运算符: 比较(关系)运算符: 赋值运算符: 逻辑运算符: 位运算符: 成员运算符: 身份运算符 <

Nginx面试宝典【刷题系列】

文章目录 1、nginx是如何实现高并发的&#xff1f;2、Nginx如何处理HTTP请求&#xff1f;3、使用“反向代理服务器”的优点是什么?4、列举Nginx服务器的最佳用途。5、Nginx服务器上的Master和Worker进程分别是什么?6、什么是C10K问题?7、请陈述stub_status和sub_filter指令的…

数字可调控开关电源设计(论文+源码)

1 设计要求 在本次数字可调控开关电源设计过程中&#xff0c;对关键参数设定如下&#xff1a; &#xff08;1&#xff09;输入电压&#xff1a;DC24-26V,输出电压&#xff1a;12-24&#xff08;可调&#xff09;&#xff1b; &#xff08;2&#xff09;输出电压误差&#xf…

清华大学《AIGC发展研究3.0》

大家好&#xff0c;我是吾鳴。 AIGC已经爆火好长一段时间了&#xff0c;特别是DeepSeek的爆火&#xff0c;直接让很多之前没有体会过推理模型的人可以免费的使用上推理模型&#xff0c;同时DeepSeek产品形态也是全球首创&#xff0c;就是直接把AI的思考过程展示给你看&#xff…

模型和数据集的平台之在Hugging Face上进行模型下载、上传以及创建专属Space

模型下载 步骤&#xff1a; 注册Hugging Face平台 https://huggingface.co/ 新建一个hf_download_josn.py 文件 touch hf_download_josn.py 编写hf_download_josn.py文件 import os from huggingface_hub import hf_hub_download# 指定模型标识符 repo_id "inter…

脚本无法获取响应主体(原因:CORS Missing Allow Credentials)

背景&#xff1a; 前端的端口号8080&#xff0c;后端8000。需在前端向后端传一个参数&#xff0c;让后端访问数据库去检测此参数是否出现过。涉及跨域请求&#xff0c;一直有这个bug是404文件找不到。 在修改过程当中不小心删除了一段代码&#xff0c;出现了这个bug&#xff…

C#实现本地AI聊天功能(Deepseek R1及其他模型)。

前言 1、C#实现本地AI聊天功能 WPFOllamaSharpe实现本地聊天功能,可以选择使用Deepseek 及其他模型。 2、此程序默认你已经安装好了Ollama。 在运行前需要线安装好Ollama,如何安装请自行搜索 Ollama下载地址&#xff1a; https://ollama.org.cn Ollama模型下载地址&#xf…

Buildroot 添加自定义模块-内置文件到文件系统

目录 概述实现步骤1. 创建包目录和文件结构2. 配置 Config.in3. 定义 cp_bin_files.mk4. 添加源文件install.shmy.conf 5. 配置与编译 概述 Buildroot 是一个高度可定制和模块化的嵌入式 Linux 构建系统&#xff0c;适用于从简单到复杂的各种嵌入式项目. buildroot的源码中bui…

音视频入门基础:RTP专题(12)——RTP中的NAL Unit Type简介

一、引言 RTP封装H.264时&#xff0c;RTP对NALU Header的nal_unit_type附加了扩展含义。 由《音视频入门基础&#xff1a;H.264专题&#xff08;4&#xff09;——NALU Header&#xff1a;forbidden_zero_bit、nal_ref_idc、nal_unit_type简介》可以知道&#xff0c;nal_unit…