|
Диванный эксперт
|
||
Проект: Контроллер группы сервоприводов MG996R. Выбор МК из доступных. Ограничения этих МК22.06.2026, 05:28. Показов 3557. Ответов 70
Метки нет (Все метки)
Доброго времени суток.
Для DIY-проекта а-ля "робот-паук" есть необходимость управлять группой сервоприводов(12 штук). Предполагается использование MG996RУгол положения у сервопривода задается длительностью импульса(0.5-2.5 мсек, 50 гц). Сейчас используется плата на PCA9685, но с ней не получается достичь плавного движения про траектории - слишком низкое разрешение на нужных длительностях импульсов. Что я бы хотел сделать: получить специализированный контроллер для управления подобными сервоприводами. Нужна помощь в поиске вариантов реализации на имеющихся у меня МК.
Добавлено через 19 минут ШИМ контроллеры в чистом виде задействовать вряд ли получится: - нужно много каналов с раздельным управлением длительностью - длительность импульса намного меньше периода генерации импульсов. Таймеров тоже маловато на 12 каналов Из идей/мыслей: - Генерация импульса в одном "канале" не обязана быть синхронизирована с другими "каналами" - период генерации должен быть 20 мсек при макс длительности импульса в 2.5 мсек То есть получается, что один таймер, работающий с частотой 400 герц, в теории может обслуживать восемь каналов, но понадобится дополнительный OneShot-таймер с частотой около мегагерца. В RP есть интересная вещь - PIO, но количество их тоже ограничено и также нужно делить время между каналами. ESP пока не смотрел особо... Добавлено через 1 час 2 минуты На практике достичь мексимальной длительности импульса в 2.5 мсек не выйдет - будет чуть меньше, так как обработчик запуска ведомого таймера будет отнимать время. Несколько ведомых таймеров по RoundRobbin? - как вариант. "Мысли в слух"....
0
|
||
| 22.06.2026, 05:28 | |
|
Ответы с готовыми решениями:
70
Выбор МК для контроля сервоприводов Безвентиляторные частотные преобразователи для сервоприводов Управление сервоприводом |
|
4148 / 2726 / 433
Регистрация: 09.09.2017
Сообщений: 12,082
|
||||
| 24.06.2026, 18:40 | ||||
|
12 бит это 4096 отсчетов. 0.1 от 4096 отсчетов это 409.6 отсчетов. 410 положений сервы, дискретность 0,44 градуса. Какое у нее там аппаратное ограничение на разрядность не знаю, но интуиция подсказывает, что у дешевых "игрушечных" серв люфты съедят больше.
1
|
||||
|
Диванный эксперт
|
|||
| 24.06.2026, 18:54 [ТС] | |||
|
Но это навенрно больше от незнания особенностей конкретных МК.
0
|
|||
|
Windows must die
|
|||
| 24.06.2026, 18:58 | |||
Сообщение было отмечено Max Dark как решение
РешениеДобавлено через 1 минуту
1
|
|||
|
4148 / 2726 / 433
Регистрация: 09.09.2017
Сообщений: 12,082
|
||||
| 24.06.2026, 19:22 | ||||
|
Как вариант, мог случиться рассинхрон, если 50 Гц сервы и 50 Гц таймера недостаточно совпадали. Я не знаю какой там допуск. Или, скажем, в из-за бага в коде туда писалось что-то не то или не вовремя. Или, не менее дурацкое предположение, что для угла использовался 8-битный счетчик, который регулярно сбрасывался. Ладно, что-то меня понесло... --- В любом случае, вариант, когда интерполяцией значений занимается отдельный контроллер, все еще имеет смысл. Хотя ради теста можно одну серву расковырять и вывести сигнал с потенциометра на АЦП. Чтобы не на глазок оценивать, как оно там дергается, а отталкиваться от объективных данных. Если на МК, то просто берете камень с достаточным количеством каналов ШИМ - да хоть ту же stm-ку. Или то, что я уже описывал с реализацией ШИМ через DMA. Оно посложнее, зато хватит одного таймера.
0
|
||||
|
4148 / 2726 / 433
Регистрация: 09.09.2017
Сообщений: 12,082
|
||
| 24.06.2026, 19:24 | ||
Сообщение было отмечено Max Dark как решение
Решение
1
|
||
|
Диванный эксперт
|
|||
| 24.06.2026, 19:39 [ТС] | |||
PCA9685 задание длительности импульсов.Перенос части на МК пока только в планах. Это больше проект "jsut for fun" - поиграться со связкой SBC <-> МК, посмотреть как одну задачу можно сделать на разных МК. Добавлено через 8 минут Попробую так сделать.
0
|
|||
|
4148 / 2726 / 433
Регистрация: 09.09.2017
Сообщений: 12,082
|
|
| 24.06.2026, 19:52 | |
|
0
|
|
|
Windows must die
|
||||
| 24.06.2026, 20:18 | ||||
|
1
|
||||
|
343 / 135 / 10
Регистрация: 19.07.2024
Сообщений: 775
|
||
| 25.06.2026, 15:14 | ||
|
Ещё нужно указывать: С какой дискретностью эти 0.5 мсек нужно формировать? Если не нужно с дискретностью до такта CPU, то всё можно сделать в ISR. И почти на любой из ваших плат.
0
|
||
|
Диванный эксперт
|
||
| 25.06.2026, 19:50 [ТС] | ||
|
Но скорее всего такая точность не нужна. 1 мсек примерно равно 90º угла поворота, то есть 1º ~= 0.011 мсек.Центр диапазона - 1.5 мсек. ±90º == ±1 мсек
0
|
||
|
Диванный эксперт
|
|
| 26.06.2026, 07:40 [ТС] | |
|
С "BluePill" выходит как то так:
Осталось "начать и закончить": - разобаться с рассчетом периода таймеров и длительности импульсов - придумать как данные запихнуть "Мысли в слух" USB - сложновато, но более универсально выйдет(тем более пины под него заняты уже). SPI - не пробовал на стороне Линукса заводить. I2C - говорили про какие то проблемы в самом чипе есть... UART - Если задействовать ModBus RTU то может интересно получиться, но на имеючемся у меня SBC он уже занят под другое - нужно смотреть есть ли еще.
0
|
|
|
4148 / 2726 / 433
Регистрация: 09.09.2017
Сообщений: 12,082
|
||||||||||
| 26.06.2026, 10:55 | ||||||||||
|
Добавляем сюда, что сервы, скорее всего, "игрушечные", не рассчитанные под серьезное применение. То есть неизбежно будут люфтить. Собственно, рассчитывать больше чем на градус точности я бы не стал. Когда такое делают на Ардуине - понятно, там других вариантов нет. Но в случае ТС любое использование аппаратных средств будет лучше. Хоть таймеров, хоть DMA. Правда, использование DMA в таком режиме не слишком очевидно, если у ТС недостаточно опыта, это займет время. Да и смысла сейчас нет, раз нашлись нормальные таймеры. Хотя я тут посмотрел распиновку одноплатника. А там всего полтора UART выведено. UART2 (отладочный?) и UART4. Зато вот I2C куча... --- В общем, лично я бы воспользовался USB. Если чего-то будет не хватать, на том же контроллере можно будет реализовать переходник. Но я-то с USB довольно много разбирался. Впрочем, вдруг вы готовы тоже потратить время на изучение USB, мало ли...
1
|
||||||||||
|
343 / 135 / 10
Регистрация: 19.07.2024
Сообщений: 775
|
||
| 26.06.2026, 11:30 | ||
|
Если "нужна": Тогда берём МК, у которого таймеры работают на частоте >=200МГц и выделяем по таймеру на каждый ШИМ. Никакие колхозы на прерываниях или даже DMA+ногодрыге требуемой точности не обеспечат даже близко. Но 200МГц тут даже XMC4xxx не хватит, надо искать что-то серьёзнее. Если "не нужна": Тогда всё решается элементарно на любом МК (из вашего списка я бы разве что ESP в этом случае выкинул, остальные должны справиться легко). Скажем - требуемая дискретность == 100мкс. Тогда запускаем периодическое прерывание с частотой 10кГц и в нём программно рулим всеми ШИМами. Да - джиттер каждого ШИМ будет приличный (может даже сотни тактов), но он будет заведомо кратно ниже дискретности.
1
|
||
|
4148 / 2726 / 433
Регистрация: 09.09.2017
Сообщений: 12,082
|
||
| 26.06.2026, 13:45 | ||
|
Для наглядности: если привязать к такой серве палку длиной километр и повернуть на один шаг, конец палки сдвинется на 8мм. Вот в 5 мкс поверить еще можно. Это 9 бит точности или пол-градуса. Еще раз говорю: у вас точность определяется не дискретностью мозгов сервы, а механикой. Какие люфты у нее, какие люфты у вас.
1
|
||
|
Диванный эксперт
|
||||
| 26.06.2026, 18:56 [ТС] | ||||
st.com на VPN тоже ругается...Если примерно: - определить на какой частоте работают таймеры( TIM[2..4] вроде бы на APB1 сидят... Нужно уточнять, а с доступом к докам проблемы)- посчитать делители для частоты == 50Hz - сами таймеры имеют счетчики 16 бит - длительность импульса рассчитывается примерно так же как и для PCA9685
0
|
||||
|
4148 / 2726 / 433
Регистрация: 09.09.2017
Сообщений: 12,082
|
||
| 26.06.2026, 20:51 | ||
|
1
|
||
|
Диванный эксперт
|
|
| 26.06.2026, 21:51 [ТС] | |
|
По таймерам нашел документ "AN4776 - General-purpose timer cookbook for STM32 microcontrollers"
Сижу, изучаю... Нашел datasheet на MCU, в нем "Clock tree", но пока что не понял какая же частота у таймера выходит при моих настройках.
0
|
|
| 26.06.2026, 21:51 | |
|
Сервопривод Belimo NV24-MFT Управление множеством сервоприводов По поводу сервоприводов для человекоподобной руки Контроль сервопривода (servo library)
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|