本文简单介绍在舵机中的直流电机控制原理和方法。下图是控制器原理图,单片机选择stm32f030,驱动选择fm116b,ldo为lp2992,这个可以任意选择兼容的芯片,电压反馈端用tl431进行分流稳压,确保反馈电阻器供电电压的稳定。
舵机的工作原理很简单,处理器实时获取电阻器的ADC值来计算获得当前的角度,如果与预期的角度一致,就不做任何操作,保持当前状态;如果与预期角度不同,就计算出当前角度与预期角度的差值,然后通过PID算法计算出控制量,根据控制量输出PWM控制电机旋转,随着电机旋转,实时角度会越来越接近预期值,控制输出也会越来越小,直到最后为0,就转到了预期的位置。
本方案通过I2C接口获取控制命令,可以实现比传统模拟方式更多的功能。
PWM1和PWM2控制电机转速和方向,当PWM1输出高电平而PWM2输出低电平就是正转,反之就是反转,如果二者都输出低电平就停止。
ADC值需要标定,确定舵机角度为0和180时的ADC采样值,这样才能通过比例计算出任意ADC值对应的角度。
PID这里,ADC得到的角度减去预期角度就是角度差,乘以比例系数构成比例项;角度差的和乘以积分系数构成积分项,积分项要设置上限,防止该值过大影响响应速度;本次角度差与上一次的角度差的差乘以微分系数构成微分项(这里用固定的时间采样,dt固定,故不需要计算变化率了)。三者之和就是预期的输出值,再根据输出限制得到最终的输出值,该值可正可负,注意变量选取要合适。
全部0条评论
快来发表一下你的评论吧 !