舵机控制原理:

舵机的控制信号为周期是 20ms 的脉宽调制(PWM)信号,其中脉冲宽度从 0.5ms-2.5ms,相对应舵盘的位置为 0-180 度,呈线性变化。也就是说,给它提供一定的脉宽,它的输出轴就会保持在一个相对应的角度上,无论外界转矩怎样改变,直到给它提供一个另外宽度的脉冲信号,它才会改变输出角度到新的对应的位置上。

一般而言,舵机的基准信号都是周期为20ms,宽度为1.5ms。这个基准信号定义的位置为中间位置。

其中间位置的脉冲宽度是一定的,那就是1.5ms。

角度是由来自控制线的持续的脉冲所产生。这种控制方法叫做脉冲调制。脉冲的长短决定舵机转动多大角度。

当舵机接收到一个小于1.5ms的脉冲,输出轴会以中间位置为标准,逆时针旋转一定角度。接收到的脉冲大于1.5ms情况相反。不同品牌,甚至同一品牌的不同舵机,都会有不同的最大值和最小值。一般而言,最小脉冲为1ms,最大脉冲为2ms。

可以通过调节PWM的占空比控制舵机的转向角度。

文章转载来源:https://blog.csdn.net/avrmcu1/article/details/24384745

#ifndef __STEERING_H
#define __STEERING_H
#include "sys.h"
void TIM4_PWM_Init(u16 arr,u16 psc);//TIM4_CH1
#endif
#include "steering.h"
void TIM4_PWM_Init(u16 arr,u16 psc)
{GPIO_InitTypeDef GPIO_InitStructure;TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;TIM_OCInitTypeDef  TIM_OCInitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 ;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);TIM_TimeBaseStructure.TIM_Period = arr;TIM_TimeBaseStructure.TIM_Prescaler =psc;TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure); TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OC1Init(TIM4,&TIM_OCInitStructure);  TIM_Cmd(TIM4,ENABLE);  }
    TIM4_PWM_Init(199,7199);while(1){delay_ms(10);TIM_SetCompare1(TIM4,5);   delay_ms(300);TIM_SetCompare1(TIM4,10);delay_ms(300);TIM_SetCompare1(TIM4,15);delay_ms(300);}

应为T=20ms,所以对应的f=1/T=50HZ

频率:pwm = 72M / ((arr+1)*(psc+1))(单位:Hz)

占空比:TIM3->CCR1 / arr(单位:%)

注意:如果定时器模式选择为:

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;

那么对应的输出比较极性为:

TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; 

相反:

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;

MG90S舵机驱动原理和程序代码相关推荐

  1. STM32液晶显示HT1621驱动原理及程序代码

    1.HT1621电路分析 HT1621为32×4即128点内存映像LCD驱动器,包含内嵌的32×4位显示RAM内存和时基发生器以及WDT看门狗定时器. HT1621驱动电路如下图所示: 图1 与单片机 ...

  2. ht1621b和单片机电平匹配_STM32液晶显示HT1621驱动原理及程序代码

    1 unsigned char Lcdram[32]= 2 {3 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,4 0x00,0x00,0x00,0x00,0x00, ...

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

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

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

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

  5. LoRa SX1278/76驱动原理 附代码

    LoRa SX1278/76驱动原理 附代码 原理解释 LoRa 关键参数说明 前导码: 报头: 显式报头模式: 隐式报头模式: LoRa 调制解调: 扩频因子: 编码率: 信号带宽: 代码说明 SP ...

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

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

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

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

  8. K210、Openmv与串行总线舵机通信(基于micropython)舵机驱动板和舵机控制板代码

    最近博主在使用幻尔公司 串行总线舵机时,想使用k210控制,由于官方没有相关例程(树莓派的版本是python版本代码,用不了)特此分享一下控制代码 主要调用函数 a.to_bytes(x,'littl ...

  9. arduino 舵机接线图_arduino+16路舵机驱动板连接测试(示例代码)

    用Arduino类库驱动舵机并不是一件难事,如果需要驱动很多电机,就需要要占用更多的引脚,也会影响到Arduino的处理能力.专门的舵机驱动板很好的解决了这个问题. 此舵机驱动板使用PCA9685芯片 ...

最新文章

  1. java 电梯算法_编程之美之小飞的电梯调度算法(多种解法)---Java语言
  2. 高性能对象存储MinIO学习
  3. 【C语言笔记初级篇】第四章:数组入门
  4. Swoole 2019 :化繁为简、破茧成蝶
  5. 孙鑫-MFC笔记一--Windows程序内部运行机制
  6. python 进行后端分页详细代码
  7. 怎么做应力应变曲线_浅析基桩低应变检测技术
  8. 把mysql数据展示为图表_怎么从数据库中调出数据并生成动态图表?
  9. 如何设计可靠的灰度方案
  10. python pdb模块_Biopython PDB模块
  11. PDF转Word图片转Word教程(附工具地址)
  12. (一)5G网络超低延迟背后的黑科技
  13. Guiding Teacher Forcing with Seer Forcing for Neural Machine Translation翻译
  14. AD16弹出错误对话框
  15. js统计字符串中大写字母与小写字母的总个数
  16. iPad 手指触摸与PC鼠标事件
  17. pinyin4j使用说明
  18. 开启超高清时代 联诚发5G+8K大屏点亮智慧展厅及银行业
  19. SOPHON sail.Decoder无法正常解码rtsp流(使用ffmpeg和opencv可以正常解码)
  20. 操作系统MIT6.S081:P7->Interrupts

热门文章

  1. 常见笔记本BIOS启动键总结( 超级详细 ! ! ! )
  2. You have new mail in /var/spool/mail/root
  3. JVM基础 -> GC分代: MinorGC MajorGC FullGC Mixed GC
  4. PostGIS 路线规划
  5. html 原生弹出框,html、css和js原生写一个模态弹出框,顺便解决父元素半透明子元素不透明效果...
  6. 中国SEO可持续性发展问题
  7. 虚拟语气在条件句中的应用
  8. Task02:baseline学习及改进
  9. 推荐一个还不错的医学网站
  10. Mysql传智jing_dong数据库