舵机角度精确控制


导读:1.只想控制舵机不想了解其他的直接看 (三 四)
2.会控制舵机但是角度控制的不精确的话可以直接看(四)

想直接找参数不想调节舵机的朋友我劝你还是看一下这篇文章,舵机的参数可能每个舵机都不相同,不信可以试一下

//1.2控制舵机的频率频率	
PWM14_OUT_Init(20000-1,84-1);//20ms

//控制角度的频率
ccr: 632.5  950   1585   2220   2537.5
角度: -45     0	   90	  180	 180+45

前言

提示:1.PWM肯定是要会的,不说有多精通起码调节什么频率的,多少毫秒需要熟练掌握。
2.建议使用串口和按键控制舵机的角度(后边调试舵机角度很有用处)

PWM如果不会可以参考我另一篇文章:
https://blog.csdn.net/weixin_45061010/article/details/116234867?spm=1001.2014.3001.5501

*首先需要明白且很重要的一点是舵机的角度跟脉宽是直接关系,占空比只是侧面反映出了舵机的角度问题。调节角度调节的脉宽,脉宽,脉宽。


提示:以下是本篇文章正文内容,下面案例可供参考

一、自己学习过程

下面的的文章就是对这些东西的掌握理解与延伸。

文章参考:[https://blog.csdn.net/zitech/article/details/9277767]
https://blog.csdn.net/kucoffee12/article/details/78982098

视频参考:(先1后2。1可以更直观的了解PWM,解决你内心对PWM的小疑惑)
1.https://www.bilibili.com/video/BV1YJ411r7tk
2.https://www.bilibili.com/video/BV1bJ411675x



二:舵机组成与分类

舵机组成与原理: 舵机主要是由外壳、电路板、无核心马达、齿轮与位置检测器所构成。工作原理是控制电路接收信号源的控制脉冲,并驱动电机转动;齿轮组将电机的速度成大倍数缩小,并将电机的输出扭矩放大响应倍数,然后输出;电位器和齿轮组的末级一起转动,测量舵机轴转动角度;电路板检测并根据电位器判断舵机转动角度,然后控制舵机转动到目标角度或保持在目标角度。

舵机的规格主要有几个方面:转速、转矩、电压、尺寸、重量、材料等。

舵机一般分为数字舵机和模拟舵机
相对于传统模拟舵机,数字舵机的两个优势是:
1.因为微处理器的关系,数字舵机可以在将动力脉冲发送到舵机马达之前,对输入的信号根据设定的参数进行处理。这意味着动力脉冲的宽度,就是说激励马达的动力,可以根据微处理器的程序运算而调整,以适应不同的功能要求,并优化舵机的性能。
2.数字舵机以高得多的频率向马达发送动力脉冲。就是说,相对与传统的50脉冲/秒,现在是300脉冲/秒。虽然,以为频率高的关系,每个动力脉冲的宽度被减小了,但马达在同一时间里收到更多的激励信号,并转动得更快。这也意味着不仅仅舵机马达以更高的频率响应发射机的信号,而且“无反应区”变小;反应变得更快;加速和减速时也更迅速、更柔和;数字舵机提供更高的精度和更好的固定力量。



三、PWM驱动

想要舵机的角度首先需要驱动舵机,那么怎么驱动舵机呢?(这里有一个小坑,下面角度调节会说,按这个配置,你的舵机角度或许并不是你想要的,但是配置好之后绝对可以让你的舵机转动起来)

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


需要提一下:你的舵机配置好之后如果板子的供电做的不好的话,舵机调好也不会自接转动,你可以用手给Ta一个开始的力,或者给他接外接电源(5v稍多一点也没关系)


四、角度调节

需要根据舵机的实际情况 ,并不是所有的舵机对应的都是那样,先试下0度和180度时,对应的脉宽是不是500微秒和2500微秒。需要自己手动调试首先检测出舵机的最大转角、转角的起始点和终止点。(填补上面的坑,有时候坑也是需要踩一下的

C=(ccr2-ccr1) //0度和180度之间ccr的差值
O=(ccr2-ccr1)/180 //得出1度对应的频率

1.并不是所有的舵机超过他的极限区域了他就不转动了,而是你超过之后ta可能会不按照你的角度转,这点要注意。重要的是调节舵机的极限值,
2.在舵机极限值当中选择一些特殊的角度(eg:45 90 135 180),自己在极限值区间寻找一个合适的0度和180度的值来自己定义,记下0度和180对应的ccr1,ccr2的值C,然后计算出O。知道一度对应多少频率之后岂不是想调节多少就多少度
3.怎么得知0度对应的ccr这里就是我开头说的串口和按键了,用按键控制ccr的值在串口输出,按键每次➕10看分别对应那些特殊值的时候输出的ccr的值,最后求出C。因为我们特殊值可以观察大概,略有偏差所以我扪计算出O的值可以小范围修改,尽量O➗180可以得出一个不循环的数值,然后再观察修改之后分别对应的角度有没有失真,实在不行就区循环小数里面取四位小数按照四舍五入


下面是我调节的数字舵机的参数仅供参考:

//1.3舵机占空比					 //区间600-2500频率/度数=10.555~		区间950-2230频率/度数=7.0556~
		TIM_SetCompare1(TIM14,ccr); //修改比较值,修改占空比  632.5  950     1585   2220     2537.5
				                    //度数				   -45    0	      90	 180	  180+45

总结

重点都在文章里了,没有说什么废话,不在总结。这个过程重在自学习和分享,更加深刻的学习舵机,并能让看到的朋友可以省时省力的学会控制这个小东西。

  • 31
    点赞
  • 305
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
要精准控制STM32舵机角度,可以采用以下步骤: 1. 连接舵机:将舵机的信号线连接到STM32的一个GPIO引脚上,舵机的电源线连接到合适的电源,舵机的地线连接到STM32的地线上。 2. 初始化引脚:在STM32的代码中,通过配置GPIO引脚的模式和输出电平等参数,将用于连接舵机的引脚设置为输出模式。 3. 设置PWM波:大多数舵机使用PWM信号来控制角度。在STM32的代码中,使用定时器模块来生成PWM波。可以设置定时器的时钟频率和占空比来控制PWM信号的周期和高电平持续时间。 4. 设置舵机角度范围:不同的舵机角度范围可能有所不同,可以根据舵机的规格表来确定角度范围。根据舵机角度范围,将PWM信号的高电平持续时间设置为对应角度的脉冲宽度。 5. 控制舵机角度:通过改变PWM信号的脉冲宽度,可以控制舵机角度。可以用计时器模块的计数器来改变PWM信号的占空比或者修改CCR寄存器的值。可以设定舵机的目标角度,并通过适当的算法或传感器(如编码器)来获取当前舵机角度,然后根据差异整PWM信号的脉冲宽度。 6. 循环控制:可以使用循环控制来周期性地更新舵机的目标角度和PWM信号的值。可以根据具体的应用情况整循环频率和控制算法。 通过以上步骤,可以在STM32上实现对舵机角度精确控制。需要注意的是,不同的舵机STM32型号可能有不同的具体细节,需要根据实际情况进行适当的整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

maosql

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值