找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4199|回复: 4
收起左侧

STM32如何控制舵机的自由转动 求帮助

[复制链接]
ID:516644 发表于 2019-9-4 20:33 | 显示全部楼层 |阅读模式
现在舵机的大部分回答都是如何控制舵机转固定的角度,我想问问如何控制舵机自由旋转任意角度
回复

使用道具 举报

ID:480842 发表于 2019-9-5 09:42 | 显示全部楼层
舵机旋转是要获得检测数据的吧,比如障碍物的距离,如果旋转任意角度的话,你怎么确定那个方向有障碍物的存在,还得控制小车实现在任意角度旋转后的运动吧
回复

使用道具 举报

ID:213896 发表于 2019-9-5 17:19 | 显示全部楼层
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
        TIM_OCInitTypeDef  TIM_OCInitStructure;

        TIM_TimeBaseStructure.TIM_Period = 20000-1;
        TIM_TimeBaseStructure.TIM_Prescaler = 72-1;
        TIM_TimeBaseStructure.TIM_ClockDivision = 0;
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
        TIM_TimeBaseInit(TIM8, &TIM_TimeBaseStructure);

        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
        TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
        TIM_OCInitStructure.TIM_Pulse = 0;
        TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
        TIM_OC2Init(TIM8, &TIM_OCInitStructure);

        TIM_CtrlPWMOutputs(TIM8,ENABLE);//高级定时器需要设置TIM_BDTR_MOE

        TIM_SelectOutputTrigger(TIM8,TIM_TRGOSource_Update);
        TIM_SelectMasterSlaveMode(TIM8, TIM_MasterSlaveMode_Enable);
        TIM_OC2PreloadConfig(TIM8, TIM_OCPreload_Enable);

        TIM_ARRPreloadConfig(TIM8, ENABLE);

        TIM_Cmd(TIM8,ENABLE);













if(angle == 0)
        {
                TIM_SetCompare2(TIM8,19500);
        }
        else if(angle == 45)
        {
                TIM_SetCompare2(TIM8,19000);
        }
        else if(angle == 90)
        {
                TIM_SetCompare2(TIM8,18500);
        }
        else if(angle == 135)
        {
                TIM_SetCompare2(TIM8,18000);
        }
        else if(angle == 180)
        {
                TIM_SetCompare2(TIM8,17500);
        }
        else
        {
                TIM_SetCompare2(TIM8,(uint16_t)(19500-angle*11.11));
        }
回复

使用道具 举报

ID:516644 发表于 2019-9-5 19:00 | 显示全部楼层
xj0801 发表于 2019-9-5 09:42
舵机旋转是要获得检测数据的吧,比如障碍物的距离,如果旋转任意角度的话,你怎么确定那个方向有障碍物的存 ...

不是这个意思,就是用按键控制舵机转动,比如 按一次转1度
回复

使用道具 举报

ID:405033 发表于 2019-9-6 12:51 | 显示全部楼层
这样吧,你用的应该是pwm舵机吧,你定时器配好了吧,那不就改变预装载值啥的就可以控制了嘛,改变占空比就可以了呀,还有,舵机涉及到精度问题,SG90或者大部分舵机的角度分辨率都达不到4096或者2048,所以说你可能控制不到转一度,按键控制的话,你就控制变量就可以了呀,按一下变量++,然后把这个变量传给控制舵机的那个函数就可以了(ps:串口舵机的话,精度一般可以达到2048,所以是能控制1度的)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表