Как использовать Raspberry Pi 4B для отправки сигналов ШИМ на ESC для управления подводными двигателями?

Автор публикации: Fengyukun, дата:

Используйте ESC: APISQUEEN 24V 100A ESC
Руководство по эксплуатации ESC 100A: https://cdn.shopify.com/s/files/1/0621/5493/2452/files/100A.pdf?v=1700410535

1: Разблокировать ESC

Нейтральный сигнал остановки является сигналом разблокировки.
При использовании сигнала частотой 50 Гц период сигнала составляет 20 мс.
Процент в инструкции относится к проценту ширины импульса управления ШИМ, а не к фактическому рабочему циклу сигнала ШИМ (здесь легко понять неправильно).
Тогда нейтральный сигнал остановки будет:
Рабочий цикл 75%, фактический рабочий цикл 7,5%: 1,5 мс (1,475–1,525 мс);

импортный пигпио
Время импорта

PI = pigpio.PI() #Создаем объект pigpio
LED_PIN = 18 #Определите порт GPIO, к которому подключен светодиод
PWM_FREQUENCY = 50 #Определить частоту ШИМ (Гц)
ШИМ_диапазон = 1000
Определите рабочий цикл ШИМ, диапазон значений: 0 (2) 55,
π. set_mode(LED_PIN, pigpio.OUTPUT) #Устанавливаем порт GPIO в режим вывода
π. set_PWM_ Frequency(LED_PIN, PWM_FREQUENCY) #Установить частоту ШИМ
π. set_PWM_range(LED_PIN, PWM_range) #Установить диапазон 1000

π. set_pwm_dutycycle (LED_PIN, 75) #Set PWM рабочий цикл 75/1000= 7,5%
Time.sleep(3) #Задержка 3 секунды для успешной разблокировки

2. Управление ЭКУ

Рабочий цикл 75 %: Остановитесь, когда фактический рабочий цикл составит 7,5 % ~ 1,5 мс (между 1,475 мс ~ 1,525 мс);
Рабочий цикл 50–75 %: фактический рабочий цикл 5–7,5 %, 1–1,5 мс в обратном направлении;
Рабочий цикл 100 %: фактический рабочий цикл 7,5–10 % 1,5–2 мс вперед

π. set_PWM_dutycycle (LED_PIN, 100)
#Вперед: 7,5% ~ 10% Чем выше рабочий цикл, тем выше скорость движения вперед.
время.сон(15)

π. set_PWM_dutycycle (LED_PIN 60)
#Reverse: Чем ближе рабочий цикл к 5%, тем быстрее скорость заднего хода.
время.сон(5)

π. set_PWM_dutycycle (LED_PIN, 75)
#рабочий цикл
время.сон(5)

3. Отладка


Во время отладки вы можете использовать осциллограф, чтобы проверить правильность формы сигнала:
Например, на рисунке ниже показан сигнал остановки ШИМ, который я начал отправлять.
Амплитуда напряжения составляет 3,3 В, период — 20 мс, а фактический рабочий цикл — 7,5%, все правильно.
Но я все еще не могу разблокировать ESC, потому что в форме сигнала слишком много шума и помех.
Вначале я использовал RPi. GPIO, затем вместо этого я использовал библиотеку pigpio для отправки аппаратного ШИМ-сигнала для решения проблемы.

4. Пример кода:


импортный пигпио
Время импорта

PI = pigpio.PI() #Создаем объект pigpio
LED_PIN = 18 #Определите порт GPIO, к которому подключен светодиод.
PWM_FREQUENCY = 50 #Определить частоту ШИМ (Гц)
ШИМ_диапазон = 1000
Определите рабочий цикл ШИМ, диапазон значений: 0 (2) 55,
π. set_mode(LED_PIN, pigpio.OUTPUT) #Устанавливаем порт GPIO в режим вывода
π. set_PWM_ Frequency(LED_PIN, PWM_FREQUENCY) #Установить частоту ШИМ
π. set_PWM_range(LED_PIN, PWM_range) #Установить диапазон 1000

π. set_pwm_dutycycle (LED_PIN, 75) #Set PWM рабочий цикл 75/1000= 7,5%
Time.sleep(3) #Задержка 3 секунды для успешной разблокировки

π. set_PWM_dutycycle (LED_PIN, 100)
#Вращение вперед: рабочий цикл 7,5–10%, чем больше рабочий цикл, тем выше скорость движения вперед.
время.сон(15)

π. set_PWM_dutycycle (LED_PIN 60)
Чем ближе рабочий цикл к 5%, тем выше скорость реверса.
время.сон(5)

π. set_PWM_dutycycle (LED_PIN, 75)
#рабочий цикл
время.сон(5)


Поделиться записью



← Более старые записи Более новые записи →


Комментариев: 0

Комментировать