STM32F103单片机控制SG90舵机

article/2025/8/18 23:56:38

前言

在智能衣柜系统中,试用SG90旋转0°-180°,模拟衣柜的开关门,舵机正转开门,180°-0°反转模拟一个关门的现象。

一,SG90舵机

1.1SG90链接:

【淘宝】https://m.tb.cn/h.UjfPasG?tk=10CNdeeB4Il CZ0001 「SG90 9g舵机MG996R mg90s MG995模块马达遥控飞机航模9克360度180」
点击链接直接打开 或者 淘宝搜索直接打开

1.2SG90舵机

图:1.1.1SG90舵机图片

 舵机是一种角度伺服的驱动器,使用于不断变换角度的控制系统,舵机可以接收单片机PWM信号,PWM周期为20ms,通过调整电平pwm不同的占空比,实现舵机不同角度的驱动,如下图所示

二,舵机----STM32CUBEMAX部分

2.1 时钟树配置

第一步:时钟树配置频率为72Mhz,挂载在APB1和APB2上的定时器频率也设置为72Mhz。

 第二步:RCC时钟配置如下。

 第三步:开启定时器3,时钟来源为内部时钟,使用PWM通道1驱动舵机        

 第四步:定时器基础配置如下所示,预分频计数值为720-1,重装载计数值为2000,pwm配置1000-1

 数值参考以下公式:

计算过程,可以根据自己不同的定时器频率计算。 

 第六步:定时器配置好之后,可以靠芯片引脚为PA6。

 

三 ,软件部分---Keilv5代码部分

第一步:在main函数中调用HAL库函数,实现pwm初始化

 代码如下:

 HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1);

第二步:在main函数中测试舵机不同占空比的选择角度

 代码段:

  printf("45\r\n");__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,50);HAL_Delay(1000);printf("90\r\n");__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,100);HAL_Delay(1000);printf("135\r\n");__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,150);HAL_Delay(1000);printf("180\r\n");__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,200);HAL_Delay(1000);printf("0\r\n");__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,250);HAL_Delay(1000);

四:测试

SG舵机接线说明:橙色线接信号线(PA6),红色线:接芯片3.3V/5V电源,棕色接GND注意电源线不要接反了。三根线是合并在一起的,测试时候不太方便,建议买一点公母杜邦线,把舵机的接口引出来好接线测试

sscom串口输出测试:

实际控制测试

9d6204de08c013f3dd4a569b19bd03bf

五:总结

sg90舵机工作驱动频率为50mhz,定时器产生的20时钟周期,通过pwm调制高低电平实现不同的占空比,使其旋转不同角度。文章可能还是有点问题,希望大家多多交流指正。

说一下可能后面的步进电机部分不会很快发出来了,先把蓝牙模块和显示屏模块给更出来。公司项目有点忙,有点分身乏术。

对STM32单片机感兴趣的同学可以在b站搜索 up洋桃电子 ,观看stm32物联网入门30步,这个up说的比较通俗易哦。


http://chatgpt.dhexx.cn/article/DI09aUeh.shtml

相关文章

Arduino与SG90舵机握手

Arduino教程传送门🧭🏔🌋🛤🏞🏜 Arduino与SG90舵机握手 1.0 简介2.0 实验材料3.0 实验步骤3.1 根据原理图搭建电路3.2 新建sketch,拷贝如下代码并进行保存编译上传3.3 实验现象 4.0 总结 1.0 简…

C51单片机定时器2实现SG90舵机控制

谈起舵机最初的了解应用于航模,偶然的机会在网上看到有牛人使用多个舵机做人形机器人的关节,感觉这小东西很有趣,蒙发了买来学习学习的想法,这已经是多年前的事了,后来由于某些原因,这个想法直到今年才落地…

智能垃圾桶(七)——SG90舵机的介绍与使用(树莓派pico实现)

文章目录 一、SG90舵机的引脚介绍二、与pico引脚的对接三、舵机的使用原理四、Thonny程序五、效果展示一、SG90舵机的引脚介绍 舵机上会引出三根线:分别是GND(棕色线)、VCC(红色线)和SIG(黄色线),就是地线、电源线(5V)和信号线。千万不能接错! 二、与pico引脚的对接…

FPGA实现360°SG90舵机

SG90 SG90舵机需要注意区分90、180和360,今天要用的舵机是360的。 舵机是通过输入信号来控制转动的,360舵机不同于180舵机,它只有顺时针旋转、逆时针选择和停止,无法通过特定的信号来达到转动的角度。所以需要通过时间和转动速度…

PWM开发SG90

文章目录 2. PWM开发SG90 2.1 简介 2.3 控制舵机 2.4 遇见潇潇遇见你,不负代码不负卿 前言 2. PWM开发SG90 2.1 简介 PWM ,英文名 Pulse Width Modulation ,是脉冲宽度调制缩写,它是通过对一系列脉冲的宽度进 行调制&#xff0…

学习笔记12-SG90舵机

目录 一、简介接线 二、原理3、代码段3.1、sg90.c3.2、main.c 一、简介 舵机是一种位置(角度)伺服的驱动器,适用于需要角度不断变化并可以保持的控制系统,可以根据控制信号来输出指定的角度(常见的有0-90、0-180、0-3…

PWM驱动sg90电机

关于PWM驱动sg90电机,不管是180还是360舵机都满足左侧的条件关系。 PWM周期为20ms,频率为50Hz 重装载值arr 1999 预分频值psc 7199 stm32f103主频72MHz TIM3_Int_Init(1999,7199);//Tout (arr1)(psc1)/TCLK;72000000/2000/720050PWM周期 (主频 / […

51单片机控制sg90舵机

2.1 简介 PWM,英文名Pulse Width Modulation,是脉冲宽度调制缩写,它是通过对一系列脉冲的宽度进 行调制,等效出所需要的波形(包含形状以及幅值),对模拟信号电平进行数字编码,也就是说…

SG90舵机使用介绍

舵机控制 型号:SG90 接线 黄线:信号线 红线:电源线 棕线:地线 PWM周期 需要通过信号线往舵机输入PWM波,才能驱动舵机转动 PWM波的频率不能太高,大约50HZ,即周期1/频率1/500.02s&#xff…

51单片机sg90舵机

51单片机按键控制舵机旋转 一、舵机工作原理 1、这里介绍的sg90的可旋转角度为 0~180 2、sg90有三条线,橙色(PWM)红色(5V)棕色(GND) 3、PMW的范围为0.5ms2.5ms,相应的旋转角度为…

PWM开发SG90舵机

1. 简介 PWM,全称:Pulse Width Modulation,脉冲宽度调制缩写,它是通过宽度对一系列脉冲的宽度进行调制,等效出所需要的波形(包含形状以及幅值),对模拟信号电平进行数字编码,也就是说通过调节占空…

控制SG90舵机

1. 什么是舵机 如下图所示,最便宜的舵机sg90,常用三根或者四根接线,黄色为PWM信号控制 用处:垃圾桶项目开盖用、智能小车的全比例转向、摄像头云台、机械臂等 常见的有0-90、0-180、0-360 VCC:接电压端 GND:接地端 PWM信号&#…

STM32控制SG90舵机

简介 通过使用STM32控制SG90舵机进行转动 PWM输出:PC6 定时器:TM3,通道1 接线如下: 控制原理及PWM配置 舵机的控制一般需要一个20ms的时基脉冲,该脉冲的高电平部分一般为0.5ms~2.5ms范围内的角度控制脉冲部分 PWM周…

【mcuclub】舵机-SG90

一、实物图(SG90) 二、原理图 编号名称功能1GND电源地(棕色线)2VCC电源正(红色线)3I/O信号线(黄色线) 三、简介 舵机(英文叫Servo),是伺服电机的…

STM32外设系列—sg90(舵机)

文章目录 一、sg90简介二、引脚连接三、控制方法四、程序设计4.1 配置定时器4.2 编写控制程序 五、360舵机 一、sg90简介 首先介绍说一下什么是舵机。舵机是一种位置(角度)伺服的驱动器。适用于一些需要角度不断变化的,可以保持的控制系统。…

java基本类型与包装类型

基本数据类型:byte,int, short, long, boolean,char, float,double等 包装类型 : Byte,Integer,Short,Long&#xff…

java基本类型与包装类型区别

java基本类型与包装类型区别 Java中基本类型都有固定的存储空间,不像其他大多数语言那样随机器硬件架构的变化而变化,这种占存储空间大小的不变性是java程序比其他大多数语言编写的程序更具可移植性的原因之一。 java中基本类型和包装类的区别&#xff1…

【包装类型】

文章目录 包装类八种基本类型及其包装类手动装箱/拆箱自动装箱/拆箱整数型常量池 Integer方法 包装类 我们已经知道,Java的数据类型分两种: 基本类型:byte,short,int,long,boolean,…

Java为什么要有基本数据类型和包装类型

作为面向对象语言为代表的Java, 在很多任务场景中经常看到它的身影。那么,Java为什么要有基本数据类型和包装类型? 这个问题看似简单,其实也不好回答。毕竟这个问题不仅你我感觉到困惑,许多大佬也感觉到困惑,一些人希望…

基本类型和包装类型的区别详解

六年前,我从苏州回到洛阳,抱着一幅“海归”的心态,投了不少简历,也“约谈”了不少面试官,但仅有两三个令我感到满意。其中有一位叫老马,至今还活在我的手机通讯录里。他当时扔了一个面试题把我砸懵了&#…