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

从公式到代码:手把手推导STM32舵机控制PWM的占空比计算(附两种角度表示法)

从公式到代码手把手推导STM32舵机控制PWM的占空比计算附两种角度表示法第一次接触舵机控制时看到代码里那些神秘的(角度135)/9或角度*20/1805公式你是否也感到一头雾水这些看似随意的数字背后其实隐藏着精确的数学映射关系。本文将扮演数学侦探的角色带你从PWM信号的基础特性出发一步步拆解这些魔法数字的诞生过程。无论你使用0-180度还是-90到90度的角度体系都能找到对应的完整推导方案。1. 理解舵机PWM控制的硬件基础舵机的转动角度由接收到的PWM信号脉宽直接控制。标准舵机的控制信号具有以下关键参数周期20ms50Hz有效脉宽范围0.5ms-2.5ms角度对应关系0.5ms → 0°或-90°1.5ms → 90°或0°2.5ms → 180°或90°在STM32中我们通过配置定时器的ARR自动重装载值和PSC预分频器来生成20ms周期信号。以STM32F407ZGT6为例当使用168MHz主频时典型配置为TIM8_Init(200-1, 16800-1); // 生成20ms周期信号这里ARR200-1PSC16800-1的计算过程如下定时器时钟 168MHz / (PSC1) 10kHz计数周期 (ARR1) / 10kHz 20ms2. 角度到CCR值的线性映射原理2.1 0-180度体系的推导对于0-180度表示法我们需要建立角度(θ)与CCR值之间的线性关系θ k × CCR b已知两个边界条件θ0°时CCR5对应0.5msθ180°时CCR25对应2.5ms解方程组0 k×5 b 180 k×25 b解得k 9 b -45因此反推得到CCR计算公式CCR (角度 45) / 9但在实际代码中我们常见的是TIM_SetCompare1(TIM8, (angle * 20 / 180 5));这两种形式本质是等价的后者更直观体现了angle/180角度占比*20映射到CCR范围(5-25)50°时的基准值2.2 -90到90度体系的推导对于-90°到90°体系边界条件变为θ-90°时CCR5对应0.5msθ90°时CCR25对应2.5ms建立方程-90 k×5 b 90 k×25 b解得k 9 b -135因此CCR计算公式为CCR (角度 135) / 93. 两种角度体系的代码实现对比3.1 0-180度实现方案void Servo_SetAngle(float yaw, float pitch) { // 角度限幅 yaw yaw 180 ? 180 : (yaw 0 ? 0 : yaw); pitch pitch 180 ? 180 : (pitch 0 ? 0 : pitch); // 设置CCR值 TIM_SetCompare1(TIM8, (yaw * 20 / 180 5)); TIM_SetCompare2(TIM8, (pitch * 20 / 180 5)); }3.2 -90到90度实现方案void Servo_Angle(int yaw, int pitch) { // 角度限幅 yaw yaw 90 ? 90 : (yaw -90 ? -90 : yaw); pitch pitch 90 ? 90 : (pitch -90 ? -90 : pitch); // 设置CCR值含安装误差补偿 TIM8-CCR1 (yaw 135) / 9; TIM8-CCR2 (pitch 135 - 50) / 9; // -50为安装误差补偿 }3.3 两种方案的参数对比表参数0-180度体系-90到90度体系角度范围0°~180°-90°~90°中间位置90°0°0°对应CCR51590°对应CCR1515180°对应CCR25-计算公式CCR角度*20/1805CCR(角度135)/94. 高级定时器的特殊配置要点使用STM32高级定时器如TIM8驱动舵机时有几个易忽略的关键点引脚复用配置GPIO_PinAFConfig(GPIOC, GPIO_PinSource6, GPIO_AF_TIM8); GPIO_PinAFConfig(GPIOC, GPIO_PinSource7, GPIO_AF_TIM8);PWM输出使能仅高级定时器需要TIM_CtrlPWMOutputs(TIM8, ENABLE);完整的初始化流程// 时基配置 TIM_TimeBaseInit(TIM8, TIM_TimeBaseStructure); // 输出比较配置 TIM_OCInitStructure.TIM_OCMode TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState TIM_OutputState_Enable; TIM_OC1Init(TIM8, TIM_OCInitStructure); // 预装载使能 TIM_OC1PreloadConfig(TIM8, TIM_OCPreload_Enable); TIM_ARRPreloadConfig(TIM8, ENABLE);5. 二自由度云台的实际调试技巧在组装二自由度云台时遵循以下步骤可减少调试时间机械零点校准先通过代码将舵机置于中间位置0°或90°再安装机械臂到该位置误差补偿方法观察实际角度与期望角度的偏差在CCR计算公式中加入补偿项如示例中的-50运动平滑处理// 渐进式角度变化 void SmoothMove(int target_angle) { int current TIM8-CCR1; while(abs(current - target_angle) 2) { current (target_angle current) ? 1 : -1; TIM8-CCR1 current; delay_ms(10); } }调试过程中发现使用TIM8时PWM输出异常最终发现是漏掉了TIM_CtrlPWMOutputs使能语句。这个教训让我在以后的开发中都会仔细检查定时器的特殊功能寄存器配置。

相关文章:

从公式到代码:手把手推导STM32舵机控制PWM的占空比计算(附两种角度表示法)

从公式到代码:手把手推导STM32舵机控制PWM的占空比计算(附两种角度表示法) 第一次接触舵机控制时,看到代码里那些神秘的"(角度135)/9"或"角度*20/1805"公式,你是否也感到一头雾水?这些…...

java面向对象的学习主线

java基础的语法,是为了执行一段程序。 这篇文章的主体是 有一个逻辑思路,解决javase是什么知识体系, 为什么要学这套知识体系。 我们想一个概念。 假如,我们要执行一段程序。 我们总不能 光执行一个类里面的psvm方法 于是我们就创…...

Frontman:基于MCP协议的AI前端编辑助手,实现浏览器实时可视化开发

1. 项目概述:一个“活”在浏览器里的AI前端编辑助手 如果你是一名前端开发者,或者团队里有设计师、产品经理需要频繁调整界面,那你一定经历过这样的场景:设计师指着屏幕说“这个按钮颜色能不能再亮一点?”,…...

Windows 10/11 下 Node.js 14.21.3 安装避坑全记录:从配置全局路径到解决 cnpm 权限错误

Windows 下 Node.js 14.21.3 安装全攻略:从环境配置到疑难解析 最近在帮团队新人配置开发环境时,发现即便是简单的 Node.js 安装,在 Windows 系统上也会遇到各种"坑"。特别是当项目需要特定版本(如 14.21.3&#xff09…...

为什么你的VSCode在千行代码仓库中卡顿3.7秒?——基于V8引擎与Electron 25内核的工业配置优化白皮书

更多请点击: https://intelliparadigm.com 第一章:VSCode千行代码仓库卡顿现象的工业级归因分析 当 VSCode 打开包含 1000 行代码的中等规模仓库(如 TypeScript React 单体项目)时,常见编辑延迟、自动补全挂起、文件…...

Qwen3.5-4B-AWQ应用场景:轻量客服系统+知识库构建实操落地案例

Qwen3.5-4B-AWQ应用场景:轻量客服系统知识库构建实操落地案例 1. 项目背景与模型特点 1.1 模型简介 Qwen3.5-4B-AWQ-4bit是阿里云通义千问团队推出的轻量级稠密模型,经过4bit AWQ量化后显存占用仅约3GB,可在RTX 3060/4060等消费级显卡上流…...

AutoHotkey编译器:5步完成脚本转EXE的完整指南

AutoHotkey编译器:5步完成脚本转EXE的完整指南 【免费下载链接】Ahk2Exe Official AutoHotkey script compiler - written itself in AutoHotkey 项目地址: https://gitcode.com/gh_mirrors/ah/Ahk2Exe 对于Windows自动化脚本开发者来说,将AutoHo…...

QQ音乐解析工具:2025年高效获取音乐资源的Python解决方案

QQ音乐解析工具:2025年高效获取音乐资源的Python解决方案 【免费下载链接】MCQTSS_QQMusic QQ音乐解析 项目地址: https://gitcode.com/gh_mirrors/mc/MCQTSS_QQMusic QQ音乐解析工具是一个基于Python开发的实用程序,能够帮助用户从QQ音乐平台获取…...

手把手教你用Verilog在FPGA上实现脉动阵列:从PE单元到完整矩阵乘法

手把手教你用Verilog在FPGA上实现脉动阵列:从PE单元到完整矩阵乘法 在FPGA加速计算领域,脉动阵列因其高效的流水线结构和规则的数据流模式,成为实现矩阵乘法等线性代数运算的理想选择。本文将带领读者从零开始,用Verilog HDL构建一…...

Arduino驱动TFT触摸屏:从SPI通信到ILI9341库实战

1. 认识TFT触摸屏与Arduino的SPI通信 第一次拿到2.8英寸的ILI9341驱动TFT触摸屏时,我完全被它密密麻麻的引脚搞懵了。这种屏幕其实由两部分组成:显示部分和触摸部分。显示部分采用SPI通信协议,而触摸部分(如果有)通常也…...

ADS瞬态仿真实操:从数据手册参数到共射放大器波形,一步步验证你的设计

ADS瞬态仿真实战:从2N2222参数到共射放大器波形验证 在硬件设计领域,理论计算与仿真验证如同车之两轮,缺一不可。当我们翻开一本经典的模拟电路教材,共射放大器总是作为第一个实战案例出现——它简单到足以用一支三极管搭建&…...

香港科技大学工学院航空工程项目研究生招生宣讲会-北京航空航天大学专场

🕙时间:4月27日(星期一)15:30 🏠地点:北京航空航天大学沙河校区J4-104🌟航空工程课程设置、申请要求、招录流程、奖学金等一手资讯介绍! 🧑‍🎓招生团队亲临现…...

抖音内容批量下载实战:从单视频到直播回放的完整解决方案

抖音内容批量下载实战:从单视频到直播回放的完整解决方案 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback su…...

预约软件测评2026

2026 中国市场预约软件全景测评:自由职业者与本地商家如何选?预约管理正成为越来越多自由职业者、一人企业(OPC)和本地生活商家的刚需。从咨询师到美甲店,谁都需要一套让客户自助预约、自动确认的工具——但市面上产品…...

VideoDownloadHelper:5个步骤掌握终极视频下载助手,轻松保存网络视频资源

VideoDownloadHelper:5个步骤掌握终极视频下载助手,轻松保存网络视频资源 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper …...

炉石传说自动化脚本:3分钟快速上手终极指南

炉石传说自动化脚本:3分钟快速上手终极指南 【免费下载链接】Hearthstone-Script Hearthstone script(炉石传说脚本) 项目地址: https://gitcode.com/gh_mirrors/he/Hearthstone-Script 想要在炉石传说中实现卡组自动配置和智能对战吗…...

microeco 2.1.0:终极微生物组功能预测精度突破指南

microeco 2.1.0:终极微生物组功能预测精度突破指南 【免费下载链接】microeco An R package for downstream data analysis of microbiome omics data 项目地址: https://gitcode.com/gh_mirrors/mi/microeco 微生物组功能预测是解析复杂环境样本代谢潜能的核…...

手把手教你用rEFInd解决Ubuntu和Windows双系统引导混乱问题(附.conf文件配置详解)

手把手教你用rEFInd解决Ubuntu和Windows双系统引导混乱问题(附.conf文件配置详解) 当你在同一台电脑上安装了Windows和Ubuntu双系统后,可能会遇到启动菜单混乱的问题——重复的Linux内核选项、消失的Windows引导项,或是顺序错乱的…...

【C++26反射元编程实战指南】:3步接入、5大避坑点、100%编译期类型自省能力落地

更多请点击: https://intelliparadigm.com 第一章:C26反射元编程的演进脉络与核心价值 C26 将首次将编译期反射(compile-time reflection)以核心语言特性形式正式纳入标准,标志着元编程范式从模板元编程(T…...

保姆级教程:用Android TTS实现有声读物App的逐句高亮与播放控制(支持API 26+)

Android TTS高级开发实战:打造沉浸式有声读物应用 有声读物和语言学习类应用的核心体验在于语音与文字的精准同步。想象一下,当用户听到"The quick brown fox jumps over the lazy dog"时,每个单词都能像卡拉OK歌词一样实时高亮&a…...

Qt网络编程避坑指南:从QAbstractSocket的SocketError到高效错误处理实战

Qt网络编程深度实战:构建高鲁棒性应用的错误处理体系 在Qt网络应用开发中,网络连接的稳定性往往决定着用户体验的下限。当你的应用在演示现场突然弹出"网络错误"提示时,那种手足无措的感觉每个开发者都深有体会。本文将带你深入Qt网…...

告别卡顿!实测用yuzu模拟器在Win10电脑流畅玩《宝可梦 剑/盾》的完整配置流程

告别卡顿!实测用yuzu模拟器在Win10电脑流畅玩《宝可梦 剑/盾》的完整配置流程 对于许多Switch玩家来说,《宝可梦 剑/盾》无疑是近年来最令人期待的作品之一。然而,并非所有玩家都拥有Switch主机,或者希望在便携设备上体验这款游戏…...

Connery SDK:为AI应用构建标准化可执行动作的开发者工具

1. 项目概述:Connery SDK,一个为AI应用构建可执行“动作”的桥梁 如果你正在开发一个AI应用,比如一个聊天机器人或者一个智能助手,你肯定遇到过这样的场景:用户说“帮我查一下明天的天气”或者“给我的客户张三发一封邮…...

C++26 contracts正式落地:从断言迁移、运行时/编译期混合检查到Profile-Guided Contract Pruning(PGCP)的5步跃迁

更多请点击: https://intelliparadigm.com 第一章:C26 contracts正式落地:从断言迁移、运行时/编译期混合检查到Profile-Guided Contract Pruning(PGCP)的5步跃迁 C26 标准正式将 contracts 纳入核心语言特性&#xf…...

Chrome插件(笔记篇)

录制分享视屏 https://chromewebstore.google.com/detail/kbbdabhdfibnancpjfhlkhafgdilcnji?utm_sourceitem-share-cb 解决部分网页不允许内嵌问题 https://chromewebstore.google.com/detail/gleekbfjekiniecknbkamfmkohkpodhe?utm_sourceitem-share-cb JSON格式化 htt…...

解锁AMD Ryzen处理器潜能:免费开源工具SMUDebugTool终极指南

解锁AMD Ryzen处理器潜能:免费开源工具SMUDebugTool终极指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: http…...

实战指南:如何构建企业级金融数据采集框架的7个核心场景

实战指南:如何构建企业级金融数据采集框架的7个核心场景 【免费下载链接】akshare AKShare is an elegant and simple financial data interface library for Python, built for human beings! 开源财经数据接口库 项目地址: https://gitcode.com/gh_mirrors/aks/…...

《抛开炒作后,OpenClaw Moltbook 留下了什么?》

答案是:机乎 —— 一个更落地的中文 AI 协作社区全文约 1200 字 阅读 3 分钟 不绕弯子,只讲重点一图看懂三者区别维度OpenClawMoltbook机乎定位本地AI智能体框架AI社交实验平台中文AI协作社区社交模式❌ 无AI为主,人类围观✅ AI互动 人类可…...

一场互联网大厂的面试故事:Java求职者谢飞机的精彩(或滑稽)回答

一场互联网大厂的面试故事:Java求职者谢飞机的精彩(或滑稽)回答 面试场景设定 谢飞机,一位自认为熟悉Java及周边技术的程序员,来到了某互联网大厂的总部进行面试。面试官是一位技术沉稳、逻辑清晰的大拿,带…...

【金融IDE安全合规白皮书】:VSCode配置如何通过证监会《证券期货业信息系统安全等级保护基本要求》三级认证?

更多请点击: https://intelliparadigm.com 第一章:金融IDE安全合规白皮书概述 金融集成开发环境(Financial IDE)是面向量化交易、风控建模与监管报送场景的专用开发平台,其安全合规性直接关系到金融机构的数据主权、算…...