找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5988|回复: 13
打印 上一主题 下一主题
收起左侧

stc15单片机控制舵机 如何做到分辨率1度

[复制链接]
跳转到指定楼层
楼主
要求舵机运行分辨率为1度(意思应该是舵机转动180次为180度吧),跟踪精度±2度
这是我部分控制双舵机的程序:
void Timer0() interrupt 1
{
        TL0=0xd2;
        TH0=0xff;
        if(count<Ucount)
            PWM_1=1;
    else
            PWM_1=0;
        if(count<Ucount1)
            PWM_2=1;
    else
            PWM_2=0;
        count++;
        count%=400;                          
}

管脚设定为强推挽输出,定时器中断时间为50us,设定Ucount,Ucount1的值为30则舵机运行到90度,值为10和50运行到0度和180度,舵机运行分辨率为4.5度

如果按照我这思路继续写运行分辨率为1度 定时器初值就得设置为小数,求该如何解决,或者有没有其他的写法

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:405033 发表于 2020-4-7 16:53 | 只看该作者
首先你得知道你的舵机的分辨率。。。有些舵机例如SG90是不能精确到1°的,只能到一点多°,你可以去看看,串口舵机比PWM舵机一般精确度高,有一些4096的pwm舵机例外,所以你首先得看看舵机能不能1°,再来考虑程序。
回复

使用道具 举报

板凳
ID:621707 发表于 2020-4-7 19:34 | 只看该作者
疯子本人 发表于 2020-4-7 16:53
首先你得知道你的舵机的分辨率。。。有些舵机例如SG90是不能精确到1°的,只能到一点多°,你可以去看看, ...

型号RDS3115mg,就是在网上也找不到资料。。。
回复

使用道具 举报

地板
ID:622351 发表于 2020-4-7 22:30 | 只看该作者
https://forum.arduino.cc/index.php?topic=315211.0

一份arduino的资料,仅供参考
回复

使用道具 举报

5#
ID:275826 发表于 2020-4-8 07:54 | 只看该作者
RDS3115双轴数字舵机,是一款为机器人专门设计的数字舵机,扭矩15kg@6V(实际扭力17kg@7.2v),运行噪音低、平稳且线性度高,可控角度范围180度,断电可360度旋转,特别适合机器人的各关节活动。 使用说明: 该款数字舵机内部伺服控制板采用单片机MCU控制,这是相对于传统的模拟舵机的主要区别,但是控制方式是相同的,都是PWM脉宽型调节角度,周期20ms,占空比0.5ms~2.5ms的脉宽电平对应舵机0度~180度角度范围,且成线性关系。 与模拟舵机的最大区别是带位置锁定功能,给一次PWM脉宽,舵机输出角度可锁定,直到下次给不同的角度脉宽或者断电才可以改变角度(模拟舵机则不具有该功能, 模拟舵机要锁定位置需要不停的提供pwm信号). 另外控制精度高、线性度好,与控制协议严格一致,输出角度准确且响应速度快是数字舵机品质好的重要原因。通常舵机控制器采用500~2500数值对应舵机控制输出角度的占空比0.5ms~2.5ms的范围,这样该款数字舵机的控制精度理论值可达到0.09度,而实际由于舵机齿轮组间的间隙存在,该款舵机的最小控制精度能达到0.9度以下,相对于上位机软件滑竿控制量的最小调节单元值为10,舵机才有明显的转动反应。 舵机严禁过载, 堵转会有烧舵机电路板跟马达的的风险! 舵机RDS3115(含金属支架齿轮) 扭力15KG 转角270度 通用规范 温度范围:- 20°C~60° 工作温度范围:- 10°C~50° 工作电压:6V ~ 8.4V
回复

使用道具 举报

6#
ID:405033 发表于 2020-4-8 09:51 | 只看该作者
1948594382 发表于 2020-4-7 19:34
型号RDS3115mg,就是在网上也找不到资料。。。

你去找店家要资料呀,而且我看了下这舵机是数字舵机,精度可以达到0.9°,所以实现一次一度应该没问题的
回复

使用道具 举报

7#
ID:621707 发表于 2020-4-10 10:22 | 只看该作者
疯子本人 发表于 2020-4-8 09:51
你去找店家要资料呀,而且我看了下这舵机是数字舵机,精度可以达到0.9°,所以实现一次一度应该没问题的

真的写的出来吗,我改用小数控制也失败了,0度到180度对应的是舵机脉宽范围:500-2500us,平均分180份后是1.11111111。。。。
回复

使用道具 举报

8#
ID:405033 发表于 2020-4-10 16:21 | 只看该作者
1948594382 发表于 2020-4-10 10:22
真的写的出来吗,我改用小数控制也失败了,0度到180度对应的是舵机脉宽范围:500-2500us,平均分180份后 ...


RDS3115双轴数字舵机,是一款为机器人专门设计的数字舵机,扭矩15kg@6V(实际扭力17kg@7.2v),运行噪音低、平稳且线性度高,可控角度范围180度,断电可360度旋转,特别适合机器人的各关节活动。 使用说明: 该款数字舵机内部伺服控制板采用单片机MCU控制,这是相对于传统的模拟舵机的主要区别,但是控制方式是相同的,都是PWM脉宽型调节角度,周期20ms,占空比0.5ms~2.5ms的脉宽电平对应舵机0度~180度角度范围,且成线性关系。 与模拟舵机的最大区别是带位置锁定功能,给一次PWM脉宽,舵机输出角度可锁定,直到下次给不同的角度脉宽或者断电才可以改变角度(模拟舵机则不具有该功能, 模拟舵机要锁定位置需要不停的提供pwm信号). 另外控制精度高、线性度好,与控制协议严格一致,输出角度准确且响应速度快是数字舵机品质好的重要原因。通常舵机控制器采用500~2500数值对应舵机控制输出角度的占空比0.5ms~2.5ms的范围,这样该款数字舵机的控制精度理论值可达到0.09度,而实际由于舵机齿轮组间的间隙存在,该款舵机的最小控制精度能达到0.9度以下,相对于上位机软件滑竿控制量的最小调节单元值为10,舵机才有明显的转动反应。 舵机严禁过载, 堵转会有烧舵机电路板跟马达的的风险! 舵机RDS3115(含金属支架齿轮) 扭力15KG 转角270度 通用规范 温度范围:- 20°C~60° 工作温度范围:- 10°C~50° 工作电压:6V ~ 8.4V 。
这个是我在网上找的管与你这个型号的舵机的描述,这样来看的话,他是可以实现的。
回复

使用道具 举报

9#
ID:621707 发表于 2020-4-12 14:17 | 只看该作者
疯子本人 发表于 2020-4-10 16:21
RDS3115双轴数字舵机,是一款为机器人专门设计的数字舵机,扭矩15kg@6V(实际扭力),运行噪音低、平稳且 ...

为什么要纠结于舵机啊,不行就换一个行的不就好了吗?问题是代码写不写得出来,我能写出分辨率为3.6的程序,看网上写的程序控制分辨率都比我的大
回复

使用道具 举报

10#
ID:405033 发表于 2020-4-14 09:54 | 只看该作者
1948594382 发表于 2020-4-12 14:17
为什么要纠结于舵机啊,不行就换一个行的不就好了吗?问题是代码写不写得出来,我能写出分辨率为3.6的程 ...

        TIM1_PWM_Init(9999,143);//不分频。PWM频率=72000/(899+1)=80Khz
        TIM_SetCompare2(TIM3,749+mosss*5);//实现一度旋转
其实不是纠不纠结的问题,我只是想告诉你,有些人会嫌换舵机成本的问题(时间成本、精力成本的问题),所以不会优先考虑换舵机,而是考虑改程序;当然换舵机可以实现也是一种可行的方法,我当时用STM32写的舵机一度是可实现的,甚至是0.5°,所以我是说可实现的,但是你换舵机也是好方法。
回复

使用道具 举报

11#
ID:621707 发表于 2020-4-14 16:19 | 只看该作者
疯子本人 发表于 2020-4-14 09:54
TIM1_PWM_Init(9999,143);//不分频。PWM频率=72000/(899+1)=80Khz
        TIM_SetCompare2(TIM3,749+ ...

感谢你的回答,stm32我正准备学习中,但现在我做任务的要求是用晶振频率为11.0592mhz的STC15F2K60S2单片机编写,我再想想其他办法
回复

使用道具 举报

12#
ID:342451 发表于 2020-4-14 19:21 | 只看该作者
舵机50HZ的频率下,将PWM分的更细一点,应该是可以满足要求的
中断服务函数//50us
{

}
回复

使用道具 举报

13#
ID:342451 发表于 2020-4-14 19:27 | 只看该作者
舵机频率固定的50HZ
中断服务函数//50us
{
    t++;
    if(t<pwm)io=1;
    if(t>=pwm)io=0;
    if(t==400)t=0;//400*50us=20ms 50hz
}
单片机能力所限吧,400这个值越大,细分度越高,控制精度越高
回复

使用道具 举报

14#
ID:621707 发表于 2020-4-15 15:20 | 只看该作者
之一知足 发表于 2020-4-14 19:27
舵机频率固定的50HZ
中断服务函数//50us
{

将400的值改为1800才能达到分辨率1度,但是这款晶振为11.0592mhz的单片机的定时器不能设置为20ms中断1800次,所以感觉无解
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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