Здравствуйте!!! Уважаемые объясните пожалуйста, как правильнее реализовать программно детектор нуля синусоидального сигнала 50Гц-10кГц на мк стм32 на HAL. Начиная от алгоритма до реализации, до меня самого до конца не доходит. Используя АЦП, Таймеры либо АЦП, ДМА, таймеры
Пробовал: 1) использовать оконный компаратор АЦП (Типо в референсе он как раз применяется для детектирования), задаю окно, но получается, что каждый раз, когда значение выходит за min или max у меня вызывается флаг и прерывание я считываю и проверяю значение АЦП и так постоянно это не то что нужно и ресурсно-затратно, мне нужно наоборот чтобы когда значение ацп было в окне (тоесть около нуля+ учет на дребезг) я вызывал функцию единожды, считывал ещё раз значение АЦП убеждался то что это переход через 0 с + на - или наоборот и далее делал уже то что мне нужно и опять это нужно делать единожды до следующего перехода.
2)По таймеру через каждые ххх мкс запускаю ацп, считываю значение, вычитаю середину и смотрю получился переход через ноль или нет?
3) Использую АЦП+ ДМА по набору буфера считаю среднее делаю вычисления и выводы
Но до правильного результата так и не дошел
Алгоритм нужен исходя из условий, то что одновременно переходов через ноль нужно считать до 5 штук ( пять сигналов) Ну и минимально ресурсно и трудозатратно для контроллера.
Для компараторов значения мин/мах нужно менять после срабатывания. Значение нуля просчитывается через сумму значений буфера, но можно и аппаратно - что кстати более точно. цикл: 1 прерывание мин (0+1), после срабатывания меняем значение мин на (0-1) 2 прерывание мин (0-1), после срабатывания вырубаем прерывание мин, и включаем прерывание мах со значением (0-1) Произошёл переход через ноль. 3 прерывание мах (0-1), после срабатывания меняем значение мах на (0+1) 4 прерывание мах (0+1), после срабатывания вырубаем прерывание мах, и включаем прерывание мин со значением (0+1) Произошёл переход через ноль.
Этот вариант предназначен для идеального синуса, чистого как слеза.
Для компараторов значения мин/мах нужно менять после срабатывания. Значение нуля просчитывается через сумму значений буфера, но можно и аппаратно - что кстати более точно. цикл: 1 прерывание мин (0+1), после срабатывания меняем значение мин на (0-1) 2 прерывание мин (0-1), после срабатывания вырубаем прерывание мин, и включаем прерывание мах со значением (0-1) Произошёл переход через ноль. 3 прерывание мах (0-1), после срабатывания меняем значение мах на (0+1) 4 прерывание мах (0+1), после срабатывания вырубаем прерывание мах, и включаем прерывание мин со значением (0+1) Произошёл переход через ноль.
Этот вариант предназначен для идеального синуса, чистого как слеза.
Для компараторов значения мин/мах нужно менять после срабатывания. Значение нуля просчитывается через сумму значений буфера, но можно и аппаратно - что кстати более точно. цикл: 1 прерывание мин (0+1), после срабатывания меняем значение мин на (0-1) 2 прерывание мин (0-1), после срабатывания вырубаем прерывание мин, и включаем прерывание мах со значением (0-1) Произошёл переход через ноль. 3 прерывание мах (0-1), после срабатывания меняем значение мах на (0+1) 4 прерывание мах (0+1), после срабатывания вырубаем прерывание мах, и включаем прерывание мин со значением (0+1) Произошёл переход через ноль.
Этот вариант предназначен для идеального синуса, чистого как слеза.
Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.
+ не уточнил, что надо детектор на три фазы на одном ацп на разных каналах, и в такой реализации он не будет работать
Логично что не будет, да и не должен при таком применении. Для промышленного выпрямления напряжения симисторами применяются датчики направления тока, ну это как измерение напряжения десяти ватным резистором. Вся суть в том что симистор должен включаться в момент когда через него может течь ток в нагрузку, а не наоборот. Нагрузка бывает разной, особая весёлость - трёхфазный двигатель. Чуть проще - трансформатор, и ещё проще - получение постоянного напряжения. Регулировать симисторами резистивную нагрузку в фазовом режиме - просто глупо, там проще применить реле.
В целом подобное управление собирается на аналоге, но если очень хочется - то можно и на мк. Датчики направления тока строго аналоговые, ущерб от фейерверка намного выше копеечной стоимости мк. Сам мк может участвовать в синхронизации процессов переключения и регулировке. Это уже чисто программный код. На таймеры можно скинуть подсчёт временных интервалов и фазы. На ацп: измерение активного напряжения фаз и нагрузки, токов каждой фазы и нагрузки. Здесь тремя линиями не обойтись, да и разрядность мала.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Посмотрите в сторону вейвлет преобразования. Если подобрать подходящую функцию, то по ее минимуму или максимуму можно определить где был переход через 0, но с задержкой. Но это не для очень широких диапазонов частот. И вычислительные ресурсы использоваться будут немеряно - нужно считать сумму 8-16 произведений для каждого отсчета АЦП.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 35
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения