Главная » Подключение » IPhone X: отключаем мерцание OLED дисплея. Управление яркостью подсветки дисплея Nextion в FLProg Управление яркостью lcd

IPhone X: отключаем мерцание OLED дисплея. Управление яркостью подсветки дисплея Nextion в FLProg Управление яркостью lcd

И снова мы возьмем в руки датчик освещенности BH1750 . На этот раз предлагаю не просто снимать данные об уровне освещенности, а еще и относительно этих данных регулировать яркость какого-либо осветительного прибора. Наподобие регулировки яркости дисплея планшета или смартфона – чем ярче окружающее освещение, тем меньше требуется яркость освещения и наоборот чем темнее, тем ярче будет гореть светодиод, лампочки или что-нибудь еще. Да, это все можно организовать на основе фотодиода, фоторезистора, но такие приборы необходимо настраивать, калибровать и так далее. В случае же с применением цифрового датчика освещенности BH1750 эти действия осуществлять нет необходимости, так как все уже откалибровано до нас, по шине I2C передаются готовые данные, которые необходимо лишь сопоставить с условием. Простыми словами – включил, и все сразу заработало без лишних телодвижений. Если вам идея интересна, то продолжаем дальше.

Устройство построим по следующей схеме:

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

Здесь уже все привычно для нас. В качестве микроконтроллера используется Atmega8a как наиболее универсальный и популярный микроконтроллер. Использовать микроконтроллер можно в любом корпусе – разницы нет, кроме порядка расположения выводов на корпусах. Индикация осуществляется на ЖК экранчике на базе HD44780. В моем случае используется экран на 4 строки по 20 символов на каждую, однако можно использовать и размер 1602 – информации на экранчик выводится не много, поэтому все помещается. Переменный резистор R2 необходим для регулировки контраста символов на дисплее. Вращением движка этого резистора добиваемся наиболее четких для нас показаний на экране. Подсветка ЖК дисплея организована через вывод "А" и "К" на плате дисплея. Подсветка включается через резистор, ограничивающий ток - R1. Чем больше номинал, тем более тускло будет подсвечиваться дисплей. Однако пренебрегать этим резистором не стоит во избежание порчи подсветки. Сам дисплей подключается к микроконтроллеру по 4х битной схеме. Резистор R3 необходим для предотвращения самопроизвольного перезапускания микроконтроллера в случае появления случайных помех на выводе PC6. Резистор R3 подтягивает плюс питания к этому выводу, надежно создавая потенциал на нем. Резистор R4 подтягивает ножку датчика к земле, отвечающую за адрес микросхемы для I2C интерфейса, посмотреть все эти цифры можно в исходном коде, который расположен в конце статьи. Для правильной работы I2C интерфейса необходимы резисторы R7 и R8. С их помощью на линиях образуется логическая единица из-за того, что они подтянуты к плюсу питания. При формировании логического нуля линии прижимаются к земле посредством ведущего или ведомого (микроконтроллера или датчика).

Основное питание схемы составляет 3,3 вольта, что обусловлено электрическими параметрами датчика освещенности BH1750. 5 вольт необходимы лишь для питания дисплея, если применить, например экранчик от nokia 5110, для питания которого необходимо также 3,3 вольта, то можно опустить из схемы стабилизатор напряжения на 5 вольт. Стабилизаторы напряжения на 5 вольт и 3,3 вольта можно применить абсолютно любые на аналогичные напряжения, можно использовать как линейные стабилизаторы, так и импульсные.

Теперь по поводу модернизации схемы. Основой всегда будет сам датчик и микроконтроллер, а также схема питания. ЖК-дисплей, при данном функционале, лишь для отладки необходим по большому счету. Его можно исключить из схемы при автономном использовании. Это первое. Второе это выход схемы, то есть светодиод HL1 – одним светодиодом большое пространство не осветить и нужно использовать что-то более массивное – мощные светодиоды, лампы накаливания или еще что-нибудь. Так вот подобные осветительные приборы со сравнительно большим потреблением тока, напряжения просто к микроконтроллеру не подсоединить так просто, иначе мы просто сожжем микроконтроллер. Для этого необходимо использовать драйверы или другие схемы. Если лампочки накаливания используют переменное напряжение, нужно использовать оптосимисторную связку и мощный симистор для управления яркостью лампочки (нужно только подправить прошивку для управления оптосимистором). Для светодиодных ламп ШИМ можно подавать на затвор полевого транзистора и через него включать светодиоды (не забыв про ограничение или стабилизацию тока), либо использовать управляемые драйверы для них. В общем вариантов очень много – для каждого случая – свой. Представленная схема будет являться исходной с заложенным основным функционалам. Вот такая вот идея.

Собиралась и отлаживалась такая схема на отладочной плате в связке с модулем BH1750:

Логика работы не сложная – считываем значение освещенности из датчика и преобразуем это значение в ШИМ сигнал. Необходимо лишь подобрать соотношение ШИМ сигнала и уровня освещенности.

Для отладки работы использовался карманный фонарик для изменения освещенности.

Также при резком появлении источника света (может быть случайном) светодиод загорался бы резко, что не слишком комфортно, поэтому реализовано плавное регулирование уровня ШИМ. Тое есть, например, было низкое освещение – горел светодиод, случайно на датчик попал короткий импульс света, скажем, от фар автомобиля, светодиод бы резко погас и резко снова загорелся, если бы не плавное регулирование. То есть при резком изменении освещенности ШИМ изменяется не скачкообразно, а стремится достичь рассчитанного значения, увеличиваясь или уменьшаясь всего на одну единичку с небольшой задержкой. И так много кратно идет увеличение или уменьшение, пока не будет достигнуто необходимое значение. Исходник на языке Си можно посмотреть в конце статьи.

Кроме того, для программирования микроконтроллера в данном варианте необходимо знать конфигурацию фьюз битов:

А к статье прилагается прошивка для микроконтроллера по представленной схеме, исходный код в программе AVR Studio и демонстративное видео (плавное изменение яркости светодиода в зависимости от уровня освещенности, который регулируется карманным фонариком).

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
IC1 МК AVR 8-бит

ATmega8A

1 В блокнот
IC2 Датчик освещенности BH1750FVI-E 1 В блокнот
VR1 Линейный регулятор

L7805AB

1 В блокнот
VR2 Линейный регулятор

AMS1117-3.3

1 В блокнот
C1, C3, C5, C7 Конденсатор 100 нФ 4 В блокнот
C2 470 мкФ 1 В блокнот
C4 Электролитический конденсатор 220 мкФ 1 В блокнот
C6 Электролитический конденсатор 10 мкФ 1 В блокнот
R1 Резистор

22 Ом

1 В блокнот
R2 Подстроечный резистор 10 кОм 1 В блокнот
R3 Резистор

10 кОм

1 В блокнот
R4, R7, R8 Резистор

4.7 кОм

3 В блокнот
R5 Резистор
В настоящее время я занимаюсь проектом на Arduino с использованием TFT дисплея. Недавно мне захотелось добавить в него, казалось бы, простую функцию - функцию регулировки яркости. Нашёл в документации к библиотеке для работы с TFT дисплеем (UTFT Library) нужный метод: setBrightness(br);

Что нам понадобится?

  • В качестве основы, я использовал Frearduino ADK v.2.2 на базе процессора ATmega2560
  • TFT LCD Mega Shield v.2.2
  • Сам дисплей - 7" TFT LCD SSD1963 ()
  • UTFT Library - универсальная библиотека для работы с TFT дисплеями (Найти саму библиотеку, а так же документацию можно )
  • Паяльник

Разберёмся с железом

Открыв схему дисплея, можно увидеть, что на конвертер mp3032 идет три входа: LED-A, PWM, 5V. Изначально, PWM неактивен. Этот вход не используется совсем. Подсветка управляется LED-A.


Если взглянуть на обратную сторону дисплея, можно найти область, подписанную как "Backlight control" . Здесь то мы и найдём эти самые входы. Для управления подсветкой методом ШИМ, необходимо сделать так, чтобы все было наоборот: LED-A - неактивен, PWM - активен. Для этого придётся перепаять перемычку. Вот фото того, что должно получиться:

Программная часть

Так как наша библиотека не может дать то, что нам надо, мы сами напишем нужную функцию. Для этого откроем документацию к контроллеру, управляющему дисплеем (SSD1963). Управление SSD1963 осуществляется с помощью специальных команд, которые передаются с Arduino через специальные выходы, которые описаны в документации:

Управление осуществляется следующим образом: Arduino выводит через RS (D/C в таблице) 0, если мы собираемся передавать команду, 1 - если данные. После передачи команды, RS переключается на 1, и далее передаются необходимые параметры. Все команды и параметры передаются через выходы D0-D7. Если у вас ATmega2560, то все эти восемь выходов объединены в порт C.

Итак, для начала, напишем функцию передачи данных по шине. Для удобства использования, я буду писать прямо в UTFT.h:

Void Lcd_Writ_Bus(uint8_t bla) { digitalWrite(WR,LOW); //Настраиваем SSD1963 на чтение digitalWrite(CS, LOW); PORTC = bla; //Передаем на шину данные в виде одного байта digitalWrite(CS,HIGH); digitalWrite(WR,HIGH); }

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

Void Lcd_Write_Com(uint8_t data) { digitalWrite(RS,LOW); //Переключаем RS в режим чтения команды, то есть 0 Lcd_Writ_Bus(data); } void Lcd_Write_Data(uint8_t data) { digitalWrite(RS,HIGH); //Переключаем RS в режим чтения данных, то есть 1 Lcd_Writ_Bus(data); }

Теперь сама настройка подсветки. Чтобы узнать, как осуществить все это, открываем документацию и ищем команду для настройки PWM.

Примечание:
PWM может управляться, с помощью DBC - система динамической регулировки яркости, но я, для простоты, не стал её использовать. Вы же, если хотите, можете найти необходимую информацию в той же документации.

Итак, вот, что нам надо:

То есть, сначала мы должны передать команду «0xBE», а потом, в качестве 3-х параметров передать частоту сигнала, длительность рабочего цикла, а также третий параметр, который определяет, включен DBC или нет (0x01 - выключен, 0x09 - включен).

Для регулировки самой яркости, необходимо изменять лишь частоту рабочего цикла. Так как мы передаём данные в виде одного байта, то значения цикла могут быть от 0 до 255. Я решил определить 9 уровней яркости (от 0 до 8). Следовательно, все 256 значений нужно разбить на 9 ступеней. Но также стоит обратить внимание на то, что если ступени будут равными, то яркость будет изменяться не так плавно, как хотелось бы. То есть уже, к примеру, на 4-ой ступени, яркость будет почти максимальной, а с 4-ой по 8-ую ступень будет изменять почти незаметно. Учитывая это, я решил использовать геометрическую прогрессию со знаменателем 2. То есть яркость будет вычисляться по следующей формуле: (2 ^ lvl) - 1 , где lvl - уровень яркости от 0 до 8. Обратите внимание, что так как значения начинаются с нуля, то необходимо вычесть единицу. Конечно, вы можете выбрать ступени и их значения сами, но я привёл вот такой, довольно просто пример. Теперь сам код:

Void setBright(byte lvl) { byte brightness(1); for (byte i(1); i <= lvl; i++) //Возведение в степень brightness *= 2; Lcd_Write_Com(0xBE); //Вывод команды Lcd_Write_Data(0x01); //Ставим частоту 760Гц Lcd_Write_Data(brightness-1); //Выводим длину рабочего цикла Lcd_Write_Data(0x01); //Отключаем DBC }

Теперь можно использовать UTFT.setBright(byte lvl);

Дисплей Nextion: http://ali.pub/1xz0e2

Я покупал такой: http://ali.ski/zF01b

Для начала добавим блок получения данных с дисплея Nextion. Он называется Nextion Get Attr .

Находится данный блок в программе FLProg: Панель Nextion HMI -> Элементы -> Получить Параметр

Настройка данного блока выглядит следующим образом:

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

Ну и создадим элемент Ползунок (Slider) , пропишем ему его имя в панели Nextion и id.

Параметр, выберем (val) и выберем период опроса каждую секунду.

Все на этом настройка блока получения параметров закончена.

Настройка данного блока выглядит вот так:

Главное в этом блоке выбрать раннее созданную панель Nextion и заменить константу, на вход.

После этого нужно добавить блок Number Change который находится Базовые элементы -> Детектор изменения числа

И все это соединить по такой схеме:

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

Нагляднее в Видео:


В iPhone X компания Apple впервые использовала дисплейную панель, основанную на технологии органических светодиодов. И если достоинства OLED дисплеев очевидны, то об их недостатках пишут достаточно редко. Один из таких недостатков – мерцание экрана на низких уровнях яркости вследствие использования широтно-импульсной модуляции для управления свечением светодиодов на низких уровнях яркости. На языке обычного пользователя – в темноте экран мерцает.

Производители выбирают частоту мерцания экрана таким образом, чтобы большинство пользователей её не замечало. Чаще всего используется частота 240 Гц. Даже если отбросить значительную группу людей, которые замечают такое мерцание, остаются те, кто мерцания не замечает, но испытывает повышенную утомляемость, слезотечение, воспаление и покраснение глаз и даже мигрени. Таких людей не так уж мало: в зависимости от исследования и используемой методологии, их число составляет от 20 до 30% всех пользователей.

В устройствах под управлением Android проблему мерцания OLED-дисплеев часто можно решить установкой приложения, отображающего затемняющий фильтр; можно даже сохранить автоматическое управление яркостью, если для этого использовать приложение Lux Dash (о том, как его правильно настроить для отключения мерцания экранов, мы напишем в одной из следующих статей).

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

Почему OLED мерцают: управление яркостью посредством ШИМ

Мерцание экранов OLED – прямое следствие механизма, который используется для управления яркостью таких панелей. Для изменения яркости экрана (как обычного LCD, на которых основаны матрицы IPS, так и OLED) можно либо снизить напряжение, подаваемое на светодиоды подсветки (или индивидуальные светодиоды в случае OLED), либо использовать так называемую широтно-импульсную модуляцию.

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

Именно мерцание, а не зловредная синяя компонента цвета или перенасыщенные цвета OLED, вызывает повышенную утомляемость и мигрени. Наибольшую нагрузку на глаза мерцание даёт в темноте, когда зрачок максимально расширен и яркие вспышки буквально бомбардируют сетчатку.

OLED без мерцания: миф или реальность?

Можно ли собрать OLED экран без мерцания? Да, такое вполне возможно, но на практике используется нечасто. Одним из немногих примеров таких экранов является матрица P-OLED, которую устанавливали в смартфоны LG G Flex 2. Обратной стороной таких экранов были вот такие эффекты, проявляющиеся на минимальной яркости:

Ошибкой было бы полагать, что LG сделали матрицу настолько хуже конкурентов. Матрицы Samsung в те времена обладали похожим качеством – с одним крупным отличием. OLED панели, которые Samsung устанавливает во все свои флагманы, мерцают на всех уровнях яркости – даже на 100%. Почему же изображение на мерцающей матрице выглядит настолько чище, чем на OLED без мерцания?

Эффект связан с разбросом параметров между соседними светодиодами. Разброс присутствует на матрицах всех производителей, но проявляется он в большей степени тогда, когда на светодиоды подаётся низкое напряжение. Эффект чем-то похож на цифровые шумы при фотографировании в тёмных условиях с короткой выдержкой. Чем меньше фотонов попадает на светочувствительные элементы матрицы – и чем меньше фотонов излучается диодом OLED – тем больше вероятность возникновения погрешности, «цифрового шума наоборот».

В Samsung решили проблему, всегда подавая на светодиоды максимальное напряжение и регулируя яркость при помощи скважности импульсов. Но постоянное мерцание экрана по вкусу далеко не всем, и ряд производителей остановились на гибридном подходе: до некоторого значения яркость регулируется уменьшением напряжения светодиодов; после пересечения заданного минимального уровня (обычно 15-50%) дальнейшее понижение яркости достигается при помощи ШИМ.

Если говорить конкретно про iPhone X, то яркость в нём регулируется так (по данным iXBT):

До уровня 50% мерцания нет; дальнейшее снижение яркости достигается мерцанием на частоте 240 Гц. Убедительно продемонстрировали это немецкие обозреватели с сайта Notebookcheck.net:

Как проверить мерцание экрана

Мерцает ли экран вашего телефона? Даже если ваши глаза не замечают никакого мерцания, его наличие или отсутствие легко проверить дома без какого-либо специального оборудования. Достаточно открыть на смартфоне страницу с белым фоном (например, about:blank в браузере Safari или Chrome), поместить телефон в тёмную комнату, снизить яркость до минимума и навести на экран камеру другого смартфона. Если мы видим что-то похожее на показанное в видеоролике ниже, мерцание экрана присутствует:

Чтобы определить, на каком уровне яркости прекращается мерцание экрана, откроем центр управления и плавно сдвигаем ползунок яркости. Исчезновение диагональных полос означает отсутствие ШИМ на данном уровне яркости.

Экспериментально установлено, что у iPhone X минимальный уровень яркости без мерцания – 50%. Но если держать яркость на этом уровне, то в тёмных условиях устройством будет пользоваться некомфортно. Задача – понизить эффективный уровень яркости экрана, но не допустить мерцания.

Как оказалось, это вполне возможно. Для этого в настройках iOS предусмотрен специальный режим, который можно найти в настройках Accessibility > Display Accomodations.

В этом режиме экран затемняется программным фильтром. Чтобы включить этот режим, нужно зайти в Display Accomodations и активировать ползунок. Теперь нужно нажать на надпись Display Accomodations и активировать ползунок Reduce White Point (см. скриншот). Попробуйте начать со значения в промежутке от 85 до 100% и настройте до комфортного для ваших глаз уровня (яркость экрана в центре управления должна быть на уровне 50%).

Отключение ШИМ тремя кликами

Итак, нам удалось активировать программный фильтр, отключающий мерцание экрана на низких уровнях яркости. Однако пользоваться телефоном с постоянно включенным фильтром неудобно: на ярком свету экран всегда будет тусклым.

На iPhone X включение и отключение фильтра можно реализовать по трёхкратному нажатию на боковую кнопку, в прошлых поколениях устройств выполняющую функции включения и выключения телефона. Для этого нужно найти в настройках опцию Accessibility Shortcut и назначить на неё включение и отключение функции Reduce White Point (см. скриншоты).

На том всё. После активации этой функции мы получили iPhone X, мерцание экрана которого можно быстро включать и отключать трёхкратным нажатием на боковую кнопку. Теперь вы сможете пользоваться устройством в темноте без переутомления и сможете быстро отключать тёмный фильтр трёхкратным нажатием боковой кнопки.

Дополнительная информация

Для отображения текста и изображений производители портативного оборудования, рабочих станций, портативных компьютеров, мобильных телефонов и видео игр используют плоские дисплеи. Для регулировки контраста и яркости дисплея ранее традиционно использовались механические потенциометры. Однако сегодня им на смену приходят цифровые устройства управления. Для иллюстрации схемы с цифровым управлением яркостью и контрастом будут использованы два цифровых потенциометра семейства Dallastat DS1668/DS1669, которые на практике могут быть заменены любым другим цифровым потенциометром.

Модели DS1668/DS1669 были выбраны благодаря их простому кнопочному интерфейсу управления положением движка. Кнопочный интерфейс наиболее удобен для подстройки контраста плоских ЖК дисплеев и по своей сути очень близок к традиционным механическим потенциометрам. Особенно важно то, что DS1668/DS1669 имеют встроенный блок энергонезависимой памяти, который сохраняет положение среднего контакта после выключения питания системы. Замена механического компонента на цифровой дает дополнительные преимущества в области управления, надежности и автоматизации производства конечной продукции. Помимо этого, управление DS1669 может осуществляться через центральный процессор. Такая гибкость в применении не доступна при работе с механическими переменными резисторами. Поскольку DS1669 является интегрированным монолитным решением без подвижных частей, его надежность по сравнению с традиционными решениями не оспорима. В схеме регулировки контраста потенциометр DS1669 можно расположить на плате в стороне от кнопки соответствующей секции панели управления дисплеем. DS1669 выпускаются в стандартных DIP-8 и SOIC-8 корпусах для автоматизированного монтажа на плату.

Жидкокристаллические дисплеи.

ЖК дисплеи можно разделить на две категории: цифробуквенные и графические модули. Каждый из них, в зависимости от требований к источнику питания, имеет вход управляющего напряжения, которое в большинстве случаев может изменяться для регулировки контраста. Контраст дисплея может меняться вследствие изменения приложенного управляющего напряжения или температуры окружающей среды. Температурные изменения обычно имеют нежелательный эффект, значительно ухудшая контрастность экрана. Для регулировки управляющего напряжения используется переменный резистор в тех случаях, где увеличение напряжения может перекрыть эффект температурного сдвига. Но самым важным моментом является то, что потенциометр позволяет удовлетворить любые желания пользователя по отношению к яркости и контрастности экрана.

Цифробуквенные ЖК модули.

Цифробуквенные индикаторы имеют небольшие габаритные размеры и используются в портативных системах. Требования к питанию таких модулей сводятся к источнику одиночного питания 5В, который питает как ЖК дисплей, так и драйвер логики. Дополнительное напряжение необходимо для обеспечения питанием управляющих функций ЖКД (рис. 1). Управляющее напряжение модуля VO снимается с потенциометра VR. Типичное номинальное значение таких потенциометров колеблется в диапазоне 10- 20 кОм. Такие же номиналы имеют модели потенциометров серии DS1669.


Потенциометр DS1669 подходит для любых ЖК модулей, имеющих аналогичные условия питания. На рисунке 2 показана конфигурация DS1669, которая удовлетворяет всем требованиям по питанию и управляющему напряжению ЖК модулей, представленных на схеме 65. Устройство подключено как простая кнопка для управления перемещением среднего контакта. Также, можно использовать топологию двойной кнопки. Одно- и двухкнопочное управление описано ниже. Вывод движка, RW, потенциометра DS1669 напрямую подключается к контакту управляющего напряжения ЖК модуля, VO. Для схемы питания, представленной на рис. 1, для работы DS1669 с ЖК модулем больше не требуется дополнительных компонентов.

Графические ЖК модули.

Графические модули значительно превосходят по габаритам цифробуквенные дисплеи и работают с различными напряжениями питания. Как показано на рисунке 3, питающая часть для таких модулей состоит из источника питания 5В для питания логики и VLCDC входа для питания модуля. Управляющее напряжение VO, которое контролирует контраст, снимается скомбинированного источника логики 5В и VLCD питания модуля через потенциометр R. Как и в случае и цифробуквенными дисплеями, номинальное значение потенциометра колеблется в пределах 10 -20 кОм. Напряжение на контакте VO находится в диапазоне от 0 до (VLCD+ 5В) В. Напряжение питания VLCD зависит от типа используемого графического дисплея.

Диапазон напряжения VO предотвращает прямое использование DS1669, а также других потенциометров, выпускаемых Dallas Semiconductor. Для нивелирования сложностей с максимальным предельным током движка и высоким напряжением, требуемым для данной схемы, цифровой потенциометр используется вместе с операционным усилителем (рис. 4). Назначение операционного усилителя заключается в генерировании управляющего напряжения, VO, которое выходит за пределы спецификации при работе с цифровым потенциометром. Кроме того, операционный усилитель ограничивает величину тока, протекающего через движок, и обеспечивает полный диапазон управляющего напряжения для ЖК модуля. 5-вольтовый источник питания, использующийся для питания логической схемы модуля, также используется для питания потенциометра DS1669 (см. рис. 4). Потенциометр работает как аттенюатор 5-вольтового входного сигнала для не инвертированного вывода операционного усилителя. Выход операционного усилителя управляет напряжением контраста ЖК модуля, VO, и рассчитывается по формуле: где N - количество положений движка потенциометра. Номинальные значения резисторов R1 и R2 выбираются по формуле: Выбор резисторов R1 и R2 позволяет менять выходное напряжение операционного усилителя в зависимости от номинального питания ЖК графического модуля (подаваемое на контакт VO). Вывод среднего контакта напрямую подключается к не инвертируемому выводу операционного усилителя, как показано на схеме. Также, рекомендуется использовать диод Шоттки D1 (типа 1N5818 или аналог) для обеспечения дополнительной защиты от бросков питания на этапе его включения и выключения.

Принцип работы DS1669.

Как уже отмечалось, потенциометр DS1669 имеет простой кнопочный интерфейс UDC (Up/DownControl). Микросхема DS1669 может быть сконфигурирована как на управление при помощи одной кнопки, так и на управление с двумя кнопками. При этом цифровой вход D дает возможность управления потенциометром с помощью микроконтроллера или процессора.

На схемах 5 и 6 показаны обе конфигурации, соответственно. Замыкание контактов определяется как переход от высокого уровня к низкому на высоком контакте (UC), низком контакте (DC) или цифровом входе (D). Эти входы являются неактивными в высоком состоянии.

Микросхема использует ширину входного импульса как средство управления передвижением движка. Одиночный входной импульс на входах UC, DC или D изменяет положение движка на 1/64 по отношению к конечному сопротивлению потенциометра. Переход к высокому или низкому уровню на этих входах активизирует работу устройства и приводит к замыканию контакта. Одиночный импульс срабатывания должен превышать 1 мс, но длиться не дольше 1 с. Это показано на рис. 7а.

Повторяющиеся импульсы на входах потенциометра могут использоваться для более быстрого перемещения движка (рис. 7b). Требования к входным повторяющимся импульсам следующие: они должны быть разделены интервалом не менее 1 мс. В противном случае, DS1669 расценивает их как одиночный импульс. Импульсы продолжительностью более секунды приведут к непрерывному перемещению движка через каждые 100 мс после первой секунды. Суммарное время достижения предельного значения потенциометра при непрерывном импульсе можно рассчитать по формуле:1(сек) + 63 х 100 мс = 7,3 (сек) Однокнопочная конфигурация позволяет пользователю контролировать положение движка в обоих направлениях посредством одной кнопки. На рисунке показана типичная конфигурация такой схемы. Вход UC используется для увеличения и уменьшения сопротивления движка, т.е. осуществляет режим однокнопочной работы. DC вход не имеет рабочих функций в таком режиме, но контакт должен быть подключен к положительному источнику питания (VCC).

Цифровой вывод (D) находится в холостом режиме. При включении питания устройства, необходимо развести схему так, как показано на рисунке 5, тогда потенциометр обеспечит однокнопочный режим работы. DC вход должен быть обязательно подключен к источнику положительного напряжения (VCC). Направление движения среднего контакта при однокнопочной конфигурации определяется первичным шагом. Изменение направления движения движка осуществляется посредством периода бездействия на входе UC в течение секунды и более. Также, при однокнопочной конфигурации, когда движок достигает своего конечного положения, его направление меняется. Это произойдет вне зависимости от того, поступает ли на вход постоянный, непрерывный, или одиночный импульс. При включении потенциометра в конфигурацию с двумя кнопками каждое направление движка управляется повышающим контактом UC и понижающим контактом DC, соответственно. Для изменения положения движка в двухкнопочном режиме нет режима ожидания. При достижении движком своего крайнего положения, направления его движения не меняется. Положение движка зафиксируется в конечной точке, пока не активизируется входной контакт обратного движения. Все контакты управления кнопкой UC, DC и D, внешне нагружаются резистором 100 кОм. Выводы UC и DC имеют внутреннюю защиту от дребезга контактов и не требуют внешних компонентов для формирования сигнала.

Энергонезависимая память положения движка.

При отключении питания микросхема DS1669 запоминает последнее положение движка. Эта функция обеспечивается встроенным блоком EEPROM памяти. В нормальном режиме работы положение движка определяется входным мультиплексором. Периодически, мультиплексор обновляет данные EEPROM ячеек памяти. Порядок обновления ячеек был оптимизирован разработчиками для большей надежности, износоустойчивости и эффективности. Кроме того, операция апдейта полностью открыта для пользователя. Если изменяются установки Dallastat после включения питания, новое значение сохраняется с задержкой до 2 секунд. После сохранения первоначальных измерений, последующие изменение в структуре EEPROM памяти возникнут только если положение движка изменится больше, чем на 12.5% от конечного сопротивления потенциометра. Любые другие изменения после включения питания, меньше 12.5%, не сохраняются в ячейках EEPROM памяти. Поскольку Dallastat имеет 64-1 мультиплексор, изменения на 12.5% соответствуют изменению четвертого младшего разряда (LSB). Изменения или сохранение в EEPROM память имеют 2-секундную задержку для гарантированного обновления данных. EEPROM память имеет 80,000 номинальных циклов записи. Если память выработала свой полный ресурс, Dallastat сохранит свою функциональность, пока включено питание. Однако, повторное включения питания вернет потенциометр на тот уровень сопротивления, который был сохранен последним перед износом памяти.

Михаил Крюков
г. Москва.



Предыдущая статья: Следующая статья:

© 2015 .
О сайте | Контакты
| Карта сайта