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

STM32F103C8T6实现 SG90 180 °舵机任意角度转动

简介

记录一下, SG90在允许的角度范围实现自由角度转动(按照1°递进)

资料

参考资料

说明

1. 接线

在这里插入图片描述

红色 VCC(4.8~5V), 棕色 GND, 橙色 PWM/脉冲引脚

2. 脉冲/PWM示意

在这里插入图片描述

3. 根据脉冲示意列图如下

角度脉宽
1ms
90°1.5ms
180°2.5ms

4. 任意角度公式

简单的在Excel中列入 角度和脉宽,计算角度跟脉宽的线性关系, 如下图
在这里插入图片描述
并且再拟合校验, 所以公式为 脉宽(ms) = 0.011111111 * 角度 + 0.5

再验证, 9 * n °的精度最高, 如下
在这里插入图片描述

实现

1. 定时器配置

设置为50Hz, 至于预分频和重载配置, 是确保在重载计数65536的计数范围内尽可能的大 及 无小数点
72000000/36 = 2000000 = 0.5us, 1个ccr为0.5us, 2000 个 ccr为 1ms, 对于线性计算小数点多的角度可以提高精度
在这里插入图片描述
根据定时器配置, 修改任意角度 计算公式 设置占空比参数 ccr = (0.5 + 0.0111 * angle)*2000.0;

代码

实现 缓慢转动一周之后归到圆点再进行转动

void sg90_trunAngle(int angle)
{int ccrMs = 2000;int maxCCR = 2.5 * ccrMs;double ccr = (0.5 + 0.0111 * angle)*ccrMs;if (ccr >= maxCCR)ccr = maxCCR;__HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, ccr);
}void serveMove2(void)
{static int angle = 0;angle++;if (angle > 180)angle = 0;sg90_trunAngle(angle);HAL_Delay(100);
}

http://www.mrgr.cn/news/97285.html

相关文章:

  • 【蓝桥杯】算法笔记3
  • JJJ:generic netlink例程分析
  • Flask+Vue构建图书管理系统及Echarts组件的使用
  • 第3课:状态管理与事件处理
  • 高级:分布式系统面试题精讲
  • 一、简单的 Django 服务
  • (一)从零开始:用 LangChain 和 ZhipuAI 搭建简单对话
  • 基于YOLO11实例分割与奥比中光相机的快递包裹抓取点检测
  • Python3 学习笔记
  • MySQL 基础入门
  • 神经网络能不能完全拟合y=x² ???
  • ubuntu部署ollama+deepseek+open-webui
  • (五)智能体与工具协同——打造智能对话的超级助手
  • (四)数据检索与增强生成——让对话系统更智能、更高效
  • (三)链式工作流构建——打造智能对话的强大引擎
  • Nginx介绍及使用
  • Java 类型转换和泛型原理(JVM 层面)
  • 19.go日志包log
  • MessageQueue --- RabbitMQ WorkQueue and Prefetch
  • (二)RestAPI 毛子(Tags——子实体/异常处理/验证/Search/Sort功能)