Целью данного проекта является демонстрация способа реализации адаптивного управления яркостью семи сегментных светодиодных индикаторов. Система постоянно оценивает уровень освещенности при помощи дешёвого фоторезистора (LDR) и использует полученную информацию для регулировки яркости дисплея. Для наглядности этот способ применяется в цифровом измерителе температуры и относительной влажности, в котором яркость семи сегментных индикаторов адаптируется под окружающую среду. В этом проекте используются восьми сегментные светодиодные индикаторы, которыми управляет микросхема MAX7219. Температура окружающего воздуха и относительная влажность измеряются датчиком DHT11. В этом проекте используется 8-битный микроконтроллер PIC12F683 в восьми выводном корпусе. Автоматическая настройка яркости семи сегментных индикаторов повышает удобность чтения в любых условиях.
Теория и схема
Сейчас многие смартфоны, телевизоры, КПК и планшеты имеют автоматическую регулировку яркости, которая помогает экономить заряд батареи и увеличивает удобность чтения в разных условиях освещенности. Эта функция далееняет дисплей при высоком уровне освещенности и осветляет в темноте. При увеличении яркости экрана уменьшаются блики, а также снижается чувствительность человеческого глаза на уровень освещенности при увеличении яркости.
Автоматическая регулировка яркости это замкнутая система, которая оценивает уровень освещенности и соответственно регулирует яркость дисплея. Фоторезистор (LDR) и постоянный резистор 10K соединены последовательно + питания и GND, т.е. они образуют делитель напряжения, как показано на схеме. Обычно сопротивление фоторезистора (LDR) составляет менее 1 кОм на ярком свету и может возрасти до нескольких сотен кОм в темноте. Таким образом, напряжение на 10K резисторе возрастает пропорционально освещенности. В этом проекте напряжение на нем может изменяться от 0,1В в темноте до более чем 4В на свету. Микроконтроллер PIC12F683 считывает этот аналоговый сигнал через AN3 (GP4) вывод АЦП, а далее посылает соответствующие сигналы драйверу семи сегментных индикаторов MAX7219 для регулировки яркости семи сегментных светодиодных индикаторов.
Микросхема MAX7219 обеспечивает последовательный интерфейс для управления семи сегментными светодиодными индикаторами с общим катодом до 8 символов и требует всего 3 вывода микроконтроллера. Микросхема имеет BCD декодер, драйвер сегментов и цифр и статическое ОЗУ 8 × 8 для хранения значения цифр. Ток сегмента для всех индикаторов устанавливается одним внешним резистором между контактом ISET и питанием. Тем не менее, он также обеспечивает цифровой контроль яркости (16 шагов от минимального до максимального) через внутренний ШИМ. В этом проекте выводы GP0, GP1 и GP2 PIC12F683 используются для управления LOAD, DIN и CLK сигнальными линиями MAX7219.
Для измерения температуры и относительной влажности используется датчик DHT11. Он может измерять температуру от 0 до 50°C с точностью ± 2°С и относительную влажности воздуха от 20 до 95% с точностью ± 5%. Датчик имеет полностью откалиброванные цифровые выходы для 2-х измерений. Он имеет свой собственные 1-Wire протокол, и следовательно, связь между датчиком и микроконтроллером не возможна через обычный периферийный интерфейс. Протокол должен быть заложен в прошивке микроконтроллера с точными расчетами таймингов требуемых датчиком. PIC12F683 использует вывод GP5 для взаимодействия с DHT11.
Для облегчения сборки макета проекта я использую свою отладочную плату PIC12F и мой последовательный 8-разрядный семи сегментный светодиодный индикатор.
Программа
Прошивка для этого проекта написана на C и скомпилирована в MikroC Pro 5.30 для PIC. Подпрограммы для инициализации MAX7219 и отправки цифр написаны просто и понятно для того, чтобы их легко можно было повторить на других языках программирования. MAX7219 управляет яркость дисплея с помощью своего ШИМ. Выход ШИМ управляется нижними полубайтами (D3-D0) регистра яркости (адрес 0x0A) и имеет 16 уровней яркости. Нулевое значение полубайтов дает минимальную яркость, а когда все полубайты имеют значение 1, яркость становится максимальной. Для автоматической регулировки яркости, выход с АЦП с фоторезистором (LDR) сокращен до 0-10 (11 уровней яркости) путем простого деления значения 10-разрядного АЦП на 100. Затем используется таблица соответствия значений полубайтов уровню яркости. Температура отображается в градусах Фаренгейта (F), относительная влажность в процентах (Р).
Скачать исходный код и HEX файлы можно внизу статьи.
Микроконтроллер PIC12F683 работает на частоте 4 МГц от внутреннего генератора. MCLR и Power-On Timer включены. Настройка конфигурации фьюзов показана на рисунке.
Проект был опробован при различном уровне освещенности, от темноты до яркого света, и всё время цифры были удобны для чтения и приятны для глаз. Если Вы хотите использовать такое или подобное устройство в спальне, вам не придется беспокоиться о выключении его на ночь. Дисплей автоматически будет достаточно тусклым, чтобы не мешать сну. Хотя таблица яркости обеспечивает удовлетворительную регулировку уровня яркости в различных условиях освещения, вы можете изменять эти значения для поиска наиболее удобных для вас.
Прикрепленные файлы:
- TRH_Meter.zip (36 Кб)