Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2551 / 2065 / 971
Регистрация: 09.10.2013
Сообщений: 4,904
Записей в блоге: 4

Проект: Контроллер группы сервоприводов MG996R. Выбор МК из доступных. Ограничения этих МК

22.06.2026, 05:28. Показов 3459. Ответов 70
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.

Для DIY-проекта а-ля "робот-паук" есть необходимость управлять группой сервоприводов(12 штук).

Предполагается использование MG996R

Угол положения у сервопривода задается длительностью импульса(0.5-2.5 мсек, 50 гц).

Сейчас используется плата на PCA9685, но с ней не получается достичь плавного движения про траектории - слишком низкое разрешение на нужных длительностях импульсов.

Что я бы хотел сделать: получить специализированный контроллер для управления подобными сервоприводами.

Нужна помощь в поиске вариантов реализации на имеющихся у меня МК.
  • stm32f103 / BluePill
  • gd32f103 / BluePill
  • stm32f411 / BlackPill
  • RP2040 / RP Pico
  • RP2350 / RP Pico 2
  • ESP32 / ESP WROOM32

Добавлено через 19 минут
ШИМ контроллеры в чистом виде задействовать вряд ли получится:
- нужно много каналов с раздельным управлением длительностью
- длительность импульса намного меньше периода генерации импульсов.

Таймеров тоже маловато на 12 каналов

Из идей/мыслей:
- Генерация импульса в одном "канале" не обязана быть синхронизирована с другими "каналами"
- период генерации должен быть 20 мсек при макс длительности импульса в 2.5 мсек

То есть получается, что один таймер, работающий с частотой 400 герц, в теории может обслуживать восемь каналов, но понадобится дополнительный OneShot-таймер с частотой около мегагерца.

В RP есть интересная вещь - PIO, но количество их тоже ограничено и также нужно делить время между каналами.

ESP пока не смотрел особо...

Добавлено через 1 час 2 минуты
Цитата Сообщение от Max Dark Посмотреть сообщение
То есть получается, что один таймер, работающий с частотой 400 герц, в теории
Но это только в теории...

На практике достичь мексимальной длительности импульса в 2.5 мсек не выйдет - будет чуть меньше, так как обработчик запуска ведомого таймера будет отнимать время.

Несколько ведомых таймеров по RoundRobbin? - как вариант.

"Мысли в слух"....
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.06.2026, 05:28
Ответы с готовыми решениями:

Выбор МК для контроля сервоприводов
Добрый день новичок, хотелось бы услышать совет, какой мк на 32 бита приобрести (хочется сразу...

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

Управление сервоприводом
есть сервомашинка переделанная под постоянное вращение(убран реостат и ограничитель хода).....

70
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2551 / 2065 / 971
Регистрация: 09.10.2013
Сообщений: 4,904
Записей в блоге: 4
24.06.2026, 18:16  [ТС]
Студворк — интернет-сервис помощи студентам
По таймингам выходить как то так:


Только нужно "размножить" - всего нужно 12 "каналов"
0
 Аватар для COKPOWEHEU
4148 / 2726 / 433
Регистрация: 09.09.2017
Сообщений: 12,080
24.06.2026, 18:40
Цитата Сообщение от Eddy_Em Посмотреть сообщение
Но вот прежде, чем разрабатывать алгоритм "хождения", ТСу стоит исследовать динамику сервиков: ведь обратной связи не планируется, поэтому нужно точно знать минимальную угловую скорость под максимальной нагрузкой
Вот это лучше делать, когда железо будет готово. А то теоретизировать можно до бесконечности, а толку не будет.
Цитата Сообщение от Max Dark Посмотреть сообщение
На нужный диапазон длительности импульсов получается слишком грубая регулировка:
счетчик 12 бит, из них на задание длины импульса остается только 1/8.
Полный диапазон 2 мс от периода 20 мс составляет 0.1.
12 бит это 4096 отсчетов. 0.1 от 4096 отсчетов это 409.6 отсчетов. 410 положений сервы, дискретность 0,44 градуса. Какое у нее там аппаратное ограничение на разрядность не знаю, но интуиция подсказывает, что у дешевых "игрушечных" серв люфты съедят больше.
Цитата Сообщение от Max Dark Посмотреть сообщение
По таймингам выходить как то так:
Зачем? Почему вы не хотите переключать таймеры синхронно или около-синхронно? Не вижу, как разбиение интервала на 4 участка хоть на что-то положительно повлияет.
1
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2551 / 2065 / 971
Регистрация: 09.10.2013
Сообщений: 4,904
Записей в блоге: 4
24.06.2026, 18:54  [ТС]
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Полный диапазон 2 мс от периода 20 мс составляет 0.1.
Значит я ошибся в расчетах и причина "дерганности" движений в чем то другом.

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Зачем?
Попытка обойти ограничения в количестве таймеров.
Но это навенрно больше от незнания особенностей конкретных МК.
0
Windows must die
610 / 883 / 104
Регистрация: 23.11.2021
Сообщений: 5,174
Записей в блоге: 19
24.06.2026, 18:58
Лучший ответ Сообщение было отмечено Max Dark как решение

Решение

Цитата Сообщение от Max Dark Посмотреть сообщение
причина "дерганности" движений в чем то другом.
Возможно, ты выдаешь слишком большие смещения. Скажем, если нужно двигаться со скоростью 10 градусов в секунду, то за каждый такт (20мс) нужно поворачивать ротор на 0.2°. Но не факт, что серва будет за этим успевать...

Добавлено через 1 минуту
Цитата Сообщение от Max Dark Посмотреть сообщение
обойти ограничения в количестве таймеров.
Там нужно или 3 (если охота заморачиваться с тем, что ноги будут "делить" между собой таймеры), или 4 таймера всего-то!
1
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2551 / 2065 / 971
Регистрация: 09.10.2013
Сообщений: 4,904
Записей в блоге: 4
24.06.2026, 19:14  [ТС]
Цитата Сообщение от Eddy_Em Посмотреть сообщение
или 4 таймера всего-то!
То есть на 12 серв - 12 таймеров.

Делить все равно нужно получается.
0
 Аватар для COKPOWEHEU
4148 / 2726 / 433
Регистрация: 09.09.2017
Сообщений: 12,080
24.06.2026, 19:22
Цитата Сообщение от Max Dark Посмотреть сообщение
Значит я ошибся в расчетах и причина "дерганности" движений в чем то другом.
Вот это как раз проверяется легко. Берете одну серву и крутите ее между максимумом и минимумом сначала скачком, потом плавно.
Как вариант, мог случиться рассинхрон, если 50 Гц сервы и 50 Гц таймера недостаточно совпадали. Я не знаю какой там допуск. Или, скажем, в из-за бага в коде туда писалось что-то не то или не вовремя. Или, не менее дурацкое предположение, что для угла использовался 8-битный счетчик, который регулярно сбрасывался. Ладно, что-то меня понесло...
---
В любом случае, вариант, когда интерполяцией значений занимается отдельный контроллер, все еще имеет смысл.
Цитата Сообщение от Eddy_Em Посмотреть сообщение
Возможно, ты выдаешь слишком большие смещения.
Тогда бы серва просто прокрутилась до нужного угла и встала. А вот что возможно - если "плавное" разбиение слишком медленное. Задается очередной угол, серва быстро на него встает и замирает. Потом задается следующий угол, серва снова туда прыгает. И вот как с этим бороться, я не знаю.
Хотя ради теста можно одну серву расковырять и вывести сигнал с потенциометра на АЦП. Чтобы не на глазок оценивать, как оно там дергается, а отталкиваться от объективных данных.
Цитата Сообщение от Eddy_Em Посмотреть сообщение
Там нужно или 3 (если охота заморачиваться с тем, что ноги будут "делить" между собой таймеры), или 4 таймера всего-то!
Я так и не понял, ТС вот этим извращением на одноплатнике занимался (там и правда каналов ШИМ может не хватить) или это только планы на МК.
Если на МК, то просто берете камень с достаточным количеством каналов ШИМ - да хоть ту же stm-ку. Или то, что я уже описывал с реализацией ШИМ через DMA. Оно посложнее, зато хватит одного таймера.
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2551 / 2065 / 971
Регистрация: 09.10.2013
Сообщений: 4,904
Записей в блоге: 4
24.06.2026, 19:23  [ТС]
Что бы хоть как то ограничить догадки по характерситикам МК возьму плату "BluePill" на STM32F103C8

У самой пплаты часть ног МК уже занята и не все можно использовать.
0
 Аватар для COKPOWEHEU
4148 / 2726 / 433
Регистрация: 09.09.2017
Сообщений: 12,080
24.06.2026, 19:24
Лучший ответ Сообщение было отмечено Max Dark как решение

Решение

Цитата Сообщение от Max Dark Посмотреть сообщение
То есть на 12 серв - 12 таймеров.
Не 12 таймеров, а 12 каналов ШИМ. В той же stm32 у таймеров по 4 канала. У вас же период фиксированный, нет необходимости каждый канал настраивать независимо. Вам достаточно настроить все 3 таймера на период 20 мс, а дальше уже дергать только регистры сравнения.
1
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2551 / 2065 / 971
Регистрация: 09.10.2013
Сообщений: 4,904
Записей в блоге: 4
24.06.2026, 19:39  [ТС]
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Я так и не понял
На SBC программа, которая по I2C отправляет в PCA9685 задание длительности импульсов.

Перенос части на МК пока только в планах.

Это больше проект "jsut for fun" - поиграться со связкой SBC <-> МК, посмотреть как одну задачу можно сделать на разных МК.

Добавлено через 8 минут
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Вам достаточно настроить все 3 таймера на период 20 мс, а дальше уже дергать только регистры сравнения.
Спасибо.
Попробую так сделать.
0
 Аватар для COKPOWEHEU
4148 / 2726 / 433
Регистрация: 09.09.2017
Сообщений: 12,080
24.06.2026, 19:52
Цитата Сообщение от Max Dark Посмотреть сообщение
Спасибо.
Попробую так сделать.
Ждем, когда отпишетесь об успехах!
0
Windows must die
610 / 883 / 104
Регистрация: 23.11.2021
Сообщений: 5,174
Записей в блоге: 19
24.06.2026, 20:18
Цитата Сообщение от Max Dark Посмотреть сообщение
на 12 серв - 12 таймеров.
Нет! Один таймер имеет до четырех (а в некоторых случаях даже больше) ШИМ-выходов!
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Тогда бы серва просто прокрутилась до нужного угла и встала.
Это если в процессе движения не дать другое смещение в обратную сторону... А еще, если требовать от нее невозможного, тоже будет дергаться. Я-то поэкспериментировал, было дело.
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
И вот как с этим бороться, я не знаю.
Давать достаточно малые смещения, сравнимые с люфтом - это если надо двигаться медленно и равномерно.
1
343 / 135 / 10
Регистрация: 19.07.2024
Сообщений: 769
25.06.2026, 15:14
Цитата Сообщение от Max Dark Посмотреть сообщение
По сути нужно что то похожее на генератор импульсов с частотой 50 Hz и длительностью 0.5-2.5 милисекунд.
С этого надо было начинать. Для таких длительностей никакие таймеры не нужны: можно всё программно в обработчике прерываний сгенерить. И МК подойдёт любой, лишь бы ног хватило.

Ещё нужно указывать: С какой дискретностью эти 0.5 мсек нужно формировать? Если не нужно с дискретностью до такта CPU, то всё можно сделать в ISR. И почти на любой из ваших плат.
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2551 / 2065 / 971
Регистрация: 09.10.2013
Сообщений: 4,904
Записей в блоге: 4
25.06.2026, 19:50  [ТС]
Цитата Сообщение от jcxz Посмотреть сообщение
С какой дискретностью эти 0.5 мсек нужно формировать?
Судя по документации сервоприводы различают длительность с шагом 5 наносек.

Но скорее всего такая точность не нужна.

1 мсек примерно равно 90º угла поворота, то есть ~= 0.011 мсек.

Центр диапазона - 1.5 мсек.

±90º == ±1 мсек
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2551 / 2065 / 971
Регистрация: 09.10.2013
Сообщений: 4,904
Записей в блоге: 4
26.06.2026, 07:40  [ТС]
С "BluePill" выходит как то так:



CubeMX


Осталось "начать и закончить":
- разобаться с рассчетом периода таймеров и длительности импульсов
- придумать как данные запихнуть

"Мысли в слух"
USB - сложновато, но более универсально выйдет(тем более пины под него заняты уже).
SPI - не пробовал на стороне Линукса заводить.
I2C - говорили про какие то проблемы в самом чипе есть...
UART - Если задействовать ModBus RTU то может интересно получиться, но на имеючемся у меня SBC он уже занят под другое - нужно смотреть есть ли еще.
Вложения
Тип файла: 7z stm32_pwm_x12.7z (2.0 Кб, 3 просмотров)
0
 Аватар для COKPOWEHEU
4148 / 2726 / 433
Регистрация: 09.09.2017
Сообщений: 12,080
26.06.2026, 10:55
Цитата Сообщение от Max Dark Посмотреть сообщение
Предполагается использование MG996R
Угол положения у сервопривода задается длительностью импульса(0.5-2.5 мсек, 50 гц).
...
- период генерации должен быть 20 мсек при макс длительности импульса в 2.5 мсек
Цитата Сообщение от jcxz Посмотреть сообщение
С этого надо было начинать.
Цитата из первого поста темы, если что. Куда там еще более "с этого начинать"?!
Цитата Сообщение от jcxz Посмотреть сообщение
С какой дискретностью эти 0.5 мсек нужно формировать?
Открываем первую попавшуюся документацию на сервомоторчики. Там пишут, что импульсу 0.5 мс соответствует -90, а 2.5 - +90. Регулятор линейный. Соотношение времени и угла хоть теперь посчитать сможете?
Добавляем сюда, что сервы, скорее всего, "игрушечные", не рассчитанные под серьезное применение. То есть неизбежно будут люфтить. Собственно, рассчитывать больше чем на градус точности я бы не стал.
Цитата Сообщение от jcxz Посмотреть сообщение
Если не нужно с дискретностью до такта CPU, то всё можно сделать в ISR.
Вот в ISR как раз худшее решение. Уж больно много накладных расходов на вход - выход в прерывание. И точность потеряем, и производительность. Которую можно потратить с большей пользой. Например, на интерполяцию значений.
Когда такое делают на Ардуине - понятно, там других вариантов нет. Но в случае ТС любое использование аппаратных средств будет лучше. Хоть таймеров, хоть DMA. Правда, использование DMA в таком режиме не слишком очевидно, если у ТС недостаточно опыта, это займет время. Да и смысла сейчас нет, раз нашлись нормальные таймеры.
Цитата Сообщение от Max Dark Посмотреть сообщение
- разобаться с рассчетом периода таймеров и длительности импульсов
Раз уж "мысли вслух", давайте сначала выслушаем ваши соображения.
Цитата Сообщение от Max Dark Посмотреть сообщение
- придумать как данные запихнуть
А тут-то в чем вопрос? Пишем в регистры сравнения, да и все. При такой низкой частоте можно даже не заморачиваться с синхронизацией. Вот что важно - это убедиться, что используются теневые регистры. То есть что записанные вами данные применяются не сразу при записи, а в начале периода.
Цитата Сообщение от Max Dark Посмотреть сообщение
USB - сложновато, но более универсально выйдет(тем более пины под него заняты уже).
Это да. USB довольно сложный интерфейс. Плюс вам, возможно, пригодятся USB на одноплатнике под что-нибудь другое.
Цитата Сообщение от Max Dark Посмотреть сообщение
I2C - говорили про какие то проблемы в самом чипе есть...
Да, I2C тоже довольно сложный. И в f103 с багами. Обойти их, конечно, можно, но, как по мне, оно того не стоит.
Цитата Сообщение от Max Dark Посмотреть сообщение
UART - Если задействовать ModBus RTU
При таких скоростях UART можно задействовать просто как текстовый командный интерфейс без всей этой возни со специальными протоколами.
Хотя я тут посмотрел распиновку одноплатника. А там всего полтора UART выведено. UART2 (отладочный?) и UART4. Зато вот I2C куча...
---
В общем, лично я бы воспользовался USB. Если чего-то будет не хватать, на том же контроллере можно будет реализовать переходник. Но я-то с USB довольно много разбирался. Впрочем, вдруг вы готовы тоже потратить время на изучение USB, мало ли...
1
343 / 135 / 10
Регистрация: 19.07.2024
Сообщений: 769
26.06.2026, 11:30
Цитата Сообщение от Max Dark Посмотреть сообщение
Судя по документации сервоприводы различают длительность с шагом 5 наносек.
Но скорее всего такая точность не нужна.
Здесь уже нужно вам как разработчику решать - нужна или нет.

Если "нужна": Тогда берём МК, у которого таймеры работают на частоте >=200МГц и выделяем по таймеру на каждый ШИМ. Никакие колхозы на прерываниях или даже DMA+ногодрыге требуемой точности не обеспечат даже близко.
Но 200МГц тут даже XMC4xxx не хватит, надо искать что-то серьёзнее.

Если "не нужна": Тогда всё решается элементарно на любом МК (из вашего списка я бы разве что ESP в этом случае выкинул, остальные должны справиться легко). Скажем - требуемая дискретность == 100мкс. Тогда запускаем периодическое прерывание с частотой 10кГц и в нём программно рулим всеми ШИМами. Да - джиттер каждого ШИМ будет приличный (может даже сотни тактов), но он будет заведомо кратно ниже дискретности.
1
 Аватар для COKPOWEHEU
4148 / 2726 / 433
Регистрация: 09.09.2017
Сообщений: 12,080
26.06.2026, 13:45
Цитата Сообщение от Max Dark Посмотреть сообщение
Судя по документации сервоприводы различают длительность с шагом 5 наносек.
При максимальном диапазоне 2 мс шаг 5 нс составляет 400 000 отсчетов. 19 бит точности или 0,00045 градусов. Вообще не верю, вот никак.
Для наглядности: если привязать к такой серве палку длиной километр и повернуть на один шаг, конец палки сдвинется на 8мм.
Вот в 5 мкс поверить еще можно. Это 9 бит точности или пол-градуса.
Еще раз говорю: у вас точность определяется не дискретностью мозгов сервы, а механикой. Какие люфты у нее, какие люфты у вас.
1
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2551 / 2065 / 971
Регистрация: 09.10.2013
Сообщений: 4,904
Записей в блоге: 4
26.06.2026, 18:56  [ТС]
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Вот в 5 мкс поверить еще можно.
Тут скорее всего я ошибся - постоянно путаюсь с порядком...

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Какие люфты у нее, какие люфты у вас.
3D печать на бюджетном принтере с доработкой напильником - так что точность деталек так себе..

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Раз уж "мысли вслух", давайте сначала выслушаем ваши соображения.
С доступом к документации сейчас "403 forbidden" - st.com на VPN тоже ругается...

Если примерно:
- определить на какой частоте работают таймеры(TIM[2..4] вроде бы на APB1 сидят... Нужно уточнять, а с доступом к докам проблемы)
- посчитать делители для частоты == 50Hz
- сами таймеры имеют счетчики 16 бит - длительность импульса рассчитывается примерно так же как и для PCA9685

Clock config
0
 Аватар для COKPOWEHEU
4148 / 2726 / 433
Регистрация: 09.09.2017
Сообщений: 12,080
26.06.2026, 20:51
Цитата Сообщение от Max Dark Посмотреть сообщение
С доступом к документации сейчас "403 forbidden"
Вот уж reference manual на f103 скачать вообще никакой проблемы. Он где только не выложен. Вот, например, с первой страницы выдачи.
1
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2551 / 2065 / 971
Регистрация: 09.10.2013
Сообщений: 4,904
Записей в блоге: 4
26.06.2026, 21:51  [ТС]
По таймерам нашел документ "AN4776 - General-purpose timer cookbook for STM32 microcontrollers"

Сижу, изучаю...

Нашел datasheet на MCU, в нем "Clock tree", но пока что не понял какая же частота у таймера выходит при моих настройках.

stm32f103 clock tree
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.06.2026, 21:51

Сервопривод Belimo NV24-MFT
Прошу помочь разобраться с сервоприводом типа фирмы Belimo NV24-MFT. Можно управлять с помощью...

Управление множеством сервоприводов
Доброго времени, сразу хочу извиниться если повторяюсь с данной темой. как реализовать цепь из МК?...

По поводу сервоприводов для человекоподобной руки
Всем привет. Собираюсь собрать роботоподобную человеческую руку, показанную в этом ролике:...

Контроль сервопривода (servo library)
Здравствуйте. Подскажите как сделать чтобы серва не возвращался на начальную позицию (0). Перекопал...

Контроль сервопривода
Да, хотел сам реализовать. Благодаря ссылочкам raxp определился с тем что мне нужно. Сделаю на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru