当前位置: 首页 > 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.lryc.cn/news/536792.html

相关文章:

  • 【Linux】Socket编程—TCP
  • c++11 for auto不定参数
  • C#+redis实现消息队列的发布订阅功能
  • Docker容器基本操作
  • 从无序到有序:上北智信通过深度数据分析改善会议室资源配置
  • 总结:使用JDK原生HttpsURLConnection,封装HttpsUtil工具类,加载自定义证书验证,忽略ssl证书验证
  • 重新定义人机关系边界,Soul以AI社交构建多元社交元宇宙
  • HTTP 参数污染(HPP)详解
  • 阿里云轻量服务器docker部署nginx
  • (萌新入门)如何从起步阶段开始学习STM32 —— 我应该学习HAL库还是寄存器库?
  • Windchill开发-电子仓相关对象信息查询SQL
  • MySQL 数据库定时任务及进阶学习
  • DeepSeek教unity------MessagePack-01
  • 知识拓展:Python序列化模块 marshal 模块详解
  • leetcode 2684. 矩阵中移动的最大次数
  • 机械学习基础-6.更多分类-数据建模与机械智能课程自留
  • 自动化测试实战
  • qt QPlainTextEdit总结
  • AWS SES 邮件服务退信/投诉处理与最佳实践指南
  • 理解WebGPU 中的 GPUAdapter :连接浏览器与 GPU 的桥梁
  • rpx和px混用方案
  • 光伏设计软件分类:无人机、Unity3D引擎齐上阵
  • 太速科技-616-基于6U VPX XCVU9P+XCZU7EV的双FMC信号处理板卡
  • 国产鲲鹏920+欧拉+达梦
  • LeetCode--146. LRU 缓存【Golang中的list】
  • 查看notebook的jupyter token
  • vue+springboot+webtrc+websocket实现双人音视频通话会议
  • 什么是高亮环形光源
  • 2025年3月一区SCI-混沌进化优化算法Chaotic evolution optimization-附Matlab免费代码
  • 51单片机俄罗斯方块开机动画