Сервопривод Raspberry Pi не останавливается

Итак, я пытаюсь использовать сервопривод (Doman s0306d) с пи-камерой, попытался запустить этот скрипт, который я нашел для проверки двигателя, он начинает работать, но не останавливается, пока я вручную не отключу его от макета.

import RPi.GPIO as IO        # calling for header file for GPIO’s of PI
import time                           # calling for time to provide delays in program
IO.setwarnings(False)          # do not show any warnings
IO.setmode (IO.BCM)            # programming the GPIO by BCM pin numbers. (like PIN29 as‘GPIO5’)
IO.setup(19,IO.OUT)             # initialize GPIO19 as an output
p = IO.PWM(19,50)              # GPIO19 as PWM output, with 50Hz frequency
p.start(7.5)                             # generate PWM signal with 7.5% duty cycle
time.sleep(4)
for x in range(0,5):                                                       # execute loop forever                                    
        p.ChangeDutyCycle(7.5)                   # change duty cycle for getting the servo position to 90º
        time.sleep(1)                                      # sleep for 1 second
        p.ChangeDutyCycle(12.5)                  # change duty cycle for getting the servo position to 180º
        time.sleep(1)                                     # sleep for 1 second
        p.ChangeDutyCycle(2.5)                  # change duty cycle for getting the servo position to 0º
        time.sleep(1)                                    # sleep for 1 second
p.ChangeDutyCycle(0)
p.stop()
IO.cleanup()

Любые идеи ? Спасибо.


person Dawzer    schedule 01.06.2017    source источник


Ответы (1)


[РЕДАКТИРОВАТЬ] Сервопривод, который вы используете, является "непрерывным" сервоприводом, поэтому вам нужно задать ему нулевую скорость или настройку "СТОП" с шириной импульса 1500 мкс (согласно веб-сайту http://www.domanrchobby.com/content/?150.html). Я не использовал ШИМ на пи, но если проценты относятся к частоте пульса 50 Гц (интервал 20 мс), то это должно быть ваше центральное значение 7,5%. Вы должны убедиться, что сервопривод получает этот импульс, прежде чем ваш код выйдет.

[Оригинал] При выходе вы устанавливаете рабочий цикл на 0, что, вероятно, будет означать, что сервопривод не получает импульсов. Некоторые сервоприводы остановятся через некоторое время после того, как они перестанут получать импульсы, но некоторые сервоприводы (особенно цифровые сервоприводы, но не все) продолжат попытки достичь настройки, заданной последним полученным импульсом. Предложите вам оставить настройку на среднем диапазоне 7,5, которого, как вы знаете, может достичь сервопривод, и немного отложить перед очисткой.

person barny    schedule 01.06.2017
comment
См. правки, проверьте спецификацию производителя domanrchobby.com/content/?150.html - person barny; 02.06.2017