单片机
返回首页

STM32基础知识:PWM控制舵机

2024-03-21 来源:elecfans

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基础:中断系统中有详细讲解。


编写代码


/* 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 */


进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 家用电源无载自动断电装置的设计与制作

  • 短波AM发射器电路设计图

  • 使用ESP8266从NTP服务器获取时间并在OLED显示器上显示

  • RS-485基础知识:处理空闲总线条件的两种常见方法

  • 如何调制IC555振荡器

  • 基于TDA2003的简单低功耗汽车立体声放大器电路

    相关电子头条文章