

我是想用arduino UNO、舵机和超声波测距器做一个通过PID算法控制小球保持在中间的机器,但是arduino的板子不能提供太大的电流,所以一但小球速度过快,舵机就会过载,我尝试使用外接锂电池,可一但送电,舵机就转动到0度之后锁死,请问大家这是出了什么问题


关注引自免费微信小程序:皆我百晓生
首先,让我们看看你的代码逻辑,你的程序目前可以实现将舵机角度锁定在一个固定的范围(比如30度)。但是当小球的速度超过这个范围,舵机会自动锁定,这可能是因为舵机的限流器设置不当,或者是舵机本身的固有特性。
为了确定原因并找到解决办法,我们需要检查你的电路图。在这个电路图中,我们可以看到舵机与电池之间的连接以及限流器的位置。
看起来你的限流器设计得非常简单,只考虑了静态电流限制。那么你是否已经确保电机的最大输出电流不会超过电池的能力?如果是这样,可能是由于过度供电导致的舵机过载。
接下来,我们来看看桨叶的角度。考虑到舵机是旋转的,其角应该是随着小球速度的变化而变化。现在来看一下桨叶的角度。你应该能看到,即使你在没有接电的情况下,也没有明显的速度变化。
因此,最有可能的原因是你在接电后没有改变桨叶的角度。那么你需要检查的是如何改变桨叶的角度,以及何时这样做?
一般来说,改变桨叶的角度可以通过控制电机的正向或反向电压来实现。当桨叶角度增大时,电机应逆时针旋转,反之亦然。至于何时改变角度,这就取决于你的系统需求。
这里有一个简单的示例代码,它演示了如何改变桨叶的角度和保持一定的速度:
# 初始化桨叶的角度
舵叶角度 = 30
# 控制电机的正向电压,使桨叶加速
舵机_voltage += 10
# 增加桨叶的角度,使其偏离初始角度
舵叶_angle += 10
# 如果桨叶角度大于设定值,立即停止改变
if舵叶_angle > 60:
舵叶_angle = 60
舵机_voltage -= 10
舵叶_angle -= 10
# 记录新的桨叶角度和速度
new舵叶_angle =舵叶_angle
new_speed = speed + 0.1 * new舵叶_angle
print("新舵叶角度:", new舵叶_angle)
print("新速度:", new_speed)
以上代码仅供参考,实际应用中需要根据你的具体需求进行修改。
再次强调,这个问题最好由专业人士来解决,如果你对电路图不够熟悉,建议你找一个电路设计师帮助你检查和修复。同时,我也建议你在接电之前做一次充分的测试,以确保舵机能在没有外部输入的情况下正常工作。