mg995舵机中文资料(参数_尺寸_控制程序)

电子说

1.2w人已加入

描述

  mg995舵机参数与尺寸

  产品尺寸40.7*19.7*42.9mm

  产品重量55g

  工作扭矩13KG/cm

  反应转速:53-62R/M

  使用温度:-30~+60°

  死区设定:4微秒

  插头类型:JR、FUTABA通用

  转动角度:最大180度

  舵机类型:模拟舵机

  工作电流:100mA

  使用电压:3-7.2V

  结构材质:金属铜齿、空心杯电机、双滚珠轴承无负载

  操作速度:0.17秒/60度(4.8V);0.13秒/60度(6.0V)

  附件包含:舵盘、线长30CM、固定螺钉、减振胶套及铝套等附件

  mg995舵机使用范围

  适用范围:1:10和1:8平跑车、越野车、卡车、大脚车、攀爬车、双足机器人、机械手、遥控船,适合50级-90级甲醇固定翼飞机以及26cc-50cc汽油固定翼飞机等模型。

  mg995舵机接线

  舵机上有三根线,分别为VCC、GND、信号线。控制信号一般要求周期为20ms的PWM信号。VCC、GND需要另外接驱动给舵机供电,而且得和开发板共地。

舵机

  中间的永远是电源正极。

  mg995舵机控制原理

  舵机的控制一般需要一个20ms的时基脉冲,该脉冲的高电平部分一般为0.5ms~2.5ms范围内的角度控制脉冲部分。以180度角度舵机为例,那么对应的控制关系是这样的:

  0.5ms————–0度;

  1.0ms————45度;

  1.5ms————90度;

  2.0ms———–135度;

  2.5ms———–180度;

舵机

  LM811的PWM控制MG995舵机程序

  #include “hw_memmap.h”

  #include “hw_types.h”

  #include “sysctl.h”

  #include “gpio.h”

  #include “pwm.h”

  #include “hw_ints.h”

  #include “delay.h”

  #define PH0_PWM2 GPIO_PIN_0

  #define PH1_PWM3 GPIO_PIN_1

  #define LED GPIO_PIN_6

  unsigned int jiaodu[]={12000,16000,12000,8000};

  unsigned int jiaodu1[]={12000,20000,12000,4000};

  //unsigned int jiaodu1[]={148000,140000,148000,156000};

  void H_T();

  void Q_J();

  /*********************************************************************************************************

  ** Function name: main()

  ** Descriptions: 主函数

  ** input parameters: NONE

  ** output parameters: NONE

  ** Returned value: NONE

  *********************************************************************************************************/

  int main (void)

  {

  SysCtlClockSet(SYSCTL_SYSDIV_1 | /* 配置6MHz外部晶振作为主时钟 */

  SYSCTL_USE_OSC |

  SYSCTL_OSC_MAIN |

  SYSCTL_XTAL_8MHZ);

  SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOH|SYSCTL_PERIPH_GPIOC); /* 使能PWM2和PWM3输出所在GPIO */

  SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM); /* 使能PWM模块 */

  SysCtlPWMClockSet(SYSCTL_PWMDIV_1); /* PWM时钟配置:不分频 */

  GPIOPinTypePWM(GPIO_PORTH_BASE, GPIO_PIN_0); /* PH0配置为PWM功能 */

  GPIOPinTypePWM(GPIO_PORTH_BASE, GPIO_PIN_1); /* PH1配置为PWM功能 */

  PWMGenConfigure(PWM_BASE, PWM_GEN_1, /* 配置PWM发生器1:加减计数 */

  PWM_GEN_MODE_UP_DOWN | PWM_GEN_MODE_NO_SYNC);

  PWMGenPeriodSet(PWM_BASE, PWM_GEN_1, 160000); /* 设置PWM发生器1的周期 */

  PWMPulseWidthSet(PWM_BASE, PWM_OUT_2, jiaodu[0]); /* 设置PWM2输出的脉冲宽度 */

  PWMPulseWidthSet(PWM_BASE, PWM_OUT_3, jiaodu[0]); /* 设置PWM3输出的脉冲宽度 */

  // PWMSyncUpdate(PWM_BASE,PWM_GEN_1_BIT);

  PWMOutputState(PWM_BASE, (PWM_OUT_2_BIT | PWM_OUT_3_BIT), true); /* 使能PWM2和PWM3的输出 */

  PWMGenEnable(PWM_BASE, PWM_GEN_1); /* 使能PWM发生器1, */

  GPIOPinTypeGPIOOutput(GPIO_PORTC_BASE,LED);

  GPIOPinWrite(GPIO_PORTC_BASE,LED,0XFF);

  /* 开始产生PWM方波 */

  // PWMGenIntTrigEnable(PWM_BASE,PWM_GEN_1,PWM_INT_CNT_ZERO);

  // PWMIntEnable(PWM_BASE,PWM_INT_GEN_1);

  // IntEnable(INT_PWM1);

  // IntMasterEnable();

  while(1)

  {

  Q_J();

  H_T();

  }

  }

  void PWM_Generator_1_ISR (void)

  {

  const unsigned long ulTab[10] ={156000,148000,140000};

  static unsigned long n = 0;

  PWMGenIntClear(PWM_BASE,

  PWM_GEN_1,

  PWM_INT_CNT_ZERO);

  PWMPulseWidthSet(PWM_BASE, PWM_OUT_2, ulTab[n]); /* 设置PWM2输出的周期 */

  PWMPulseWidthSet(PWM_BASE, PWM_OUT_3, ulTab[2-n]); /* 设置PWM3输出的周期 */

  GPIOPinWrite(GPIO_PORTC_BASE,LED,0);

  n++;

  if ( n 》= 3 ) {

  n = 0;

  }

  }

  void Q_J()

  {

  unsigned char i=1,j=1;

  PWMPulseWidthSet(PWM_BASE, PWM_OUT_2, jiaodu[i++]); /* 设置PWM2输出的周期 */

  //PWMPulseWidthSet(PWM_BASE, PWM_OUT_3, jiaodu); /* 设置PWM3输出的周期 */

  GPIOPinWrite(GPIO_PORTC_BASE,LED,0);

  delay_ms(220);

  PWMPulseWidthSet(PWM_BASE,PWM_OUT_3,jiaodu1[j++]);

  GPIOPinWrite(GPIO_PORTC_BASE,LED,0XFF);

  delay_ms(220);

  PWMPulseWidthSet(PWM_BASE,PWM_OUT_2,jiaodu);

  delay_ms(230);

  }

  void H_T()

  {

  unsigned char i=1,j=2;

  PWMPulseWidthSet(PWM_BASE, PWM_OUT_2, jiaodu[i++]); /* 设置PWM2输出的周期 */

  //PWMPulseWidthSet(PWM_BASE, PWM_OUT_3, jiaodu); /* 设置PWM3输出的周期 */

  GPIOPinWrite(GPIO_PORTC_BASE,LED,0);

  delay_ms(220);

  PWMPulseWidthSet(PWM_BASE,PWM_OUT_3,jiaodu1[j++]);

  GPIOPinWrite(GPIO_PORTC_BASE,LED,0XFF);

  delay_ms(220);

  PWMPulseWidthSet(PWM_BASE,PWM_OUT_2,jiaodu);

  delay_ms(230);

  }

  }

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论(0)
发评论
lectx 2018-08-15
0 回复 举报
一点用都没有,安装参数都没有 收起回复

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分