Jump to content
    

stm32 Cинусоида.

Боюсь, с такой постановкой вопроса, вы опять останетесь без ответа и обидитесь на "спецов". Попробуйте задать внятный вопрос.

 

Share this post


Link to post
Share on other sites

я имею ввиду что как управлять синусоидой меняя частоту по времени например.У меня начальная частота 5 гц и что бы за 10 секунд она плавно перешла в 20гц чем можно управлять?

Share this post


Link to post
Share on other sites

1 hour ago, dimir said:

я имею ввиду что как управлять синусоидой меняя частоту по времени например.У меня начальная частота 5 гц и что бы за 10 секунд она плавно перешла в 20гц чем можно управлять?

Таймером

Share this post


Link to post
Share on other sites

On 8/20/2022 at 8:17 AM, dimir said:

я имею ввиду что как управлять синусоидой меняя частоту по времени например.У меня начальная частота 5 гц и что бы за 10 секунд она плавно перешла в 20гц чем можно управлять?

Таблица на один период и DDS программном исполнении.

Share this post


Link to post
Share on other sites

Что такое DDS?Ну хорошо таймером мы можем изменить частоту синусоиды.Двух параметров.Но каким образом.Если разве что прописать в дефайнах.И написать начальные настройки в майне.А другой таймер нужен для время изменения частоты .Допустим установили частоту 100 гц и время от 0 до 100 установили 30секунд.

Edited by dimir

Share this post


Link to post
Share on other sites

33 minutes ago, dimka76 said:

Это не важно

Не так это важно,
Важно что б кто-то
Был рядом с тобой

 

Share this post


Link to post
Share on other sites

On 8/20/2022 at 5:18 PM, dimir said:

Допустим установили частоту 100 гц и время от 0 до 100 установили 30секунд.

Мучать двигатель накладно, особенно с таким уровнем знаний.

Во первых параметр частоты тут побочный продукт вычислений, потому как двигать нужно фазу. У тебя должна быть таблица готовых синусов на полный период 2П (просто график). По которому нужно шагать с разным шагом. Частота считывания таблицы, ну и выставления новых значений для шима - ПОСТОЯННАЯ!!! Это важно!!, нужен всего один таймер по которому считывается новое значение для шима, он-же бужет шимить хоть 2 фазы, хоть три.

Во вторых - использовать дробные числа. Таблица уже готовая, у неё есть размер (uint16_t shim[2048] ) - значит использовать плавающую точку не имеет смысла, проще использовать дробные числа. Например uint32_t shag (11+21), 11 старших бит - это прямой адрес таблицы. 21 младших битов - это числа меньше единицы, в данном случае дробные. Дык вот прибавляя в каждом прерывании к числу shag константу без знака - на выхлопе получится стабильная частота. А если константу перед сложением умножать на другую константу - то получится ускорение. Ну или делить, тогда будет торможение.

Третий важный пункт - считанное значение из таблицы нужно домножить до реальной ЭДС двигателя на текушей частоте вращения и напряжения на питающем конденсаторе. Зависимость от сети выбирается очень просто 310В считается за единицу (умножать на единицу). Пример 270В - умножаем на 1,14, 360В - делим на 1,16. Здесь тоже дешевле использовать дробные числа, потому как деление выполняется ну очень долго. Множитель от частоты вычисляется немного сложнее, проще всего составить таблицу, и брать значения из неё. Для этого уже после сборки инвектора - нужно подключить двигатель через балластные резисторы (допустим 50 Ом). Двигатель не сможет взять больше напряжения, чем ему позволит ЭДС обмоток, остаток в виде тепла на резисторах. Просто считать мультиметором и составить свою таблицу. Без коррекции напряжения - двигателю будет очень больно, особенно на малых оборотах.

Это и есть DDS в грубом представлении.

Достоинства: Доступен весь диапазон частот (в пределах разумного) например от 5Гц до 100Гц, с шагом в сотые доли герца. При изменении частоты не сбивается фаза, а это очень важно. Двигатель имеет массу, он не может за микросекунду провернуть якорь на 90 градусов, только потому что у тебя фаза сменилась. Он просто плюнет током, отчего все твои транзисторы превратятся в плазму.

Недостатки: Использовать дма не получится, вычисления нужно производить в прерывании. Контроль тока исключительно для экстренного отключения (физическая триггерная защита). Двигатель будет просказывать, то-есть момент на низких оборотах будет маленьким. Чтоб не проскальзывал - нужно векторное управление, а это чуть сложнее скалярного.

Ведёрко для дохлых ИГБТ транзисторов - непременный атрибут каждой разработки инвертора. В твоём случае оно может быть очень большим. И это, поменяй аватарку, тараканы на стенке не лучший задний фон.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...