Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

Re: частотник на stm32f0

Пн ноя 29, 2021 17:40:40

Dimon456 писал(а):51 51 TVS350V 330 и 13009?

защита от перенапряжений.
astrahard писал(а):Или я что-то не понимаю?

кто знает?

Re: частотник на stm32f0

Чт дек 16, 2021 10:18:19

упоминавшаяся ранее схема во втором приближении к работающей версии, пока проверил с небольшой нагрузкой. но даже так 50Гц вентилятор на частоте 200Гц забавное зрелище.
изменение частоты синуса достигается как корректировкой регистров ARR и RCR так и переключением таблиц.
трансформатор вспомогательного ип намотан на помехоподавляющем ферритовом колечке снятом с провода питания какого то бп. первичная обмотка распределена равномерно, вторичные каждая в своём секторе. межобмоточная изоляция - толстый фум и малярный скотч поверх него.
выпрямительные мостики взяты из сгоревших преобразователей от лампочек. несмотря на их низкочастотность работают приемлемо - мостики на верхние ключи тёплые, общий на нижние горячий но допустимо.
столкнулся с тем что новые UC3842 могут быть некачественными, поставил старые выпаянные откуда то - работают нормально и после длительного теста.

https://www.upload.ee/files/13719849/fw ... c.zip.html
_____
несложную защиту от превышения тока использующую падение напряжения на ключе видимо можно сделать и с оптронами HCPL, без микросхем 384x. конечно с небольшой доработкой программы.
Вложения
схема_с_HCPL.gif
(104.51 KiB) Скачиваний: 156
схема.gif
(109.49 KiB) Скачиваний: 125

Re: частотник на stm32f0

Сб дек 18, 2021 13:10:26

немного подправил прошивку, включил в ней всякие crc и watchdog_и и попробовал запустить с двигателем номиналом 2,2kW. пока без нагрузки поскольку силовая часть ещё без настоящего радиатора. вроде нормально работает, разгоняется, тормозит, меняет направление вращения. хотя ненагруженный конечно не показатель.
выходные фильтры не ставил, подключил напрямую. дроссели можно будет намотать на феррите от твс сложив его рогами наружу или каком нибудь статоре от сгоревшей мясорубки.
в качестве выключателя поставил электромеханическое узо 30мА. от помех не срабатывает.
кое что ещё не сделано, вроде корректировки уровня шим от напряжения на шине 310V.

прошивка и прочее:
https://www.upload.ee/files/13724944/sr ... c.zip.html

пожалуй из этого двигателя (82 года выпуска кстати) получится неплохой низкооборотистый наждак. тянет хрен остановишь.
Вложения
test_0.jpg
(65.42 KiB) Скачиваний: 147

Re: частотник на stm32f0

Сб дек 18, 2021 14:11:51

вроде нормально работает, разгоняется, тормозит, меняет направление вращения. хотя ненагруженный конечно не показатель.
Неужто без векторного управления? 8)

Re: частотник на stm32f0

Сб дек 18, 2021 14:23:51

векторное f0 не потянет. да и я тоже. хотя с ним хрен был бы существенно толще. но сложнее и дороже.

Re: частотник на stm32f0

Сб дек 18, 2021 14:48:11

векторное f0 не потянет. да и я тоже. хотя с ним хрен был бы существенно толще. но сложнее и дороже.
Почему же? Думаю - запросто.
У меня на M4 оно занимает <10% (на 144МГц). На M0 конечно будет поболее (пускай даже в 2 раза из-за более слабой системы команд), но вполне осуществимо.
А без векторного управления будет очень нестабильно работать при резких изменениях нагрузки. И будет излишне греть обмотки лишними токами.

Re: частотник на stm32f0

Сб дек 18, 2021 15:28:54

это хорошо но реализация векторного управления меня не очень интересует. любопытнее посмотреть как будет работать (и будет ли) нижеприаттаченная схема а также односторонняя модуляция.
Вложения
3ph_36_200_B.gif
(79.16 KiB) Скачиваний: 159

Re: частотник на stm32f0

Сб дек 18, 2021 16:27:12

это хорошо но реализация векторного управления меня не очень интересует.
А зря, потому как исходя из моего опыта, все эти синусные управления мотором - почти не имеют практического смысла, потому как крайне неэффективны. Разве что в очень узких областях ("вентиляторная" нагрузка).
А без FOC-а (векторного управления) и обратной связи по токам и угловому положению, PMSM-двигателем можно и на STM8 крутить. Нормальным ШИМ-ом. Я когда-то крутил на тактовой CPU=16МГц и частоте ШИМ=10кГц. Загрузка CPU правда тогда - по самые гланды, на ассемблере большая часть кода. Годится это только в качестве игрушки - побаловаться и отложить в сторону. :)

Re: частотник на stm32f0

Сб дек 18, 2021 17:40:06

о, точно. надо ещё вариант на stm8 сделать.
Вложения
схема_stm8_HCPL.gif
(105 KiB) Скачиваний: 137
Последний раз редактировалось ravr Вс дек 19, 2021 10:30:30, всего редактировалось 4 раз(а).

Re: частотник на stm32f0

Сб дек 18, 2021 20:29:05

jcxz писал(а):Я когда-то крутил на тактовой CPU=16МГц и частоте ШИМ=10кГц. Загрузка CPU правда тогда - по самые гланды, на ассемблере большая часть кода.
На чистом СИ
В моих тестах на мега168 16МГц, при частоте ШИМ 7,8кГц(128мкс), на расчет табличного синтеза и амплитуды для 6 каналов ШИМ требуется всего 11мкс, с учетом вхождения в прерывания и выхода, грубо, остается еще 100мкс, вагон времени.

Re: частотник на stm32f0

Сб дек 18, 2021 21:59:51

jcxz писал(а):Я когда-то крутил на тактовой CPU=16МГц и частоте ШИМ=10кГц. Загрузка CPU правда тогда - по самые гланды, на ассемблере большая часть кода.
На чистом СИ
В моих тестах на мега168 16МГц, при частоте ШИМ 7,8кГц(128мкс), на расчет табличного синтеза и амплитуды для 6 каналов ШИМ требуется всего 11мкс, с учетом вхождения в прерывания и выхода, грубо, остается еще 100мкс, вагон времени.
Ну во-первых: у меня частота ШИМ немного по-больше.
Во-вторых: синус я считал не таблицей. На таблицу бы просто памяти не хватило - я делал на самой дешёвой платке с али, на которой был STM8F103 всего с 8КБ флеша. Даже в этом случае у меня при компиляции в режиме debug размер образа был ~7КБ (в release с оптимизацией = ~6КБ). Т.е. - и так еле влезало. Потому и ассемблер пришлось много использовать. На си вполне возможно тоже бы хватило скорости, просто не лезло оно во флешь - IAR не особо качественно оптимизирует для STM8. :cry:

Re: частотник на stm32f0

Сб дек 18, 2021 22:24:06

jcxz писал(а):всего с 8КБ флеша.
jcxz писал(а):Даже в этом случае у меня при компиляции в режиме debug размер образа был ~7КБ (в release с оптимизацией = ~6КБ). Т.е. - и так еле влезало.
Для теста
Код:
AVR Memory Usage
----------
Device: atmega168p

Program:    1026 bytes
(.text + .data + .bootloader)

Data:          6 bytes
(.data + .bss + .noinit)

Re: частотник на stm32f0

Сб дек 18, 2021 22:47:41

Для теста
Код:
AVR Memory Usage
----------
Device: atmega168p

Program:    1026 bytes
(.text + .data + .bootloader)

Data:          6 bytes
(.data + .bss + .noinit)

ну так это у вас просто какой-то генератор синуса. У меня вообще-то было полноценное управление мотором. С интерактивным управлением пользователем (интерактивный интерфейс под терминалкой, с меню и всякими плюшками), с конфигурированием и заданием разных режимов разгона (с сохранением профилей в EEPROM). Т.е. - полноценная программа управления PMSM-мотором.
1026 байт имхо - даже на одну только таблицу синуса маловато. Только если на какую-то очень грубую. У меня опять-же точность расчёта синуса была около 16 бит.
Так что сравнение совершенно некорректное. :dont_know:

К тому же - 6 байт ОЗУ? Правда что-ли? И все переменные и стек в 6 байт влезли. Ну-ну.... :)))

PS: Если брать только генератор синуса, то он у меня был размером где-то 200 байт кода.

Re: частотник на stm32f0

Вс дек 19, 2021 08:01:31

jcxz писал(а):Я когда-то крутил на тактовой CPU=16МГц и частоте ШИМ=10кГц.
Блин, я то думал, что речь шла о том что бы просто покрутить.
А покрутить и тестового кода хватит:
3 таблицы размером по 128 точек
6 каналов ШИМ
2 переменные, одна изменение частоты, вторая изменение амплитуды
+пару флагов на то, что бы в главном цикле можно было что-то изменить

На тестовое покрутить хватит.
jcxz писал(а):точность расчёта синуса была около 16 бит
Какой смысл от такой точности?
Ваша точность упирается в следующее 10кГцШИМ/128точек таблицы=78,125Гц формируемый синус
Число 128 на 3 нацело не делится, значит выберите, к примеру 126. 10кГц/126=79,365Гц. Это идеальный синус, хотите 16 бит, хотите 8 бит, без разницы, все равно на выходе ШИМ и очень много шума.
Для синуса 25Гц, у вас будет 10кГц/25Гц=400 точек таблицы, ближайшее число для идеального 3фазного синуса это 399 точек таблицы.
А для синуса 400Гц, 10кГц/400Гц=25 точек таблицы.

А теперь попробуйте, хотя бы в экселе, выдернуть 25 точек синуса из 128 битной таблицы и сравнить с посчитанным синусом для 25 точек, циферки-то одинаковы будут, банально, но факт.

Коэффициент гармоник для ступенчатой функции не зависит от количества точек таблицы, единственное что меняется, это дискретность таблицы, градусов, и думаю, что ШИМ 8 бит против 16 бит сыграет тут большую роль.

Re: частотник на stm32f0

Вс дек 19, 2021 14:52:23

Блин, я то думал, что речь шла о том что бы просто покрутить.
Речь шла о том, что "просто покрутить синусом" как у ТС - хватит и 8-битника. А на Cortex-M можно уже полноценное векторное управление делать.

jcxz писал(а):точность расчёта синуса была около 16 бит
Какой смысл от такой точности?
Ваша точность упирается в следующее 10кГцШИМ/128точек таблицы=78,125Гц формируемый синус
Причём тут "таблицы"? Ещё раз: у меня не используются таблицы. От слова "совсем". Поэтому ничего не упирается. И частота у меня меняется плавно, а не как у вас с таблицей - скачками. А потому возможен плавный разгон двигателя.

Из дальнейших рассуждений вообще ничего не понял... :dont_know:
Вроде должно быть понятно априори, что ваша таблица в 128 значений имеет точность 7 бит (по аргументу), у меня =16 бит. Разница очевидна - как между небом и землёй. Таймеры у STM8 - 16 битные, так что ничего никуда не "упирается".
У вас управление - грубое, у меня - кратно точнее. Двигатель крутить можно вообще без синуса - вся разница в качестве. Вот и вся разница.

Re: частотник на stm32f0

Вс дек 19, 2021 16:39:45

Ни чего не понял?
jcxz писал(а):таблица в 128 значений имеет точность 7 бит (по аргументу), у меня =16 бит
если у вас брать таблицу в 16 бит, это у вас 65536 точек что ли?
Тогда при чем тут
jcxz писал(а):Таймеры у STM8 - 16 битные
У вас ШИМ 10кГц, туда физически нельзя запихать более 10000 точек.
jcxz писал(а):И частота у меня меняется плавно, а не как у вас с таблицей - скачками.
А это не верно.
Не скачками а линейно:
Пусть мне нужно генерировать частоту 50Гц, учитывая, что основную процедуру таймер исполняет 7812 раз в секунду
65536 / (7812 / 50Гц) = 419
65536 / (7812 / 50,25Гц) = 422
65536 / (7812 / 50,5Гц) = 424
65536 / (7812 / 50,75Гц) = 426
65536 / (7812 / 51Гц) = 428

Точность установки данного метода ~0,125Гц
А если мало таблицы в 128 точек, ни вопрос, можно и 256 точек, 512 точек, 1024 точек.
А если вам мало 8 битного ШИМ, то, как вы уже сказали, таймеры у STM - 16 битные, ну 16 битный ШИМ - это физически не возможно,
но думаю можно и 9 битный ШИМ, и 10 битный ШИМ, ну 12 бит ШИМ это уже перебор будет.

Re: частотник на stm32f0

Пн дек 20, 2021 18:15:25

если у вас брать таблицу в 16 бит, это у вас 65536 точек что ли?
Вы троллите что-ли??? В 3-й раз повторяю: у меня нет таблиц! Никаких.

Тогда при чем тут [quote="jcxz"]Таймеры у STM8 - 16 битные
Это был ответ на ваше что моя точность там куда-то упирается. Поделите частоту тактирования таймера на 10кГц - вот такую дискретность позволяют обеспечить таймеры.

У вас ШИМ 10кГц, туда физически нельзя запихать более 10000 точек.
Какие такие "точки" и зачем их куда-то "пихать"??? :facepalm:
Разрешение ШИМ определяется соотношением = частота_тактирования_таймера/частота_ШИМ

Не скачками а линейно:
Пусть мне нужно генерировать частоту 50Гц, учитывая, что основную процедуру таймер исполняет 7812 раз в секунду
65536 / (7812 / 50Гц) = 419
65536 / (7812 / 50,25Гц) = 422
65536 / (7812 / 50,5Гц) = 424
65536 / (7812 / 50,75Гц) = 426
65536 / (7812 / 51Гц) = 428
А это что если не скачки? Это очень грубая установка частоты.
Кроме того - а если двигатель крутится не на 50 Гц? А скажем на 1Гц? Тогда при вашей таблице на 128 значений на период синуса у вас будут скачки углового положения ротора = 360/128=~2.8. Почти 3 градуса! Это уже не плавное кручение, а дёрганье. А на бОльших оборотах также будет идти вибрация и гудение.
Да и обороты у вас невозможно менять плавно - частота тоже меняется только скачками. Даже просто если нужно точно выставить частоту вращения - то тоже невозможно, можно только грубо.

PS: Не понимаю о чём вы спорите? Вроде само должно быть само собой очевидным, что вычисления с точностью 16 бит однозначно точнее чем 7 бит. Зачем спорить с очевидным?
И зачем вообще спорить? Я вроде вашего мнения не спрашивал как мне реализовывать и вам не указываю как делать: если кому-то нравится ездить на квадратных колёсах - это его дело. Значит тряска его не волнует. Ну пускай не квадратных, а 128-угольных. :)))
А я привык делать качественно, а не халтурить....

Re: частотник на stm32f0

Пн дек 20, 2021 21:59:26

jcxz писал(а):что вычисления с точностью 16 бит однозначно точнее чем 7 бит.
И все таки мне не понятно, откуда взялись 16 бит и 7 бит?
jcxz писал(а):Поделите частоту тактирования таймера на 10кГц - вот такую дискретность позволяют обеспечить таймеры.
но что бы получить 16 битный ШИМ, если конечно речь о этих 16 битах идет, то по вашей формуле: FFFF*10кГц = 655МГц? Может что-то опять не так?
jcxz писал(а):Ну пускай не квадратных, а 128-угольных.
Раз таблицу не используете - значит просчитываешь синус на лету (не которые тут уже пытались просчитывать синус быстрее 4 пня в месте с атлоном, а один да же умудрился за 30 тактов), по другому синус не получить.
jcxz писал(а):360/128=~2.8
Не нравится?
ШИМ 8192Гц, табличка размером в 8192, 360/8192=~0,04, это была шутка, но вполне реализуема.
jcxz писал(а):А это что если не скачки?
NCO модуль есть только в PIC, таймер это делитель, 2 4 8 16 и т.п.

Регистры CCRx таймера обновляются только в определенный момент времени, это если буферизирование включено, идеально получится только так: 3Гц 9 33 ... 9999, при всем желании, сколько не потей красиво тут не получится, всегда будет ошибка либо там, либо сям.

И не надо тут врать, что у вас скачков нету. Для доказательства, код в студию.

Re: частотник на stm32f0

Пн дек 20, 2021 22:57:04

Раз таблицу не используете - значит просчитываешь синус на лету
Конечно.

ШИМ 8192Гц, табличка размером в 8192, 360/8192=~0,04, это была шутка, но вполне реализуема.
Реализуема? На МК с размером флеша = 8КБ??? :shock: Объясните - как?

И не надо тут врать, что у вас скачков нету.
Есть конечно. Только у меня они размером = 360/65536 градусов, а не 360/128. Почувствуйте разницу! 8)

Re: частотник на stm32f0

Вт дек 21, 2021 07:41:30

jcxz писал(а): Объясните - как?
Я же сказал - это шутка, но, к примеру, на F100 с размером флеша 128кБат вполне реализуем.
jcxz писал(а):Есть конечно.
Значит скачки есть, куда уж без них.
jcxz писал(а):Только у меня они размером = 360/65536 градусов, а не 360/128. Почувствуйте разницу!
Матом загнуть что ли?

Регистры CCRx таймера обновляются только в определенный момент времени, это если буферизация включена.
ШИМ у вас 10000Гц, а это значит что обновление регистров CCRx таймера возможно только 10000 раз, другого не дано.
А вы пытаетесь туда затрамбовать 65536 отсчетов.
Максиму что таймер возьмет 65536/10000 = 6,5536 , то есть каждый 6,5536 отсчет из ваших 65536 отсчетов, остальное время у вас процессор попусту просто высчитывает ни кому ненужные отсчеты.
Я взял первые 256 точек вашей таблицы или ваших расчетов, посчитанных в екселе


Для формирования синуса 78,125Гц требуется всего, ШИМ 10кГц, 10000/78,125=128, ровно 128 точек моей таблицы, мне так удобно посчитать и сравнить,
Ну а теперь смотри
циферки-то совпадают.

Можно было бы обойтись всего тремя таблицами и тремя строчками кода, а вы высшую математику сюда приплели. :facepalm:

Еще раз, коэффициент гармоник для ступенчатой функции не зависит от количества точек таблицы, единственное что меняется, это дискретность таблицы, градусов.
Чисто на физическом уровне нельзя в трамбовать 65536 отсчетов в таймер, который способен принять всего 10000 отсчетов, и то в определенный момент времени.
Ответить