你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
STMCU小助手 发布时间:2022-5-21 19:00
前言
本文将带大家学习如何驱动舵机转向以及控制转向的角度值。

一、舵机简单介绍及接线方式
信号线(黄线)红线(电源线)棕色(地线)
舵机的控制一般需要一个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

二、cubeMX配置
前面我们说过舵机的控制一般需要一个20ms左右的时基脉冲,所以我们要将舵机的PWM的频率设置为50HZ。
电机的驱动引角接到了PA8所以将cuebMX配置如下:

Q~W@~AL(L]DG(ZLQG`U`N(L.png

三、代码解析
SG90.c

  1. #include "SG90.h"

  2. extern TIM_HandleTypeDef htim1;

  3. /*
  4. 函数功能:舵机初始化
  5. */
  6. void SG90_Iint(void)
  7. {
  8.   HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1);
  9.   __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1,50);
  10. }
  11. SG90.h
  12. /*
  13. 函数功能:舵机角度设置
  14. angle:角度值 范围(0°~180°)
  15. */
  16. void SG90_Set(int angle)
  17. {
  18.   int PWM=10*angle/9+50;
  19.   __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1,PWM);
  20. }
复制代码
  1. #ifndef _SG90_H_
  2. #define _SG90_H_

  3. #include "main.h"

  4. #define u8 unsigned char
  5. #define u16 unsigned short
  6. #define u32 unsigned int

  7. void SG90_Iint(void);
  8. void SG90_Set(int angle);


  9. #endif
复制代码

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


收藏 评论0 发布时间:2022-5-21 19:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版