前言

舵机——能通过不同的程序设计,来旋转不同的角度,他不同与普通的电机,只能在通电时按照一定的速度旋转,而舵机的功能不是循环旋转,只是旋转一定的角度,通过舵盘旋转的角度,从而带动外部的机械结构,我们可以用于小车的方向控制,机器人的手臂控制等

——————————————————-

舵机的基本工作原理

蓝色部分是舵机的主机,红色部分是舵盘,橙色箭头表示舵盘所在的角度

PWM也就是波形输入,单片机需要通过IO端口在这条线上输入一个固定的波形,通过波形来让舵机旋转一定角度

VCC(5V) GND(-)

两个波都是以 20ms 为一个周期,但是他们因为所处在高电平的时间不同,让他们旋转角度不同(0~180)

————————————

但是需要注意下面几点

————————————————————————————————————

利用 delay 函数进行驱动

!正常情况下,舵机是利用PWM信号进行驱动的,但是我们在学习的开始,就先使用延时函数进行学习,之后进行用PWM进行说明

在驱动舵机里,我们新加了两个函数

SG90_Init();
SG90_angle(0);

接下来是主循环里的函数,我们通过按键来控制旋转角度

if(!GPIOReadInputDataBit(GPIOA,key0))
{
OLEDShowchar(1,1,Angle 45,7);
SG90_angle(45);
}
//也就是按键0按下后,舵机旋转45°

我们就要看看我们所新加的两个函数是怎么用的了

void SG90_Init(void)
{GPIO_InitTypeDef  GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;                 //LED0-->PA.8 端口配置GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;          //推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        //IO口速度为50MHzGPIO_Init(GPIOA, &GPIO_InitStructure);                     //根据设定参数初始化GPIOA.8GPIO_WriteBit(GPIOA,GPIO_Pin_8,(BitAction)(0));         //设置好后,端口保持低电平状态
}

接下来是舵机的角度控制

void SG90_angle(u8 a)
{
u8 b = 100;//角度偏移量
GPIO_WriteBit(GPIOA,GPIO_Pin_8,(BitAction)(1));
delay_us(500+a*10+b);
GPIO_WriteBit(GPIOA,GPIO_Pin_8,(BitAction)(0));
delay_us(19500-a*10-b);
}
//延时考验的是一个计算

我们的时间是从 5ms 开始,然后把每一个角度对应到我们的微秒,再和我们的角度偏移量进行计算,就可以得到我们所要的角度

——————————————————————————————————

PWM 舵机驱动

在前面我们已经学过了PWM(TIM定时器)

我们在这注意我们所设置的预分频值就可以确定我们PWM的周期

TIMX_PWM_Init(59999,23);

在主循环里,依然是判断按键,但是不同的是,SG90_angle被我们替换成了比较PWM的函数

if(!GPIOReadInputDataBit(GPIOA,key0))
{
OLEDShowchar(1,1,Angle 45,7);
TIM_SetCompareX(TIMX,3000);
//1500 0° 3000 45° 4500 90° 这样类推
}

而对PWM的说明,前面也已经说过,这里我们设置为 PWM模式1,有效为高电平就可以了

STM32——舵机驱动相关推荐

  1. MG995舵机工作原理及基于STM32的驱动源代码

    MG995舵机工作原理及基于STM32的驱动源代码 一·MG995舵机工作原理 1.MG995舵机简介 产品型号 MG995 产品尺寸 40.7*19.7*42.9mm 产品重量 55g 工作扭矩 1 ...

  2. 总结篇:STM32舵机、电机的驱动OSBoat电路逻辑的梳理

    历经了前前后后一个月的学习,算是对STM32板子有了最最最基础的理解.对于我个人而言,最为直接的应用方式就是控制电机.正好前段时间刚学完PWM,加上今天又对于老项目OSBoat控制部分有了新的认识,于 ...

  3. Arduino与JavaScript开发实例-舵机驱动

    舵机驱动 伺服电机是一种独立的电气设备,它以高效率和高精度旋转机器的部件. 伺服机构(伺服)可以指代很多不同的机器,这些机器的使用时间比大多数人可能意识到的要长. 从本质上讲,伺服系统是任何内置反馈元 ...

  4. 这款开源的STM32外设驱动库,可以直接拿来用!

    软件一行,经常需要用到很多重复的代码,我们有必要花一些时间整理一些常用的.通用的代码,等到用到的时候就可以直接拿来用了.如果没有精力自己去整理,也可以用一些网上比较成熟的代码. 比如本次介绍的基于ST ...

  5. Baize_ServoDriver_esp32——arduino 32路舵机驱动板(esp32主控,免费开源,附程序、固件)

     该机器人开发板的用法和介绍以本文章为准. 最新的代码github仓库为准:https://github.com/Allen953/Baize_ServoDriver_esp32 介绍 仓库总是存放最 ...

  6. STM32+ULN2003驱动步进电机

    选用的步进电机的型号为28BYJ-48(或MP28GA,5V,转速比1/64),驱动电路选用uln2003芯片的驱动板,其控制时序图如下: 四相八拍:A->AB->B ->BC -& ...

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

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

  8. Baize_ServoDriver_esp8266-(arduino32路舵机驱动板)(开源可自制,附程序和固件以及烧录方法)

    导航在这里:白泽六足机器人_arduino_v1 介绍 先放资料 github:GitHub - Allen953/Baize_ServoDriver_esp8266 立创开源地址:https://o ...

  9. STM32 HAL 驱动有刷直流电机和无刷直流电机

    STM32 HAL 驱动有刷直流电机和无刷直流电机 (有刷)直流电机和无刷直流电机的机电结构不同,(有刷)直流电机通过两根线供电,由这两根线的电压方向控制电机轴转动的方向,调节额定范围内的电压可控制转 ...

  10. stm32 arduino 驱动jlx液晶屏

    stm32 arduino 驱动jlx液晶屏 1.说明 单片机这次用的是STM32F103C8T6,烧成arduino用,库还是我们的老朋友u8g2.液晶屏型号是JLX 240160G-676,SPI ...

最新文章

  1. 用实例给新手讲解RSA加密算法
  2. python读取txt数据-python读取文本文件数据
  3. C++ 关键字 extern
  4. 公众平台模板消息所在行业_微信公众号模板消息功能怎么快速推送?
  5. 1025 反转链表 (25 分
  6. rust开发环境_Rust 环境搭建
  7. Django 学习笔记(五) --- Ajax 传输数据
  8. c语言常用绘图软件有哪些,数学绘图软件有哪些?好用的数学绘图软件推荐
  9. 计算机联锁进路控制程序框图,计算机联锁系统技术第四章
  10. JS搜索省份匹配出省份的所有城市
  11. 计算机Numlock键的功能,电脑开机numlock灯不亮怎么办 NumLock数字锁定键方法
  12. 电子工程师是怎样的成长之路?
  13. 【SpringBoot系列】最详细demo-- 集成Swagger2
  14. Windows10关于拨号上网热点分享的操作
  15. java大写英文字母_输出一个字符串中的大写英文字母数,小写英文字母数以及非英文字母(.java)...
  16. Qt编程中的信号和槽机制
  17. “苹果皮”与知识产权
  18. 将一个十六进制“字符串”转换为十进制数值的问题
  19. 【2020尚硅谷Java大厂面试题第三季 04】Redis 9种数据类型使用场景,分布式锁演变步骤,lua脚本,redis事务,Redisson,Redis内存占用,删除策略,内存淘汰策略,手写LRU
  20. 哈维技术社区和清华大学互联网产业研究院主办的第一期沙龙精彩内容集锦

热门文章

  1. 记一次投票活动的感触
  2. Simon游戏代码(C语言)
  3. 迷宫小游戏Java实现
  4. python之迷宫小游戏
  5. Hopkins Statistic判断irir数据集聚类性能
  6. 终面(hr)可能的问题及回答(Java岗--自用)
  7. 网吧服务器系统是怎么弄的,网吧无盘服务器系统的安装及设置
  8. 解决报错:info There appears to be trouble with your network connection. Retrying...
  9. 从数据库导出数据到EXCEL换行的问题解决方法(即数据库字段太长自动换行)
  10. python分割图片、合并图片