【经验分享】STM32智能小车控制舵机转向

[an error occurred while processing the directive]

前言

本文将带大家学习如何驱动舵机转向以及控制转向的角度值。

一、舵机简单介绍及接线方式

信号线(黄线)红线(电源线)棕色(地线)

舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分,总间隔为2ms。以180度角度伺服为例,那么对应的控制关系是这样的:

0.5ms--------------0度;

1.0ms------------45度;

1.5ms------------90度;

2.0ms-----------135度;

2.5ms-----------180度;

HR5~%RCO84IXG94_$DZLTMP.png (125.72 KB, 下载次数: 13)

下载附件

保存到相册

2022-5-20 19:36 上传

二、cubeMX配置

前面我们说过舵机的控制一般需要一个20ms左右的时基脉冲,所以我们要将舵机的PWM的频率设置为50HZ。

电机的驱动引角接到了PA8所以将cuebMX配置如下:

Q~W@~AL(L]DG(ZLQG`U`N(L.png (147.01 KB, 下载次数: 23)

下载附件

保存到相册

2022-5-20 19:36 上传

三、代码解析

SG90.c

#include "SG90.h"

extern TIM_HandleTypeDef htim1;

/*

函数功能:舵机初始化

*/

void SG90_Iint(void)

{

HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1);

__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1,50);

}

SG90.h

/*

函数功能:舵机角度设置

angle:角度值 范围(0°~180°)

*/

void SG90_Set(int angle)

{

int PWM=10*angle/9+50;

__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1,PWM);

}复制代码#ifndef _SG90_H_

#define _SG90_H_

#include "main.h"

#define u8 unsigned char

#define u16 unsigned short

#define u32 unsigned int

void SG90_Iint(void);

void SG90_Set(int angle);

#endif复制代码

总结

本文简单介绍了舵机的使用方法,希望大家下去好好理解消化。

[an error occurred while processing the directive]
Copyright © 2088 1990年世界杯_世界杯球赛 - xqgjmy.com All Rights Reserved.
友情链接