Skip to content

Предложение по диммированию полных периодов #2

Open
@Shersula

Description

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

Кратко опишу задачу:
Есть маленький насос 48Вт 220В, это вибрационный насос из кофеварки, и есть потребность в регулировании мощности данного насоса от 0 до 100%
Насос работает достаточно просто, на одном полупериоде плунжер и вода толкается вперед, на втором полупериоде(этот полупериод срезан диодом внутри насоса) плунжер возвращается в исходное положение пружинной которая находится внутри насоса, в этот момент берется новая порция воды.

Решение:

  1. Казалось бы можно аналогично мотору срезать часть полупериода и тем самым регулировать работу насоса, но такой режим работы обеспечит регулировку в лучшем случае от 50% до 100% так как возникает ситуация при которой срезанного полупериода не будет хватать для преодоления сопротивления пружины. То есть при срезании более половины полупериода плунжер просто не будет двигаться. Как я понял в твоей библиотеке этот режим называется фазовым

  2. Второй вариант, использовать алгоритм брезенхемма равномерно размазывая полупериоды, но из-за диода только одна часть полупериодов выполняет полезную работу, следовательно пропущенный алгоритмом брезенхемма полупериод далеко не факт сделает полезную работу.

  3. И финальное решение это использовать алгоритм брезенхемма, но не для каждого полупериода, а для целого периода. В общем и целом это выходит тот же самый алгоритм лишь с тем отличием, что у нас игнорируется каждый второй сигнал с ZC пина.
    То есть когда диммер получает сигнал от мк, он пропускает первую полуволну, после чего игнорирует вычисления в прерывании на ZC тем самым пропуская вторую полуволну, и уже на следующий сигнал ZC выполняет вычисления по брезенхемму.

Я предполагаю, что в твоей библиотеке можно реализовать это пропуская вызов tick()(хотя и не уверен) но из-за того, что это не слишком очевидная в понимании вещь, можно было бы добавить такой режим работы прямо в библиотеку

Возможно я плохо вдался в документацию и этот режим уже существует, дай пожалуйста знать если это так)

P.S Я понимаю, что для этой задачи правильнее использовать регулировку по частоте, но частотного преобразователя в маленьком корпусе просто не существует, а вот изменять частоту от 0 до 50Гц вполне можно и брезенхеммом

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions