Заголовок сообщения: Re: фазоимпульсное управление на таймерах STM32
Добавлено: Ср июл 06, 2016 11:27:42
Собутыльник Кота
Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04 Сообщений: 2694 Откуда: г. Чайковский
Рейтинг сообщения:0 Медали: 1
Нормально все dosikus расписюлил . Все стало на свои места. Я когда разбирался с таймерам смотрел на схему таймеров. Там написано, что таймер тактируется от Internal Clock. Я решил что это частота ядра (а по факту опять случайное совпадение по частоте), хотя там же подписано TIMx CLK from RCC. Поглядите, шина работает на своей допустимой частоте, CLK таймера умножается на 2.
_________________ Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Делал я недавно полууправляемый выпрямитель. СИФУ я реализовал на трёх таймерах. Один из таймеров - Systick, его я использовал для формирования угла открытия тиристоров. Второй таймер в режиме захвата по детектору нуля расчитывал период и направление вращение фаз, он же запускал СИФУ. Третий таймер в режиме ШИМ управлял тиристорами. Время открытия тиристоров регулировал регистрами CCP CCP1 (контроллер аля Миландр).
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Заголовок сообщения: Re: фазоимпульсное управление на таймерах STM32
Добавлено: Пт ноя 11, 2016 21:43:58
Это не хвост, это антенна
Карма: 20
Рейтинг сообщений: 188
Зарегистрирован: Вс мар 28, 2010 12:52:22 Сообщений: 1368 Откуда: Беларусь
Рейтинг сообщения:0
Делал фазовый регулятор на PIC16. Измерял несколько периодов сетевого напряжения, высчитывал среднее значение. Это среднее делил на 2. Для хорошего регулирования ограничивал угол открытия симистора по 5% от полученного значения полупериода. В противном случае имело место быть перерегулирование (скачек в след. полупериод) и редкий пропуск полуволны. Работа строилась на одном таймере. При синхронизации в таймер пишется сумма 5% + необходимый угол открытия. По прерыванию запускается этот же таймер на фиксированную длительность импульса. В след. прерывании таймера выполняется запуск на полупериод минус длительность открывающего импульса. Код довольно объемный, но работает красиво. Плюс - абсолютный пофигизм к частоте питающей сети.
_________________ «Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Я делал управление симистором диммера на одном таймере. Симистор управлялся оптопарой 3052, Таймер 2 в режиме PWM и генерации одного импульса. Детектор ноля подавал на аппаратное прерывание. Функция обработчика прерывания запускала таймер каждый раз по переходу через ноль. Для изменения задержки менял регистр ССR. Значением в ARR задавал немного меньше полпериода, для защиты от перескока на следующий. Выключаю нагрузку запретом/отключением прерывания. Работает вполне нормально. Управление при 100 (почти 100 изза защитных интервалов) % получается не коротким импульсом, а в почти весь полупериод. Возможно это энергетически не оптимально, но вполне себе просто и работает.
Заголовок сообщения: Re: фазоимпульсное управление на таймерах STM32
Добавлено: Вт авг 08, 2017 16:43:46
Собутыльник Кота
Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04 Сообщений: 2694 Откуда: г. Чайковский
Рейтинг сообщения:0 Медали: 1
Я в другом проекте сделал тоже от одного таймера. Только запускается таймер не от прерывания, а от внешнего события и если задержку поправлять не надо, то программа не участвует в формировании управляющего импульса совсем.
AVPD писал(а):
Управление при 100 (почти 100 изза защитных интервалов) % получается не коротким импульсом, а в почти весь полупериод.
Не, смысла нет в этом. Но я так тоже делал, а потом посчитал и оказалось что до 20 градусов задержки открытия мощность практические не теряется, а 20 градусов это прилично.
_________________ Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Я в другом проекте сделал тоже от одного таймера. Только запускается таймер не от прерывания, а от внешнего события и если задержку поправлять не надо, то программа не участвует в формировании управляющего импульса совсем.
AVPD писал(а):
Управление при 100 (почти 100 изза защитных интервалов) % получается не коротким импульсом, а в почти весь полупериод.
Не, смысла нет в этом. Но я так тоже делал, а потом посчитал и оказалось что до 20 градусов задержки открытия мощность практические не теряется, а 20 градусов это прилично.
Можно поподробнее, я только начал изучать контроллеры, и не понял что за "внешнее событие". Что это физически?
Да, обычно так и делают. У меня тоже получается около 1 мс съедается на защитные интервалы в начале и в конце полупериода.
Заголовок сообщения: Re: фазоимпульсное управление на таймерах STM32
Добавлено: Ср авг 09, 2017 15:14:08
Собутыльник Кота
Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04 Сообщений: 2694 Откуда: г. Чайковский
Рейтинг сообщения:0 Медали: 1
Таймер может получить пинок для старта не только от программы, но и от других некоторых событий. Например для таймера можно выбрать источник события и реакцию его на это событие.
Вот настройка таймера для моего "диммера", я ее неполную выкладываю, только то что должно Вас заинтересовать по данном вопросу.
//слайв мод регистр запуск от ETR TIM2->SMCR= //TIM_SMCR_ETP| //ETR полярность, спад в данном случае TIM_SMCR_TS| //ETR включен TIM_SMCR_SMS_2|TIM_SMCR_SMS_1| //110: Trigger Mode - The counter starts at a rising edge of the trigger 0; .... ....
При событии фронт на лапе TIM2_CH1_ETR , таймер получает пинок старта аппаратно.
_________________ Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Третий ответ в этой теме от vastani - имеет верное решение. dr.doc - аналогично. Необходима синхронизация с частотой сети - для исключения помех из сети, и исключения генерации помех самим регулятором.
Заголовок сообщения: Re: фазоимпульсное управление на таймерах STM32
Добавлено: Пт авг 11, 2017 06:52:45
Собутыльник Кота
Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04 Сообщений: 2694 Откуда: г. Чайковский
Рейтинг сообщения:1 Медали: 1
Есть у меня устройство на 2.5кВт. Ложных срабатываний детектора фазы ( обычный мост и оптопара) не замечал. Если есть аппаратная возможность формирования управляющего импульса, то по-моему ее грех не использовать.
_________________ Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Заголовок сообщения: Re: фазоимпульсное управление на таймерах STM32
Добавлено: Пт авг 11, 2017 10:45:02
Собутыльник Кота
Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04 Сообщений: 2694 Откуда: г. Чайковский
Рейтинг сообщения:1 Медали: 1
Мурик писал(а):
автоматически произойдет если таймер работает в режиме One Pulse с программным запуском.
Очень даже не факт. Зависнуть можно, например, в низко приоритетном прерывании и функция диммирования может остаться в работе. Так что, если думать о возможном зависании (и прочих нештатных ситуёвин), нужно реализовывать какой-то супервизор или не парится об этом совсем.
_________________ Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
нужно реализовывать какой-то супервизор или не парится об этом совсем.
stm может зависнуть при исправном коде - сбой на уровне периферии. В этом случае выручает сорвавшийся с цепи собака, которая кусает ресет. У st чипов есть целая псарня для таких случаев, не все собаки кусают насмерть - но всегда очень больно. Две собаки wwdg и iwdg - только для ресета. Прерывания по ошибкам шины данных, защиты данных, сбой pll блоков, и по сбою линий связи. Кроме того на самой периферии есть собственные обработчики ошибок в огромном ассортименте. Критическими считаются собака IWDG, и прерывание BusFault_IRQn - после них свет гаснет. Всё остальное можно дополнительно обработать перед выключением света. Это бывает полезным и необходимым, например переключение важных ног мк в нужное положение, и даже выдержка их в подобном состоянии.
Использовать код от кубика для таких случаев не логично. В кубике есть все описания для подобных событий - но ни одной строчки кода для реальной обработки. Всё это придётся писать самостоятельно, попутно изучая глюки самого кубика. Есть более простой вариант - читать и использовать доку от чипа.
Ошибки программной части исправить во время работы нельзя. Например один дурик использовал ацп для перехода по абсолютным адресам (опрос кнопок). Такие пациенты уже неизлечимы.
Третий ответ в этой теме от vastani - имеет верное решение. dr.doc - аналогично. Необходима синхронизация с частотой сети - для исключения помех из сети, и исключения генерации помех самим регулятором.
Избавляйтесь от АВРовских привычек, как от вредных.
Цитата:
stm может зависнуть при исправном коде - сбой на уровне периферии.
Нонсенс! Это уже не исправный код, а кривой до не могу.
======== Самое правильное решение, ведь таймер по любому используется. Так почему его не задействовать как положено, а не с лишними извращениями?
Цитата:
Я в другом проекте сделал тоже от одного таймера. Только запускается таймер не от прерывания, а от внешнего события и если задержку поправлять не надо, то программа не участвует в формировании управляющего импульса совсем.
Избавляйтесь от АВРовских привычек, как от вредных.
Это не привычка, это алгоритм синхронизации с сетью. Он не зависит от используемого мк. Например есть нагрузка, которой может резко стать плохо от стартового номинального напряжения. Это банальный коллекторный двигатель на пол киловатта с постоянными магнитами. Такие устанавливаются в тренажеры, в детские машинки и так далее. Везде где требуется динамическое торможение и малые габариты. Если на такой двигатель сразу подать полное напряжение, его ток возрастёт примерно в 300 раз от номинала. Отчего его ресурс будет резко сокращаться.
У вас проскочила бяка по сети, и мк уверенно поймал ноль через помеху - в этом случае двигатель получит хороший пинок под зад. А если оный установлен на беговой дорожке - то человек с большой вероятностью упадёт. А потом суд, финансы... Включение мощного трансформатора не стой ноги - бросок тока. Переключение нагрузки с сети на ups без синхронизации - к красивому фейерверку. Есть масса примеров кривых алгоритмов, лечится собственным рублём.
Чип st может зависнуть, так как он хоть чем-то но управляет. В этом случае импульсная помеха может исказить внешние данные, или даже нарушить его питание. От прямого попадания молнии - защиты не существует. Но и оставлять линии вовсе без защиты - себе дороже. Баланс между маниакальностью и пофигизмом - ценность самого прибора и устройства в целом. Для каждого случая свой баланс, но не использовать ресурсы мк по прямому назначению - это просто глупо.
Сейчас этот форум просматривают: Aleks70 и гости: 16
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения