Приведение в действие Hobbywing Skywalker 50A-UBEC ESC с Arduino CNC Shield

Мне нужно управлять бесщеточным двигателем, подключенным к этому ESC, используя Arduino CNC Shield V3.00 и Grbl 0.9 j.

Я подключил черный провод ESC к GND от экрана, а белый провод ESC-к Z+ пределу экрана (конечному упору).

Затем я проверил, подключив все, но оставив ESC без питания, отправив несколько команд M3 S*, где 0 <= * <= 1000, а затем включив ESC, но ничего не произошло.

, 👍0

Обсуждение

очень интересный пост, но, к сожалению, работает только для ATMEGA2560: справочная строка: #ifdef CPU_MAP_ATMEGA2560 любое предложение сделать это возможным также для чипа ATMEGA328? это было бы очень полезно для большинства владельцев Arduino UNO+GRBL Shield. ТКС, @Riccardo


1 ответ


2

После долгих исследований я выяснил, что выходная частота вращения шпинделя является ШИМ-сигналом, в то время как ESC нуждается в сигнале PPM для управления. Несмотря на это, это специфический сигнал PPM, который на самом деле выглядит как ШИМ, поэтому его можно использовать.

Проблема в том, что вместо того, чтобы управляться рабочим циклом, на самом деле им управляет количество времени, в течение которого каждый импульс остается на высоком уровне, которое зависит от периода, обратного частоте. Короче говоря, частота слишком высока.

Мне удалось изменить частоту, используемую grbl, и найти ту, которая работает. Я не знаю, позволяет ли эта частота управлять всем диапазоном дроссельной заслонки, но для моего приложения, которое не требует очень строгих оборотов в минуту, этого было достаточно. Вот шаги (некоторые шаги уже объяснены в другом месте):

  1. Импортируйте библиотеку grbl в Arduino IDE.
  2. Узнайте, где была установлена библиотека, и отредактируйте grbl/spindle_control.c, строки 89 и 94.
  3. Измените 0x02 на 0x05. Сохраните и закройте файл.
  4. Скомпилируйте и загрузите библиотеку в Arduino Uno.
  5. Подключите все, но оставьте ESC без питания.
  6. Отправьте M3 S0 (это ноль).
  7. Включите ESC.
  8. Вы должны услышать 123 сигнала (три звуковых сигнала разной частоты). Затем он будет продолжать время от времени подавать звуковой сигнал — я понятия не имею, почему... Через несколько минут все должно было прекратиться.
  9. Отправьте S600. Он должен начать вращаться. Если это не так, сначала отправьте более низкие значения от 0 до 600.
  10. Отправьте S500 на остановку.
,