Pull to refresh
48
Никита Константинович Суслин@Superzoos

Инженер-программист, инженер встраиваемых систем

Send message

У меня там стоит на 1000 импульсов на оборот, это даёт разрешение в 4000 положений на оборот. Меньше точно не надо, больше можно. Берите драйвер с обратной связью и двигатель со встроенным энкодером. Так момент большой получается, потому что всегда поддерживается оптимальный угол между вектором поля ротора и статора. И резонанс подавлен сильно. Одни плюсы, шаговик ведет себя почти, как настоящий BLDC сервопривод.

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

Обратная связь по положению в значительной степени подавляет этот эффект резонанса. Не полностью и не во всем диапазоне оборотов, но эффект подавления настолько значительный, что я даже не стал как-то специально бороться, оно само нормально заработало. Тут главное регулятор настроить хорошо. У меня частота работы регулятора положения 10 килогерц, это очень много и легко покрывает низкочастотный механический дребезг

Для решения таких проблем существует интерполяция шага. Например, в моем драйвере точность шагов двигателя привязана к разрешению энкодера. Получилось 4000 шагов на оборот. Но это не значит, что сам двигатель обязан вращаться по этим шагам. Более того, лучше, чтобы он вращался с большим разрешением, чтобы избежать ошибки квантования и смещения энкодера по фазе. Я в коде могу произвольно задать разрешение, например 40000 микрошагов на оборот. Тут можно ставить очень большие числа, они не обязаны даже быть согласованы с частотой ШИМ и максимальными оборотами, потому что это разрешение влияет только на плавность и устойчивость регулятора положения. При больших оборотах шаг просто укрупняется. При этом у меня ещё высокая частота ШИМ - 50 кГц. И я занял только 37% процессорного времени. Я упёрся не в МК , а в мосфеты, не хотел ставить слишком дорогие и быстрые. Два контура тока и контур положения вычисляется примерно за 3-4 микросекунды (измерял осциллографом по началу и концу прерывания). Чтобы достичь такой производительности достаточно лишь не писать совсем уж быдлокод. Это ещё оптимизации компилятора были выключены, я компилировал в режиме Debug -О0. Не всё из вышесказанного применимо к вашему контроллеру без обратной связи, но всё же.

Ого, выглядит очень масштабно и круто! Я могу понять почему вы использовали миландр и другие отечественные компоненты, но почему вы использовали во второй версии морально устаревший STM8? Сейчас же STM32G4 стоит копейки.

Насчёт микрошага 1/16 не соглашусь. Если шаговый двигатель без обратной связи по положению пытается вращать нагрузку с большим моментом инерции, например поворотную платформу большого диаметра, то этот огромный момент инерции быстренько дает понять, что 1/16 недостаточно. Движения дерганные и нестабильные. Стоит переключить на 1/128+ и эта проблема исчезает полностью.

Еще как даст , у меня ток КЗ был больше 1 ампера с 3х квадратных сантиметров на солевом растворе. (После зарядки)

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

Даже, если у меня реально есть какие-то ошибки или излишние упрощения это не повод пытаться выставить меня идиотом.

Эта разработка не обязана была быть жемчужиной человеческой мысли, она не пойдёт в серию и не полетит в космос. Я вполне осознанно шёл на компромиссы и упрощал там, где по моему мнению можно упростить. Говорить, что я не знаю что такое p-n переход или DC bias это просто оскорбление.

1) Что значит не по инженерному? Придирка необоснованная

2) IRF540 старый , но очень хороший транзистор за свою цену 50р/шт. Покупать супер крутые ключи за 500р я не планировал.

3) Что значит не переход? Не вижу ошибку.

4) Как раз по ёмкости и заряду считается.

5) Где написано про 2 вольта? Откуда вы это взяли?

6) Я мог любую цифру ляпнуть, хоть 1, хоть 0.1 , я сам задаюсь рассеиваемой мощностью. Это инженерный рассчет, где слово "инженерный" = "приблизительный". Числа выбираются по совокупности факторов.

7) Я отлично знаю про DC bias, поэтому керамические конденсаторы взяты на номинальное напряжение 250 вольт. 100 вольт я написал для сборки в целом, потому что плёночные на 100, а они не склонны к DC bias.

Я рад, если оно действительно так, но я в оптимизациях компилятора не шарю и ассемблерный код не читаю. Мне надо только, чтобы код работал ровно так, как я его написал на C и без сюрпризов.

О, это ты был на Chaos Constructions в СПБ? Я видел эти прибамбасы там

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

Это актуально, когда нужен массовый отечественный продукт. Я ориентируюсь на проверенные временем TI, Infineon, NXP, Renesas, STM, Microchip, Gowin, Xilinx и тп

Мои разработки выпускаются мелкими сериями по 5-50 штук под заказ. На такое и оригинальные stm32 найдутся на скаладах чип и дипа по 300р/шт.

Странно. У меня прямо противоположный опыт. В моём понимании светодиод это неубиваемый стабилитрон с побочным эффектом в виде свечения)) Шучу конечно, но у меня светодиод всегда был самой выносливой деталью. Вот лазерный диод неженка, это да)

Я знаю, что это для этого сделано, но это не необходимо при наличии нормального ПИ регулятора и ШИМ. ШИМ с регулятором работает на порядок лучше

Спасибо!

1) Я стремился не избавиться от помех, а нормировать их по частоте, чтобы они нормально фильтровались.

2) Да , я знал про USB DFU, но у меня была библиотека Modbus RTU написанная под USART и я хотел использовать её.

3) Че то я не замечал выгорания оптронов от переполюсовки никогда. Резистор их всегда успешно спасал.

У меня симметричный ШИМ просто переключает диагональные ключи. Получается типа Fast Decay, но с фиксированной частотой ШИМ и аккуратной регулировкой с помощью ПИ регулятора. По обмотке всегда течёт ток либо в одном, либо в другом направлении. Это абсолютно правильно и нормально. Костыль с Low Decay введен в примитивные драйверы из-за отсутствия нормального регулятора

У меня не C++ , а C, ну не суть. Оптимизации компилятора меня вообще не волнуют, я обычно всё в дебаге шью с -o0 и ни разу не было проблем. Отлаживать можно через Cube Monitor очень удобно(не в этом проекте). Если нужна отладка до микросекунд, то можно выводить цифровые сигналы на логический анализатор или аналоговые на осциллограф. Вроде костыли, а большего и не нужно.

У меня так однажды мелкий дисковый конденсатор на 0.1мкф отгорел от драйвера TB6600HG

Я скорее всего в дебаге шил с флагом -00.

Information

Rating
4,800-th
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity

Specialization

Инженер встраиваемых систем
Средний
From 3,000 $
Программирование микроконтроллеров
FPGA
Схемотехника
Разработка электроники
Разработка программного обеспечения
Прототипирование
C#
C++
Verilog HDL
Linux