SG90 180°舵机的使用

SG90 180°舵机的使用

SG90的介绍

舵机是一种位置(角度)伺服的驱动器,适用于需要角度不断变化并可以保持的控制系统,可以根据控制信号来输出指定的角度(常见的有0-90°、0-180°、0-360°)。
其实质是一个伺服马达。又分为模拟舵机和数字舵机。

  1. 模拟舵机:需要不断发送PWM信号,才能旋转到指定位置。(例如想转10°,要不断发送10°PWM信号直到指定位置才能停止)
  2. 数字舵机:只需给一个PWM信号,即可旋转到指定位置。(例如想转10°,发送一次10°PWM信号就可以转到10°)
    接线
    红色----VCC
    棕色----GND
    橙色----信号线(连接到单片机输出PWM的引脚)
    对180°的舵机来说,舵机的控制一般需要一个20ms的时基脉冲,该脉冲的高电平部分一般为0.5ms~2.5ms范围内的角度控制脉冲部分,对应控制180°舵机的0-180°,呈线性变化。
    以180度角度伺服为例,那么对应的控制关系是这样的(t为高电平时间):
    t=0.5ms(占空比2.5%)---------0°;
    t=1.0ms(占空比5%)-----------45°;
    t=1.5ms(占空比7.5%)---------90°;
    t=2.0ms(占空比10%)---------135°;
    t=2.5ms(占空比12.5%)-------180°;

即:高电平时间=0.5ms+(角度/180°)×2ms高电平时间=0.5ms+(角度/180°)×2ms高电平时间=0.5ms+(角度/180°×2ms
注意:舵机有一个基准角度即0°,所有角度的控制都是相对基准角度来说的,如果已经到达指定角度,则舵机不会再旋转。舵机的旋转一般为逆时针旋转。
在这里插入图片描述

180°的视角:
在这里插入图片描述


代码说明

采用通用定时器的PWM输出控制舵机,周期为20ms,通过改变占空比改变角度。以定时器3的通道一为例。

  1. 图形配置
    在这里插入图片描述

  2. 重要语句
    开启PWM中断
    HAL_TIM_PWM_Start_IT(&htim3, TIM_CHANNEL_1);
    改变占空比
    __HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,Pulse);

  3. 代码
    改变角度函数
    因为计数器频率为1M,故理论上角度的精度可达0. 1°,但考虑到舵机的控制精度,建议角度精度为 1°

void Angle_Control(uint16_t angle)
{
	uint16_t pulse;
	pulse=500+(int)(angle*100/9);
	__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,pulse);
}

中断回调函数

void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim)
{
	n++;
}

参考文档:https://blog.youkuaiyun.com/Chrstian/article/details/124564112

### STM32 CubeMX SG90伺服电机 180度控制教程 #### 配置PWM参数 为了使SG90舵机能完成从0°至180°的旋动作,在STM32CubeMX中的PWM配置至关重要。由于舵机需要接收大约每20毫秒一次周期性的方波信号来维持其位置,因此应设定定时器产生的PWM频率为50Hz[^3]。 对于具体的占空比调整,则依据所需达到的角度而变化。当CCR寄存器值设为500时对应的是0°的位置;要实现最大范围即180°偏,则需适当增加CCR数值使得高电平持续时间介于0.5ms到2.5ms之间变动[^4]。 #### 定时器与GPIO设置 在STM32CubeMX界面里选择合适的定时器资源用于生成PWM输出,并指定相应的通道连接至舵机输入端口(如PA8)。接着按照下述方式完成初步配置: - **模式**:选择PWM输出模式。 - **极性**:通常采用主动低有效的方式。 - **频率**:固定为50 Hz以匹配舵机的工作需求。 - **初始占空比**:可以先设定一个中间值作为起点,比如7.5%左右代表约90°方向。 ```c // 初始化TIM实例并启动计数器 __HAL_TIM_SET_COMPARE(&htimX, TIM_CHANNEL_Y, CCR_Value); ``` 上述代码片段展示了如何利用HAL库函数动态改变比较寄存器内的值(CCR),从而实时调节PWM输出宽度进而影响舵机指向的具体角度。 #### 编写控制逻辑 编写应用程序部分负责计算不同目标角度所对应的CCR具体取值,并调用相应API更新这些参数。考虑到线性映射关系,可以通过简单的比例运算得出任意期望角度下的理想CCR值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值