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

用STM32F103和电位器给你的无刷电机做个“油门”:手把手实现ADC调速(附完整代码)

用STM32F103和电位器打造无刷电机调速系统从硬件连接到代码实战旋转电位器旋钮就能精准控制无刷电机转速这种直观的交互方式在机器人、无人机和工业控制领域有着广泛应用。本文将带您从零开始基于STM32F103微控制器构建完整的电位器调速系统涵盖硬件设计、ADC采集、PWM生成以及安全控制逻辑等核心环节。1. 系统架构与硬件选型无刷电机调速系统的核心在于将电位器的机械旋转角度转换为电信号再通过微控制器处理最终驱动电机。我们选择的STM32F103C8T6俗称蓝莓板因其丰富的外设和性价比成为创客首选。关键硬件组件STM32F103C8T6开发板内置12位ADC和PWM定时器10KΩ线性电位器B10K型号无刷电机驱动器如ESC电调无刷电机推荐2204-2300KV型号电源系统12V锂电池5V稳压提示电位器建议选用线性而非对数型确保旋转角度与电阻值呈线性关系。硬件连接示意图设备STM32引脚备注电位器中间引脚PA0ADC1通道0电位器VCC3.3V避免使用5V防止ADC过压电位器GNDGND共地连接电调PWM信号线PA8TIM1_CH1输出2. ADC采集与数据处理STM32的12位ADC能够将0-3.3V电压转换为0-4095的数字量。我们需要配置ADC以稳定采集电位器电压// ADC初始化代码 void ADC1_Init(void) { RCC-APB2ENR | RCC_APB2ENR_ADC1EN; // 使能ADC1时钟 ADC1-CR2 ADC_CR2_ADON; // 开启ADC ADC1-SQR3 0; // 选择通道0 HAL_Delay(1); // 等待ADC稳定 } // 获取ADC值函数 uint16_t Get_ADC_Value(void) { ADC1-CR2 | ADC_CR2_SWSTART; // 启动转换 while(!(ADC1-SR ADC_SR_EOC)); // 等待转换完成 return ADC1-DR; // 返回转换结果 }采样优化技巧采用均值滤波连续采样10次取平均值添加死区处理当变化小于5个LSB时保持原值电压范围校准记录旋转到两端时的ADC极值#define FILTER_NUM 10 uint16_t ADC_Filter(void) { uint32_t sum 0; for(uint8_t i0; iFILTER_NUM; i) { sum Get_ADC_Value(); HAL_Delay(1); } return sum/FILTER_NUM; }3. PWM生成与电机控制无刷电机通常通过20ms周期的PWM信号控制其中高电平宽度在1-2ms间变化。我们需要配置TIM1产生标准50Hz PWM// PWM初始化代码 void PWM_Init(uint16_t arr, uint16_t psc) { RCC-APB2ENR | RCC_APB2ENR_TIM1EN; // 使能TIM1时钟 GPIOA-CRH ~(GPIO_CRH_CNF8 | GPIO_CRH_MODE8); // 配置PA8为复用输出 GPIOA-CRH | GPIO_CRH_MODE8_1 | GPIO_CRH_MODE8_0; TIM1-ARR arr - 1; // 自动重装载值 TIM1-PSC psc - 1; // 预分频器 TIM1-CCMR1 | TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1; // PWM模式1 TIM1-CCER | TIM_CCER_CC1E; // 开启输出 TIM1-BDTR | TIM_BDTR_MOE; // 主输出使能 TIM1-CR1 | TIM_CR1_CEN; // 启动定时器 } // 设置PWM占空比 void Set_PWM_Duty(uint16_t duty) { TIM1-CCR1 duty; // 修改捕获比较值 }安全控制策略上电初始化时将PWM设为最小值1ms添加软件限幅保护限制在1-2ms范围急停功能通过按键立即归零// ADC值映射到PWM脉宽 uint16_t Map_ADC_to_PWM(uint16_t adc_val) { const uint16_t PWM_MIN 1000; // 1ms const uint16_t PWM_MAX 2000; // 2ms uint16_t pwm PWM_MIN (adc_val * (PWM_MAX-PWM_MIN)) / 4095; return (pwm PWM_MIN) ? PWM_MIN : (pwm PWM_MAX) ? PWM_MAX : pwm; }4. 系统集成与调试技巧将各模块组合后主程序逻辑如下int main(void) { HAL_Init(); PWM_Init(20000, 72); // 50Hz PWM ADC1_Init(); while(1) { uint16_t adc_val ADC_Filter(); uint16_t pwm_val Map_ADC_to_PWM(adc_val); Set_PWM_Duty(pwm_val); HAL_Delay(10); // 10ms控制周期 } }常见问题排查现象可能原因解决方案电机不响应PWM信号未连接检查电调信号线连接转速跳动不稳定电位器接触不良更换高质量电位器仅全速或停止两档PWM脉宽范围不正确校准PWM_MIN和PWM_MAX值ADC值始终为0引脚配置错误检查ADC通道与GPIO模式配置调试时可先通过串口打印ADC原始值和计算后的PWM值printf(ADC: %4d - PWM: %4d\r\n, adc_val, pwm_val);5. 进阶优化方向基础功能实现后可以考虑以下增强功能速度曲线优化线性映射y kx b指数曲线y a^(x-c) b适合精细低速控制S型曲线平滑加减速避免突变// 指数曲线映射示例 uint16_t Exp_Map(uint16_t x) { float x_norm x / 4095.0f; float y powf(4.0f, x_norm) / 4.0f; // 调整底数改变曲线形状 return 1000 (uint16_t)(y * 1000); }多模式控制通过按键切换速度限制模式保存用户预设转速档位添加LCD显示屏实时显示转速实际项目中我在为3D打印机设计风扇控制系统时发现为不同功率的风扇设置合适的加速斜率能显著降低机械振动。例如5015涡轮风扇适合采用S型曲线而普通4010风扇使用线性映射即可获得良好效果。

相关文章:

用STM32F103和电位器给你的无刷电机做个“油门”:手把手实现ADC调速(附完整代码)

用STM32F103和电位器打造无刷电机调速系统:从硬件连接到代码实战 旋转电位器旋钮就能精准控制无刷电机转速,这种直观的交互方式在机器人、无人机和工业控制领域有着广泛应用。本文将带您从零开始,基于STM32F103微控制器构建完整的电位器调速…...

从零构建千万级IM系统:微服务架构与核心消息流转实战

1. 项目概述:从零理解一个现代即时通讯系统的核心如果你正在寻找一个能支撑起千万级用户、功能对标主流商业产品的即时通讯(IM)系统开源实现,那么open-im-server绝对是一个绕不开的名字。这个由OpenIM项目开源的Go语言服务端&…...

如何用FanControl实现显卡风扇0 RPM静音?Windows电脑散热优化终极指南

如何用FanControl实现显卡风扇0 RPM静音?Windows电脑散热优化终极指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/Git…...

Maxwell 2D仿真进阶:从磁力线可视化到磁感应强度曲线分析

1. Maxwell 2D仿真基础与优势解析 第一次接触电磁场仿真时,我被各种专业术语和复杂的操作界面搞得晕头转向。直到发现Maxwell 2D这个神器,才真正体会到电磁仿真的魅力。相比于3D仿真,2D版本有个特别实用的功能——可以直接观察磁力线分布&…...

PCA降维后画图总感觉差点意思?试试用sklearn和matplotlib绘制带置信区间的分类图(附完整代码)

用置信椭圆增强PCA可视化:从数学原理到Python实战 当你第一次完成PCA降维并绘制出散点图时,那种将高维数据压缩到二维平面的成就感令人振奋。但很快你会发现一个尴尬的现实——那些密密麻麻的散点虽然展示了数据分布,却难以直观判断不同类别之…...

【大白话说Java面试题 第55题】【JVM篇】第15题:JVM有哪些垃圾收集算法?

📌 PDF:大白话说Java面试题 — 02-JVM篇 第15题:JVM有哪些垃圾收集算法 📚 回答: 核心概念: JVM 的垃圾收集算法是垃圾回收的核心机制,决定了如何高效地标记和回收内存中的垃圾对象。常见的垃…...

如何用ComfyUI-WanVideoWrapper开启你的AI动态内容创作之旅

如何用ComfyUI-WanVideoWrapper开启你的AI动态内容创作之旅 【免费下载链接】ComfyUI-WanVideoWrapper 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI-WanVideoWrapper 在AI视频生成的世界里,你是否曾想象过将文字描述转化为生动的动态画面&am…...

别再只盯着网线了!从双绞线到光纤,聊聊家庭网络布线选材的实战避坑指南

家庭网络布线实战指南:从铜缆到光缆的智能选择 装修新房或升级旧宅网络时,面对琳琅满目的网线规格和新兴的光纤方案,普通消费者往往陷入选择困境。Cat5e、Cat6、Cat7这些数字背后究竟意味着什么?光纤是否真的高不可攀?…...

BookGet 终极指南:一键下载全球50+图书馆古籍资源的完整教程

BookGet 终极指南:一键下载全球50图书馆古籍资源的完整教程 【免费下载链接】bookget bookget 数字古籍图书下载工具。 项目地址: https://gitcode.com/gh_mirrors/bo/bookget 在数字时代,古籍研究者和历史爱好者面临着一个共同挑战:如…...

东南亚1.5亿数字钱包用户如何覆盖?Antom收单解决方案拆解

在东南亚,很多用户第一次完成线上付款可能不是通过信用卡,而是通过自己熟悉的本地电子钱包。从印尼的GoPay、DANA,到菲律宾的GCash,再到泰国的TrueMoney、马来西亚的Touch ‘n Go,电子钱包已经深度融入当地人的日常消费…...

构建多模型备选策略以提升AI应用服务稳定性

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 构建多模型备选策略以提升AI应用服务稳定性 在将大模型能力集成到生产应用时,服务可用性是核心考量之一。依赖单一模型…...

FanControl风扇控制:3分钟掌握专业级Windows散热管理终极指南

FanControl风扇控制:3分钟掌握专业级Windows散热管理终极指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Tren…...

【新手实用技能指南】OpenClaw 2.7.1 实用 Skill 技能全推荐(含安装包)

OpenClaw 实用 Skill 技能推荐|办公效率全面提升(新手必开) OpenClaw(小龙虾)的核心优势在于Skill 技能扩展,开启适配技能后,AI 可脱离单纯对话模式,自主完成各类电脑操作任务。本文…...

【小白也能懂得操作】解决 OpenClaw 操作电脑受限问题详细指南(含安装包)

OpenClaw 没有电脑操作权限怎么办?完整解决方法 【新人点击链接直接下载openclaw安装包】 OpenClaw 在运行时需要对系统进行文件读写、键鼠模拟、窗口控制等操作,如果出现无法操作电脑、提示没有权限的问题,会直接影响自动化功能使用。本文…...

接口请求状态码 / 错误 极简速查表(前端自用版,好记够用)

一、HTTP 状态码4xx 客户端错误(前端自查)404:接口地址写错、路径不对、后端没这个接口400:请求参数格式错、少参、参数类型不对、传参名不匹配401:未登录 / Token 过期 / Token 没带403:有权限&#xff0c…...

CTFHUB-网站源码泄露实战:从备份文件到Flag获取

1. 源码泄露漏洞的成因与危害 在CTF比赛中,网站源码泄露是一种常见的安全漏洞类型。这种漏洞通常是由于开发人员的疏忽操作导致的,比如将源代码备份文件直接存放在Web可访问目录下。我就遇到过不少这样的情况,有些开发团队为了图方便&#xf…...

DeepMind CEO 访谈:人类离 AGI 只剩 4 年,只差最后 3 块拼图

作者:老纪的技术唠嗑局 楔子 前几天(4 月 29 日),Google DeepMind CEO、2024 年诺贝尔化学奖得主 Demis Hassabis 在一期播客节目《Agents, AGI & The Next Big Scientific Breakthrough》[1] 中,预测 AGI&#…...

2025届最火的AI辅助论文方案横评

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 深寻作为先进的大型语言模型,在学术论文写作领域显现出明显的应用潜力&#xff…...

FontForge入门指南:从零开始设计你的第一套字体

FontForge入门指南:从零开始设计你的第一套字体 【免费下载链接】fontforge Free (libre) font editor for Windows, Mac OS X and GNULinux 项目地址: https://gitcode.com/gh_mirrors/fo/fontforge 你是否曾想过亲手设计一套属于自己的字体?Fon…...

WeChatMsg:突破性微信聊天记录管理工具 - 从数据碎片到情感记忆的革命

WeChatMsg:突破性微信聊天记录管理工具 - 从数据碎片到情感记忆的革命 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Tr…...

LangGraph Agent 开发指南(9~工具 Tools)

一、什么是工具? 1.1 通俗解释 想象你有一个智能助手: 没有工具:你: 帮我查一下北京明天的天气助手: 抱歉,我没有联网功能,无法查询实时天气有工具:你: 帮我查一下北京明天的天气助手: 好的,…...

别再只做静态分析了!用DPABI探索小鼠大脑rs-fMRI的动态功能连接(含Matlab代码片段)

动态功能连接分析:解锁小鼠大脑rs-fMRI的时变奥秘 在神经影像研究领域,静息态功能磁共振成像(rs-fMRI)已成为探索大脑功能组织的强大工具。传统静态分析方法虽然提供了宝贵的基础认知,但大脑本质上是一个动态系统,其功能连接会随时…...

3步解决Beyond Compare 5评估模式错误:密钥生成与完全激活指南

3步解决Beyond Compare 5评估模式错误:密钥生成与完全激活指南 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen 当Beyond Compare 5的30天评估期结束后,软件会显示"评…...

高性能JSXBIN解码器架构设计:3大核心技术优势深度解析

高性能JSXBIN解码器架构设计:3大核心技术优势深度解析 【免费下载链接】jsxer A fast and accurate JSXBIN decompiler. 项目地址: https://gitcode.com/gh_mirrors/js/jsxer Jsxer是一个快速且准确的JSXBIN反编译器,专门用于将Adobe ExtendScrip…...

批量转账工具评测:GTokenTool 凭什么成为 Web3 首选?

GTokenTool 是一个支持多链、不涉及代码操作的综合性 Web3 工具箱。它的批量转账功能支持一键分发 ERC-20 和 NFT 代币,特别适合用来高效完成各类代币分发任务,最高能节省 90% 的 Gas 费,且其合约模板已通过多重安全审计。 下面我按照新手最关…...

英雄联盟终极自动化助手:三步掌握LeagueAkari提升游戏体验

英雄联盟终极自动化助手:三步掌握LeagueAkari提升游戏体验 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit LeagueAkari是一款基于英…...

【基于Xilinx ZYNQ7000与PYNQ的嵌入式AI实践】从零构建实时人脸识别系统

1. 项目背景与核心价值 最近在折腾嵌入式AI项目时,发现Xilinx ZYNQ7000系列开发板真是个宝藏硬件。它独特的PS(处理器系统)PL(可编程逻辑)双架构,配合PYNQ框架的Python生态,让算法部署变得异常灵…...

AUBO机械臂视觉跟踪避坑指南:手眼标定后,如何让末端稳定跟随移动的ArUco码?

AUBO机械臂视觉跟踪避坑指南:手眼标定后如何实现稳定动态跟随 在工业自动化领域,机械臂的视觉跟踪能力直接决定了柔性制造系统的智能化水平。AUBO i5作为国产协作机械臂的代表性产品,其与视觉系统的集成应用越来越广泛。然而,许多…...

LaTeX引用中文文献总出乱码?可能是你的.bib文件编码和编译顺序没搞对

LaTeX中文文献引用乱码全解析:从编码原理到实战排错 当你熬夜赶论文,终于把参考文献列表整理进.bib文件,满心期待地按下编译键——结果引用位置跳出一串问号,参考文献列表变成乱码战场。这种崩溃瞬间,每个用LaTeX写过中…...

Python知乎API开发完全指南:从零构建高效数据采集系统

Python知乎API开发完全指南:从零构建高效数据采集系统 【免费下载链接】zhihu-api Zhihu API for Humans 项目地址: https://gitcode.com/gh_mirrors/zh/zhihu-api 在当今数据驱动的时代,知乎作为中文互联网最大的知识分享平台,其丰富…...