Управление драйвером BLDC по rs232
Управление драйвером BLDC по rs232
Что есть:
BLDC мотор с датчиками холла.
Инкрементальный энкодер на одном валу с мотором.
Драйвер BLDC мотора KYDBL4830-1E
Драйвер поддерживает Аналоговое управление, ШИМ, CANOPEN, rs232, работу с обратной связью совместно с энкодером.
Нано.
Дисплей LCD1602.
преобразователь UART-rs232.
Что хочется:
Чтоб Нано отправляла команды на драйвер (старт, стоп, скорость вращения) и получала реальную скорость с энкодера и ошибку PID регулирования для отображения на дисплее.
Описание команд драйвера есть. Например запрос RPM от энкодера:
S - Read Encoder Speed RPM
Reports the actual speed measured by the encoders as the actual RPM value.
Syntax: ?S
Reply: S =vv
Where: vv = speed in RPM
Подскажите как в FlProg правильно оформить отправку\получение этому драйверу команд?
подозреваю что надо использовать блоки отправки\получения переменной в UART, но как именно не соображу.
ну или пните в нужную сторону....
Форум и хелп курю третий день но сам толком разобраться не смог
BLDC мотор с датчиками холла.
Инкрементальный энкодер на одном валу с мотором.
Драйвер BLDC мотора KYDBL4830-1E
Драйвер поддерживает Аналоговое управление, ШИМ, CANOPEN, rs232, работу с обратной связью совместно с энкодером.
Нано.
Дисплей LCD1602.
преобразователь UART-rs232.
Что хочется:
Чтоб Нано отправляла команды на драйвер (старт, стоп, скорость вращения) и получала реальную скорость с энкодера и ошибку PID регулирования для отображения на дисплее.
Описание команд драйвера есть. Например запрос RPM от энкодера:
S - Read Encoder Speed RPM
Reports the actual speed measured by the encoders as the actual RPM value.
Syntax: ?S
Reply: S =vv
Where: vv = speed in RPM
Подскажите как в FlProg правильно оформить отправку\получение этому драйверу команд?
подозреваю что надо использовать блоки отправки\получения переменной в UART, но как именно не соображу.
ну или пните в нужную сторону....
Форум и хелп курю третий день но сам толком разобраться не смог
Управление драйвером BLDC по rs232
.
Последний раз редактировалось Nikan 24 мар 2023, 00:09, всего редактировалось 1 раз.
Управление драйвером BLDC по rs232
есть документация.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Управление драйвером BLDC по rs232
.
Последний раз редактировалось Nikan 24 мар 2023, 00:08, всего редактировалось 1 раз.
Управление драйвером BLDC по rs232
Так уже рулил. Рулится!
Но как ардуину заставить рулить?
Например где в штатном блоке отправки переменной в uart указывать индекс команды тот что с вопросом и как разобрать ответ, отделить индекс и значение?
И ещё, в терминале, отправляю команду получаю ответ, далее эта команда шлется в автомате с переодичностью пол секунды без меня. Ответы тоже приходят. Продолжается это до отправки новой команды.
Может надо терминал как-то настроить...
Это не проблема. ESP32 есть.
Дело не в контроллере а в принципе
Управление драйвером BLDC по rs232
.
Последний раз редактировалось Nikan 24 мар 2023, 00:08, всего редактировалось 1 раз.
Управление драйвером BLDC по rs232
Результаты 3-х недельной борьбы с китайским драйвером:
1. Отправлять команды от ESP32 получилось. В принципе в этой части ничего сложного. Драйвер команды понимает, мотор крутится как надо. Ответы отправляются в сторону ESP-хи.
2. С получением ответов и телеметрии - беда:
Скорее всего я чего то не понимаю.
Для тестирования использовал ESP32 DEVKIT V1.
Схема такая - Команды из Serial-0 (Монитор компорта) отправляются в Serial-2 (Rx соединен с Tx) далее эта команда возвращается в Serial-0 на монитор компорта. В таком виде команда возвращается в монитор по одному символу.
Отправляю
S=3000
Получаю
S
=
3
0
0
0 разобрать ответ с помощью блоков поиска подстроки не получилось.
В другом варианте, с использованием блока Стек как предложено в видео
Отправка: S=1050
Ответ: 1050 Отправка: S=148
Ответ: 148Э
Отправка: S=50
Ответ: 50Э+ Отправка: S=0
Ответ: 0ЭS= Как победить некорректное отображение пока не придумал.
Если есть у кого идеи по этому поводу, буду очень признателен!
1. Отправлять команды от ESP32 получилось. В принципе в этой части ничего сложного. Драйвер команды понимает, мотор крутится как надо. Ответы отправляются в сторону ESP-хи.
2. С получением ответов и телеметрии - беда:
Скорее всего я чего то не понимаю.
Для тестирования использовал ESP32 DEVKIT V1.
Схема такая - Команды из Serial-0 (Монитор компорта) отправляются в Serial-2 (Rx соединен с Tx) далее эта команда возвращается в Serial-0 на монитор компорта. В таком виде команда возвращается в монитор по одному символу.
Отправляю
S=3000
Получаю
S
=
3
0
0
0 разобрать ответ с помощью блоков поиска подстроки не получилось.
В другом варианте, с использованием блока Стек как предложено в видео
Все работает, но так как размер стека фиксирован, то значения получаются не корректными. Лучше всего это видно при выводе ответов на дисплей LCD 1602
Отправка: S=1050
Ответ: 1050 Отправка: S=148
Ответ: 148Э
Отправка: S=50
Ответ: 50Э+ Отправка: S=0
Ответ: 0ЭS= Как победить некорректное отображение пока не придумал.
Если есть у кого идеи по этому поводу, буду очень признателен!
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Управление драйвером BLDC по rs232
у вас в блоке прием из uart стоит галка - очистка буфера при приеме новых данных,
по этому каждый принятый портом байт стирает предыдущий,
поставте галку накопление,
только не забывайте чистить буфер
Управление драйвером BLDC по rs232
А откуда брать сигнал для очистки буфера?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Управление драйвером BLDC по rs232
.
Последний раз редактировалось Nikan 24 мар 2023, 01:17, всего редактировалось 1 раз.
Управление драйвером BLDC по rs232
Вот в таком раскладе значение прилетает, но фильтрация по "S=" не срабатывает.
Отправляю S=3000
Получаю 3000
Отправляю S=20
Получаю 20
Отправляю D=3000
Получаю =3000 Хотя ничего не должен получить, т.к. в строке отсутствует "S="
Где ошибка, помогите!
Отправляю S=3000
Получаю 3000
Отправляю S=20
Получаю 20
Отправляю D=3000
Получаю =3000 Хотя ничего не должен получить, т.к. в строке отсутствует "S="
Где ошибка, помогите!
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Управление драйвером BLDC по rs232
попробуй вот такEvin писал(а): 20 ноя 2019, 16:57 Вот в таком раскладе значение прилетает, но фильтрация по "S=" не срабатывает.
Управление драйвером BLDC по rs232
[ref]Evin[/ref], ну так всё логично. На выходе Index "-1", если подстрока отсутствует. -1+2=1. Что у вас и принимает.
Вам нужно использовать выход, который указывает наличие подстроки. И уже он должен разрешать принимать или нет.
Отправлено спустя 3 минуты 20 секунд:
Думаю примерно так
Вам нужно использовать выход, который указывает наличие подстроки. И уже он должен разрешать принимать или нет.
Отправлено спустя 3 минуты 20 секунд:
Думаю примерно так
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Управление драйвером BLDC по rs232
.
Последний раз редактировалось Nikan 24 мар 2023, 01:17, всего редактировалось 1 раз.
Управление драйвером BLDC по rs232
Отправка S=3000
Прилетает 3000
Отпр. S=20
Прилетает 20
Если в отправке нет "S=" ничего не хочу видеть.
Прилетать в порт будет много разных параметров. S= скорость вращения (может быть отрицательной), А= ток, V= напряжение и ещё штук пять.
Одно значение- одна строка. Конец строки '\r'
Кроме того будут '+' прилетать как подтверждение команды, но это другая песня.
Как-то так...
Как-то так
Управление драйвером BLDC по rs232
.
Последний раз редактировалось Nikan 24 мар 2023, 01:16, всего редактировалось 1 раз.
Управление драйвером BLDC по rs232
Вот выдержка из описания протокола драйвера мотора:
Для команд, где не ожидается ответа, таких как установка скорости, контроллер
выдаст символ «плюс» (+), за которым следует возврат каретки после каждой команды как подтверждение...
...Контроллер использует простой протокол связи, основанный на символах ASCII. Команды не чувствительны к регистру. Команды заканчиваются возвратом каретки (Hex 0x0d, ‘\ r’).
Для команд, где не ожидается ответа, таких как установка скорости, контроллер
выдаст символ «плюс» (+), за которым следует возврат каретки после каждой команды как подтверждение...
...Контроллер использует простой протокол связи, основанный на символах ASCII. Команды не чувствительны к регистру. Команды заканчиваются возвратом каретки (Hex 0x0d, ‘\ r’).
Управление драйвером BLDC по rs232
.
Последний раз редактировалось Nikan 24 мар 2023, 01:16, всего редактировалось 1 раз.
Управление драйвером BLDC по rs232
Нет. Отправил S=3000 получил 3000
Отправлено спустя 5 минут 9 секунд:
Хорошо. Опишу полный диалог.
Отправляю запрос о текущей скорости драйверу:
?S
Прилетает ответ
S=3000
Далее значение надо записать в переменную rpm и отправить на экран.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость