我的六足机器人有18舵机, 每足3舵机。控制板为HT32F52352,这不重要。舵机为A0090,为9g小舵机,额定电压为6v,额定电流不确定。现在我的硬件架构为:主控板两个iic口连接两个pca9685(舵机模块),每个舵机模块连接9个舵机,电池为航模电池,配有一个分电板(电源模块),电源模块听商家讲是限流的,电流多大出来还是1a。也拥有一个bec模块可以输出20a电流,但是不敢用。整体重量大概在1kg左右
目前的问题是:
1.舵机的扭矩不够,不知道是因为舵机的电流没给够还是已经是极限扭矩。完全做不到像大舵机mg90s那样丝滑的移动。参考b站的其他六足。由于扭矩不够,堵转的概率很大。然后舵机商家说舵机至少要1a的电流才能正常驱动,但是我不知道该怎么用pca供这么多电流给一个舵机。
2.舵机很容易坏,不知道是不是因为堵转的关系,电流不够的关系。舵机商家说是因为拖电短路,舵机电流不足所以拖多了板子上的电流,不知道是不是这样。
要达到的目标是:
1.舵机扭矩足够让舵机自主从瘫软状态直接直立。(现在如果瘫软状态上电完全立不起来,堵转,要人手辅助才能立起来)
2.舵机不要坏的这么频繁,能够正常工作很长时间。
接下来附图(图上没有供电):
黑白线是电源模块供给两个pca的供电口1和板子,pca的供电口2还没有插线供电。我现在不清楚pca的原理,不知道它的两个供电口分别是给什么供电,也不知道应该怎么供电才能使每个舵机分到1a的电流。
问题分析:基于最新版ChatGPT4的回答,望采纳!!!有其他问题也可以询问我哦、”(最新版更智能,功能更加强大)
根据你的描述,我了解到你的六足机器人使用了18个A0090舵机,每个舵机额定电压为6V,但额定电流不确定。你的硬件架构包括HT32F52352主控板,两个PCA9685舵机模块,航模电池,分电板(电源模块),和一个BEC模块。
关于你的问题:
为了实现你的目标:
总之,解决你的问题可能需要为PCA9685舵机模块提供足够的电流。你可以尝试将分电板(电源模块)或BEC模块连接到PCA9685的电源输入端,以增加舵机的扭矩和减少损坏的可能性。请确保在进行任何更改之前仔细阅读和遵循设备的使用说明和安全
接下来我们来详细讨论如何为PCA9685舵机模块提供足够的电流。
基于Huouayi库和GPTᴼᴾᴱᴺᴬᴵ的调写:
舵机扭矩问题:
确保舵机供电电压稳定,不低于舵机额定电压6V;
确认舵机的机械结构和轴承运转是否正常,若有卡滞或磨损等情况,会降低扭矩表现;
调整控制程序,优化舵机控制算法,确保舵机运动平稳,不出现异常震动。
舵机易损问题:
确认舵机供电电压是否稳定,不要让电压过高或过低,以免损坏舵机内部电路;
确认舵机机械结构是否正常,特别是舵机输出轴的结构,是否能承受外部力矩;
确认控制程序的算法是否合理,是否过于频繁地发送控制信号,导致舵机频繁转动,加速舵机磨损。
关于PCA9685的供电问题:
需要给PCA9685提供稳定的电源,并保证供电电流足够。PCA9685的工作电流很小,不需要特别高的电流供应。
在你的电路中,如果每个PCA9685连接9个舵机,那么每个PCA9685的舵机供电电流就会在1A左右。
如果你的电源模块是限流模块,那么需要确认电源模块的输出电流是否足够,可以尝试使用电流表来检测每个PCA9685的舵机供电电流。
如果发现不足1A,可以考虑更换电源模块或者增加供电电源。
基于最新版ChatGPT4的回答,望采纳!!!有其他问题也可以询问我哦💕(最新版更智能,功能更加强大):
针对您的问题,我们可以从以下几个方面进行分析和改进:
首先,舵机的扭矩问题可能是因为电流不足导致的。您提到的A0090舵机需要至少1A的电流才能正常驱动。由于PCA9685模块的电流限制,您可能需要调整供电方式,以确保每个舵机都能获得足够的电流。您可以尝试使用分电板将电源分配给每个舵机,这样每个舵机都能获得足够的电流来驱动。
关于舵机容易损坏的问题,堵转和电流不足可能是原因之一。为了保护舵机,您可以在舵机的电源线中增加保险丝,以防止过大的电流损坏舵机。同时,确保电路板和舵机之间的接线正确,以防止短路。
对于PCA9685的两个供电口,通常一个供电口用于驱动逻辑电路(例如I2C通信),另一个供电口用于驱动舵机。您需要确保逻辑电路和舵机的供电分开,以避免干扰。您可以尝试为PCA9685的舵机供电口接入更高电流的电源,以确保每个舵机能够获得足够的电流。
对于您的目标,为了确保舵机具有足够的扭矩并减少损坏,建议您尝试以下方法:
a. 使用分电板或更强大的电源模块来为每个舵机提供足够的电流。
b. 在舵机的电源线中加入保险丝,以防止过大电流损坏舵机。
c. 考虑使用更高扭矩的舵机,例如MG90S,以提高机器人的性能。
通过上述方法,您应该能够提高六足机器人的性能并减少舵机损坏的频率。希望这些建议对您有所帮助!
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
首先,关于舵机的扭矩不够的问题,可能是因为以下原因:
舵机电流不够,需要给舵机供给足够的电流。您可以通过调整电源的输出电流来解决这个问题。
舵机电压不够,A0090舵机的额定工作电压为6V,如果供电电压不足6V,会导致输出扭矩不足。
舵机控制信号不稳定,需要优化舵机控制算法。
关于怎么给每个舵机分到1A的电流,PCA9685舵机控制器的供电口1和口2分别用于舵机控制电路的电源和器件电源。如果您想要给每个舵机分到1A的电流,建议使用20A的BEC模块来提供电源,而且PCA9685控制器的供电口1和供电口2都应该连接到电源的正极,以确保每个舵机都能获得足够的电流。如果还不行,您可以增加电源模块的输出电流或添加分配器板来提供更稳定的电源。
关于舵机坏的频繁问题,可能是因为以下原因:
舵机经常被拖到超负荷状态,导致损坏。建议控制舵机的运动范围,以避免不必要的堵转。
舵机电流不够,如果舵机运行时需要的电流大于PCA9685控制器的输出电流,则可能会损坏舵机。
PCA9685控制器控制信号不稳定,可能导致舵机在工作时不稳定,并引起损坏。
注:以下代码可供参考
import smbus
import time
bus = smbus.SMBus(1)
PCA9685_ADDRESS = 0x40
MODE1 = 0x00
MODE2 = 0x01
SUBADR1 = 0x02
SUBADR2 = 0x03
SUBADR3 = 0x04
ALLCALLADR = 0x05
PRESCALE = 0xFE
LED0_ON_L = 0x06
LED0_ON_H = 0x07
LED0_OFF_L = 0x08
LED0_OFF_H = 0x09
ALL_LED_ON_L = 0xFA
ALL_LED_ON_H = 0xFB
ALL_LED_OFF_L = 0xFC
ALL_LED_OFF_H = 0xFD
class PCA9685():
def __init__(self, address=PCA9685_ADDRESS):
self.address = address
self.write_byte(MODE1, 0x00)
def write_byte(self, reg, value):
bus.write_byte_data(self.address, reg, value)
def read_byte(self, reg):
return bus.read_byte_data(self.address, reg)
def set_pwm_freq(self, freq):
prescaleval = 25000000.0
prescaleval /= 4096.0
prescaleval /= float(freq)
prescaleval -= 1.0
prescale = int(prescaleval + 0.5)
oldmode = self.read_byte(MODE1)
newmode = (oldmode & 0x7F) | 0x10
self.write_byte(MODE1, newmode)
self.write_byte(PRESCALE, prescale)
self.write_byte(MODE1, oldmode)
time.sleep(0.005)
self.write_byte(MODE1, oldmode | 0x80)
def set_pwm(self, channel, on, off):
self.write_byte(LED0_ON_L + 4 * channel, on & 0xFF)
self.write_byte(LED0_ON_H + 4 * channel, on >> 8)
self.write_byte(LED0_OFF_L + 4 * channel, off & 0xFF)
self.write_byte(LED0_OFF_H + 4 * channel, off >> 8)
def set_servo_angle(channel, angle):
angle = max(angle, 0)
angle = min(angle, 180)
PWM_FREQ = 50.0
PWM_SCALE = (1.0 / PWM_FREQ) * 4096.0
duty_cycle = (angle / 180.0) * PWM_SCALE + PWM_SCALE / 20.0
pwm.set_pwm(channel, 0, int(duty_cycle))
if __name__ == "__main__":
pwm = PCA9685()
pwm.set_pwm_freq(50)
set_servo_angle(0, 90) # 设置0号舵机角度为90度
如果我的回答解决了您的问题,请采纳!
该回答引用于gpt与OKX安生共同编写:
根据您提供的信息,我可以看出您的舵机不够强,而且容易受损。
以下是一些建议以帮助您解决这些问题: