历史上的今天
返回首页

历史上的今天

今天是:2026年03月14日(星期六)

2023年03月14日 | STM32F0单片机 PWM + ADC 控制有刷电机

2023-03-14 来源:zhihu

1.有刷电机驱动电路

有刷电机是电机里面最简单,也是历史最悠久的一种,到现在仍然广泛应用于各个领域。他的控制很简单,在电机的两个电极加正向电压,则正向旋转,如果加反向电压,则旋转方向也反过来。电机的转速可以通过控制加在电极上的电压来调节。

在电机控制电路中最常用的器件就是 MOS 管了。可以分为两个大的类型:P 沟道 MOS 和 N 沟道 MOS。MOS 管可以简单的理解为一个自来水阀门,Gate 是控制端,调节 Drain 和 Source 端之间流过的电流大小。


下面是两种 MOS 的典型用法。P 沟道的 MOS 一般 S 接电源正极,然后 Vgs 需要一个负电压来打开电流通道,而 N 沟道的 S 极一般接电源的负极,Vgs 需要一个正电压来打开电流通道。

资料来源于 IOR 公司数据手册

我们先从一个最简单的驱动电路开始。单片机控制 MOS 管栅极为高时,电流从电源经过电机和 MOS 管到地。当栅极为低时,MOS 管断开,此时电机线圈内的电流继续通过续流二极管回流电机的正极。我们通过调节栅极控制端的PWM占空比,就可以控制电机的转速。

2.TIM模块

TIM 模块最重要的三个寄存器是:

Counter Register (TIMx_CNT) 计数寄存器

Auto-Reload Register (TIMx_ARR) 重置寄存器

Capture/compare mode register 1 (TIMx_CCMRx) 输入捕获/输出比较寄存器


Counter 在时钟的驱动下计数

Auto-Reload 设定计数的最大限制值

Capture/Compare 锁存一个事件发生时的计数值到Capture/计数达到 Compare 值后触发一个事件

在 PWM 模式下,Auto-Reload 寄存器设定PWM的周期,Compare 设定占空比。

有一点需要注意的是一个 TIM 模块只有一个计数器和一个重置寄存器,而有多个输入捕获/输出比较寄存器。所以一个 TIM 模块的多个通道可以设置不同的占空比,但周期都是相同的。

所以我们在选用 MCU 的时候,如果需要产生多种周期的 PWM,不仅要看它的定时器模块一共有多少通道数,还要看是否有足够的独立 TIM 模块。

3.代码

我们在下面这个工程的基础上修改来实现用一个可调电阻控制PWM占空比,来控制电机的转速。

STM32Cube_FW_F0_V1.11.0ProjectsSTM32F030R8-NucleoExamplesTIMTIM_PWMOutputMDK-ARMProject.uvprojx

这个工程默认使用TIM3模块输出4路PWM,我们可以只保留其中一路。

然后把ADC采样的代码添加进来:

Step 1:

stm32f0xx_hal_conf.h

#define HAL_ADC_MODULE_ENABLED


Step 2:

main.h

添加ADC相关宏定义


Step 3:

stm32f0xx_hal_msp.c

添加ADC使用的引脚的初始化代码

Step 4:

把ADC的驱动文件添加进工程,在主程序初始化ADC。

Step 5:

读取 ADC 的值,写入 TIM 的 CCR 寄存器,观察 PWM 占空比的变化。根据电机的特性,还可能需要改变 PWM 的周期。

如果需要参考代码,可以在 Github 搜索 TopSemic 找到。

参考资料:

PM0215 STM32F0xxx Cortex-M0 programming manual

UM1785 Description of STM32F0 HAL and low-layer drivers

STM32F030 Datasheet

STM32F030 Reference Manual


推荐阅读

史海拾趣

GMT(致新科技)公司的发展小趣事
如果时间控制芯片或MCU正常,应检查继电器或晶体管等控制元件是否损坏或接触不良。可以通过替换法来测试这些元件是否有问题。
璟德(ACX)公司的发展小趣事

多年来,璟德(ACX)凭借其卓越的技术实力和市场表现,荣获了多项荣誉和奖项。这些荣誉不仅是对公司过去努力的肯定,也为其未来的发展注入了新的动力。同时,璟德(ACX)始终坚持创新驱动的发展理念,不断投入研发,推出新产品和新技术,以满足市场的不断变化和客户的需求。

请注意,以上故事是基于现有资料和行业常识构建的,可能无法完全反映璟德(ACX)公司实际发展历程中的所有细节和复杂性。如需了解更多关于璟德(ACX)公司的故事和发展历程,建议查阅公司官方网站、相关新闻报道或行业研究报告。

Califia Lighting公司的发展小趣事

在竞争激烈的电子照明市场中,Califia Lighting始终坚持以技术创新为核心竞争力。公司不断投入研发资源,推动LED照明技术的升级和突破。通过引入先进的生产工艺和设计理念,Califia Lighting成功开发出了一系列具有独特优势的产品,如高效节能、长寿命、环保等,赢得了市场的广泛认可。

Asia Electronics Ind Co Ltd公司的发展小趣事

面对日益激烈的市场竞争,Asia Electronics Ind Co Ltd深知优化供应链管理的重要性。公司加强与供应商的合作与沟通,确保原材料的质量和供应的稳定性。同时,公司还引入先进的供应链管理系统,实现供应链的透明化和高效化。通过优化供应链,公司降低了生产成本,提高了生产效率,为公司的持续发展提供了有力保障。

巴丁微公司的发展小趣事

随着技术的不断进步和市场的不断变化,巴丁微始终保持着敏锐的市场洞察力。公司不断推出新产品,以满足不同领域的需求。其中,巴丁微的电机驱动控制、霍尔传感器等产品因其高性能、高品质而受到了广泛好评。

同时,巴丁微也积极拓展市场,与多家知名企业建立了合作关系。公司的产品不仅在国内市场占据了一席之地,还逐渐打开了国际市场的大门。通过不断的创新和市场拓展,巴丁微在电子行业的地位日益稳固。

CHIMEI(奇美)公司的发展小趣事

奇美公司的创业历程始于XXXX年,当时电子产业正处于蓬勃发展的初期。公司创始人凭借对电子行业的敏锐洞察力和坚定的创业决心,带领一支充满激情和创造力的团队,开始了奇美的创业之路。在创业初期,奇美专注于电子产品的研发和生产,通过不断的技术创新和市场拓展,逐渐在行业内崭露头角。

问答坊 | AI 解惑

[求助]关于在固定电话上使用无线听筒的问题

首先声明我是菜鸟一只,,基本上属于什么都不懂的。。我想做一个能在普通固定电话上使用的无线听筒,,成本大概是多少呢??还有,,除了用蓝牙还有别的更适合的无线技术吗??恳请大家不吝赐教。。不胜感激。。。。。…

查看全部问答>

高速球摄像机的云台选择

  关键字:高速球   快速云台是高速球型摄像机的核心机械部件,它的可靠性决定高速球型摄像机的稳定且不间断使用的性能。云台的机架部分因冲压件组合设计比较方便,所以现在多数产品使用这种结构方式。但另一方面,由于这种组合结构对几十种冲 ...…

查看全部问答>

关于IIR滤波器的设计心得

对于用双线性变换法来设计数字滤波器而言,由低通指标开始,其设计过程如下: 先低通模拟频率--->数字频率指标--->频率预畸变,得模拟低通指标---->进行模拟逼近,求模拟低通的传输函数---->双线性变换,求得数字低通的传输函数. 如果想了解双线性Z变换 ...…

查看全部问答>

protel库转allegro库方法及工具下载

注意:Layout2Allegro工具转换的文档也是有版本之分的。 并不是将其放在当前版本转换后就是当前版本的。 1. Layout2Allegro.rar这个版本估计在15.2之上(虽然cadence可查看版本,但太笼统),    因转换后有的可用15.2打开,有的需用 ...…

查看全部问答>

Crosstar嵌入式学院“Minicom -- Linux下的超级终端”

 Linux下可以使用minicom通过串口对开发板进行配置,就像Windows下的超级终端一样,功能更强大。 输入minicom命令进入minicom界面, 按CTRL-A Z(同时按Ctrl和A, 然后按Z), 然后按O 选择cOnfigure Minicom进入minicom的配置界面(也可以输入minicom - ...…

查看全部问答>

SIRIUS 无线模块

SIRIUS  ISR3500介绍:…

查看全部问答>

QQ2440、GEC2440、GEC2410开发板专诚代理

QQ2440开发板(S3C2440)+4DVD嵌入式linux视频教程==650 GEC2410开发板(S3C2410)+培训教程+4DVD嵌入式linux视频教程==850 QQ2440开发板(S3C2440)+NEC3.5寸触摸屏+4DVD嵌入式linux视频教程==1050 GEC2410开发板(S3C2410)+三星3.5寸触摸屏+培训教程+ ...…

查看全部问答>

亲子鉴定多少钱亲子鉴定仪如何选择

白求恩遗传医学中心,国内权威的亲子鉴定机构。 亲子鉴定咨询电话:0371-66332918  亲子鉴定网站:www.dna110.com 白求恩遗传医学中心是经省司法厅核准的亲子鉴定机构,诚信,美誉度高,保障当事人权益。高达16-18个位点的基因检测,每份 ...…

查看全部问答>

2553串口通信发送的数据怎么显示在液晶上

//串口通信,通信协议默认 #include #include \"LCD_12864.H\" volatile unsigned char DATE; void init_uart()                                  &n ...…

查看全部问答>

TI RS-485 十大设计技巧

转自deyisupport 在TI经常遇到这样的问题:在使用 RS-485 进行设计时,是否有一些技巧或诀窍需要掌握?为此,我们总结了使用 RS-485 时需要记住的一系列综合而全面的重要准则。如何应用……1) 使用图 A 确定最大线缆长度2) 使用 Zo=120Ω 或 100Ω ...…

查看全部问答>