Система измерения потребляемой процессором мощности своими руками

Статья прислана на конкурс Летний АвторRUN!


Предупреждение: никто кроме вас не несет ответственности при выходе из строя вашего железа в результате неудачных экспериментов.


В современных компьютерах можно контролировать много разных параметров - напряжения на основных узлах системы, температуру, частоту процессора и других устройств, частоту вращения вентиляторов. Но не контролируется такой важный параметр как потребляемая мощность основных узлов системы. Есть некоторые блоки питания, которые могут измерять суммарную потребляемую мощность от сети, но при этом не учитывается КПД самого источника питания и невозможно определение потребления по отдельным узлам системы. Устранить это упущение я поставил за целью данной статьи. Далее будет описано устройство, позволяющее измерять мощность, потребляемую центральным процессором и видеокартой через кабель дополнительного питания по линии +12В с использованием микроконтроллера и представления результатов на отдельный индикатор.




Теория

Мощность определяется произведением тока потребления на напряжение по линии потребления. Измерение напряжения не составляет особой трудности в отличие от тока. В электронике широко применяются три типа датчиков тока: резистивный датчик, трансформатор тока и датчик на основе эффекта Холла. Каждый из методов имеет свои достоинства и недостатки.

Резистивный датчик - самый простой и доступный метод, дает возможность измерять постоянный и переменный ток, имеет линейную характеристику и высокую точность. Основные недостатки отсутствие гальванической развязки, потери на измерительном резисторе, что приводит к падению выходного напряжения и разогреву резистора. Для уменьшения динамических потерь на измерительном резисторе (шунт) делают его сопротивление довольно малым исходя из тока нагрузки, чтобы падение напряжения не влияло на характеристики устройства, что приводит к необходимости усиления сигнала снятого с шунта.

Трансформатор тока - более дорогой метод, применяется только для измерения переменного тока . Преимущества данного метода: отсутствие потерь в линии измерения, гальваническая развязка, отсутствие источника питания. Основной недостаток трансформатора тока - измерение только переменного тока.

Датчик на основе эффекта Холла – основан на появлении напряжения на концах полоски проводника или полупроводника, помещенного перпендикулярно силовым линиям магнитного поля. Для меди напряжение Холла составляет около 24мкВ/кГс, для полупроводника – свыше 100 мВ/кГс с учетом направления магнитного поля, что вполне достаточно для датчика тока. Главным преимуществом является отсутствие потерь и гальваническая развязка. В датчиках Холла выходное напряжение пропорционально магнитному полю, которое в свою очередь пропорционально току. Основные недостатки - меньшая точность, чем у резистивных датчиков тока, влияние внешних магнитных полей и требующийся для работы внешний источник питания.

Для наших целей подходят резистивные датчики и датчик тока на эффекте Холла. Датчики тока на эффекте Холла имеют интегрированную силовую шину, простую схему включения, но они пока достаточно дороги. Использование резистивных датчиков требует наличия самих шунтов, а также схемы усиления и преобразования полученного сигнала, сам же ток определяется по закону Ома (Iш = Uш/Rш), падение напряжения на шунте, сопротивление которого постоянно и известно. В системе с несколькими источниками разного напряжения питания измерительный шунт нужно устанавливать только в плюсовую линию для положительных напряжений и в минусовую для отрицательных. Но АЦП работает с напряжениями от нуля до напряжения опорного источника, поэтому напряжение на шунте нужно преобразовать в соответствующий вид, для этого используют различные схемы усиления напряжения. Широко применяются две схемы: дифференциальный усилитель напряжения (рисунок 1) и преобразователь напряжение - ток (рисунок 2).


Рисунок 1




Рисунок 2



Практика

При разработке принципиальной электрической схемы, были использованы недорогие и доступные комплектующие. Я использовал микроконтроллер AТMega8 фирмы ATMEL - это 8-ми битный RISC-контроллер, который имеет 8 каналов АЦП разрядностью 10 бит, три канала аппаратного ШИМ, внутренний откалиброванный RC-генератор. Был использован контроллер в 32-выводном корпусе TQFP, по причине наличия нескольких таких микросхем. Дополнительно было решено добавить два канала измерения температуры и два канала управлением вентиляторами. Принципиальная электрическая схема устройства находится здесь.

Центральный процессор во всех новых материнских платах питается от +12 В через дополнительный 4-х или 8-ми контактный разъем на материнской плате. Мощные видеокарты так же питаются через дополнительный 6-ти контактный разъем, у топовых моделей питание подается уже через несколько разъемов дополнительного питания. Так как ток потребления импульсный, то будет измеряться средняя (действующая) мощность, она больше соответствует выделяемой тепловой мощности, чем импульсная пиковая.

Для практической реализации измерения тока, после многочисленных экспериментов я применил схему преобразователя напряжение-ток. Был использован дешевый операционный усилитель LM358. Но для того чтобы он смог работать с входным напряжением 12 В, напряжение питания самой микросхемы, по ее технической документации, должно быть как минимум на 2 В выше входного сигнала. Поэтому питание на операционный усилитель было взято с обмотки силового трансформатора по линии 12 В, через отдельный выпрямитель и параметрический стабилизатор на 15 В.



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



Сигнальные провода подпаяны на концах одного из желтых проводов по линии +12 В в кабелях питания процессора и видеокарты, это нужно сделать как можно ближе к разъему с одной стороны и к точке впаивания кабеля в самом блоке питания.





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











В качестве датчиков температуры используются цифровые датчики DS18B20 фирмы Dallas Semiconductor в корпусе ТО-92, работающие в диапазоне температур от –55°C до +125°C с точностью измерения 0,1°C. Датчики имеют интерфейс связи 1-WIRE, который дает возможность считывать информацию по одному сигнальному проводу. Я использовал схему включения по двум проводам с паразитным питанием. В текущей версии прошивки реализовано измерение температуры от 0°C до +99°C с точностью 1°C . При отсутствии подключенного датчика вместо температуры отображаются прочерки. Также отображаются состояние ШИМ на вентиляторах.





Схема управления вентиляторами импульсная с частотой ШИМ около 80 кГц, в качестве драйвера использовалась микросхема IR4428 фирмы International Rectifier, двухканальный драйвер мощных полевых транзисторов с двухтактным выходом, с максимальным рабочим током 1,5 А. Настройка оборотов производится кнопками S1-S4:
  • S1 – "UP"
  • S2 – "SET"
  • S3 – "DOWN"
  • S4 – "SEL"


Для устранения дребезга контактов в кнопках, контролер реагирует на отпускание кнопки при нажатии на время около секунды.

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



Потом на выходах управления устанавливается значение ШИМ, записанное в памяти контролера по соответствующему каналу. На дисплей выводится информация о потребляемой мощности схемой питания процессора, видеокарты и напряжение питания по линии +12В. Переключение между индикацией мощности с напряжением питания, индикацией температуры и управлением оборотов вентиляторами производится кнопкой "SEL" в циклической форме, управление оборотами с помощью кнопок "UP" и "DOWN", запись значений в память - кнопкой "SET". Если не нажимать кнопку "SET", то настройка сохранится только до выключения системы. В нынешней версии прошивки обороты регулируются вручную в диапазоне от 30% до 90%. Полная остановка мне не нужна, а получить полные 12 В на вентиляторах оказалось невозможным, но об этом дальше.



Калибровка схемы измерения тока производится при отключенном от компьютера блоке питания, с помощью мультиметра и мощных резисторов номиналом 2 Ома и 50 Вт или автомобильных галагеновых ламп на 12 В и мощностью около 50 Вт. При калибровке тока потребляемого процессором к блоку питания подключается один резистор на линию +5 В, другой резистор через амперметр подключается к разъему питания процессора, в котором замыкаются вместе оба желтых провода - так как питание на процессор идет по двум проводам, то и нужно калибровать под сопротивление двух проводов. Блок питания включается замыканием зеленого провода на любой из черных проводов в 20-ти контактном разъеме. Одновременным нажатием кнопок "SEL" и "SET" на время около одной секунды производится вход в меню калибровки токов и напряжения, далее кнопками "UP" и "DOWN" производится настройка значения тока на дисплее, чтобы его показания соответствовали показаниям амперметра. Потом необходимо на секунду нажать кнопку "SET" значение делителя для тока по линии процессора сохранится в память контролера, потом контролер переключится на настройку тока по линии питания видеокарты.



Но так как у нас мультиметр только один, выключаем БП и подключаем резистор через амперметр к разъему дополнительного питания видеокарты, при этом замыкаем все желтые провода в разъеме, в моем случае три провода. Заходим в меню настройки кнопкой "SEL" выбираем настройку тока питания видеокарты и аналогичным способом настраиваем ток по линии питания видеокарты, после записи контролер переключается на настройку измерения напряжения питания по линии +12 В.



Отключаем мультиметр, подключаем резистор на любой из желтых проводов, мультиметр подключаем на измерение постоянного напряжения на линии +12 В, производим настройку напряжения на дисплее до соответствия показаниям мультиметра, нажимаем "SEТ" контролер переключается в режим измерения потребляемой мощности и напряжения по линии +12 В.



Эту процедуру нужно проводить при смене БП или проводов на дополнительное питание процессора или видеокарты.

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

Схема простейшего SPI программатора на COM-порт:



Контролер можно прошить программой Uniprof. Если СОМ-порт отсутствует? то в ее описании есть схема программатора для LPT-порта. При прошивке контроллера нужно выставить FUSE биты в соответствии с следующим скриншотом.



Советую особо не ковыряться в этом разделе и изменять только fuse low - можно остаться без контроллера, который "вылечится" лишь только с помощью параллельного программатора.


Испытание

Испытание и дальнейшая эксплуатация производилось на системе следующей конфигурации:
  • Материнская плата: ASUSTek P5N-SLI (nvidia 650i), LGA 775;
  • Процессор: Intel Core 2 Duo E4400 2000 МГц, FSB 200 МГц x 4, L2 2 x 2 Мб;
  • Система охлаждения CPU: Thermaltake Sonic Tower;
  • Видеокарта: Palit 8800GTS, 320Mб, 320 бит;
  • Оперативная память: 2 x 1024 Мб DDR2 PC5300 Kingston Value Ram;
  • Дисковая подсистема: SATA-II 250 Гб, Segate ST3250620AS, 7200 об/мин, 16 Мб, NCQ;
  • Блок питания: Chieftec GPS-400AA-101A.




Тестирование процессора проводилось в программе S&M v1.7.3 (она создает не самою большую нагрузку на процессор), так как ТАТ на имеющейся конфигурации отказался запускаться.

На частоте 3150 МГц при напряжении на процессоре 1,45 В потребление в простое составило около 25 Вт, под нагрузкой в S&M потребление около 75 Вт.




На частоте 3500 МГц при напряжении на процессоре 1,55 В потребление под нагрузкой в S&M уже было около 110 ватт.





Тестирование видео проводилось утилитой ATITool 0.25 при прогреве волосатым кубом. В номинале на частоте видеопроцессора 504/1188 МГц и частоте памяти 1600 МГц (DDR), потребление видеокартой составило около 70 Вт.



С разгоном на частоте видеопроцессора 621/1458 МГц и частоте памяти 2000 МГц, потребление было около 80 Вт.



Ожидания по потреблению процессора полностью подтвердились, но вот потребление видеокарты оказалось как-то маловато. Все стало на свои места после осмотра разводки питания видеокарты, от разъема дополнительного питания, питается только графический процессор, а память питается от +12 В с разъема PCI-Express x16. Таким образом, это были результаты потребления системой питания видеопроцессора. Общее потребление можно организовать установкой перемычки с +12 В разъема дополнительного питания на вход схемы питания видеопамяти и заклеить скотчем контакты питания +12 В на разъеме PCI-Express видеокарты.


Выводы

Поставленную задачу удалось реализовать приблизительно на 90%, потому что меряется не потребление самого процессора и видеопроцессора, а потребление системами питания соответствующих узлов системы. Питание мощных узлов компьютера производится от импульсных стабилизаторов по схеме синхронного выпрямителя и имеют КПД в пределах 80-90%, таким образом можно сделать поправку по потребляемой мощности соответствующих узлов на -10%-20% от замеренных значений.

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

Использование в качестве драйвера микросхемы IR4428 при максимальном ШИМе не дает возможности получить на выходе регулятора напряжение 12 В. Причина оказалась в том, что верхний ключ в драйвере включен по схеме с общим стоком и работает как повторитель, поэтому падение напряжения на верхнем ключе IR4428 составляет около 2,5 В. Для желающих получить максимальное напряжение на выходе нужно будет собирать схему с дополнительным внешним ключом на P-канальном полевом транзисторе и диоде Шоттки. При этом нужно поменять местами сигналы на входах микросхемы IR4428.