STM32应用(一)控制舵机SG90/MG996R/数字舵机

2023-10-28 04:30

本文主要是介绍STM32应用(一)控制舵机SG90/MG996R/数字舵机,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1.舵机SG90
    • 1.1 舵机参数
    • 1.2 实物图和接线
    • 1.3 工程配置和代码编写
    • 1.4 代码分享
  • 2.舵机MG996R(180°、360°)
    • 2.1 舵机参数
    • 2.2 实物图
    • 2.3 补充:360°舵机
  • 3.数字舵机
    • 3.1 舵机参数
    • 3.2 实物图

舵机的控制实际上就是对占空比的设定。

1.舵机SG90

1.1 舵机参数

产品类型:SG90舵机
产品扭矩:2.0kg/cm(4.8V),2.2kg/cm(6V)
产品速度:0.09秒/60°(4.8V),0.08秒/60°(6V)
转动角度:180°
工作电压:4.8 ~ 6V
齿轮形式:塑料齿轮
死区设定:7us (微秒)
产品重量:10.5g
产品尺寸:22.8mm × 12.2mm × 28.5mm

1.2 实物图和接线

在这里插入图片描述

舵机上有三根线,分别是GND(棕色线)、VCC(红色线)和SIG(黄色线),也就是地线、电源线和信号线。

SG90舵机STM32
VCC5V
GNDGND
SIGPWM产生通道

舵机的控制,需要一个20ms的时基脉冲,控制高电平时间为0.5ms~2.5ms范围内即可控制舵机在0 ~ 180°转动。

t=0.5ms---------------舵机转动到0°
t=1.0ms---------------舵机转动到45°
t=1.5ms---------------舵机转动到90°
t=2.0ms---------------舵机转动到135°
t=2.5ms---------------舵机转动到180°

1.3 工程配置和代码编写

时钟树的配置基本配置。

开启定时器3的通道1,APB1上的时钟频率为84Mhz。

在这里插入图片描述
84M/84=1Mhz,即在1s内计数一百万次,我们需要设定20ms,则重装载值应为20000。
在这里插入图片描述
检查GPIO。
在这里插入图片描述

while中代码:

		__HAL_TIM_SetCompare(&htim3,TIM_CHANNEL_1,500);//0°HAL_Delay(1000);__HAL_TIM_SetCompare(&htim3,TIM_CHANNEL_1,1000);//45°HAL_Delay(1000);__HAL_TIM_SetCompare(&htim3,TIM_CHANNEL_1,1500);//90°HAL_Delay(1000);__HAL_TIM_SetCompare(&htim3,TIM_CHANNEL_1,2000);//135°HAL_Delay(1000);__HAL_TIM_SetCompare(&htim3,TIM_CHANNEL_1,2500);//180°HAL_Delay(1000);

1.4 代码分享

SG90代码 提取码:zpvt

2.舵机MG996R(180°、360°)

2.1 舵机参数

产品类型:MG996R舵机
产品扭矩:9kg/cm(4.8V),11kg/cm(6V)
产品速度:0.19秒/60°(4.8V),0.18秒/60°(6V)
转动角度:180°
工作电压:4.8 ~ 6V
齿轮形式:金属齿轮
死区设定:5us (微秒)
产品重量:55g
产品尺寸:40.7mm × 19.7mm × 42.9mm

2.2 实物图

在这里插入图片描述

2.3 补充:360°舵机

而对360度舵机:实际相当于无极变速的减速电机,可以控制速度和方向。没有0-360度角度控制的功能。控制方式和一般舵机的控制信号相同。是瓦力改装的合适动力源。
高电平为0.5毫秒~1.5毫秒时,舵机正转(0.5毫秒时正转速度最快,越接近1 .5毫秒越慢, 1.5毫秒时舵机停转),高电平为1.5毫秒~ 2.5毫秒时舵机反转(1.5毫秒时舵机停转,越接近2.5毫秒反转的速度越快,2.5毫秒时以最快的速度反转)

		for(uint32_t cnt = 500;cnt<=1500;cnt++)//顺时针,速度由大变小{__HAL_TIM_SetCompare(&htim3,TIM_CHANNEL_1,cnt);//180°HAL_Delay(10);}for(uint32_t cnt = 1500;cnt<=2500;cnt++)//逆时针,速度由小变大{__HAL_TIM_SetCompare(&htim3,TIM_CHANNEL_1,cnt);//180°HAL_Delay(10);}

可以接数码管,方便观看。8位数码管显示模块
在这里插入图片描述

3.数字舵机

3.1 舵机参数

工作电压:4.8-8.4V
减速比:310:1
舵片规格:25T/ψ5.80
齿轮比:275
脉宽范围:500→2500 μs
工作频率:50-330Hz
中立位置:1500μs
接线 :红色=正极 / 黑色&褐色=负极 / 黄色&白色=信号线。

3.2 实物图

在这里插入图片描述

主要看工作电压和脉宽范围。
这些舵机原理和代码与上述一致。博客也有很多。欢迎批评指正。

这篇关于STM32应用(一)控制舵机SG90/MG996R/数字舵机的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/290695

相关文章

在React聊天应用中实现图片上传功能

《在React聊天应用中实现图片上传功能》在现代聊天应用中,除了文字和表情,图片分享也是一个重要的功能,本文将详细介绍如何在基于React的聊天应用中实现图片上传和预览功能,感兴趣的小伙伴跟着小编一起... 目录技术栈实现步骤1. 消息组件改造2. 图片预览组件3. 聊天输入组件改造功能特点使用说明注意事项

Redis中RedisSearch使用及应用场景

《Redis中RedisSearch使用及应用场景》RedisSearch是一个强大的全文搜索和索引模块,可以为Redis添加高效的搜索功能,下面就来介绍一下RedisSearch使用及应用场景,感兴... 目录1. RedisSearch的基本概念2. RedisSearch的核心功能(1) 创建索引(2

Python datetime 模块概述及应用场景

《Pythondatetime模块概述及应用场景》Python的datetime模块是标准库中用于处理日期和时间的核心模块,本文给大家介绍Pythondatetime模块概述及应用场景,感兴趣的朋... 目录一、python datetime 模块概述二、datetime 模块核心类解析三、日期时间格式化与

SpringBoot中四种AOP实战应用场景及代码实现

《SpringBoot中四种AOP实战应用场景及代码实现》面向切面编程(AOP)是Spring框架的核心功能之一,它通过预编译和运行期动态代理实现程序功能的统一维护,在SpringBoot应用中,AO... 目录引言场景一:日志记录与性能监控业务需求实现方案使用示例扩展:MDC实现请求跟踪场景二:权限控制与

C语言中位操作的实际应用举例

《C语言中位操作的实际应用举例》:本文主要介绍C语言中位操作的实际应用,总结了位操作的使用场景,并指出了需要注意的问题,如可读性、平台依赖性和溢出风险,文中通过代码介绍的非常详细,需要的朋友可以参... 目录1. 嵌入式系统与硬件寄存器操作2. 网络协议解析3. 图像处理与颜色编码4. 高效处理布尔标志集合

SpringBoot请求参数接收控制指南分享

《SpringBoot请求参数接收控制指南分享》:本文主要介绍SpringBoot请求参数接收控制指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring Boot 请求参数接收控制指南1. 概述2. 有注解时参数接收方式对比3. 无注解时接收参数默认位置

Java中的Lambda表达式及其应用小结

《Java中的Lambda表达式及其应用小结》Java中的Lambda表达式是一项极具创新性的特性,它使得Java代码更加简洁和高效,尤其是在集合操作和并行处理方面,:本文主要介绍Java中的La... 目录前言1. 什么是Lambda表达式?2. Lambda表达式的基本语法例子1:最简单的Lambda表

Spring Security+JWT如何实现前后端分离权限控制

《SpringSecurity+JWT如何实现前后端分离权限控制》本篇将手把手教你用SpringSecurity+JWT搭建一套完整的登录认证与权限控制体系,具有很好的参考价值,希望对大家... 目录Spring Security+JWT实现前后端分离权限控制实战一、为什么要用 JWT?二、JWT 基本结构

Android实现两台手机屏幕共享和远程控制功能

《Android实现两台手机屏幕共享和远程控制功能》在远程协助、在线教学、技术支持等多种场景下,实时获得另一部移动设备的屏幕画面,并对其进行操作,具有极高的应用价值,本项目旨在实现两台Android手... 目录一、项目概述二、相关知识2.1 MediaProjection API2.2 Socket 网络

Python实现特殊字符判断并去掉非字母和数字的特殊字符

《Python实现特殊字符判断并去掉非字母和数字的特殊字符》在Python中,可以通过多种方法来判断字符串中是否包含非字母、数字的特殊字符,并将这些特殊字符去掉,本文为大家整理了一些常用的,希望对大家... 目录1. 使用正则表达式判断字符串中是否包含特殊字符去掉字符串中的特殊字符2. 使用 str.isa