Led индикатор загруженности цп

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

Эта статья есть логическим продолжением для применения кода, обрисованного в третьем видеоуроке о mikroPascal.

Исходя из того, что у меня нет лазерного принтера (ЛУТ отпадает), двухъядерный процессор и один светодиод стоит приблизительно 0.8 гривны, было решено делать 3 строки светодиодов по 10  штук в каждой. Две — под индикацию загрузки процессора, и оставшаяся под память либо третье ядро (не сталкивался, но слышал).

Главная информация об устройстве:

  1. Напряжение питания: 5 V
  2. Потребляемый ток: 50 mA 
  3. Частота обновления данных: 0,5

Сейчас возможно перейти к схеме.

Как видите, она достаточно несложная. База схемы — микроконтроллер ATmega8 (в корпусе DIP-28). Общее число подробностей — 40 шт. из них. светодиодов — 31, транзисторов — 5, другое обвязка и микроконтроллер генератора.

Не столько для экономии выводов, сколько для удобства обращения к портам я применял такое включение светодиодов для динамической индикации:

Таким методом мне удалось уложиться в два порта МК (PORTB — 6 пин, PORTC — 5 пин). Возможно было само собой разумеется применять сдвиговые регистры, но это повлекло бы за собой усложнение программы, конечно занятое место на плате. По-этому решил обойтись без них.

На схеме нет токоограничительных резисторов (применительно к светодиодам), так как они трудятся в импульсном режиме. Я применял светодиоды красного, желтого и белого цветов. Красный и желтый — ЦП, белый же для дополнительной строчка.

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

В итоге она оказалась двухсторонней.

Led индикатор загруженности цп

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

И последнее относительно платы — я применял текстолит толщиной 0,5 мм, поскольку другого с двухсторонним покрытием в наличии не выяснилось.

Разглядев аппаратную часть возможно перейти к программной.

Программу для МК я как постоянно писал в среде mikroPascal for AVR (v 6.01). Так как в микропаскале нет библиотеки для микроконтроллера Atmega8, которая разрешает трудиться с USB, то выбор пал на UART. Но так как последний видеоурок по mikroPascal был про прерывания, то решил и ко мне их всунуть. И вот что в итоге оказалось:

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

  1. Разбираем принятые эти, если они соответствуют /, то разрешаем в следующий раз программе пройти дальше.
  2. Расшифровываем из ANCII кодировки.
  3. Рассчитываем и записываем в переменную

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

Вот и целый метод программы.

В случае если вас интересует, как эти отображаются, то все так же :

  1. , какая строка на данный момент обязана обновиться.
  2. Выбираем из массива dat необходимый элемент.
  3. В случае если необходимо зажечь пять либо меньше светодиодов в строчке, то значение в порт. В случае если же больше пяти (число n), то сперва зажигаем первые пять, а позже то что осталось (n-5). Все это крутится в цикле.

Из фузов необходимо выставить лишь внешний кварц (8 MHz).

В Khazama AVR Programmer это выглядит следующим образом:

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

Лишь забрать такой же но с любым вторым индексом (к примеру, вместо ATmega8 — ATmega8L и т.д.). Транзисторы так же возможно забрать каждые маломощные структуры p-n-p. Я применял КТ361Г (трудятся нормально, не смотря на то, что еще 1987 г. выпуска 🙂 ). Резисторы — с разбросом от указанного номинала до +/- 20 %.

И напоследок, о программе для Windows, которая руководит индикацией. Она написана в Delphi xe5 и именуется iCPU.

\

Запланирована на 2 ядра. В настройках выбирается порт, к которому подключено устройство. Вероятно применять как встроенный COM порт (через преобразователь уровней на MAX232 ), так и через виртуальный COM порт, с применением переходника на базе PL2303 и аналогичных.

У меня в городе возможно приобрести таковой кабель для ветхих моделей NOKIA.

В платка, которая с успехом может употребляться как USB-COM переходник.

Вот пара фотографий готового устройства.

Обновление от 20.07.2014:

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

Обновление от 01.05.2015:

Всецело переписан код как firmware для МК, так и программы для Windows. Сейчас имеется отдельная версия для Windows x64.

Для МК firmware писалась в WinAVR (Cpp).

ВНИМАНИЕ! Ветхая firmware + новая версия программы НЕСОВМЕСТИМЫ, как и новая firmware + ветхая версия программы.

При firmware фузы показывать те же, что и для ветхой версии, за исключением (выставлять как на скрине):

.

Из новшеств:

  • Возможность использовать выравнивание (по левому краю, по центру и по правому краю).
  • Автоматическое отключение индикации через 10с (к примеру, в случае если комп загрузили в сон).
  • Сейчас имеется тестовый режим, в котором включаются все светодиоды (к примеру, при первых включениях уст-ва, для обнаружения неполадок).
  • В случае если у вас в совокупности многоядерный процессор, то будут отображаться лишь первые 2 ядра (на уст-ве, в программе будет видно загрузку всех ядер). В другом случае, на уст-ве будут активными лишь 1-я и 3-я строки (1 память и ядро соответственно).

Так же желаю подметить, что перед первым запуском программы, впишите номер ком порта, к которому подключено устройство, в файл settings.ini. Он лежит в папке с exe-шником. В противном случае, вероятнее, станете через каждые 0.5с приобретать окна с неточностями!

В аппаратную часть устройства никакие правки не вносились.

Мало фотографий:

Обновление от 16.05.2015:

Оптимизирован код. Добавлена возможность регулировки яркости (программный ШИМ на таймере T2). Внесены кое-какие правки в программу для Windows (сейчас, в случае если COM порт выбран неверно (порта с таким номером в совокупности нет), не будет +100500 окон с неточностями).

Источник: cxem.net

Индикатор загрузки винчестера

Важное на сайте:

Самые интересные результаты статей, подобранные именно по Вашим интересам: