1.SG90舵机官方数据

尺寸:21.5mmX11.8mmX22.7mm
重量:9克   (1kg=1公斤=2斤)
无负载速度:0.12秒/60度(4.8V) 0.002s/度
堵转扭矩:1.2-1.4公斤/厘米(4.8V)
使用温度:-30~~+60摄氏度
死区设定:7us   (7MHZ)
工作电压:4.8V-6V
位置等级:1024级
脉冲控制精度为2us

2.操作技巧

1.采用PWM控制的方式来进行舵机的操纵

2.舵机的控制需要MCU产生一个20ms的脉冲信号,以0.5ms到2.5ms的高电平来控制舵机的角度

3.数据:

0.5ms-------------0度;   2.5% 
1.0ms------------45度;   5.0% 
1.5ms------------90度;        7.5%
2.0ms-----------135度;  10.0%
2.5ms-----------180度;  12.5%

4.关键函数:

TIM_SetCompare1(TIM1,cout);

TIM1:TIM1->arr(预装载值),cout值为自设 通过改变cout的值从而进行cout和预装载值的比较 从而控制高电平时间

0.5ms-2.5ms这段高电平时间越长舵机转过角度越大,0.5ms舵机就转过0°,2.5ms舵机就转到最大角度(大概185°)

3.相关代码操作:

part1:PWM初始化

#include "pwm.h"
#include "led.h"//PWM输出初始化
//arr:自动重装值
//psc:时钟预分频数
void TIM1_PWM_Init(u16 arr,u16 psc)
{  GPIO_InitTypeDef GPIO_InitStructure;TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;TIM_OCInitTypeDef  TIM_OCInitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);// RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);  //使能GPIO外设时钟使能//设置该引脚为复用输出功能,输出TIM1 CH1的PWM脉冲波形GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //TIM_CH1GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //复用推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值  80KTIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值  不分频TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_timTIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //选择定时器模式:TIM脉冲宽度调制模式2TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能TIM_OCInitStructure.TIM_Pulse = 0; //设置待装入捕获比较寄存器的脉冲值TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性:TIM输出比较极性高TIM_OC1Init(TIM1, &TIM_OCInitStructure);  //根据TIM_OCInitStruct中指定的参数初始化外设TIMxTIM_CtrlPWMOutputs(TIM1,ENABLE); //MOE 主输出使能 TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);  //CH1预装载使能    TIM_ARRPreloadConfig(TIM1, ENABLE); //使能TIMx在ARR上的预装载寄存器TIM_Cmd(TIM1, ENABLE);  //使能TIM1}

part2:main.c

 


//使用stm32控制舵机的使用
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "pwm.h"
#include "key.h"
#define key1 PCin(5)
#define key2 PAin(15)
#define key3 PAin(0)
//key1 key2 低电平触发
//key3 高电平触发
u16 cout;
int main(void){ cout=1850;KEY_Init();delay_init();                 //延时函数初始化     LED_Init();                     //初始化与LED连接的硬件接口TIM1_PWM_Init(1999,719);    //PWM频率===(2000*720)/72000000=0.02=20ms 使用一个20ms的脉冲周期//每20ms进入一次中断 官方数据为数据每加1则转动1.85度while(1){    if(key3==0&&key1==0)   //key1按下,舵机缓慢正向转动{  if(key1==0){  delay_ms(5);//消抖cout+=2;}}#if 0else    if(key3==1&&key1==0)  //key1、key3同时按下,舵机加速转动{  delay_ms(5);cout+=1;} #endifif(key3==1)    //舵机回到90度(起始位置)key3为校正位{  cout=1850;             } if(key3==0&&key2==0)      //key2按下,舵机缓慢反向转动{  delay_ms(5);cout-=2;}#if 0else if(key3==1&&key2==0)   //key2、key3同时按下,舵机加速转动{  delay_ms(5);cout-=5;       }#endifTIM_SetCompare1(TIM1,cout); //PWM输出(比较模式)delay_ms(50);}}

注:

1.此方式是对于180度舵机有效

2.cout的值设置为180度 刚好是舵机旋转90度,进行数值的加减可以控制舵机的正反转动

基于SG90舵机(伺服电机)的操作笔记相关推荐

  1. 笔记-模拟舵机:基于STM32F103ZET的SG90舵机控制

    写在前面:笔者是一名小白,如有错误,还请及时指正. 1.舵机基本知识 1.SG90舵机是一个模拟舵机,而非数字舵机,这两者的区别是这样,数字舵机只要给一个PWM信号即可,这个信号是目的地的位置,舵机会 ...

  2. 基于51单片机的超声波避障小车(HC-SR04,SG90舵机)

    + 一.HC-SR04超声波模块 二.SG90舵机 三.总程序编写 一.HC-SR04超声波模块 HC-SR04时序图 触发信号输入端(Trig)输入一个10微秒以上的高电平信号,超声发送口收到信号自 ...

  3. 基于STM32驱动SG90舵机

    1.舵机介绍 这边对SG90舵机进行一个简短的文字介绍: 舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围,总间隔为2ms.脉冲的宽度将决定马达转动的距 ...

  4. 懒人开关 ESP32控制舵机旋转(基于ESP32+SG90舵机+微信小程序)

    提示:站在巨人肩膀上的小白,大家可以提出自己的看法.如有侵删: 原文参考链接:esp32单片机控制舵机 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/566 ...

  5. 【STM32】基于F103C8T6和ESP01远程控制灯光开关(SG90舵机控制)

    先上实物! 视频演示 主控和配件选择 主控板选择经济实惠的c8t6,网络通信选择esp01,因为寝室使用不能更改电路,所以用一个sg90舵机来按点灯开关. 服务器 服务器使用自己搭建的emqx服务器, ...

  6. 学习笔记3 Linux定时器和sg90舵机的综合应用

    今天学习了Linux的定时器功能,并复刻了学习51单片机时玩的智能感应垃圾桶项目.总体感觉难度不大. 先捏软柿子,sg90舵机,应该是市面上能能买到的最便宜的舵机了吧(我瞎说的,如果不是可以发链接给我 ...

  7. SG90舵机的原理和控制方式

    前言 做过机器人.智能车或者玩航模的朋友应该对舵机不会陌生,这种舵机也是很常用的. 舵机只是我们通俗的叫法,它的本质是一个伺服电机,也可以叫做位置(角度)伺服驱动器.一般被应用在那些需要控制角度变化的 ...

  8. 树莓派操控SG90舵机

    目录 舵机接线 PWM介绍 使用PWM控制舵机 这里使用树莓派来操作sg90的舵机.先看一下这个舵机的样子: 这就是传说中的SG90舵机啦,转角是0-180. SG90舵机接线: SG90舵机有三条线 ...

  9. php控制舵机,分享一个关于SG90舵机的实验(+串口控制)

    新手第一次做实验,如果有写的不对的地方,还希望各位大佬多多指导. --------第一次做实验,也发现了自己学习过的东西掌握的不是很好,大佬们有啥入门级别的模块也可以推荐一下,分享当然更好了. --- ...

最新文章

  1. 2021全球抗体亲和力预测大赛来了!
  2. 原来deepin部署环境还是那么简单(只不过要用root权限)
  3. 我的配置(vc可以禁止控制台输出)
  4. 上传图片自动加水印html,帝国cms用户前台投稿上传图片自动加水印的实现方法...
  5. 【Matlab】求解黎卡提 Riccati 方程 李雅普诺夫 Lyapunov 方程
  6. 语言print如何实现连续输出_【每日一题】如何实现一个高效的单向链表逆序输出?...
  7. Python对Protobuf进行序列化与反序列化
  8. 北向资金运作akshare
  9. oracle 从右往左截取_截取GIF、调分辨率、快捷拨号,三星这些功能让人爱不释手...
  10. code第一部分数组:从有序数组中移除重复的数据
  11. android setCompoundDrawables和setCompoundDrawablesWithIntrinsicBounds区别
  12. 浅谈搜狗下拉词框优化推广的优势有哪些
  13. win10系统字体 chrome 修改苹果字体
  14. c语言初步经典题4----求圆柱体的表面积
  15. 利用浏览器保存和下载视频
  16. 爬虫实战:英雄联盟手游能“干掉”王者荣耀?微博4.3亿网友吵翻了……
  17. rocketmq-常见问题总结(基本概念、高可用、中间件选型)
  18. 雪花算法的原理和实现Java
  19. Java 集合List、Set、Map知识结构大全详解
  20. 跳出“套路”泥沼,让在线教育回归本心

热门文章

  1. IDEA 返回上一步,回到下一步 冲突 快捷键设置
  2. android开发笔记之联系人百家姓功能的实现
  3. 关于抖音年前活动的需求与思考
  4. 02[自制油猴插件]我是如何优化B站评论区外链体验的
  5. 让你一步步成为运维专家之各种运维脚本
  6. 知识点2:js(javascript)中检测是否为数组的两种方法【翻转数组案例】
  7. 一种提取HTML网页正文的方法
  8. 易语言人脸识别算法源码
  9. 科研用matlab还是python_科的解释|科的意思|汉典“科”字的基本解释
  10. Meld——目录文件对比工具