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

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

3天内不再提示

STM32基础知识:PWM控制舵机

CHANBAEK 来源:上下求索电子er 作者:上下求索电子er 2023-10-24 15:36 次阅读

PWM控制舵机

1 舵机简介

伺服电机通常被称为舵机,它是一种带有输出轴的小装置。当我们向伺服器发送一个控制信号时,输出轴就可以转到特定的位置。只要控制信号持续不变,伺服机构就会保持轴的角度位置不改变。如果控制信号发生变化,输出轴的位置也会相应发生变化。日常生活中,舵机常被用于遥控飞机、遥控汽车、机器人等领域。

舵机在机器人领域非常有用。因为舵机有内置的控制电路,它们的尺寸虽然很小,但输出力够大。像Futaba S-148这样的标准舵机能提供 0.3牛/米的扭矩,相对于它的外形大小来说这已经足够强大了。同时,舵机消耗的能量与机械负荷成正比。因此,一个轻载的舵机系统不会消耗太多的能量。

2 舵机结构

舵机主要由以下几个部分组成:外壳、舵盘、直流电机、减速齿轮组、角度传感器、控制驱动电路接口线缆等。常见的舵机内部结构如下图所示。

图片

图片

舵机的输入有三根线,一般的中间的红色线为电源正极,咖啡色线的为电源负极,黄色色线为控制线号线。

3 舵机控制

图片

控制线用于传输角度控制信号。这个角度是由控制信号脉冲的持续时间决定的,这叫做脉冲编码调制(PCM)。舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围,总间隔为2ms。脉冲的宽度将决定马达转动的距离。

例如:1.5毫秒的脉冲,电机将转向90度的位置(通常称为中立位置,对于180°舵机来说,就是90°位置)。如果脉冲宽度小于1.5毫秒,那么电机轴向朝向0度方向。如果脉冲宽度大于1.5毫秒,轴向就朝向180度方向。以180度舵机为例,对应的控制关系是这样的:

0.5ms0度
1.0ms45度
1.5ms90度
2.0ms135度
2.5ms180度

4 任务实践

通过按键控制舵机角度,当KEY1按下后, 减少占空比,当KEY2按下后,增加占空比,并在串口输出此时的角度。

  1. PWM参数计算
    PWM信号周期Period=20ms,采用STM32内部8MHz的时钟,计算可得(ARR+1)*(PSC+1)=160000,故可取ARR=199,PSC=799。舵机为0度时,高电平持续时间为0.5ms,即占空比Duty=0.025,则CCR初始值可以设为5.

PWM参数计算在STM32基础:定时器的PWM输出功能中有详细讲解。

  1. 在CubeMX中配置PWM(采用定时器3通道1)、串口以及按键1和按键2对应GPIO为中断模式并使能.
    图片
    图片

在CubeMX中配置串口,在Keil中使用“Use MicroLIB”并在代码中重定向printf函数的方法在STM32基础:定时器的定时计数功能有详细讲解。

在CubeMX中配置GPIO中断并使能的方法已经按键的相关操作在STM32基础:中断系统中有详细讲解。

  1. 编写代码
/* USER CODE BEGIN PD */
#define CCR_MAX 25  // CCR最大值
/* USER CODE END PD */

/* USER CODE BEGIN PV */
uint16_t CCR = 5;   // CCR初始值
uint16_t Step = 5;  // CCR步进值
/* USER CODE END PV */

/* USER CODE BEGIN 4 */
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
  if(GPIO_Pin == KEY1_Pin)
  {
    (CCR >= CCR_MAX) ? (CCR = 5) : (CCR += Step);
    __HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_1, CCR);
    printf("Sigle = %d", (CCR/5 - 1)*45);
    HAL_Delay(200);
  }
  else if (GPIO_Pin == KEY2_Pin)
  {
    (CCR <= 5) ? (CCR = CCR_MAX) : (CCR -= Step);
    __HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_1, CCR);
    printf("Sigle = %d", (CCR/5 - 1)*45);
    HAL_Delay(200);
  }
}

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

    关注

    35

    文章

    1623

    浏览量

    69469
  • PWM
    PWM
    +关注

    关注

    114

    文章

    4900

    浏览量

    209906
  • STM32
    +关注

    关注

    2239

    文章

    10671

    浏览量

    348743
  • 伺服电机
    +关注

    关注

    82

    文章

    1838

    浏览量

    56285
  • 舵机
    +关注

    关注

    17

    文章

    239

    浏览量

    40392
收藏 人收藏

    评论

    相关推荐

    电机控制基础知识1—定时器基础知识PWM输出原理

    转速等。 本篇先介绍 定时器的基础知识 ,然后对照这些知识介绍一下 定时器输出PWM的基本原理 ,以及 编程实现与代码分析 。 首先来看一下定时器的基础介绍。 1 定时器基础知识 1.
    的头像 发表于 06-17 00:11 1.1w次阅读
    电机<b class='flag-5'>控制</b><b class='flag-5'>基础知识</b>1—定时器<b class='flag-5'>基础知识</b>与<b class='flag-5'>PWM</b>输出原理

    STM32PWM控制舵机

    摘自:STM32 PWM控制舵机作者:三速何时sub20发布时间: 2021-02-27 14:54:01网址:https://blog.csdn.net/weixin_4423429
    发表于 06-30 07:02

    STM32控制舵机

    STM32控制舵机文章目录STM32控制舵机前言一、PWMPWM是什么?如何实现
    发表于 08-04 06:26

    STM32是如何控制舵机

    PWM是什么?如何实现PWM信号输出?什么是舵机STM32是如何控制舵机的?
    发表于 10-19 06:19

    如何利用PWM信号去控制舵机

    【K210+micropython】PWM信号控制舵机文章目录【K210+micropython】PWM信号控制
    发表于 01-14 09:19

    定时器基础知识PWM输出原理是什么

    转速等。本篇先介绍定时器的基础知识,然后对照这些知识介绍一下定时器输出PWM的基本原理,以及编程实现与代码分析。首先来看一下定时器的基础介绍。1 定时器基础知识1.1 定时器种类以
    发表于 01-25 08:16

    STM32 CubeMX学习:5. 其他PWM设备

    :5. 其他PWM设备0 前言1 基础知识1.1 蜂鸣器1.2 舵机控制2 程序学习2.1 蜂鸣器的CubeMX配置2.1.1 有源蜂鸣器2.1.2 无源蜂鸣器2.2
    发表于 11-23 17:51 1次下载
    <b class='flag-5'>STM32</b> CubeMX学习:5. 其他<b class='flag-5'>PWM</b>设备

    STM32—TIM3输出PWM信号驱动MG996R舵机(按键控制

    MG996R舵机,按键控制。相关知识:TIM定时器基本原理,TIM输出PWM信号、MG996R舵机驱动原理二、MG996R
    发表于 11-23 18:21 56次下载
    <b class='flag-5'>STM32</b>—TIM3输出<b class='flag-5'>PWM</b>信号驱动MG996R<b class='flag-5'>舵机</b>(按键<b class='flag-5'>控制</b>)

    电机控制基础——定时器基础知识PWM输出原理

    转速等。本篇先介绍定时器的基础知识,然后对照这些知识介绍一下定时器输出PWM的基本原理,以及编程实现与代码分析。首先来看一下定时器的基础介绍。1 定时器基础知识1.1 定时器种类以
    发表于 11-30 14:21 38次下载
    电机<b class='flag-5'>控制</b>基础——定时器<b class='flag-5'>基础知识</b>与<b class='flag-5'>PWM</b>输出原理

    STM32控制舵机讲解,从入门到放弃。

    STM32控制舵机文章目录STM32控制舵机前言一、PWMPWM是什么?如何实现
    发表于 12-24 19:26 23次下载
    <b class='flag-5'>STM32</b><b class='flag-5'>控制</b><b class='flag-5'>舵机</b>讲解,从入门到放弃。

    STM32控制舵机的方法及实例

    STM32控制SG90舵机 在这篇博客中,我讲解的是SG90的180°型号的舵机。其它型号的舵机也可以参考。首先,
    发表于 12-24 19:30 122次下载
    <b class='flag-5'>STM32</b><b class='flag-5'>控制</b><b class='flag-5'>舵机</b>的方法及实例

    stm32控制舵机——以stm32F103C8T6为例

    stm32F103C8T6为例,从分析舵机的原理出发,到介绍使用stm的TIM功能输出PWM波,掌握理论后进行实战,先控制一个舵机上手,然后
    发表于 12-24 19:35 89次下载
    用<b class='flag-5'>stm32</b><b class='flag-5'>控制</b><b class='flag-5'>舵机</b>——以<b class='flag-5'>stm32</b>F103C8T6为例

    【K210+micropython】PWM信号控制舵机

    【K210+micropython】PWM信号控制舵机文章目录【K210+micropython】PWM信号控制
    发表于 01-14 12:28 12次下载
    【K210+micropython】<b class='flag-5'>PWM</b>信号<b class='flag-5'>控制</b><b class='flag-5'>舵机</b>

    德晟舵机PWM信号控制原理

    现在常用的舵机控制信号主要有 PWM 信号和串口总线信号两种:其中 PWM 信号控制比较简单,但是功能只有一个即
    的头像 发表于 10-16 15:51 746次阅读
    德晟<b class='flag-5'>舵机</b><b class='flag-5'>PWM</b>信号<b class='flag-5'>控制</b>原理

    PWM信号控制舵机原理

    PWM信号控制舵机原理
    发表于 09-21 09:32 4次下载