Вот мой код тестирования:
from periphery import PWM
import time
# Open PWM channel 0, pin 0
pwm = PWM(0,0)
# Set frequency to 1 kHz
pwm.frequency = 50
# Set duty cycle to 75%
pwm.duty_cycle = 0.02
pwm.enable()
print(pwm.period)
print(pwm.frequency)
print(pwm.enabled)
# Change duty cycle to 50%
pwm.duty_cycle = 0.05
pwm.close()
Проблема в этой части:
# Open PWM channel 0, pin 0
pwm = PWM(0,0)
Я вижу вывод при работе PWM(0,0)
PWM(0,1)
PWM(0,2)
но я получаю сообщение об ошибке при попытке выполнить следующее:
PWM(1,1)
PWM(2,2)
mendel@elusive-jet:/sys/class/pwm$ sudo python3 /usr/lib/python3/dist-packages/edgetpuvision/testPWM.py
OSError: [Errno 19] No such device
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.5/dist-packages/periphery/pwm.py", line 69, in _open
f_export.write("%d\n" % pin)
OSError: [Errno 19] No such device
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/edgetpuvision/testPWM.py", line 5, in <module>
pwm = PWM(1,1)
File "/usr/local/lib/python3.5/dist-packages/periphery/pwm.py", line 44, in __init__
self._open(channel, pin)
File "/usr/local/lib/python3.5/dist-packages/periphery/pwm.py", line 71, in _open
raise PWMError(e.errno, "Exporting PWM pin: " + e.strerror)
periphery.pwm.PWMError: [Errno 19] Exporting PWM pin: No such device
На основании документа, полученного от Coral и сайта библиотеки:
https://coral.withgoogle.com/tutorials/devboard-gpio/
https://github.com/vsergeev/python-periphery
The
PWM(1,1)
PWM(2,2)
должно было работать без проблем, я вижу, что существуют следующие каталоги:
"\sys\class\pwm\pwmchip0"
"\sys\class\pwm\pwmchip1"
"\sys\class\pwm\pwmchip2"
В исходном коде python-периферии
https://github.com/vsergeev/python-periphery/blob/master/periphery/pwm.py
он должен получить путь следующим образом:
PWM(1,1) ===> /sys/class/pwm/pwmchip1/pwm1
, если pwm1
не существует, он должен вызвать export
для его генерации.
Итак, мой главный вопрос:
- Что такое
channel
и pin
и как они используются?
- Почему я не могу заставить ШИМ (1,1) ШИМ (2,2) работать?
Заранее спасибо.
--------------- 2019.4.2 Обновление --------------------
Я сам разобрался с предыдущим ответом (и спасибо всем, кто оказал помощь).
Но, как вы можете видеть из моего собственного ответа, я все еще не могу заставить ШИМ работать, поскольку он не выдает стабильное напряжение. (Вы можете проверить более подробно ниже).
В настоящее время я сталкиваюсь с другой проблемой, в которой выходное напряжение не является стабильным вообще. Итак, вот что я сделал для проверки:
Я настроил Raspberry Pi 3+ Model B
и EdgeTPU Coral Board
с 50hz
ШИМ с рабочим циклом 5%
. Поскольку оба устройства имеют выход GPIO 3,3 В, моя теория такова, что их выход должен быть одинаковым, но это не так.
Вот напряжение, измеренное с помощью платы Arduino UNO: Pi против EdgeTPU . (Примечание: все напряжение должно делиться на 10). Вы можете видеть четкую схему (PWM) на выходе Pi, колеблющуюся около 1.8v. но если вы посмотрите на выход EdgeTPU, вы увидите, что напряжение повсюду и оно намного ниже (1,1 В против 1,8 В).
мне явно что-то не так с выходом EdgeTPU PWM, поэтому я продолжил исследование. узнал из (ограниченного) документа , там написано
Все выводы GPIO имеют резистор 90 кОм внутри iMX8M SOC, который
используется по умолчанию во время загрузки, за исключением выводов I2C, которые
вместо этого имейте подтягивание до 3.3V на SOM. Тем не менее, все это может быть
изменено с наложением дерева устройств, которое загружается после загрузки .
Что наводит меня на мысль, что 90k pull-down resistor
может иметь более низкое выходное напряжение из-за этой формулы V=IR
. Итак, я думаю изменить device tree overlay
при загрузке в соответствии с инструкциями. но, угадайте что, нет никаких документов о том, как это изменить, кроме следующей строки из файла overlays.txt
:
# List of device tree overlays to load. Format: overlay=<dtbo name, no extenstion> <dtbo2> ...
overlay=
Я искал повсюду, нет документов относительно того, как следует настраивать наложение дерева устройств Mendel Linux. Итак, я в настоящее время застрял, если вы знаете ответ, пожалуйста, поделитесь им, я бы очень признателен.
Я также поделюсь этим вопросом с командой поддержки кораллов, чтобы узнать, получат ли они мне какой-либо ответ. (К вашему сведению, я отправил им что-то назад, когда опубликовал исходный вопрос, пока ничего от них не услышал) Даже на их сайте написано We try to respond to inquiries within one business day — but often you'll get a response even quicker, usually a few hours.
) так что, пожелай мне удачи. Будет держать этот ответ обновленным, если услышите что-нибудь назад.
Вот отрывок / вопрос, который я хотел бы передать Google / Google Cloud / Google EdgeTPU / Google Coral Board команды также:
- Почему для реализации GPIO в качестве библиотеки по умолчанию выбрана python-периферия
а ШИМ?
- Зачем выбирать Mendel Linux в качестве ОС по умолчанию, если нет сайта / документа или какого-либо другого вида, который можно найти?