今天学习了有关SG90舵机的相关内容,基于STM32F103ZET6芯片写了该舵机的驱动程序。供大家参考。

1. SG90的相关知识:
SG90舵机旋转的角度是180°。 舵机的控制一般需要一个20ms的脉宽调制(PWM)信号,该脉冲的高电平部分一般为0.5ms-2.5ms范围相对应舵盘位置的0-180°
0.5ms--------------0度
1.0ms--------------45度
1.5ms--------------90度
2.0ms--------------135度
2.5ms--------------180度

2. SG90接线
SG90分别有三根线。棕色,红色,橙色
棕色接地(GND)
红色接电源(+5V)。(我试过接3.3v,舵机并没有转动,但是会发生嗡嗡的声响)
橙色接输出PWM信号的引脚

3. GPIO初始代码
我使用的是TIM1的通道1来控制舵机的。TIM1通道1对应的GPIO是PA8

//GPIO初始化
static void advanceTime_GPIO_Config(void)
{//开启时钟RCC_TIMEGPIO_CMD(RCC_TIMEGPIO,ENABLE);//配置GPIO结构体GPIO_InitTypeDef GPIO_InitStruct;GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStruct.GPIO_Pin = TIME1_GPIO_PIN;GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(TIME1_GPIO, &GPIO_InitStruct);
}
//GPIO相关宏定义
#define RCC_TIMEGPIO_CMD                RCC_APB2PeriphClockCmd
#define RCC_TIMEGPIO                    RCC_APB2Periph_GPIOA
#define TIME1_GPIO_PIN                  GPIO_Pin_8
#define TIME1_GPIO                      GPIOA

4. TIM1相关配置代码

//TIM1初始化函数
static void advanceTime_Config(void)
{RCC_TIME_CMD(RCC_TIME,ENABLE);/******************   时基初始化      ***********************/TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;TIM_TimeBaseInitStruct.TIM_Period = TIM1_PERIOD;TIM_TimeBaseInitStruct.TIM_Prescaler = TIM1_PRESCALER;TIM_TimeBaseInitStruct.TIM_RepetitionCounter = 0;TIM_TimeBaseInit(USETIME,  &TIM_TimeBaseInitStruct);/******************  输出结构体初始化  ***********************/TIM_OCInitTypeDef TIM_OCInitStruct;TIM_OCInitStruct.TIM_OCIdleState = TIM_OCIdleState_Reset;TIM_OCInitStruct.TIM_OCMode = TIM_OCMode_PWM1;TIM_OCInitStruct.TIM_OCNPolarity = TIM_OCPolarity_Low;TIM_OCInitStruct.TIM_OutputNState = TIM_OutputNState_Disable;TIM_OCInitStruct.TIM_OutputState = TIM_OutputState_Enable;TIM_OCInitStruct.TIM_Pulse = TIM1_PULSE;TIM_OC1Init(USETIME, &TIM_OCInitStruct);TIM_OC1PreloadConfig(USETIME, TIM_OCPreload_Enable);TIM_Cmd(USETIME, ENABLE);    TIM_CtrlPWMOutputs(USETIME,  ENABLE);
}
//相关宏定义
/**************  TIME1 配置      ****************/
#define RCC_TIME_CMD                                RCC_APB2PeriphClockCmd
#define RCC_TIME                                        RCC_APB2Periph_TIM1
#define TIM1_PRESCALER                              7199
#define TIM1_PERIOD                                 200
#define USETIME                                     TIM1
#define TIM1_PULSE                                  175

5. GPIO+TIM1初始化

//在main函数中直接调用该函数就ok啦
void advanceTime_Init(void)
{advanceTime_GPIO_Config();advanceTime_Config();
}
//在.h文件中声明该函数
/**************  TIME1 函数      ****************/
void advanceTime_Init(void);

6. main函数代码

uint32_t time = 0;
//延时函数宏定义
#define SOFT_DELAY Delay(0x0FFFFF);
void Delay(__IO u32 nCount);
int main(void)
{   advanceTime_Init();while (1){TIM_SetCompare1(USETIME,175);  SOFT_DELAYTIM_SetCompare1(USETIME,180); SOFT_DELAYTIM_SetCompare1(USETIME,185); SOFT_DELAYTIM_SetCompare1(USETIME,190); SOFT_DELAYTIM_SetCompare1(USETIME,195); SOFT_DELAY}
}void Delay(__IO uint32_t nCount)    //简单的延时函数
{for(; nCount != 0; nCount--);
}

好啦,一个简单的SG90驱动程序就写好啦。如果有什么错误的地方还请大佬批评指正喔!

(STM32F103ZET6)SG90舵机的驱动程序相关推荐

  1. 树莓派控制多个舵机_树莓派控制SG90舵机

    SG90舵机硬件接口: SG90 一共三根线,红线接5v电源,棕线GND,黄线为数据控制线,接到GPIO上舵机参数: SG90 脉冲周期为20ms,脉宽0.5ms-2.5ms对应的角度-90到+90, ...

  2. 树莓派操控SG90舵机

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

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

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

  4. 树莓派-10-安装jupyter并控制SG90舵机

    1 开发工具jupyter notebook 1.1 安装jupyter #(1)安装jupyter notebook $ sudo pip3 install jupyter $ sudo pip3 ...

  5. 基于SG90舵机(伺服电机)的操作笔记

    1.SG90舵机官方数据 尺寸:21.5mmX11.8mmX22.7mm 重量:9克   (1kg=1公斤=2斤) 无负载速度:0.12秒/60度(4.8V) 0.002s/度 堵转扭矩:1.2-1. ...

  6. ESP8266驱动SG90舵机控制开关灯(灯的开关)的折腾记录

    https://blog.csdn.net/qq_47749454/article/details/117638828 想法来源地址在上面,可以去参考一下,建议是结合两篇文章一块看,按照大佬的先来折腾 ...

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

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

  8. 初学Arduino环境下WeMos D1制造简单智能垃圾桶项目(蜂鸣器、 SG90舵机、超声波模块)

    初学Arduino环境下WeMos D1制造简单智能垃圾桶项目(蜂鸣器. SG90舵机.超声波模块) 项目代码 #include <Servo.h> #define DuoPIN D5 # ...

  9. STM32的SG90舵机驱动

    今天来讲一下如何使用STM32来驱动SG90舵机 舵机:舵机是一种位置(角度)伺服的驱动器,适用那些需要角度不断变化并可以保持的控制系统.舵机只是一种通俗的叫法,其实质是一个伺服马达. 驱动SG90舵 ...

  10. STM32F103单片机控制SG90舵机

    前言 在智能衣柜系统中,试用SG90旋转0°-180°,模拟衣柜的开关门,舵机正转开门,180°-0°反转模拟一个关门的现象. 一,SG90舵机 1.1SG90链接: [淘宝]https://m.tb ...

最新文章

  1. 浮点数在计算机中的表示
  2. es6的Proxy(代理)
  3. 【AtCoder - 4242 】To Infinity(思维)
  4. 连通子图什么意思_为什么海洋科学家说:地球是“漏”的?
  5. linux shell下除了某个文件外的其他文件全部删除的命令
  6. http://www.jb51.net/article/51934.htm
  7. 有哪些网站用爬虫爬取能得到很有价值的数据?
  8. 《HBase权威指南》读书笔记(一)
  9. TK mybatis 逆向工程
  10. KiCad 5 版本体验记录
  11. 周末闲来——2048游戏开发
  12. 【Scratch-声音模块】音调音效设置
  13. 构建面向异构算力的边缘计算云平台
  14. 解决chrome您的连接不是私密连接
  15. linux ping库函数,在Linux上用C++实现Ping
  16. Halcon学习---图像采集助手
  17. cocos2dx 物理引擎chipmunk
  18. ARM Linux对signal的处理过程
  19. [渝粤教育] 西南科技大学 房屋建筑学 在线考试复习资料
  20. 中职计算机专业信息安全教案,中职信息技术教案.docx

热门文章

  1. 常用编程语言命令大全
  2. python实现PDF文件合并成一个文件
  3. Android音乐播放器开发
  4. 软件测试最牛的8本书籍—你有读过吗?
  5. 字模提取工具-PCtoLCD2002使用说明
  6. 网友刷屏:秃了秃了!黑马Java项目教程上新
  7. java设置窗体图标_在java中怎么设置窗体的图标?详细步骤图解
  8. 墙裂推荐6款实用办公软件!超级好用!
  9. 计算机竞赛奖学金申请书,最新奖学金申请书(精选6篇)
  10. 常用工业相机及其SDK