当前位置: 首页 > news >正文

【STM32】舵机SG90

1.舵机原理

舵机内部有一个电位器,当转轴随电机旋转,电位器的电压会发生改变,电压会带动转一定的角度,舵机中的控制板就会电位器输出的电压所代表的角度,与输入的PWM所代表的角度进行比较,从而得出一个旋转的方向与角度。
该舵机可以控制0°~180°旋转
在这里插入图片描述
舵机0°~180°旋转对应高电平的时间为500us ~2500us,而一般舵机的频率为50Hz,也就是周期为20ms,对应的占空比就是2.5% ~12.5%,2.5%对应舵机转0°,12.5%对应舵机转180°,7.5%就对应着转90°。

2.简单使用

使用旋转编码器对舵机进行控制,旋转编码器转一圈是20个脉冲,也就是计数40次,为了让旋转编码器与舵机旋转对应上,也就是旋转编码器最大计数20就可以了,对应舵机的半圈
在这里插入图片描述
舵机的PWM输入引脚为PB8,我们需要将PB8设置为PWM输出引脚

在这里插入图片描述
而PB8也是定时器4的通道3
在这里插入图片描述

在这里插入图片描述
代码:

#define MAX_COUNT 20
int main(void)
{



  

  
  HAL_TIM_Encoder_Start(&htim1,TIM_CHANNEL_ALL);//编码器启动
  HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_3);//PWM输出启动
  int count=0;
  int duty=0;//舵机高电平对应的计数次数

  while (1)
  { 
	  count=__HAL_TIM_GET_COUNTER(&htim1);//统计编码器count=20就是转半圈
	  if(count>60000)//反转
	  {count=0;
	  __HAL_TIM_SET_COUNTER(&htim1,0);}
	  else if(count>MAX_COUNT)
	  {count=MAX_COUNT;
	  __HAL_TIM_SET_COUNTER(&htim1,MAX_COUNT);}//限制编码器最多输出10个脉冲,20次计数
	  duty=(10*(count/(float)MAX_COUNT)+2.5)/100.0*2000;
	  __HAL_TIM_SET_COMPARE(&htim4,TIM_CHANNEL_3,duty);
  
  }

}
  duty=(10*(count/(float)MAX_COUNT)+2.5)/100.0*2000;

count/MAX_COUNT在0~1之间
10*(count/MAX_COUNT)在0~10之间
10*(count/MAX_COUNT)+2.5在2.5~12.5之间
(10*(count/(float)MAX_COUNT)+2.5)/100.0在2.5%~12.5%之间
2000为自动重装值,*2000,就是看比较寄存器的值应该放多少,形成占空比
count/MAX_COUNT整形/整形还是整形,为了不舍弃,强转为float

http://www.dtcms.com/a/14202.html

相关文章:

  • 部署 DeepSeek R1各个版本所需硬件配置清单
  • 网络分析工具—WireShark的安装及使用
  • 【自然语言处理】TextRank 算法提取关键词、短语、句(Python源码实现)
  • 【学习笔记】for、forEach会不会被await阻塞
  • 【2024~2025年备受关注的AI大模型】
  • 杂记:STM32 调试信息打印实现方式
  • 关于 IoT DC3 中驱动(Driver)的理解
  • SolidWorks C# How
  • go语言获取机器的进程和进程运行参数 获取当前进程的jmx端口 go调用/jstat获取当前Java进程gc情况
  • 【前端】几种常见的跨域解决方案代理的概念
  • SQLMesh系列教程-2:SQLMesh入门项目实战(上篇)
  • SQL布尔盲注、时间盲注
  • [SQL Server]从数据类型 varchar 转换为 numeric 时出错
  • 排序--四种算法
  • STM32、GD32驱动TM1640原理图、源码分享
  • HCIA项目实践--RIP相关原理知识面试问题总结回答
  • 服务器,交换机和路由器的一些笔记
  • 机器学习(李宏毅)——self-Attention
  • 常见的排序算法:插入排序、选择排序、冒泡排序、快速排序
  • 利用Java爬虫按图搜索1688商品(拍立淘):实战案例指南
  • 集成学习(一):从理论到实战(附代码)
  • sqli-lab靶场学习(六)——Less18-22(User-Agent、Referer、Cookie注入)
  • 网络工程师 (35)以太网通道
  • iptables网络安全服务详细使用
  • ES节点配置的最佳实践
  • 开发指南098-logback-spring.xml说明
  • 六西格玛设计培训如何破解风电设备制造质量与成本困局
  • 错误报告:WebSocket 设备连接断开处理问题
  • qt的QSizePolicy的使用
  • 游戏引擎学习第99天