PCA9685舵机扩展板可以用脉宽信号控制电机360度连续旋转吗?
-
import time from pyb import Timer#导入引脚和定时器 from servo import Servos from machine import I2C,Pin inverse_left=False inverse_right=False i2c = I2C(sda=Pin('P5'), scl=Pin('P4')) servo = Servos(i2c, address=0x40, freq=50, min_us=650, max_us=2800, degrees=360) ain1 = Pin('P0', Pin.OUT_PP) ain2 = Pin('P1', Pin.OUT_PP)#控制第一个的方向 bin1 = Pin('P2', Pin.OUT_PP) bin2 = Pin('P3', Pin.OUT_PP)#控制第二个的方向 ain1.low() ain2.low() bin1.low() bin2.low() pwma = Pin('P7')#定义pwm pwmb = Pin('P8') tim = Timer(4, freq=1000) ch1 = tim.channel(1, Timer.PWM, pin=pwma) ch2 = tim.channel(2, Timer.PWM, pin=pwmb)#建立两个通道 ch1.pulse_width_percent(0) ch2.pulse_width_percent(0)#设置两个通道占空比为o def run(left_speed, right_speed): if inverse_left==True: left_speed=(-left_speed) if inverse_right==True: right_speed=(-right_speed) if left_speed < 0: ain1.low() ain2.high() else: ain1.high() ain2.low() ch1.pulse_width_percent(abs(left_speed))#占空比越大,小车速度越快 if right_speed < 0: bin1.low() bin2.high() else: bin1.high() bin2.low() ch2.pulse_width_percent(abs(right_speed))
-
代码是这样的,可为什么电机没反应,不转
-
调用函数后,不转
-
1,用示波器看波形,看PWM的频率,脉宽对不对。
2,检查连线,看电源对不对。
3,如果是电调控制的无刷电机,直接输出最大PWM是不行的,会进入电调的校准模式什么的,具体看电调的说明书。
-
还看到一个问题,
你的代码,没有死循环,只定义了函数,没有调用函数
-
@kidswong999 “频率允许在50ZH-432HZ,然后一般要给他一个0.5ms-2.5ms高电平才能转动。我的频率就配置为200HZ,在控制电机之前必须先要给电调设置一个时间的最大值和最小值。我让他的高电平时间控制在0.7-1.9ms”;需要控制高电平的持续时间,高电平持续时间怎么用代码实现?
-
@kidswong999 代码中是不是要考虑到控制启动无刷电机,无刷电机开始转的时候会先哔哔的响,该怎么实现?
-
@kidswong999 函数在main.py里面调用的,import car
while True:
car.run(100,100)
-
我之前用的电调,上电时PWM不能最大值。你的我不知道。
-
-
这是搭配的电调,中间细的三根线连在了舵机扩展版上,粗的两根线没有连接电源。 我怕粗的两根线连接上电源,细的三根线会输出电压烧坏板子。这方面合适不???
-
-
你的电调的电源,都没通电,怎么可能转。