0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32F0单片机 PWM + ADC 控制有刷电机介绍

电子设计 来源:电子设计 作者:电子设计 2020-12-24 13:39 次阅读

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 的周期。

审核编辑:符乾江


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6032

    文章

    44525

    浏览量

    633340
  • 电机
    +关注

    关注

    142

    文章

    8942

    浏览量

    145159
收藏 人收藏

    评论

    相关推荐

    如何使用PWM控制电机

    : 一、准备工作 确定电机类型 : 根据应用场景选择合适的电机类型,如直流电机、步进电机、无直流电机
    的头像 发表于 11-28 16:30 192次阅读

    直流电机如何控制角度

    直流电机(DC Brushed Motor)是一种常见的电机类型,它通过改变电流的方向来控制电机
    的头像 发表于 09-03 10:34 465次阅读

    stm32单片机用什么软件编程

    是STMicroelectronics公司推出的一款基于ARM Cortex-M内核的32位微控制器。它具有高性能、低功耗、丰富的外设接口等特点,广泛应用于工业控制、消费电子、医疗设备等领域。要对STM32
    的头像 发表于 09-02 10:16 1038次阅读

    stm32单片机引脚介绍及功能

    特点,广泛应用于工业控制、消费电子、医疗设备、智能家居等领域。本文将介绍STM32单片机的引脚及其功能。 1. 引脚概述 STM32
    的头像 发表于 09-02 09:38 4025次阅读

    stm32和51单片机的区别是什么

    。 性能差异: STM32更高的主频和更大的内存空间,可以处理更复杂的任务和算法。 51单片机的主频和内存空间相对较小,适用于简单的控制和数据处理任务。 外设差异:
    的头像 发表于 09-02 09:33 652次阅读

    基于STM32单片机的智能窗帘控制系统设计

    系统以STM32单片机进行主控,系统内使用血氧传感器进行血氧检测,通过电机控制采集血。按键控制采血和检测。
    的头像 发表于 06-28 14:24 2324次阅读
    基于<b class='flag-5'>STM32</b><b class='flag-5'>单片机</b>的智能窗帘<b class='flag-5'>控制</b>系统设计

    基于STM32单片机的智能雨器设计

    智能雨器系统使用STM32单片机进行主控,通过显示屏显示雨量,系统自动和手动两种模式,根据设定的阈值可以在自动模式下进行雨
    的头像 发表于 06-27 10:26 1880次阅读
    基于<b class='flag-5'>STM32</b><b class='flag-5'>单片机</b>的智能雨<b class='flag-5'>刷</b>器设计

    基于STM32单片机的智能冰箱控制系统设计

    基于单片机设计的一款智能冰箱控制系统,可以控制冰箱的制冷装置,可以采集冰箱的异味浓度,超过闽值之后控制紫外灯进行消毒工作单片机采用
    的头像 发表于 06-25 09:21 1068次阅读
    基于<b class='flag-5'>STM32</b><b class='flag-5'>单片机</b>的智能冰箱<b class='flag-5'>控制</b>系统设计

    STM32F0系列单片机,指针取整型值错误的原因?

    STM32F0系列单片机,指针取整型值错误,用F0的进来看下,代码如下,附件里也有个工程可以下来单步运行下,这是什么问题如何解决. uint8_t a
    发表于 05-15 07:46

    stm32f0系列的芯片怎么样?

    大家用没有 stm32f0系列的芯片呢,用的怎么样?
    发表于 05-10 06:59

    使用STM32F0控制BLDC电机,需要在停机时对电机进行自锁,怎么实现?

    如题,使用STM32F0控制BLDC电机,需要在停机时对电机进行自锁,不外加机械部件。施加其中一相一定电压时要保持电机卡住不动的状态,但手动
    发表于 04-16 08:12

    STM32F0的SPL库能在STM32G0上用吗?

    原来用的STM32F0系列,使用的V3.5.0的标准外设库。现在改用STM32G0系列,发现官网提供的固件库是STM32CubeG0,里面是HAL和LL库。为了节省开发时间,想还是用SPL库,
    发表于 04-08 08:29

    Holtek新推出Arm® Cortex®-M0+直流无刷电机控制专用全整合单片机

    Holtek推出新一代Arm® Cortex®-M0+直流无刷电机控制专用全整合单片机HT32F65C32F与HT32
    的头像 发表于 04-02 17:19 843次阅读

    基于51单片机电机控制设计

    电子发烧友网站提供《基于51单片机电机控制设计.rar》资料免费下载
    发表于 01-12 09:31 12次下载

    基于51单片机电机控制设计

    电子发烧友网站提供《基于51单片机电机控制设计.rar》资料免费下载
    发表于 01-03 11:19 4次下载