• 折腾了2个晚上无刷电调(ESC),电机终于转起来了,特此记录一下


    昨天折腾了一个晚上电机就是一直每隔两秒钟响一次,意思就是没有收到任何油门信号。 我只把电调的信号线接到树莓派上的pwm引脚上,只接了这一根线。所有问题都因为这一根线引的货。

    切记:一定要把电调信号线的gnd线接上要不然根本没法设定行程。

    要注意几个问题:

    1.首次接通电调必须设定行程,行程设定过程中可能会出现连续急促的 滴,滴,滴,滴,大概有N声,这是因为油门行程设置最低点的时候油门最低点的值太低了,我这里用30的占空比来设定最低行程

    2.最好使用400hz频率来设置,因为400hz的周期是2.5ms ,而电调的中油门的范围是1.0-20ms之间,请看好了,是之间。也就是1.1-1.9ms 所以400hz频率是最接近这个范围的,当然你也可以测试更高的频率.

    3.电调必须接上电机,然后在通电,单接电调是无法调试的(写给小白)

    4.行程设定过程中,是必须限设置油门上限,然后在设置油门下限。油门上线设置成功会有2声连续的"哔哔 ",然后这时候是设置油门下限,设置成功会有两声连续"哔哔"和一声长的哔,到此设定完成

    motor_pin = 12;
    GPIO.setup(motor_pin, GPIO.OUT);

    motor = GPIO.PWM(motor_pin, 400)

    def myprint(msg):
        sys.stdout.write(msg+" ");


    def changePower(power):
        motor.ChangeDutyCycle(0.002/(1.0/power*100))

    motor.start(0)

    #最高油门设定,这里最高油门的占空比是96
    motor.ChangeDutyCycle(96)
    #changePower(90)
    time.sleep(3);
    myprint("hight is finish");

    #最低油门设定 占空比30
    motor.ChangeDutyCycle(30)
    #changePower(10)
    time.sleep(6);

    #motor.ChangeDutyCycle(0)
    #changePower(10)
    #time.sleep(3);

    myprint("low is finish");

    #设定完毕,测试油门,一点一点增加
    for dc in range(20, 80, 1):
        motor.ChangeDutyCycle(dc)
        myprint("dc:"+str(dc))
        time.sleep(0.3);

    #time.sleep(10)
    motor.stop()

  • 相关阅读:
    Leetcode:Convert Sorted List to Binary Search Tree
    Leetcode:Unique Binary Search Trees & Unique Binary Search Trees II
    Leetcode::Longest Common Prefix && Search for a Range
    Leetcode::Flatten Binary Tree to Linked List
    Leetcode::JumpGame
    leetcode power(x,n)
    Leetcode Letter Combinations of a Phone Number
    leetcode Reverse Nodes in k-Group
    leetcode Merge k Sorted Lists
    word ladder
  • 原文地址:https://www.cnblogs.com/raffeale/p/5585757.html
Copyright © 2020-2023  润新知