Никита Константинович Суслин@Superzoos
Инженер-программист, инженер встраиваемых систем
20
Subscribers
Information
- Rating
- 4,800-th
- Location
- Санкт-Петербург, Санкт-Петербург и область, Россия
- Date of birth
- Registered
- Activity
Specialization
Инженер встраиваемых систем
Средний
From 3,000 $
Программирование микроконтроллеров
FPGA
Схемотехника
Разработка электроники
Разработка программного обеспечения
Прототипирование
C#
C++
Verilog HDL
Linux
У меня там стоит на 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.