Это наброски говнокода, до того, как я понял, что сначала надо думать, а не писать, но да ладно. https://yadi.sk/d/Eo4cP9i236jjoJ
Проект из многим ненавистного CubeMX'а. Есть аппаратный дедтайм сколько-то там, ибо он в попугаях. (могу замерить, если ннадо) Там собственно указаны основные ноги для ШИМа. Ноги DISP - для подключения дисплея 1602. (насколько я помню в 4х битном режиме используется, т.е. 0-3, вроде, можно убрать) Резерв под энкодер с кнопкой (TIM2), кнопку стоп. Ибо на мой взгляд после магнитолы - лучше энкодер(тем более аппаратный!) с кнопкой, чем 3 кнопки. Можно будет при желании крутить менюшку с той скоростью, с какой хочешь. Резерв под UART - можно смело убрать.
Есть подобие на плавный выход на заданную частоту. (правда не реализован её ввод извне, только из отладчика пока ) Дисплей подключен костыльным самопальным кодом, умеет супер ограниченные возможности.
_____ Можно попробовать возобновить это дело, но надо бы список того, что необходимо: структуру меню, набор функционала и т.п.
Ну и если кому надо могу объяснить, как этот ужас работает. Можно оставить только саму генерацию синуса и от неё плясать с почти чистого листа.
Добавил еще больше быдлокода для бога быдлокода! Теперь он умеет отображать свои частоту и амлитуду, умеет менять по отдельности частоту и амплитуду. Управление энкодер с кнопкой, вот свежий видосик.
В ближайшие дни, возможно, допилю в менюшку настройку скорости изменения частоты, возможность вкл/выключения генерации ШИМа, ну и может еще ченить, типо поддержки соотношения U/f, U^2/f, U/f^2, настройки дедтаймов, ну или подскажете что интересного.
Итак, привел это дело к относительно жизнеспособному варианту. Что есть: ШИМ 9 кГц. Энкодер с кнопкой ОК, кнопка СТОП, кнопка СТАРТ
Менюшка 0 с отображением текущей частоты и амплитуды и режима работы ШИМ (STOP - ШИМа нет, STRT - идет запуск ШИМ, ZERO - чередование нулевых векторов - верхние откр, нижние закрыты и наоборот, RUN - генерация синуса)
Меню 1 - задание частоты, по нажатию кнопки энкодера входим, при редактировании параметра добавляется буква Е. Энкодером устанавливаем частоту и кнопкой энкодера её подтверждаем. Если нажать кратковременно кнопку стоп, то выход без изменений.
Меню 2 - задание амплитуды (имеет смысл только для независимого управления частотой и амплитудой). Редактирование аналогично.
Меню 3 - выбор з-на управления (0 - независимо выставляем частоту и амплитуду, 1 - U/f=const, 2 - U/sqrt(f) = const, 3 - U/sqr(f) = const; константа задается в 4м меню)
Меню 4 - задание константы для з-на управления. Тут всё через попу, но да ладно. СпойлерОпределяемся с законом управления. Допустим U/sqrt(f) = const. В этому случае нам в формулу
Код:
U ------- = const sqrt(f)
надо вбить числитель и знаменатель (корень или квадрат частоты надо считать ручками. По входу в меню сначала крутится то, что будет в числителе, т.е. амплитуда, энкодером выкручиваем ее и кратковременно нажимаем ОК, далее выставляем знаменатель (для вышеописанного з-на корень из 50 = ~7) и зажимаем кнопку ОК на 1 сек. По отпусканию кнопки константа будет записана, а буква Е из первой строки исчезнет. Меню 5 - время между инкрементами частоты в мс. Т.е. стартуем с нуля и каждые X мс инкрементируем частоту до заданного в 1-м меню значения.
Меню 7 - сохранить текущие настройки. В нем будет два пункта - YES или NO.
Из любого меню можно выйти без сохранения параметров кнопкой стоп (кратковременным нажатием).
Меню 8 почти как и 0-е, но показывает текущую частоту и заданную, а также режим работы ШИМа.
Управление: После запуска будет отображаться 0-ое меню и статус ШИМа STOP, т.е. его отсутствие. После кратковременного нажатия START включается ШИМ (статус ШИМ STRT) и сразу же начинает переключать верхние-нижние ключи (т.е. формирование нулевых векторов) - статус ZERO. Если при статусе ZERO снова нажать START то начинаем нарастание частоты от нуля до заданной частоты (амплитуда в зависимости от настроек либо независимая либо будет меняться в соответствии с законом и константой). Статус ШИМ измениться на RUN.
Есть нажать кнопку СТАРТ во время работы, то ШИМ перейдет в состояние ZERO (нулевые векторы), а частота будет сброшена. Не стоит в этом случае снова нажимать кнопку запуска до останова двигателя)))) Есть зажать кнопку СТАРТ на 1 сек и отпустить, то двигатель начнет убавлять частоту от текущей до нуля, после чего перейдет в состояние ZERO.
Если зажать кнопку СТОП на 1 сек и отпустить, то ШИМ вырубается.
Нога B12 дергается с той же частотой, что генерируется в данный момент.
Фотки менюшек, осциллограммы на ногах с которых снимается ШИМ, демонстрация дедтайма. Спойлерменю 0 меню 1, меню 1 с активным редактированием
остальные менюшки
Замеренное с лог. анализатора: СпойлерПри статусе PWM STOP
При PWM ZERO, tdeadtime = 1.35мкс (можно изменить в программе, при желании
При выставленных 50Гц
При выставленных 399Гц
Скоро м.б. попробую запитать двиг не 30ю Вольтами, а трехстами. Надеюсь силовая плата нормально к этому отнесется.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Просто от больших картинок может и всё окно перекосить Так что кидаю ссылкой на папку, там снимки при нулевом режиме, при выставленных 50 Гц и выставленных 399 Гц (амплитуда везде 100%). Плюс, если есть прога от анализатора Saleae Logic (бесплатная) - можно открыть приложенные сохраненные файлы и более подробно их рассмотреть. https://yadi.sk/d/zO-1vXKW37rPfa
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Я когда подобным способом считал ( return (sinTable[x] * amplitude) / 100;) , с изменением амплитуды нарушалась симметрия полу-волн . Потом мне подсказали что нужно считать от середины , в моем случае это 127 и с одной половинки , делать вторую половину синусоиды . Если не понятно написал смотри исходник что я выложил , flowcode скачай у меня в облаке https://yadi.sk/d/IoswZLk_g7tDK в папке для работы лежит
Если нажать кнопку СТАРТ во время работы, то ШИМ перейдет в состояние ZERO (нулевые векторы), а частота будет сброшена. Не стоит в этом случае снова нажимать.....))))
Может уже бессмысленно будет что-то нажимать Из рабочего режима ШИМ сразу нулить напряжение нельзя - закорачиваете двигатель
Останавливать плавным снижением частоты или самовыбегом, просто выключая все ключи. Ток спадать не будет. Представьте, поле вращается с частотой 50Гц, а потом бац - нулевые вектора пошли. Двигатель закорачивается инвертором, поле как-бы резко "замирает", но не исчезает, а намагниченный ротор ротор продолжает вращение, переходит резко в отрицательное скольжение и генерит...Будет ударный ток. Когда проверяли защиту "Восьмикрута" на к-з между фазами, обратите внимание на резкую ударную остановку ротора двигателя при коротком замыкании выводов. Если включить на ходу нулевые вектора, то транзисторы и диоды инвертора сработают вместо плоскогубцев
Останавливать плавным снижением частоты или самовыбегом, просто выключая все ключи. Ток спадать не будет. Представьте, поле вращается с частотой 50Гц, а потом бац - нулевые вектора пошли. Двигатель закорачивается инвертором, поле как-бы резко "замирает", но не исчезает, а намагниченный ротор ротор продолжает вращение, переходит резко в отрицательное скольжение и генерит...Будет ударный ток. Когда проверяли защиту "Восьмикрута" на к-з между фазами, обратите внимание на резкую ударную остановку ротора двигателя при коротком замыкании выводов. Если включить на ходу нулевые вектора, то транзисторы и диоды инвертора сработают вместо плоскогубцев
От таких вещей спасает установка энкодера.Для обеспечения оптимального (Наиболее быстрого разгона или торможения)Необходимо устанавливать вращение поля отличным от вращения двигателя на частоту скольжения.Если частота поля будет отличаться на большую величину,то токи возрастут а момент не увеличится,а даже немного уменьшится.
От таких вещей спасает установка энкодера . Для обеспечения оптимального (Наиболее быстрого разгона или торможения).
Мы пойдем гораздо дальше , если будем видеть исходный код Если код под STM , то у меня нет возможности что-то проверять в железе Сейчас пытаюсь побороть attiny861 Какие полезные функции туда нужно внедрить ???
Код на STM32.Atmega наврядли потянет.Дело тут не столько в производительности,но в основном в отсутствии аппаратной поддержки энкодера. А код достаточно простой надо просто добавлять скольжение пропорционально отставанию или опережению от желаемой скорости при этом надо сохранять соотношение U/F,и при этом никогда не превышать максимального скольжения(ограничивать ). Вот мой привод. https://youtu.be/sKJRzdLFmIA
ma5a97 видел ваше видео.Есть вопрос по схеме.Не очень понятно .Как вы меряете постоянный ток с помощью токовых трансформаторов?В приводе "Размер 2м" тоже измеряют ток трансформатором.Но там используется насыщение.На выход подается меандр,и меряется ток генератора.Вообще на STM32 Значительно удобнее управление.Я понимаю ,что людей смущает переход с хорошо знакомых платформ,но это всё равно придётся делать ,если цель сложнее чем моргание светодиодами.Тем более ,что при программировании на языках высокого уровня переход заключается лишь в изучении периферии.Для настройки периферии на stm существует визуальная среда CubeMx где настройка сводится к указанию мышкой ноги и заданию желаемой функции.У вас на плате несколько микросхем служат для формирования мертвого времени и инверсных сигналов ,а так-же аварийного отключения Для двигателей у stm32 трехфазный шим контроллер с заданием мертвого времени и возможности подключения инверсных сигналов,Что сократит число микросхем на плате.Так же есть нога отключения ШИМа .На неё достаточно подать сигнал защиты и не надо никак при этом следить за ней программно.Она сама отключит шим.Ну и огромное количество таймеров которые можно запрограммировать как входа энкодера.Не говоря о производительности.
Трансформаторы меряют не постоянку , а несущую шим (чем больше ток , тем сильней проникает и шим), колечки ведь одеты на каждой фазе , а не на DC цепи. Если сильно хочется ,то можно мерить и постоянку с помощью трансформатора постоянного тока (магнитного усилителя ) . Как отладку STM делать ? Насколько мне известно симулятора типа протеуса для этих микросхем нет , да и не придумывается мне где может пригодиться двигатель с энкодером ??? На циркулярке или дровоколе , чпу станку у меня нету. Переходить на мощные камни буду , но пока нет лишних денег.
Понятно ,что проникновение ШИМ меняется от тока статора.Но тут скорее можно говорить о качественном измерении ,а не о количественном.Что например будет при векторном шиме,когда одна фаза вообще не шимится.А другие две будут зависеть от заполнения ШИМа а не только от тока статора.Хотя если только для защиты то наверное пойдет.Про магнитные усилители я и говорил .В приводах "Размер2м" используется такой же принцип.Т.е зависимость от насыщения трансформатора .Что касается отладки то её можно использовать и с STM .Кстати по-моему STM32f103 есть и в протеусе,хотя можно и через JTAG.Я как то вообще отладчиком не пользуюсь.Что касается энкодера ,то кроме точного позиционирования можно получить нормальный пусковой момент(разгонную характеристику) и высокий момент при движении с очень низкими скоростями.Т. е. знание о реальной скорости вращения двигателя позволяет улучшить тяговые характеристики двигателя и избегать запредельного скольжения.Так же позволяет получить хорошую стабилизацию скорости вне зависимости от нагрузки.Но конечно для циркулярки это не столь актуально.Я перешел на ARM затем на CORTEX уже около семи лет назад .и с тех пор даже простейшие вещи делаю на них (вообще забыл от АТМЕГЕ).Кстати на али экспрессе плату с stm32f103 можно купить за 100руб. https://ru.aliexpress.com/item/1pcs-STM ... f6978e946d
Использовалось 3 трансформатора тока и сигнал считывался через 3 диодных моста , выходы мостов подключались на компаратор. Насчет точности измерения я не знаю , мне была нужна быстрая и не выделяющая тепла защита . Тут хоть какой датчик не ставь на выходе получается рванина , остается только усреднять сигнал. Что касается энкодера , то он стоит как весь частотник , а высокий момент на низких оборотах я могу получить с помощью тахометра (выкладывал черновую версию несколькими сообщениями раньше).
Я использую такой https://ru.aliexpress.com/item/High-Qua ... d25e6f70e4 Если не требуется позиционирование то тахометр ничем не хуже энкодера.Но по-моему 500-600 руб цена за энкодер небольшая ,плюс возможность точного позиционирования.Меня трансформатор тока интересует для реализации токового управления.Кстати вопрос .Для чего средняя точка?Для защиты от сквозного тока?Ведь для защиты от фазного тока достаточно включить трансформатор в фазу.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 56
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения