MG90S舵机

1. 简介

舵机即可以通过输入指定占空比的PWM实现输出固定角度偏转的电机,通过调节输入的PWM波的占空比可以实现舵机不同角度的偏转
不同型号的舵机可实现偏转的角度不同,比如此次使用到的MG90S舵机,即可实现0-180°的偏转(如果你用力去拧舵机的齿轮,会发现拧到0°和180°时便不能在拧动了)

2. 原理

舵机实际上是由一个直流电机,一个编码器和若干齿轮组合而成的
舵机的控制原理实际上是一个位置环控制(PID控制内容,详见:直流电机控制),与普通直流电不同的是,舵机可以直接使用STM32的IO口输出PWM波控制,而不需要额外的驱动芯片

3. 程序逻辑

控制舵机实际上只需要使用定时器输出一束PWM就可以了(详见:PWM波输出)

TIM_HandleTypeDef    TIM3_Handler;       //定时器句柄
TIM_OC_InitTypeDef  TIM3_CH2Handler;    //定时器3通道2句柄/*
*********************************************************************************************************
*   函 数 名: TIM3_PWM_Init
*   功能说明: 初始化TIM3CH2为PWM输出  定时器溢出时间计算方法:Tout=((arr+1)*(psc+1))/Ft us.Ft=定时器工作频率,单位:Mhz
*   形    参: 1.arr:自动重装载值 2.psc:时钟预分频数
*   返 回 值: 无
*********************************************************************************************************
*/
void TIM3_PWM_Init(u16 arr,u16 psc)
{  TIM3_Handler.Instance=TIM3;                         //定时器3TIM3_Handler.Init.Prescaler=psc;                     //定时器分频TIM3_Handler.Init.CounterMode=TIM_COUNTERMODE_UP;   //向上计数模式TIM3_Handler.Init.Period=arr;                      //自动重装载值TIM3_Handler.Init.ClockDivision=TIM_CLOCKDIVISION_DIV1;HAL_TIM_PWM_Init(&TIM3_Handler);                    //初始化PWMTIM3_CH2Handler.OCMode=TIM_OCMODE_PWM1; //模式选择PWM1TIM3_CH2Handler.Pulse=arr/2;            //设置比较值,此值用来确定占空比,默认比较值为自动重装载值的一半,即占空比为50%TIM3_CH2Handler.OCPolarity=TIM_OCPOLARITY_LOW; //输出比较极性为低 HAL_TIM_PWM_ConfigChannel(&TIM3_Handler,&TIM3_CH2Handler,TIM_CHANNEL_2);//配置TIM3通道2HAL_TIM_PWM_Start(&TIM3_Handler,TIM_CHANNEL_2);//开启PWM通道2
}//定时器底层驱动,时钟使能,引脚配置
//此函数会被HAL_TIM_PWM_Init()调用
//htim:定时器句柄
void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim)
{GPIO_InitTypeDef GPIO_Initure;if(htim->Instance==TIM3){__HAL_RCC_TIM3_CLK_ENABLE();           //使能定时器3__HAL_RCC_GPIOA_CLK_ENABLE();           //开启GPIOA时钟GPIO_Initure.Pin=GPIO_PIN_7;            //PA7GPIO_Initure.Mode=GPIO_MODE_AF_PP;    //复用推挽输出GPIO_Initure.Pull=GPIO_PULLUP;          //上拉GPIO_Initure.Speed=GPIO_SPEED_FREQ_HIGH;//高速HAL_GPIO_Init(GPIOA,&GPIO_Initure);   }
}
/*
*********************************************************************************************************
*   函 数 名: TIM_SetTIM3Compare2
*   功能说明: 设置TIM3CH2输出的PWM的占空比
*             附:舵机各个角度PWM: 0-195    45-190    90-185    135-180    180-175
*   形    参: compare:占空比
*   返 回 值: 无
*********************************************************************************************************
*/
void TIM_SetTIM3Compare2(u32 compare)
{TIM3->CCR2=compare;
}

MG90S舵机-基础角度控制相关推荐

  1. stc8a控制MG90S舵机

    1.实验目的: 利用硬件PWM进行控制舵机: 硬件PWM使用P6端口: 2.实验设备: 单片机开发板stc8a8k最小核心板: 7pin的OLED MG90S舵机: 3.原理: 舵机的控制原理, 舵机 ...

  2. ESP8266-12F NodeMCU、MG90S舵机、Arduino IDE——制作家庭自用远程开关(手机遥控-仅关灯)

    制作家庭自用远程开关 一.效果演示 二.接线 三.代码 四.一些记录 1.ESP8266-12F NodeMCU 2.MG90S舵机 3.开发板供电 4.舵机单独供电 5.Arduino IDE 6. ...

  3. STM32CubeMX(09)MG90S舵机驱动实验

    文章目录 前言 一.舵机是什么? 二.STM32CubeMX配置 2.1时钟树配置 2.2定时器配置 2.3生成代码 三.代码编写 四.测试结果 注意: 总结 前言 今天我们来学习使用一下舵机,并用S ...

  4. 51单片机控制SG90舵机、MG90S舵机

    舵机的控制信号为周期是20ms 的脉宽调制(PWM)信号,其中脉冲宽度从0.5ms-2.5ms,相对应舵盘的位置为0-180度,呈线性变化.也就是说,给它提供一定的脉宽,它的输出轴就会保持在一个相对应 ...

  5. STM32F407学习笔记——MG90S舵机模块(基本控制)

    STM32F407学习笔记--MG90S舵机模块(基本控制) 一.基本原理: 通过改变PWM占空比来实现舵机进行不同角度转动,下面给出旋转角度与脉冲时间及对应占空比的关系(时基脉冲=20ms). 旋转 ...

  6. 物联网开发笔记(54)- 使用Micropython开发ESP32开发板之控制MG90S舵机

    一.目的 这一节我们学习如何使用我们的ESP32开发板来控制舵机.前面我和大家使用Wokwi在线仿真讲过.这里我们再来学习一下,大家可以通过文章末尾的链接去购买适合的舵机来学习.这里我为了讲解方便依然 ...

  7. MG90S 舵机180°角度驱动

    MG90S简介 舵机: 是一种角度伺服电机,一般是由齿轮组.电位器.舵机控制电路.直流电机构成.由发送控制信号来控制输出轴的位置. 数字舵机与模拟舵机的区别: MG90S是一款常用的数字舵机,还有一款 ...

  8. UnoR3+MG90S舵机+红外遥控制作自动控制灯【Arduino】

    使用MG90S模拟舵机自动按下卧室灯开关 需要的库: IRremote //红外遥控 Servo //驱动舵机 先上源码 #include <IRremote.h>#include < ...

  9. 小车.MG90s舵机理论学习-寄存器+库函数版本

    舵机MG90s 具体的周期计算公式为:周期=(arr+1)*(psc+1)/CLK.其中CLK为计数器的时钟频率,我的是72MHZ,也就是72000000.最后计算结果单位为秒,结果为0.02s,也就 ...

最新文章

  1. CentOS 7 用yum安装 MySQL
  2. 记一次 .NET WPF布草管理系统 挂死分析
  3. 创建一个带参数的formgoup_gin框架如何获取带文件的formData请求?
  4. linux下dns劫持C语言实现,Linux下实现劫持系统调用的总结(上)--代码及实现
  5. as3 转义html,html和xml中的转义字符在Flash as3中的用法浅析
  6. idea ssm打war包_使用idea新建springBoot+Gradle项目(超详细)
  7. jQuery - slice( start, [end] ) Method
  8. UNIX环境高级编程之第6章:系统数据文件和信息
  9. python运算符解释_Python运算符的详细介绍
  10. 2021外卖CPS分销微信小程序源码 外卖侠CPS全套源码
  11. Magisk 最新版本 V24.1 源码编译踩坑集锦
  12. 【AR】DroidCam笔记本调用手机摄像头(smartphone's camera as pc webcam)
  13. CMSIS-DSP lib 矩阵运算示例和源码
  14. ROS配置DS-NAT端口映射
  15. 解决高德地图闪屏黑屏
  16. 银行类app如何保证安全性
  17. 10---OpenCV:图像进阶操作之连通区域分析
  18. Unity发布WebGL不显示中文字体问题
  19. 信创只是开始_《作业帮高管团队亲笔信:D轮只是开始,一切归零,重新出发》...
  20. 读书真的重要吗?(一)

热门文章

  1. [Java]-zip包的使用
  2. 《算法图解》—— 读书总结
  3. linux命令行登录网页,Linux命令行访问网页
  4. 华为3次面试可谓是面面俱到啊,侥幸收到offer
  5. NodeJS —— Buffer 解读
  6. 群晖nas(DS423+)和百度云盘互相自动备份
  7. 12 整数转罗马数字
  8. X射线掠入射聚焦反射镜
  9. 一个指令,WIN11菜单键改回WIN10
  10. 韩山师范学院计算机专插本,2019年韩山师范学院专插本各专业录取情况