• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

数字舵机

2289534690@qq.com 2018-04-03 浏览量:957

数字舵机周期是20ms,操作角度270°,占空比是0.5~2.5ms,用定时器把2ms分成50us一份,应该有40份,给控制舵机旋转转角度的变量赋值40的时候,舵机应该转到最大角度,赋值20的时候,应该转到最中间,但是为什么给它赋值30的时候才是最中间,赋值45或50时,它还能转?

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 20ms分成50us一份的应该有400份,不是40份。舵机的旋转角度通常是在脉宽500us到2500us,也就是在给50的时候,脉宽也只有2000us,还没有到达最大转角的270度。只有给定62份的时候,62*40约等于2500才会到达最大转角。
    • 发布于 2018-04-03
    • 举报
    • 评论 2
    • 0
    • 0
电子WWW 回复了 Angel_YY:搞错了占空比0.5~2.5ms,50us一份,共40份 回复
电子老工程师 回复了 :GB25AP-XA NKK Switches 请参考。 回复

其他答案 数量:9
  • 占空比是在一定范围之内和角度有相应的关系,
    • 发布于2018-04-03
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :品牌: 惠华 型号: RVS1.25-4红色 请参考。 回复

  • 那就说明这个应该不是线性的吧,有没有好用的例程,看看例程代码是如何换算的
    • 发布于2018-04-03
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :MAX1841EUB+T,厂牌:Maxim Integrated,请参考 回复

  • 可以测量一下你的定时时间是不是正确的,感觉你这样写误差很大,可能是定时器配置不对
    • 发布于2018-04-03
    • 举报
    • 评论 2
    • 0
    • 0
电子WWW 回复了 一笔之名也 :用定时器软件定时是50us,自己算是46us 回复
电子老工程师 回复了  :D表示180mm纸带包装,数量为4000 回复

  • 参考一下这个

    #include "timer.h"

    //TIM2 PWM部分初始化

    //PWM输出初始化

    //arr:自动重装值

    //psc:时钟预分频数

    void TIM2_PWM_Init(u16 arr,u16 psc)

    {

    GPIO_InitTypeDef GPIO_InitStructure;

    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

    TIM_OCInitTypeDef TIM_OCInitStructure;

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);        //使能定时器2时钟

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE); //使能GPIO外设和AFIO复用功能模块时钟

    GPIO_PinRemapConfig(GPIO_PartialRemap2_TIM2, ENABLE); //Timer3部分重映射 TIM2_CH2->PA1

    //设置该引脚为复用输出功能,输出TIM2 CH2的PWM脉冲波形        GPIOA.1

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //TIM_CH2

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA

    //初始化TIM2

    TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值

    TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值

    TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim

    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式

    TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位

    //初始化TIM2 Channel2 PWM模式

    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //选择定时器模式:TIM脉冲宽度调制模式2

    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能

    TIM_OCInitStructure.TIM_Pulse = 0; //设置待装入捕获比较寄存器的脉冲值

    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性:TIM输出比较极性高

    TIM_OC2Init(TIM2, &TIM_OCInitStructure); //根据T指定的参数初始化外设TIM2 OC2

    TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Enable); //使能TIM2在CCR2上的预装载寄存器

    TIM_ARRPreloadConfig(TIM2, ENABLE); //使能TIMx在ARR上的预装载寄存器

    TIM_Cmd(TIM2, ENABLE); //使能TIM2

    }

    #ifndef __TIMER_H

    #define __TIMER_H

    #include "sys.h"

    void TIM2_PWM_Init(u16 arr,u16 psc);

    #endif

    #include "delay.h"

    #include "timer.h"

    /*舵机控制周期限制在20ms,脉宽部分为0.5ms--2.5ms

    0.5ms对应0度

    1ms对应45度

    1.5ms对应90度

    2ms对应135度

    2.5ms对应180度

    */

    int main(void)

    {

    u16 pwmval=0;

    delay_init();        //延时函数初始化

    TIM2_PWM_Init(1999,719);        //不分频PWM频率=100000/2000=50hz

    while(1)

    {

    pwmval=1850;

    TIM_SetCompare2(TIM2,pwmval);

    }

    }

    • 发布于2018-04-04
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :没有更多的资料来说明,请参考原厂提供的资料PIN1 回复

  • 应该是有偏差,要用示波器看一下实际输出的PWM信号
    • 发布于2018-04-04
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :型号后面加/L的才是100-300%这个档位 回复

  • 先看看实际的波形占空比是多少,然后才能确定问题
    • 发布于2018-04-04
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :RoHS 状态 不符合 RoHS 规范,含铅 回复

  • 占空比和角度对应的并不是很准确,其实即使是一个舵机,不同时间也要重新调一下
    • 发布于2018-04-06
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :IGW40N65F5FKSA1,Infineon Technologies,供参考 回复

  • 应该是舵机反馈信号又一定的偏差导致的,可以检测一下舵机的编码器
    • 发布于2018-04-22
    • 举报
    • 评论 0
    • 0
    • 0

  • 应该是你设置的时间与实际的时间之间的误差所导致的。可以看看你PWM的精度有多高
    • 发布于2018-05-15
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

数字舵机