Главная » Arduino
Призовой фонд
на декабрь 2019 г.
1. 1000 руб
Паяльник
2. 100 руб.
От пользователей

Похожие статьи:


Однофазный частотный преобразователь на Arduino

В статье речь пойдет о создании простого однофазного маломощного частотного преобразователя на базе Arduino.

Предыстория. Как-то давно возникла у меня необходимость регулировать скорость вытяжного (канального) вентилятора. К моему удивлению, задача эта оказалась не совсем простой, как казалось на первый взгляд.  Я перепробовал несколько самых очевидных вариантов, но у всех были свои минусы. Первое, что приходит на ум, это диммер на симисторе и всяческие его разновидности, но этот вариант я отмел сразу, т.к. работает он некорректно: двигатель сильно гудит, греется и всем своим видом показывает, что ему это не нравится. Следующий вариант это регулировка (по факту – уменьшение) оборотов вентилятора путем увеличения скольжения двигателя, т.е. уменьшения напряжения. В общем, вариант неплохой (по крайней мере, для вентилятора), но только если нужно небольшое замедление, т.к. при увеличении скольжения опять же растут потери и нагрев двигателя. Еще одним недостатком данного варианта является сложность изменения переменного напряжения, это можно делать дискретно, включая последовательно с двигателем различную нагрузку: активную (лампочка, мощный резистор), реактивную (дроссель, конденсатор), как раз вариант с конденсатором проработал у меня в вытяжке довольно долго. Если же нужно менять напряжение постепенно, то самым простым и доступным вариантом является ЛАТР, его же основной недостаток – это размеры и вес, как-то не очень, когда регулятор в несколько раз больше и тяжелее регулируемого устройства. Ну и, наконец, последний, самый правильный вариант – это, конечно, частотный преобразователь, далее о нем.

Поискав в сети и не найдя ничего подходящего (т.к. в основном все частотники трехфазные и выдают более киловатта мощности), я принял решение собирать свое.

Вкратце об общих принципах

За основу была взята плата Arduino (nano), как самый простой вариант для начала, до этого программированием каких-либо МК я не занимался. Задача ее формировать два шим сигнала, нарезающих синус, для положительной и отрицательной полуволн поочередно (Униполярная модуляция, если не ошибаюсь). Выглядеть это должно примерно так:



Силовая часть – это полный мост на четырех транзисторах, управляемых двумя драйверами IR2110, выход с которых фильтруется LC фильтром, также есть защита по току, реализованная на датчике тока и компараторе (ОУ tl072cp, был под рукой), порог срабатывания настраивается.  Блок питания логики и драйверов изобретать не стал, просто оставил место на плате для отдельной платы бп, например такой:

(в рабочем варианте поставил плату от сетевого адаптера на 13в т.к. когда собирал китайцы БП еще не прислали). Выходное напряжение блока питания в идеале 13-15в, можно и 12, если ключи не особо мощные. Для питания ардуинки и дисплея на плате есть стабилизатор на 5 вольт (lm7805).

Теперь немного подробней, начнем с программной части. При написании прошивки очень помог сайт Алекса Гайвера, за что ему огромное спасибо!

Для начала с помощью библиотеки формируется ШИМ сигнал (частота около 8кГц) на 9 и 10 ногах, для положительной и отрицательной полуволны соответственно. Далее для создания синусоиды используется массив из 100 значений в диапазоне от 0 до 2000 (диапазон скважности для данного варианта ШИМа).

В основном цикле программы по значениям из этого массива меняется скважность поочередно для положительной и отрицательной полуволны (сначала для 9 потом для 10 пина). Частота синуса устанавливается через период для каждого значения из таблицы, например, для 50 гц расчет будет следующий: частота 50гц, соответственно,  период одного полного колебания 0,02с или 20000 микросекунд (именно в них задается интервал), за это время должно получиться две полуволны, т.е. 200 значений скважности (сначала 100 для 9го пина потом еще раз для 10го), отсюда время на одно значение скважности будет рассчитываться как 20000мкс/200=100мкс, для 25гц соответственно 40000/200=200мкс. У меня диапазон регулируется от 81мкс до 178мкс на одно значение из массива, что соответствует значениям частоты от 53 до 26 герц примерно. Что соответствует регулировке скорости от 106% до 26%. Быстрей эти движки крутиться не способны, а медленней для вентилятора не нужно, да и к тому же это уже чрезмерное насилие, не рассчитаны они на такое.

Итак, частота регулируется, но в частотнике также пропорционально частоте понижается и напряжение (скалярное управление, о векторном я даже не думал, и трудно, и не нужно). Это реализовано следующим образом: (скважность/32)*коэффициент (PotMapSkvaz) , который принимает значения от 30 до 16 в итоге результирующее значение скважности получается в диапазоне от 94% до 50% от того, которое было считано из таблицы, соответственно, и напряжение понижается на столько же (забегая немного вперед: ровного синуса не получилось за счет чего напряжение на выходе немного завышено, поэтому максимальная скважность не 100% а 94%).

В общем, цикл выглядит так: обнуляем оба значения скважности (от греха, но больше от сквозняков), рисуем первую полуволну синуса, проходя по массиву на каждом значении, задерживаясь в течение установленного времени, опять обнуляем значения скважностей и повторяем все для второй полуволны (отрицательного полупериода). По сути, ШИМ на обоих пинах работает постоянно, меняется только скважность, но, когда она равна нулю, фактически на пине нет никаких импульсов.

Далее про управление и индикацию: с энкодером проблем не было, он работает на прерываниях и много ресурсов не тратит, при повороте он уменьшает и увеличивает, соответственно, частоту до установленных пределов (53-25Гц), при нажатии на кнопку устанавливает частоту в дефолт (~50Гц).
Дисплей. С ним пришлось немного повозиться, т.к. при работе в цикле он оказывает влияние на быстродействие программы и, соответственно, на частоту, что никуда не годится, поэтому решено было присовокупить это действо к моментам изменения частоты, т.е. информация на дисплее обновляется только в моменты поворота энкодера, что немного замедляет программу, но, т.к. это происходит не постоянно, то ничего страшного в этом я не вижу. Также была прикручена запись переменной энкодера в постоянную память, что позволяет сохранить настройки частоты при отключении устройства от питания, происходит это тоже только лишь в моменты изменения оной.

По софту все, далее про железо. Схема: 

Как было сказано выше, основа схемы – это мост из 4 транзисторов (FQPF6N90C), управляемых двумя драйверами IR2110. Вход верхнего плеча одного драйвера соединен со входом нижнего плеча второго и наоборот. Питание схемы осуществляется отдельным импульсным БП на 13 вольт, ардуинка и дисплей питаются от 5 вольт через стабилизатор LM7805.

Энкодер в виде стандартного модуля для ардуино был немного переделан, изначально в нем стояли подтягивающие резисторы на 10к, что оказалось слишком много: наблюдались самопроизвольные срабатывания от наведенных помех, поэтому резисторы были заменены на 2к и добавлены конденсаторы по 0.47 мкФ, после этого ложных срабатываний больше не наблюдалось.

Также в схеме присутствует защита по току, реализованная на компараторе, на операционном усилителе tl072cp (из тех, что были под рукой) и датчике тока (R21 10 ом). В среднем положении подстроечного резистора R20 защита срабатывает примерно при токе в пол ампера, что соответствует нагрузке около 100 ватт (мощность стандартного канального вентилятора около 15-25 ватт), мощность моего по паспорту 16ватт. При превышении установленного тока и срабатывании компаратора высокий уровень сигнала подается на 11 ноги обоих драйверов (вход SD), что, соответственно, приводит к исчезновению сигналов на выходе и остановке генерации.

Далее про выходную часть. После транзисторов идет  LC фильтр, состоящий из индуктивности, в моем случае – 2,78 мГн и конденсатора в 0,47 мкФ. Об индуктивности стоит сказать отдельно: катушка намотана на сердечнике из материала МП-140, типоразмера П19х11х6.7, из двух половинок, витки не считал,  мотал около трех метров эмалированным проводом  d0.4мм.

Ну и по итогу о результатах. Печатная плата:

Финальная реализация готового устройства:

(Все фото кроме последнего сделаны с RC фильтром, который в итоге был заменен на LC, остальное без изменений)

Платы были заказаны у китайцев, после сборки и экспериментов на тестовой:

Форма выходного сигнала:

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

Как видно по фото, транзисторы установлены на радиатор (из алюминиевого уголка 40*40*3), также имеется принудительная вентиляция. Так вот, при первоначальных тестах в качестве фильтра был вариант RC пары (Резистор 100 Ом и конденсатор 0.47 мкФ), при таком варианте грелся достаточно неплохо резистор и немного радиатор с ключами, поэтому вентилятор и был прикручен. Однако с дросселем ситуация изменилась в корне: нагрев транзисторов фактически отсутствует, дроссель, может, на пару тройку градусов теплее температуры окружающего воздуха, но вентилятор убирать уже не стал, просто притормозил его резистором, чтоб не шумел, так он вроде никому не мешает.

На этом все. С удовольствием отвечу на вопросы, надеюсь, кому то мой опыт будет полезен.

P.S.: Про существование платы EGS002 я в курсе, к сожалению, про нее я узнал только ближе к концу моего приключения, и останавливаться было уже поздно)). Может, позже попробую что-нибудь и на ней собрать, но это будет уже совсем другая история.

Прикрепленные файлы:

Теги:

Опубликована: 0 0
Я собрал 0 1
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 5 Проголосовало: 1 чел.

Комментарии (24) | Я собрал (0) | Подписаться

0
Публикатор #
На форуме автоматически создана тема для обсуждения статьи.
Ответить
0
lvlr #
Слишком сложно. Чтобы регулировать вентилятор нужен ещё один вентилятор и экранчик с ардуинкой.
А вообще белечье колесо регулируются частотой. А если этот движок диммером регулируется - надо было дроссель побольше поставить (чтоб сгладить синус).
В видео у тебя подсветка мерцает и движка совсем не слышно - не понятно на каких оборотах работает. Пользуйся запрещённой лампочкой накаливания в 1000Вт.
Ответить
0
Vslz #
Интересно. Молодец. Малогабаритный частотник, по моему, штука очень актуальная.
Про форму вых. сигнала. Это ток или напряжение ? Действительно, не синусоида. Больше на трапецию похожа. Вы говорите, "униполярная модуляция". Порядок работы ключей в этом случае выбран, на мой взгляд, не самый удачный для реактивной нагрузки, потому и форма такая. У Вас ключи коммутируются одновременно, по диагонали. А в паузах напряжение на выходе стойки предоставлено самому себе. Отсюда и искажение формы. Логика работы ключей не учитывает двусторонний обмен энергией между мотором и высоковольтным электролитом через мост. А такой обмен неизбежно будет, ведь у мотора косинус фи далек от единицы, ему куда-то надо возвращать реактивку. В симуле удалось получить синусоиду при следующем раскладе: "правая" стойка работает в двухтактном режиме (по логике ШИМ синхронного выпрямления) и формирует прямоугольник с амплитудой 300В. "Левая" стойка коммутируется на частоте генерируемой синусоиды в момент смены полярности синуса. Форма тока через ключи ШИМ-стойки - прямоугольник с синусоидальной огибающей, причем ток через них двухполярный. Это и позволяет производит двусторонний обмен энергией мотора с мостом. Вторая НЧ-коммутирующая стойка работает в ZCS и пропускает полусинусоиды тока то на массу, то на + питания. Сигнал напряжения в диагонали моста имеет форму униполярного ШИМ, пропускается через LC-интегратор. На выходе LC интегратора получается почти чистый синус напряжения.
Прикрепленный файл: 2019-11-23_155516.jpg
Ответить
0

[Автор]
AMatroskin #
Спасибо за интерес к статье! На осциллографе форма напряжения на выходе при подключенном вентиляторе (тот что на видео) все так и есть, как Вы пишите, оптимально было бы ШИМ подавать только на одну половину моста, а вторая по очереди подтягивала нагрузку к плюсу и земле (Именно такая схема и работает в плате на EG8010) но про такой режим работы я узнал уже слишком поздно, когда почти все было готово, и переделать под него данную схему не получиться ни как (уже не хватит 2 пинов ардуино, нужно будет задействовать 4) и сейчас бы я так и сделал, но, как я уже писал дальше планирую использовать для этих же целей контроллер EGS002. А этот вариант пусть будет как есть, возможно кому то пригодятся какие либо идеи из этого проекта.
Ответить
0
Vslz #
Именно такая схема и работает в плате на EG8010
Я не знал об этом - синтезировал схему управления без м/к, на компараторах и ОУ.
Ответить
0
BARS_ #
Что-то я не могу понять, нафига нужен этот изврат с ардуйней, если сигнал на выходе далеко не синус? Что мешает использовать МК, специально заточенные под управление силовухой в виде ИИП и частотников? Те же STM или MSP? Стоят они копейки, а никакого изврата не требуется, практически все выполняется аппаратно. Причем можно хоть 3 фазы формировать. Синус должен выглядеть хотя бы так https://habrastorage.org/webt/wh/4d/du/wh4dduwnbyshscey7rlmzs6s1mw.png иначе двигатель не будет нормально работать. А ардуйне в таких устройствах вообще нечего делать.
Ответить
0

[Автор]
AMatroskin #
Конкретные модели таких МК подскажите, буду думать.
Ответить
0
BARS_ #
Из навороченных TMS320F28027. Это для многофазных решений. Есть и попроще, можно на сайте TI поглядеть. Из STM можно тот же STM32F334 взять. Но там уже больше программной обработки будет, TI получше "заточены" под такие применения.
Ответить
0

[Автор]
AMatroskin #
Спасибо, не слышал про них, буду изучать.
Ответить
0
Vslz #
Вот эти, я думаю, подойдут.
Только сейчас мысль в голову пришла
А зачем тут вообще LC-фильтр ? ПЧ в большинстве случаев без низ прекрасно обходятся, главное, чтобы ток мотора был близок к синусу. Интегрирование ШИМ-несущей происходит в самих обмотках. При удаленном расположении мотора от ПЧ, чтобы избежать выбросов на моторе, ставят синус фильтр.
Прикрепленный файл: M31.pdf
Прикрепленный файл: MC3PHAC.pdf
Ответить
0

[Автор]
AMatroskin #
Первый это вроде просто сборка транзисторов с драйверами, там синус или что то либо еще не формируется, должен формироваться извне. А про второй вариант я в курсе,он вроде только под три фазы, и как получить из него однофазное напряжение я не представляю, если поясните буду очень рад.
Ответить
+1
Vslz #
Как и в любой трехфазной системе - использовать выводы двух фаз.
Ответить
0

[Автор]
AMatroskin #
К сожалению MC3PHAC не подойдет, у него нет возможности менять произвольно частоту: "Selectable 50/60 Hz base frequency"
только два варианта.
Ответить
0
Vslz #
у него нет возможности менять произвольно частоту
это не так. Воспользуйтесь поиском - схем на MC3PHAC немало. Вот например, модуль с ее "участием":
http://www.motorjock.com/imscim-v1.html
или вот схема:
http://www.motorjock.com/wp-content/uploads/2014/07/IMSCIM_V1_Schematic.pdf

Другое дело, пишут, что ИМС снята с производства...
Ответить
+1
pingyini #
Правильно говорят насчет реактивки, в емкостных и индуктивных нагрузках идет смещение фаз ток-напряжение, для этого нужно придумать компенсацию. Кстати в ТПЧ за этим следят при помощи ОС по току и напряжению. Ради интереса посомтрите двумя каналами осциллографа сигналы по току и напряжению. Может получится вручную задавать косинус нагрузки и все станет шикарно Индуктивность на выходе, как Вы планировали, усугубит ситуацию. Есть еще момент со временем отпирания-запирания диагоналей моста. На 50 Гц оно не так важно, конечно, но если идти дальше то нужно учесть. И я бы посмотрел в сторону IGBT транзисторов.
Ответить
0

[Автор]
AMatroskin #
Да, я тоже думал о том, чтоб скорректировать форму синуса вручную, еще не исключаю возможность некоторого рассинхрона драйверов, в этом случае тоже искажения возможны. Думаю можно сделать ШИМ только на одной половине (вторая переключает полярность) что исключить вину драйверов, а тогда уже можно таблицу синуса подкрутить. ИГБТ вряд ли, мощность мне больше 100 максимум 300 ватт не нужна, а в таком варианте их преимущества сомнительны.
Ответить
+2
Starik #
Уважаемый AMatroskin, большое Вам спасибо за очень интересную статью. Полученный Вами результат я бы оценил как вполне удовлетворительный. Асинхронный двигатель не слишком разборчив - успешно работает от напряжения трапецеидальной формы, особенно если не требуется максимальная мощность. Буду очень рад, если Вы продолжите работу в данном направлении и опубликуете её результаты. Как мне представляется полезно было бы увеличить максимальную частоту до 80 - 100 Гц. Моторы бывают разные и ПЧ должен перекрывать их возможности с некоторым запасом. Это сделает устройство более универсальным.
Ответить
0

[Автор]
AMatroskin #
И вам спасибо за интерес к теме, конечно продолжу, сейчас работаю над схемой с участием модуля EGS002, как будет результат обязательно выложу
Ответить
0
mihalkovskii #
Ардуино, пара полевиков, колечко и готовый БП на 12 В 2-3 А - вот каким я представлял себе такое устройство.
Ответить
0
Vslz #
Такому "устройству" потребуется 620В питания от удвоителя, и 900В полевики...620В уже напрягают. А по другому не получить даже 320В переменного на выходе..
Отредактирован 30.11.2019 22:06
Ответить
0
mihalkovskii #
Под колечком я подразумевал трансформатор импульсный с 12 на 220. Взять хоть из компьютерного блока питания или электронного трансформатора для галогенок. Так как вентилятор жрёт около 25 Вт ничего страшного в том, что все они будут получены из 12 В блока питания нет.
Отредактирован 30.11.2019 23:09
Ответить
0
Vslz #
Нет, так не выйдет. Импульсный трансформатор и "два ключа" тут не прокатят. Это потому, что трансформатор должен пропускать через себя ток низкой выходной частоты в десятки Герц. Ферритовые сердечники для этого не пойдут. Пуш-пулл тоже не пойдет - он не способен демпфировать обмотку, в отличие от H-моста.
Если по Вашему делать, то нужен большой железный трансформатор и строго H-мост. Такой же, как у Автора, но на низкие напряжения и большие токи. Ничего кроме лишних проблем, такой переход не создаст.
Отредактирован 01.12.2019 12:05
Ответить
0
mihalkovskii #
Не надо ему пропускать низкую частоту. Будет тоже самое что и здесь - высокая частота промодулированая низкой. Разница в том, что нужен мощнее низковольтный блок питания, схема будет проще, не нужны драйверы для раскачки полевиков, полная гальваническая развязка.
Ответить
0
Vslz #
Не очень понятно, о какой схеме идет речь.
Есть хоть один рабочий пример схем, работающих по такой топологии ?
Простых методов формирования ШИМ-синусоиды нет. Если что-то оказалось слишком простым, то присмотритесь, возможно закралась ошибка.
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется сила тока?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Raspberry Pi 2
Raspberry Pi 2
Программатор Pickit3 FM-модуль RDA5807M
вверх