不脱发的程序猿 发表于 2021-8-8 18:38:47

和12岁小同志搞创客开发:遥控舵机

机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧。
https://img-blog.csdnimg.cn/2021053014531574.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM4MTA2OTIz,size_16,color_FFFFFF,t_70​项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html
static/image/hrline/5.gif

之前讲到了设计一款亮度可调节灯,在此基础上,实现旋转电位器控制舵机转动。
​本项目使用的舵机是180°微型舵机,该舵机采用高强度ABS透明外壳配以内部高精度尼龙齿轮组,加上精准的控制电路、高档轻量化空心杯电机使该微型舵机的重量只有9克,而输出力矩达到了惊人的1.6kg*cm,可满足基本的项目应用。
1、舵机控制理论
控制舵机转动,本质上也是PWM(脉冲宽度调制),通过一个固定的频率,给其不同的占空比来控制舵机不同的转角。
舵机的频率一般为频率为50HZ,也就是一个20ms左右的时基脉冲,而脉冲的高电平部分一般为0.5ms~2.5ms范围,来控制舵机不同的转角,0.5ms~2.5ms的PWM高电平部分对应控制180度舵机的0~180度。
以180度角度伺服为例,那么对应的控制关系如下所示:0.5ms-------------0度
1.0ms------------45度
1.5ms------------90度
2.0ms-----------135度
2.5ms-----------180度data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

下图演示占空比从1ms变化到2ms时,转角的变化:
​2、舵机控制实践
在设计一款亮度可调节灯中使用旋钮电位器ADC采样数值的范围是0~1023之间,但是舵机可接收的旋转角度是:0~180度,故建立转换关系:
https://img-blog.csdnimg.cn/20210717193143494.png​所以,旋转电位器ADC数值 X 180 = 舵机旋转度数 X 1023, 故,舵机旋转度数 = 旋转电位器ADC数值 X 180 / 1023。
当旋转电位器ADC数值为0时,带入公式,舵机旋转度数为0;当旋转电位器ADC数值为1023时,舵机旋转度数为180。
遥控舵机程序设计如下所示:
​在实际的开发过程中,发现如果直接使用旋转电位器ADC数值 X 180 / 1023,数值会超出变量定义的极限,所以将此步骤分为:旋转电位器ADC数值 X 18 / 1023,然后得到的结果再放大10倍。
效果如下所示:
​快来试试吧~

页: [1]
查看完整版本: 和12岁小同志搞创客开发:遥控舵机