Почему ширина импульса моего сервопривода RPIO отключена в 10 раз? - PullRequest
2 голосов
/ 02 апреля 2020

Я работаю над управлением моторами с помощью Raspberry Pi. Я использую библиотеку RPIO, чтобы дать мне точное время, которое мне нужно. Я не использую RPi.GPIO. Когда я запускаю этот код:

from RPIO import PWM
from time import sleep

servo = PWM.Servo()

# https://pythonhosted.org/RPIO/pwm_py.html
# BCM GPIO numbering
# From Arduino Servo library, standards are:
# min is 544, max is 2400  
# But for RPIO need to be in multiples of 10us

# Fully left
servo.set_servo(17, 540)

sleep(5)

#Middle
servo.set_servo(17, 1470)

sleep(5)

#Full right
servo.set_servo(17, 2400)

#Give it time to move to last position before turning off
sleep(1)

# Clear servo
servo.stop_servo(17)

Сервопривод в фунтах достигает своего минимума, потому что импульсы, которые он выдает, с коэффициентом 10. Выходной сигнал на терминале выглядит следующим образом:

PW increments:  10us
Initializing channel 0...
Requesting 139264 bytes
mem_ref 12
bus_addr = 4265472000
virtbase 0x764b6000
after init virtbaseadd_channel_pulse: channel=0, gpio=17, start=0, width=54
init_gpio 17
add_channel_pulse: channel=0, gpio=17, start=0, width=147
add_channel_pulse: channel=0, gpio=17, start=0, width=240
clear_channel_gpio: channel=0, gpio=17
shutting down dma channel 0
clear_channel: channel=0
close mail box handle start
close mail box handle returned---------------
close mail box handle finish--------------- 

В отличие от ширины импульса 540, я повелел в первый раз, а 1470 - во второй раз.

Сервопривод работал, как и ожидалось, один раз. Но я ничего не изменил и перезагрузил машину, и теперь она делает это. Другие ошибки, с которыми я сталкиваюсь, это то, что я должен запускать скрипт python от имени sudo, чтобы библиотека RPIO распознала, что он работает на pi. Пожалуйста помоги. Я в своем уме и заканчиваю этим.

ps Я не могу просто умножить аргументы на 10, потому что для импульсов свыше 2 мс библиотека считает, что значение 20000, которое я посылаю, длиннее, чем весь цикл .

...