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、信號線??刂菩盘栆话阋笾芷跒?0ms的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: 主函數
** 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);
}
}
-
舵機
+關注
關注
17文章
270瀏覽量
41035 -
mg995
+關注
關注
0文章
5瀏覽量
3562
發布評論請先 登錄
相關推薦
評論