1.硬件原理
我们通过按键控制舵机的旋转,每按一次按键,舵机旋转的度数增加20度,旋转的同时,点亮LED,用于指示舵机的工作状态。
舵机的基础知识和工作原理上篇文章已介绍过了。这里直接介绍整个控制系统硬件原理。使用的舵机型号是SG90,能够转动的角度是0-180度,驱动电压是3.5-6V,这个舵机的齿轮是塑料的,工作扭矩是1.6KG/CM。
舵机有3根线,电源线连接到Arduino板子的5V接口,信号线连接到IO9,按键接口连接到IO7,并接10k电阻上拉,上拉电阻不能省,否则按键接口电平不稳定,导致舵机不受控制,LED连接IO13。舵机的驱动用PWM信号,是一个周期为20ms,脉宽范围在0.5-2.5ms之间的信号,硬件原理图如下图。
2.程序解读
算法描述:
1. PWM脉冲函数是通过控制20ms周期内高电平的时间和低电平的时间实现。我们只需要改变角度,通过角度转化为脉宽值的公式,得出高电平脉宽时间,低电平脉宽时间=20ms-高电平脉宽时间。整个脉冲产生我们可以用一个函数模拟实现。
2. 检测按键的算法,按键需要消除抖动,因为一般按键按下,一瞬间,因为抖动的原因,Arduino管脚可能检测到多次按下。所以要消除抖动,用delay函数延时10ms左右后再次检测按键,就可以消抖了。
3. 主程序里面应该不断扫描按键是否按下,若有按键按下则开始用num自加1,计数完成后马上用flag=1的命令舵机开始转动与num值对应的角度数,这里设num每增加1则旋转20度。舵机旋转完毕后,flag命令需要清0,否则舵机会继续转动。
代码解读:
详细代码解读请看注释。
3.实物效果
实物连接图如下图,按程序定义的管脚连接到Arduino.
逻辑分析仪采集到的舵机控制管脚的信号,是一个周期约为20ms的脉冲。
实验效果图,可以看到,每按下一次按键,舵机多旋转20度。欢迎点赞和转发,关注头条号:奔跑的晶体管 可以学到更多的电子知识哦。
朋友们看懂了吗,欢迎留言参与讨论。想要源代码的朋友请转发,关注后私信“舵机” 获取下载链接