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

一、基本原理:
通过改变PWM占空比来实现舵机进行不同角度转动,下面给出旋转角度与脉冲时间及对应占空比的关系(时基脉冲=20ms)。

旋转角度 脉冲时间 比较寄存器 占空比
0.5ms 195 2.5%
45° 1ms 190 5%
90° 1.5ms 185 7.5%
135° 2ms 180 10%
180° 2.5ms 175 12.5%

占空比计算公式:脉冲时间/20ms
比较寄存器:200-200*占空比
文章后面给出的代码只需改变比较寄存器即可控制舵机旋转 角度。

二、代码功能:
改变比较寄存器控制舵机旋转角度。

三、接线:
PA0——PWM信号线(黄线)、+5v——+5v(红线)、GND——GND(棕线)

四、代码部分:
SG90.h

#ifndef __SG90_H
#define __SG90_H#include <stm32f4xx.h>
#include <delay.h>
#include "math.h"
void TIM2_PWM_Init(u32 arr,u32 psc);#endif   //__SG90_H

SG90.h

#include "sys.h"
#include "SG90.h"void TIM2_PWM_Init(u32 arr,u32 psc)
{GPIO_InitTypeDef GPIO_InitStructure;TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;TIM_OCInitTypeDef  TIM_OCInitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);       RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);  GPIO_PinAFConfig(GPIOA,GPIO_PinSource0,GPIO_AF_TIM2); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;      GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;        GPIO_Init(GPIOA,&GPIO_InitStructure);              TIM_TimeBaseStructure.TIM_Prescaler=psc;  TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; TIM_TimeBaseStructure.TIM_Period=arr;   TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; TIM_OCInitStructure.TIM_Pulse = 0;TIM_OC1Init(TIM2, &TIM_OCInitStructure);  TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Enable);  TIM_ARRPreloadConfig(TIM2,ENABLE);TIM_Cmd(TIM2, ENABLE);
}  

main.c

#include "sys.h"
#include "HC-SR04.h"
#include "SG90.h"
#include "delay.h"int main()
{delay_init(168);TIM2_PWM_Init(200-1,8400-1);while(1){  delay_ms(1000);  TIM_SetCompare1(TIM2,175); delay_ms(1000);  TIM_SetCompare1(TIM2,180); delay_ms(1000);  TIM_SetCompare1(TIM2,185); delay_ms(1000);  TIM_SetCompare1(TIM2,190); delay_ms(1000);  TIM_SetCompare1(TIM2,195);         }
}

PS:此模块及代码可与陀螺仪模块、超声波模块配合使用。

该文章参考资料:STM32控制舵机的原理及代码

仅供初学者学习使用

STM32F407学习笔记——MG90S舵机模块(基本控制)相关推荐

  1. 好程序员web前端分享Nodejs学习笔记之Stream模块

    好程序员web前端分享Nodejs学习笔记之Stream模块 一,开篇分析 流是一个抽象接口,被 Node 中的很多对象所实现.比如对一个 HTTP 服务器的请求是一个流,stdout 也是一个流.流 ...

  2. node.js学习笔记5——核心模块1

    node.js学习笔记5--核心模块1 Node.js核心模块主要内容包括:(1)全局对象 (2)常用工具 (3)事件机制 (4)文件系统访问 (5)HTTP服务器与客户端 一: 全局对象 Node. ...

  3. “物联网开发实战”学习笔记-(二)手机控制智能电灯

    "物联网开发实战"学习笔记-(二)手机控制智能电灯 如果搭建好硬件平台后,这一次我们的任务主要是调试好智能电灯,并且连接到腾讯云的物联网平台. 腾讯云物联网平台 腾讯物联网平台的优 ...

  4. 【STM32F407学习笔记】GPIO(一)

    [STM32F407学习笔记]GPIO(一) 1. GPIO基础知识 1.1 GPIO工作方式 1.2 GPIO相关配置寄存器 1.2.1 端口模式寄存器:GPIOx_MODER 1.2.2 输出类型 ...

  5. esp8266舵机驱动_arduino开发ESP8266学习笔记四—–舵机

    arduino开发ESP8266学习笔记四-–舵机 使用时发现会有ESP8266掉电的情况,应该是板上的稳压芯片的限流导致的,观测波形,发现当舵机运转时,电源线3.3V不再是稳定的3.3V,大概是在3 ...

  6. python学习笔记4(模块

    python学习笔记4(模块) 一.模块 1.1 import语句 1.2 __name__属性 1.3 dir()函数 1.4 包 2.1 导入特定模块: 二.输入与输出 2.1 format使用 ...

  7. Apollo学习笔记3-定位模块配置

    Apollo学习笔记3-定位模块配置 环境介绍 导航设备参数配置 导航设备配置 (1)杆臂配置 (2)GNSS 航向配置 (3)导航模式配置 (4) USB 接口输出设置 (5)网口配置 (6) PP ...

  8. Python学习笔记__5章 模块

    # 这是学习廖雪峰老师python教程的学习笔记 1.概览 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,在Python中,一个.py文件就称之为 ...

  9. 操作系统学习笔记-2.1.3进程控制

    操作系统学习笔记-2019 王道考研 操作系统-2.1.3进程控制 文章目录 3.进程控制 3.1知识概览 3.2 基本概念 3.2.1什么是进程控制? 3.2.2如何实现进程控制? 3.3进程控制相 ...

最新文章

  1. c嵌入python类获取返回值
  2. python模块手册_python模块说明
  3. 【错误记录】Groovy 工程编译报错 ( java.lang.NoClassDefFoundError: org/apache/tools/ant/util/ReaderInputStream )
  4. java成果_JAVA WEB期末项目第二阶段成果
  5. java default修饰符_2019最新java面试题附答案
  6. 前端学习(3009):vue+element今日头条管理--登录中的loding
  7. 记录 Parameter with that position [1] did not exist; nested exception is java.lang.IllegalArgumentExce
  8. 通杀IIS7.0畸形解析0day漏洞
  9. Delphi 中的字符串函数(6) - StrUtils 中的 Ansi 字符串函数
  10. autocad 二次开发 拆分图纸_(整理)autocad二次开发块表记录获得和cad层级结构,以及图块保存与打开....
  11. 绘制相同到期日欧式期权组合收益图(python)
  12. SQL 排序,筛选,过滤,聚合函数
  13. java大作业私人管家系统_微软蓝天云平台:中小企业的私人管家
  14. 看过无数Java GC文章,这5个问题你也未必知道!
  15. 前端校招字节跳动面试 第三篇
  16. 陀螺研究院|深圳数据要素市场化发展解读与未来展望
  17. Worker节点加入K8S集群报错:error execution phase preflight: couldn‘t validate the identity of the API Server
  18. 一起学英语第二季第六期
  19. 动态网页和静态网页之间的区别?
  20. javascript怎么清空一个div里面的内容

热门文章

  1. Highly SMAC
  2. python最佳ide_2014年最佳PHP IDE-调查结果
  3. linux硬盘的分区、格式化、挂载以及LVM
  4. 时间同步的几种方式和组合
  5. 每日一句英语,看我能够坚持多久
  6. matlab东大教授_辽宁省普通高等学校本科教学管理平台
  7. MySQL——O2. MySQL 中的系统库
  8. 上海临港新片区对于金融业创新发展的扶持政策
  9. 利用Python进行数据分析的学习笔记——chap6
  10. Spring MVC 请求处理过程。你这样回答保证通过面试!