STM32智能小车控制舵机转向
【摘要】 @TOC 前言本文将带大家学习如何驱动舵机转向以及控制转向的角度值。 一、舵机简单介绍及接线方式信号线(黄线)红线(电源线)棕色(地线)舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分,总间隔为2ms。以180度角度伺服为例,那么对应的控制关系是这样的:0.5ms--------------0度;1.0ms---------...
@TOC
前言
本文将带大家学习如何驱动舵机转向以及控制转向的角度值。
一、舵机简单介绍及接线方式
信号线(黄线)红线(电源线)棕色(地线)
舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分,总间隔为2ms。以180度角度伺服为例,那么对应的控制关系是这样的:
0.5ms--------------0度;
1.0ms------------45度;
1.5ms------------90度;
2.0ms-----------135度;
2.5ms-----------180度;
二、cubeMX配置
前面我们说过舵机的控制一般需要一个20ms左右的时基脉冲,所以我们要将舵机的PWM的频率设置为50HZ。
电机的驱动引角接到了PA8所以将cuebMX配置如下:
三、代码解析
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
总结
本文简单介绍了舵机的使用方法,希望大家下去好好理解消化。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)