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

STM32 定时器输出比较深度解析:从原理到电机控制应用 (详解)

文章目录

    • 定时器输出比较
      • 定时器通道结构
        • 输出比较通道(高级)
      • PWM 信号原理
      • 输出比较 8 种工作模式
      • 互补输出概念
      • 极性选择内容
    • PWM硬件部分
      • 舵机
      • 直流电机及驱动简介

定时器输出比较

定时器通道结构

  • 通道组成:定时器有四个通道,以通道一为例,中间是 CCR x 寄存器(x 对应通道编号),左边是输入捕获,右边是输出比较。

  • 输入捕获功能:用于测量外部输入信号的时间参数,如周期、占空比等。

  • 输出比较功能:通过定时器产生精确定时的方波信号,经引脚输出,可驱动外部设备。

在这里插入图片描述
在这里插入图片描述

输出比较通道(高级)

左面为CNT计数器 和 CCR1输出捕获比较寄存器

  • 高级定时器比较电路
    • 电路理解方式:将左面部分去掉后与通用定时器电路一样,右面电路用途需结合外部电路理解。
    • 外部推挽电路:通常接大功率开关管(MOS 管)组成推挽电路,上管导通下管断开输出高电平,反之输出低电平,上下管都导通会短路,都断开输出高阻态。
    • 死区生成与互补输出:OC1 和 OC1N 是互补输出端口,死区生成电路可避免上下管同时导通,防止功率损耗和器件发热。

在这里插入图片描述

PWM 信号原理

  • PWM 概念:PWM 即脉宽调制信号,由 pulse(脉冲)、width(宽度)、modulation(调制)英文缩写组成,周期恒定,可调整占空比。

  • 占空比定义:一个周期里高电压占整个周期的比例,用高电压时间 TH 除以整个周期时间 t 得到,可等效调节输出电压幅度。

  • PWM 波形介绍

    • 定义:英文全称 Pulse width modulation,即脉冲宽度调制,是数字输出信号,由高低电平组成。
    • 原理:在惯性系统中,通过调制脉冲宽度等效获得模拟产量,如控制 LED 亮度和电机调速,利用点亮熄灭频率和时间比例实现调控。
    • 参数:频率等于 ts 分之一,PWM 频率越快等效模拟信号越平稳但性能开销越大,一般在几千到几十千赫兹;占空比等于 ton 比上 TS,决定等效模拟电压大小;分辨率等于占空比变化步距,由实际项目需求决定。

在这里插入图片描述
在这里插入图片描述

  • 产生 PWM 信号过程:启动计时单元,计数器 CNT 每来一个脉冲值增加一,计数到与自动重装计算器 ARR 值相等时溢出并重新计数。输出比较模块对比计数器 CNT 值和 CCR 寄存器值,当 CNT 值小于 CCR 值时输出高电压,大于时输出低电压,由此产生 PWM 信号。其周期由 ARR 寄存器值决定,高电压时间由 CCR 值决定,改变 CCR 值可调整占空比。

在这里插入图片描述

输出比较 8 种工作模式

  • 模式分类:包括 frozen(冻结)、active on match(相等有效)、inactive on match(相等无效)、toggle(翻转)、false inactive(强制无效)、false active(强制有效)、PWM1、PWM2 共 8 种。
  • 常用模式:前六种模式使用较少,简单了解即可。PWM1 是常用模式,当计数器 CNT 值小于 CCR 值时,OCX REF 输出高电压,否则输出低电压;PWM2 模式与 PWM1 相反,CNT 小于 CCR 值时输出低电压,大于等于时输出高电压。
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

互补输出概念

  • 引脚连接:定时器前三个通道的输出比较连接两个引脚,如通道一连接 CH1 和 CH1N,CH1 等表示正常输出,CH1N 等表示互补输出。

  • 输出原理:正常输出直接输出模式选择产生的参考信号,与 OCX REF 信号相同;互补输出是参考信号经过反向器输出,与 OCX REF 信号相反。
    在这里插入图片描述

  • 实际应用:在同步 buck 电路(降压电源)、电机控制电路等中,两个开关交替导通,控制逻辑相反,需用到正常输出和互补输出信号。

极性选择内容

  • 极性选择作用:决定是否对输出信号取反。
  • 正常输出极性选择:选择高级性时,参考信号直接与正常输出相连,两者相等;选择低级性时,参考信号经反向器后与正常输出相连,两者相反。
  • 互补输出极性选择:选择高级性时,参考信号经反向器与互补输出相连,互补输出与参考信号相反;选择低级性时,两个反向器作用抵消,互补输出与参考信号相同 。

在这里插入图片描述

PWM硬件部分

舵机

  • 舵机相关知识
    • 工作方式:根据输入 PWM 信号占空比控制输出角度,内部由直流电机驱动,有控制电路板,执行逻辑是 PWM 信号给控制板目标角度,电位器检测当前角度,电机正反转使输出轴固定在指定角度。
    • PWM 信号要求:周期 20 毫秒(50 赫兹),高电平宽度 0.5 毫秒到 2.5 毫秒,对应输出角度为 -90 度到正 90 度(或 0 到 180 度),中间线性分配。
    • 硬件电路:舵机有三根线,分别对应电源正负极和信号线,电源正接 5 伏,电源负接 GND,信号线接 STM32 引脚(如 PA0),供电可单独提供或用 USB 的 5 伏供电。

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

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

舵机的工作原理,输入信号规定的角度给内部电路板,有电位器,会比较当前位置与设置位置的差距,然后控制直流电机运动(正转或者反转)。

![<img src="STM32.assets/image-20250514173306026.png" alt="image-20250514173306026" style="zoom:80

硬件电路

在这里插入图片描述

直流电机及驱动简介

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

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

TB6612是一款双路H桥型的直流电机驱动芯片,可以驱动两个直流电机并且控制其转速和方向

  • 直流电机及驱动
    • 电机特性:将电能转化为机械能,电极正接正转,反接反转,属于大功率器件,GPIO 口无法直接驱动。
    • 驱动芯片:选用 TB6612 双路 h 桥型直流电机驱动芯片,可驱动两个直流电机并控制转速和方向,集成度高,外围只需三个滤波电容。
    • 硬件电路连接:VM 接电机电源正极(4.5 - 10 伏,与电机额定电压一致),VCC 接控制器电源(2.7 - 5.5 伏,与控制器电源一致),GND 接系统负极,AO1、AO2 和 BO1、BO2 分别接电机,控制端 PWM 接 PWM 信号输出端,AIN1、AIN2 和 BIN1、BIN2 接普通 GPIO 口,STBY 引脚控制待机状态。
    • 正反转及速度控制:IN1 和 IN2 全高或全低电机不转,IN1 低 IN2 高且 PWM 高电机反转,速度取决于 PWM 信号占空比;IN1 高 IN2 低且 PWM 高电机正转,速度也取决于 PWM 信号占空比。

在这里插入图片描述

硬件电路

在这里插入图片描述

相关文章:

STM32 定时器输出比较深度解析:从原理到电机控制应用 (详解)

文章目录 定时器输出比较定时器通道结构输出比较通道(高级) PWM 信号原理输出比较 8 种工作模式互补输出概念极性选择内容 PWM硬件部分舵机直流电机及驱动简介 定时器输出比较 定时器通道结构 通道组成&#xff1a;定时器有四个通道&#xff0c;以通道一为例&#xff0c;中间是…...

用 NGINX 还原真实客户端 IP ngx_mail_realip_module

一、模块作用与使用前提 作用&#xff1a;解析 TCP 会话第一行的 PROXY 协议头&#xff0c;将客户端 IP/端口写回 NGINX 的内部变量&#xff0c;使后续 ngx_mail_proxy_module、认证模块、日志模块都能获取真实来源。 前提&#xff1a;监听指令中必须启用 proxy_protocol&…...

Mysql中索引B+树、最左前缀匹配

这里需要对索引的相关结构有一个基础的认识&#xff0c;比如线性索引&#xff0c;树形索引&#xff08;二叉树&#xff0c;平衡二叉树&#xff0c;红黑树等&#xff09;&#xff0c;这个up主我觉得讲的还是比较清楚的&#xff0c;可以看下。 终于把B树搞明白了(一)_B树的引入…...

Python训练营打卡 Day38

Dataset和Dataloader类 知识点回顾&#xff1a; Dataset类的__getitem__和__len__方法&#xff08;本质是python的特殊方法&#xff09;Dataloader类minist手写数据集的了解 作业&#xff1a;了解下cifar数据集&#xff0c;尝试获取其中一张图片 Dataset和Dataloader类 1. Data…...

【机器学习基础】机器学习入门核心算法:K均值(K-Means)

机器学习入门核心算法&#xff1a;K均值&#xff08;K-Means&#xff09; 1. 算法逻辑2. 算法原理与数学推导2.1 目标函数2.2 数学推导2.3 时间复杂度 3. 模型评估内部评估指标外部评估指标&#xff08;需真实标签&#xff09; 4. 应用案例4.1 客户细分4.2 图像压缩4.3 文档聚类…...

Python Day37

Task&#xff1a; 1.过拟合的判断&#xff1a;测试集和训练集同步打印指标 2.模型的保存和加载 a.仅保存权重 b.保存权重和模型 c.保存全部信息checkpoint&#xff0c;还包含训练状态 3.早停策略 1. 过拟合的判断&#xff1a;测试集和训练集同步打印指标 过拟合是指模型在训…...

RabbitMQ集群与负载均衡实战指南

文章目录 集群架构概述仲裁队列的使用1. 使用Spring框架代码创建2. 使用amqp-client创建3. 使用管理平台创建 负载均衡引入HAProxy 负载均衡&#xff1a;使用方法1. 修改配置文件2. 声明队列 test_cluster3. 发送消息 集群架构 概述 RabbitMQ支持部署多个结点&#xff0c;每个…...

怎么开机自动启动vscode项目

每次开机都得用 vscode 打开多个工程&#xff0c;然后用 vscode 里的终端启动&#xff0c;怎么设置成开机自动启动&#xff0c;省事点。 创建 bat 文件&#xff0c;用 cmd 启动&#xff0c;然后将 bat 文件放到 windows 启动文件夹中 yqp1.bat echo on cls d: cd D:\yqp\add…...

Unity 中 Update、FixedUpdate 和 LateUpdate 的区别及使用场景

在Unity开发中,Update、FixedUpdate 和 LateUpdate 是生命周期函数中最常见也最容易混淆的一组。 一、调用时机 方法名调用频率调用时机说明Update()每帧调用一次跟随帧率(帧率高则调用频率高)FixedUpdate()固定时间间隔调用默认每 0.02 秒执行一次LateUpdate()每帧调用一次…...

linux安装ffmpeg7.0.2全过程

​编辑 白眉大叔 发布于 2025年4月16日 评论关闭 阅读(341) centos 编译安装 ffmpeg 7.0.2 &#xff1a;连接https://www.baimeidashu.com/19668.html 下载 FFmpeg 源代码 在文章最后 一、在CentOS上编译安装FFmpeg 以常见的CentOS为例&#xff0c;FFmpeg的编译说明页面为h…...

Java中的设计模式实战:单例、工厂、策略模式的最佳实践

Java中的设计模式实战&#xff1a;单例、工厂、策略模式的最佳实践 在Java开发中&#xff0c;设计模式是构建高效、可维护、可扩展应用程序的关键。本文将深入探讨三种常见且实用的设计模式&#xff1a;单例模式、工厂模式和策略模式&#xff0c;并通过详细代码实例&#xff0…...

DexGarmentLab 论文翻译

单个 专家 演示 装扮 15 任务 场景 2500+ 服装 手套 棒球帽 裤子 围巾 碗 帽子 上衣 外套 服装-手部交互 捕捉 摇篮 夹紧 平滑 任务 ...... 投掷 悬挂 折叠 ... 多样化位置 ... 多样化 变形 ... 多样化服装形状 类别级 一般化 类别级(有或没有变形) 服装具有相同结构 变形 生…...

Elasticsearch性能优化全解析

Elasticsearch作为一款分布式搜索和分析引擎,其性能优化是实际生产环境中必须深入研究的课题。本文基于Elastic官方文档,系统性地总结了从硬件配置、索引设计到查询优化的全链路优化策略,帮助用户构建高性能、高稳定性的集群。 Elasticsearch的优化需结合业务场景综合决策:…...

2025.05.28【Parallel】Parallel绘图:拟时序分析专用图

Improve general appearance Add title, use a theme, change color palette, control variable orders and more Highlight a group Highlight a group of interest to help people understand your story 文章目录 Improve general appearanceHighlight a group探索Paralle…...

tc3975开发板上有ft2232这块的电路,我想知道这个开发板有哪些升级方式,重点关注是怎样通过ft2232实现的烧录升级的

关于TC3975开发板上FT2232芯片支持的升级方式&#xff0c;特别是如何通过FT2232实现烧录升级的问题。首先&#xff0c;我得回忆一下FT2232的基本功能和常见应用场景。 FT2232是FTDI公司的一款双通道USB转UART/FIFO芯片&#xff0c;常用于嵌入式系统的调试和编程。它支持多种协议…...

自动驾驶与智能交通:构建未来出行的智能引擎

随着人工智能、物联网、5G和大数据等前沿技术的发展&#xff0c;自动驾驶汽车和智能交通系统正以前所未有的速度改变人类的出行方式。这一变革不仅是技术的融合创新&#xff0c;更是推动城市可持续发展的关键支撑。 一、自动驾驶与智能交通的定义 1. 自动驾驶&#xff08;Auto…...

Kotlin Multiplatform与Flutter深度对比:跨平台开发方案的实战选择

简介 在当今多平台应用开发的浪潮中,Kotlin Multiplatform与Flutter代表了两种截然不同的技术路线。KMP以"共享代码、保留原生"为核心理念,允许开发者在业务逻辑层实现高达80%的跨平台代码共享,而Flutter则采用统一渲染引擎,在UI层提供100%的代码共享率。这两种…...

ELectron 中 BrowserView 如何进行实时定位和尺寸调整

背景 BrowserView 是继 Webview 后推出来的高性能多视图管理工具&#xff0c;与 Webview 最大的区别是&#xff0c;Webview 是一个 DOM 节点&#xff0c;依附于主渲染进程的附属进程&#xff0c;Webview 节点的崩溃会导致主渲染进程的连锁反应&#xff0c;会引起软件的崩溃。 …...

深兰科技董事长陈海波率队考察南京,加速AI大模型区域落地应用

近日&#xff0c;深兰科技创始人、董事长陈海波受邀率队赴南京市&#xff0c;先后考察了南京高新技术产业开发区与鼓楼区&#xff0c;就推进深兰AI医诊大模型在南京的落地应用&#xff0c;与当地政府及相关部门进行了深入交流与合作探讨。 此次考察聚焦于深兰科技自主研发的AI医…...

《深度关系-从建立关系到彼此信任》

陈海贤老师推荐的书&#xff0c;花了几个小时&#xff0c;感觉现在的人与人之间特别缺乏这种深度的关系&#xff0c;但是与一个人建立深度的关系并没有那么简单&#xff0c;反正至今为止&#xff0c;自己好像没有与任何一个人建立了这种深度的关系&#xff0c;那种双方高度同频…...

IT选型指南:电信行业需要怎样的服务器?

从第一条电报发出的 那一刻起 电信技术便踏上了飞速发展的征程 百余年间 将世界编织成一个紧密相连的整体 而在今年 我们迎来了第25届世界电信日 同时也是国际电联成立的第160周年 本届世界电信日的主题为:“弥合性别数字鸿沟,为所有人创造机遇”,但在新兴技术浪潮汹涌…...

【ConvLSTM第二期】模拟视频帧的时序建模(Python代码实现)

目录 1 准备工作&#xff1a;python库包安装1.1 安装必要库 案例说明&#xff1a;模拟视频帧的时序建模ConvLSTM概述损失函数说明&#xff08;python全代码&#xff09; 参考 ConvLSTM的原理说明可参见另一博客-【ConvLSTM第一期】ConvLSTM原理。 1 准备工作&#xff1a;pytho…...

[VMM]分享一个用SystemC编写的页表管理程序

分享一个用SystemC编写的页表管理程序 摘要:分享一个用SystemC编写的页表管理的程序,这个程序将模拟页表(PDE和PTE)的创建、虚拟地址(VA)到物理地址(PA)的转换,以及对内存的读写操作。 为了简化实现,我们做出以下假设: 页表是两级结构:PDE (Page Directory…...

将docker数据目录迁移到 home目录下

将 Docker 数据目录从默认位置&#xff08;通常是 /var/lib/docker&#xff09;迁移到 /home 目录下&#xff0c;可以通过几个步骤来完成。以下是详细的迁移步骤&#xff1a; 步骤 1&#xff1a;停止 Docker 服务 在进行任何操作之前&#xff0c;确保先停止 Docker 服务以避免…...

【论文解读】DETR: 用Transformer实现真正的End2End目标检测

1st authors: About me - Nicolas Carion‪Francisco Massa‬ - ‪Google Scholar‬ paper: [2005.12872] End-to-End Object Detection with Transformers ECCV 2020 code: facebookresearch/detr: End-to-End Object Detection with Transformers 1. 背景 目标检测&#…...

Pytest 是什么

Pytest 是 Python 生态中最流行的 测试框架&#xff0c;用于编写、运行和组织单元测试、功能测试甚至复杂的集成测试。它以简洁的语法、强大的插件系统和高度可扩展性著称&#xff0c;广泛应用于 Python 项目的自动化测试中。以下是其核心特性和使用详解&#xff1a; Pytest 的…...

ElasticSearch简介及常用操作指南

一. ElasticSearch简介 ElasticSearch 是一个基于 Lucene 构建的开源、分布式、RESTful 风格的搜索和分析引擎。 1. 核心功能 强大的搜索能力 它能够提供全文检索功能。例如&#xff0c;在海量的文档数据中&#xff0c;可以快速准确地查找到包含特定关键词的文档。这在处理诸如…...

缓存常见问题:缓存穿透、缓存雪崩以及缓存击穿

缓存常见问题 一、缓存穿透 (Cache Penetration) 是什么 缓存穿透是指客户端持续请求一个缓存和数据库中都根本不存在的数据。这导致每次请求都会先查缓存&#xff08;未命中&#xff09;&#xff0c;然后穿透到数据库查询&#xff08;也未命中&#xff09;。如果这类请求量…...

纤维组织效应偏斜如何影响您的高速设计

随着比特率继续飙升&#xff0c;光纤编织效应 &#xff08;FWE&#xff09; 偏移&#xff0c;也称为玻璃编织偏移 &#xff08;GWS&#xff09;&#xff0c;正变得越来越成为一个问题。今天的 56GB/s 是高速路由器中最先进的&#xff0c;而 112 GB/s 指日可待。而用于个人计算机…...

【深度学习】sglang 的部署参数详解

SGLang 的部署参数详解 SGLang(Structured Generation Language)是一个高性能的大语言模型推理框架,专为结构化生成和多模态应用设计。本文将全面介绍SGLang的部署参数,帮助你充分发挥其性能潜力。 🚀 SGLang 项目概览 SGLang是由UC Berkeley开发的新一代LLM推理引擎,…...