Description
Привет, возникла потребность диммировать нагрузку насоса убирая целые периоды.
На данный момент реализовал эту логику сам, но решил, что стоит предложить такой режим работы и в твою библиотеку, поскольку находил в интернете подобные вопросы, но готовых решений в библиотеке не нашел.
Кратко опишу задачу:
Есть маленький насос 48Вт 220В, это вибрационный насос из кофеварки, и есть потребность в регулировании мощности данного насоса от 0 до 100%
Насос работает достаточно просто, на одном полупериоде плунжер и вода толкается вперед, на втором полупериоде(этот полупериод срезан диодом внутри насоса) плунжер возвращается в исходное положение пружинной которая находится внутри насоса, в этот момент берется новая порция воды.
Решение:
-
Казалось бы можно аналогично мотору срезать часть полупериода и тем самым регулировать работу насоса, но такой режим работы обеспечит регулировку в лучшем случае от 50% до 100% так как возникает ситуация при которой срезанного полупериода не будет хватать для преодоления сопротивления пружины. То есть при срезании более половины полупериода плунжер просто не будет двигаться. Как я понял в твоей библиотеке этот режим называется фазовым
-
Второй вариант, использовать алгоритм брезенхемма равномерно размазывая полупериоды, но из-за диода только одна часть полупериодов выполняет полезную работу, следовательно пропущенный алгоритмом брезенхемма полупериод далеко не факт сделает полезную работу.
-
И финальное решение это использовать алгоритм брезенхемма, но не для каждого полупериода, а для целого периода. В общем и целом это выходит тот же самый алгоритм лишь с тем отличием, что у нас игнорируется каждый второй сигнал с ZC пина.
То есть когда диммер получает сигнал от мк, он пропускает первую полуволну, после чего игнорирует вычисления в прерывании на ZC тем самым пропуская вторую полуволну, и уже на следующий сигнал ZC выполняет вычисления по брезенхемму.
Я предполагаю, что в твоей библиотеке можно реализовать это пропуская вызов tick()(хотя и не уверен) но из-за того, что это не слишком очевидная в понимании вещь, можно было бы добавить такой режим работы прямо в библиотеку
Возможно я плохо вдался в документацию и этот режим уже существует, дай пожалуйста знать если это так)
P.S Я понимаю, что для этой задачи правильнее использовать регулировку по частоте, но частотного преобразователя в маленьком корпусе просто не существует, а вот изменять частоту от 0 до 50Гц вполне можно и брезенхеммом