Jump to content

    
Sign in to follow this  
sonycman

Схема фильтра ШИМ регулятора напряжения

Recommended Posts

Я знаю, щас меня пан Microwatt зафукает, я Вам завтра выложу источник на Tiny25, как раз подходящий под Ваши требования ;) Весь проект, с модельками и исходниками. Покрутите.

Та шо ж я, Змей Горыныч что ли, на все пламенем фукать?

Реализаций может быть много. Дело вкуса.

Лишь бы хорошо работало.

Share this post


Link to post
Share on other sites
Это СИСТЕМА и в ней могут быть неожиданности, которые не учтешь расчетом. Многие параметры заранее неизвестны. Ошибки приводят к тому, что вентилятор начинает работать в релейном режиме. Т.е включаться на минуту-две с максимальной мощностью, потом отключаться на такое же время. При этом температура охлаждаемого объекта может реально скакать на десятки градусов. Это (термоциклирование) для аппаратуры еще хуже, чем постоянный нагрев.

Практический совет - не допускайте полной остановки вентилятора даже сразу после включения, когда аппаратура еще холодная. Это поможет упростить задачу.

Модель регулирования такая:

Toff - температура t, ниже которой вентилятор останавливается (Vout = 0).

Tmin - t, начиная с которой вентилятор вращается с мин. (RPMmin) оборотами.

Tmax - t, после достижения которой вентилятор вращается с макс. (RPMmax) оборотами.

В диапазоне Tmax - Tmin вычисляется соотв. значение оборотов между RPMmin и RPMmax.

 

Допустим, процессор: Toff = 25, Tmin = 30, Tmax = 50, RPMmin = 50%, RPMmax = 100%.

Вентилятор сможет остановиться только если сист. блок вынести на балкон зимой, или погрузить систему в сон :)

Никакого релейного режима, так как предусмотрен определённый запас по температуре (Tmin - Toff).

 

Или, например, вытяжной тыловой вентилятор корпуса (в качестве датчика - тот же датчик процессора): Toff = 45, Tmin = 50, Tmax = 60, RPMmin = 40%, RPMmax = 80%.

При слабой загрузке - отключен. Включится только при повышении t на пять градусов с температуры отключения...

Можно и увеличить это значение :)

 

Можно ввести фильтрацию результатов измерения, можно устанавливать таймеры - возможностей море, стоит только захотеть.

Практика покажет недостатки и отшлифует модель.

Share this post


Link to post
Share on other sites

Ага, прекрасный алгоритм. На бумаге все прекрасно.

Сам вентилятор при включении имеет значительный гистерезис. Датчик сильно врет по времени. Производительность вентилятора сильно нелинейна от приложенного напряжения и от модели к модели.

Все вместе это может привести либо к редейному режиму, либо к автоколебаниям скорости с довольно малым периодом 2-3 секунды. Вентилятор взвывает, как порывы ветра при вьюге. Субъективно это быстро надоедает, уж лучше бы он выл громко, но на одной ноте.

Ладно, пробуйте, потом расскажете.

Share this post


Link to post
Share on other sites
Вам нужно ввести локальную обратную связь по напряжению. А внешним сигналом лишь изменять уровень опорного сигнала, относительно которого ШИМ-контроллер (посредством ООС) будет обеспечивает стабилизацию выходного напряжения.

Про нелинейность. Все верно, так и должно быть. Введение локальной ООС по напряжению должно устранить эту нелинейность.

А не подскажете микросхему buck конвертера с доступным выводом для опорного напряжения?

Ага, прекрасный алгоритм. На бумаге все прекрасно.

Сам вентилятор при включении имеет значительный гистерезис. Датчик сильно врет по времени. Производительность вентилятора сильно нелинейна от приложенного напряжения и от модели к модели.

Все вместе это может привести либо к редейному режиму, либо к автоколебаниям скорости с довольно малым периодом 2-3 секунды. Вентилятор взвывает, как порывы ветра при вьюге. Субъективно это быстро надоедает, уж лучше бы он выл громко, но на одной ноте.

Ладно, пробуйте, потом расскажете.

Но ведь сейчас это не особо важно. Методика будет в любом случае отлажена и доведена до ума программно.

Мне пока важно закончить с аппаратной частью...

 

Вот замутили тут меня со стабилизацией по напряжению :(

Share this post


Link to post
Share on other sites
Ага, прекрасный алгоритм. На бумаге все прекрасно.

Сам вентилятор при включении имеет значительный гистерезис. Датчик сильно врет по времени. Производительность вентилятора сильно нелинейна от приложенного напряжения и от модели к модели.

Все вместе это может привести либо к редейному режиму, либо к автоколебаниям скорости с довольно малым периодом 2-3 секунды. Вентилятор взвывает, как порывы ветра при вьюге. Субъективно это быстро надоедает, уж лучше бы он выл громко, но на одной ноте.

Ладно, пробуйте, потом расскажете.

Ну... релейный режим - тоже автоколебания. А вот про субъективно... Это очень субъективно - людям с хорошим слухом медленное изменение частоты еще противнее, чем искусственная вьюга.

Share this post


Link to post
Share on other sites

Почему у большинства компактных buck регуляторов макс. duty cycle не превышает 97%?

Ведь это значит, что не видать мне 12 вольт на выходе с таким регулятором!

Share this post


Link to post
Share on other sites
Почему у большинства компактных buck регуляторов макс. duty cycle не превышает 97%?

Ведь это значит, что не видать мне 12 вольт на выходе с таким регулятором!

Конечно не видать.

Более того, buck регулятор хорошо работает при duty cycle от 0.5 и ниже. Все, что больше половинки вносит трудности с его устойчивостью. Начинаются нашлепки со слоп-компенсацией, фазовой коррекцией....

Share this post


Link to post
Share on other sites

Вот обещаный проект. Это степдаун с 10-14 вольт на 3.3...9 мощностью до 10Вт. Расчитан на режим непрерывных токов.

 

post-6610-1233489010_thumb.jpg

 

DCDC_T25.ZIP

 

В архиве исходники под IAR плюс моделька в MicroCap8 (к сожалению, чистую модель для проверки усточивости я потерял) и модель в Proteus'e. Модель в протеусе была сделана как проба, однако, оказалось, что для моделирования именно источников на процах очень даже ничего.

 

По схеме - Q2,Q3 - драйвер затвора, Q5 - смешивание двух шимов для обеспечения мертвого времени, один шим - регулятор, второй - просто ограничение мертвого времени. Простое добавление мертвого времени в софт регулятора прилично увеличивает по тактам, решил сделать так. Q4 - компаратор среднего тока. По мере превышения порога сначала через обратную связь работает, если вдруг проц не живет, то ограничиват напряжение на затворе, а дальше умирает предохранитель.

 

Собственно сам регулятор написан на асме и представляет из себя П и И-звенья. Д-звено выполнено в виде конденсатора, шунтирующего верхний резистор делителя - так лучше, чем программное Д-звено.

 

Единственно что, пришлось в софте сделать специальный #define PROTEUS, чисто для обхода глюков эмулятора.

 

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

 

В железе проект проверял, вполне модельке соответствует. Но надо обратить внимание на ESR выходного конденсатора - если оно велико, будет возбуд. В реальной жизни ключ - IRLMS6802. R6 - пять резисторов по 1Ом впараллель. Драйвер можете выбрать на свой вкус, однако, как по мне - 2 транзистора в SOT23 меньше любого драйвера, а про цену помолчим вообще ;)

Share this post


Link to post
Share on other sites
Конечно не видать.

Более того, buck регулятор хорошо работает при duty cycle от 0.5 и ниже. Все, что больше половинки вносит трудности с его устойчивостью. Начинаются нашлепки со слоп-компенсацией, фазовой коррекцией....

Ну вот, это мне не подходит. Получается хуже, чем вообще без регулятора. :(

Сейчас есть чипы со 100% скважностью. Думаю попробовать такой.

Но, в любом случае, придётся добавить ОУ для подачи опорного напряжения на делитель feedback вывода.

И юзать LUT таблицу, так как нелинейность заданного/действительному напряжению будет много больше.

В общем, сомнительное удовольствие...

 

Идеальной была бы компактная микросхема с REF выводом, со 100% duty cycle и с диапазоном входных напряжений не менее 12 вольт.

Если кто в курсе - подскажите, пожалуйста :)

 

Вот обещаный проект. Это степдаун с 10-14 вольт на 3.3...9 мощностью до 10Вт. Расчитан на режим непрерывных токов.

Спасибо, Дмитрий.

А можно эту схему приспособить для работы в 0-12в. 1А диапазоне?

В принципе, тоже довольно сложная конструкция. Требует много соединений с контроллером, если ставить 4 канала...

А зачем нужна кнопка и резистор R9?

Share this post


Link to post
Share on other sites
А зачем нужна кнопка и резистор R9?
Как я понимаю, R8 и R9 нужны для создания более адекватной модели электролита (эквивалент ESR) в программе-моделировщике Proteus.

Share this post


Link to post
Share on other sites
А можно эту схему приспособить для работы в 0-12в. 1А диапазоне?

 

Не вижу особых проблем.

 

Во-первых, убрать Dead Time, заменив тут

  while(dt<0xE0);

 

0xE0 на 0xFF.

 

Во-вторых, уменьшить токоизмерительный резистор. Ну, скажем, до 0.15ом.

 

В принципе, тоже довольно сложная конструкция. Требует много соединений с контроллером, если ставить 4 канала...

 

Можно убрать аппаратное внесение deadtime и выполнить его программно. Тогда один контроллер сможет справиться с двумя каналами.

 

А зачем нужна кнопка и резистор R9?

 

Это нагрузки добавить в симуляторе, чтобы посмотреть переходный процесс.

 

Собственно, именно для "поиграться" с этим проектом, поставьте протеус. Я вообще отрицательно к симуляторам камней отношусь, но именно в таком случае очень даже неплохо выходит.

 

Как я понимаю, R8 и R9 нужны для создания более адекватной модели электролита (эквивалент ESR)

 

Безусловно.

 

Щас поглядел в моделлере. Работает до максимального напряжения на нагрузку 10ом. При этом, как оказалось, не надо уменьшать резистор токоизмерительный, а надо уменьшить скорость мягкого запуска, вот так

  do
  {
    dt++;
    OCR1B=dt;
    __delay_cycles(100);
  }
  while(dt<0xFF);

 

Иначе, защита по току не дает нарасти напряжению на выходе - регулятор-то пытается получить нужное напряжение по принципу "быстрей-быстрей", пытаясь вдуть ток в нагрузку, тут ему краник и пережимают :)

 

И щас посмотрел свежим взглядом, вроде нет проблем сделать программный dead-time.

Share this post


Link to post
Share on other sites
Ну вот, это мне не подходит. Получается хуже, чем вообще без регулятора. :(

Сейчас есть чипы со 100% скважностью. Думаю попробовать такой.

 

Спасибо, Дмитрий.

А можно эту схему приспособить для работы в 0-12в. 1А диапазоне?

В принципе, тоже довольно сложная конструкция. Требует много соединений с контроллером, если ставить 4 канала...

Что у Вас за вентилятор? Так таки 1 ампер и потребляет? Что за датчик температуры по сопротивлению?

В конце-концов, можно поставить обыкновенный компенсационный регулятор и не заморачивать себе голову кучей ключей, контроллеров и прочими высокохудожественными декорациями. Максимум что такой регулятор будет рассеивать для 12ваттного вентилятора - 3 ватта. Сдуть еще 3 ватта таким вертолетом можно легко.

Ну, потеряете на регуляторе 0.5-1 вольт, ни один ШИМ лучше не вытянет.

Share this post


Link to post
Share on other sites
Что у Вас за вентилятор? Так таки 1 ампер и потребляет? Что за датчик температуры по сопротивлению?

В конце-концов, можно поставить обыкновенный компенсационный регулятор и не заморачивать себе голову кучей ключей, контроллеров и прочими высокохудожественными декорациями. Максимум что такой регулятор будет рассеивать для 12ваттного вентилятора - 3 ватта. Сдуть еще 3 ватта таким вертолетом можно легко.

Ну, потеряете на регуляторе 0.5-1 вольт, ни один ШИМ лучше не вытянет.

Один канал может содержать от одного до четырёх вентиляторов. Четыре штуки легко могут потреблять ток до 1А.

Датчики на DS18S20.

 

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

Да и реобас внутри отсека 5.25 будет плохо обдуваться.

 

Та схема, что имеется сейчас, даёт на выходе 11.5 вольт макс.

Share this post


Link to post
Share on other sites

Вот что получилось сейчас:

post-19695-1233510106_thumb.png

 

Переменный резистор заменить на ФНЧ для сигнала ШИМ от контроллера и всё :)

Вроде работает. Выходное напряжение устанавливается от 0.5 до 11.5 вольт весьма линейно.

 

Правда, пульсации на выходе стабилизатора увеличились после установки ОУ. Возможно, надо его как то скорректировать...

Может, подскажете, как?

 

А можно и так оставить, не так уж важно, в принципе... :)

 

Закажу на днях buck контроллеры со 100% duty cycle.

Например, LM3475 понравился, правда, ключ внешний надо...

 

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

К тому же корпуса ТО-220 вместе с радиаторами и те-же ОУ скушают никак не меньше - скорее, больше места на плате...

Share this post


Link to post
Share on other sites
Вот что получилось сейчас:

post-19695-1233510106_thumb.png

 

Переменный резистор заменить на ФНЧ для сигнала ШИМ от контроллера и всё :)

Вроде работает. Выходное напряжение устанавливается от 0.5 до 11.5 вольт весьма линейно.

Ну и хорошо, если получилось.

Для меня только полная загадка зачем тут еще и ОУ? В одно плечо делителя включается либо термодатчик, либо сигнал управления с пресловутого контроллера...

Выходное напряжение регулировать ниже 5 вольт нет смысла. Вентилятор при 3-4 вольтах с места не стронется.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this