Всем датагорцам и гостям нашего кибер-города привет! :bye:
В статье я повествую о том, как я прикрутил к «раненому» мультиметру UNI-T UT60E полноцветный TFT-дисплей и перевёл прибор на аккумуляторное питание.
Платы и прошивки, по доброй местной традиции, в комплекте.
Содержание статьи / Table Of Contents
↑ Предыстория
Всё началось с того, что в моём приборе по какой-то неосторожности «потёк» ЖК дисплей. Вначале показания ещё было немного видно и мультиметром можно было пользоваться, а потом цифры и вовсе пропали.Дисплей на замену в интернете, к сожалению, не нашёл. Выбрасывать жалко – мультик относительно дорогой и неплохой.
У UT60E есть выход RS232 для подключения к компьютеру. Как оказалось, формат данных не засекречен и описан в даташите микросхемы мультиметра FS9721_LP3. Следовательно, надо было разработать маленький видеоадаптер, который бы принял, декодировал последовательный поток данных и отобразил необходимую информацию на новом дисплее.
↑ Структура модернизированного прибора UNI-T UT60E
В схеме применены готовые китайские модули: SX1308 – повышающий преобразователь, TP4056 – зарядка для Li-ion аккумулятора. Для питания мультиметра, от греха подальше, я решил добавить ещё и линейный стабилизатор.
Выключается мультиметр переключателем S1. При большом желании можно было использовать (завести) родной выключатель мультиметра, но он даже в выключенном состоянии (НЗ контактами) перемыкает какую то часть схемы в выключенном мультиметре. Поэтому я оставил всё как есть.
↑ Видеоадаптер на Atmega32A
LCD дисплей 320×240 точек — TFT8K0291FPC-A1 на контроллере S6D0129 от Samsung. Микроконтроллер Atmega32A. Выход данных с мультиметра организован не относительно минуса батарейки, поэтому установлен оптрон для развязки. Оптрон подключается последовательно (режем дорожку) с инфракрасным светодиодом мультиметра. Этот светодиод светит в специальный фото приемник в шнурке подключения к ПК. Таким образом обеспечивается гальваническая развязка мультиметра и компьютера. (См. рис. 4)
На плате также присутствует повышающий стабилизатор VR1. Китайский модуль SX1308 перепаял на свою плату.
Дисплей с видеоадаптерам, приклеил силиконом. Получилось очень даже прочно (См. рис 6).
Обязательно нужно обеспечить возможность программирования законченного устройства. Поэтому провода от SPI порта выведены наружу (См. рис. 7).
Блок зарядки и преобразователь разместил в отсеке для батарейки. Аккумулятор — UltraFire TR14500 1200mAh 3.7V. Следует отметить, что китайские TP4056 модули настроены на ток заряда 1A, что бы изменить этот ток надо перепаять резистор RPROG (2-й пин TP4056 см. datasheet). Я установил где-то на 300mA, ~ 4 KОм.
В сумме мультиметр потребляет около 0,2 Вт. (См. таблицу 1).
Разъем mini-USB немного выходит наружу – при измерении высокого напряжения лучше до него не дотрагиваться. Потом приклею кусок пластмассы, что бы исключить прикосновение.
↑ Растровый шрифт для дисплея
Если уж ставим цветной дисплей, то отображаемая информация должна быть приятна на вид. Итак, создаём растровый шрифт, создаём в нужном формате, чтобы влез память микроконтроллера. Вначале, нужно определится с размером символов и их количеством, форматом хранения в памяти и самим шрифтом (у меня Cambria). Здесь надо подобрать так, что бы на дисплее все цифры поместились и в память МК влезли.Цифры, как правило, не цветные изображения, это не значит что они не могут быть, например зелеными, это значит что в памяти достаточно хранить просто яркость пикселя, а уже потом в функции вывода распределить эту яркость между RGB каналами. Правда, разукрашивать символы я поленился.
С целью экономии памяти можно использовать монохромный формат 1 бит = один пиксель, это самый экономный вариант – в один байт влезет 8 пикселей. Но в током случае края цифры получатся не сглаженными и грубыми, ступенчатыми.
Можно отвести целый байт на пиксель, тогда получится 256 градаций яркости пикселя. В таком формате памяти у Atmega32 под мою задачу не хватило. Что ж, подумал я, хватит мне и 16 градаций, что бы сгладить края, а это — 4 бита на пиксель. То есть в один байт у меня влезает 2 пикселя.
Далее нужно создать bmp-картинки символов на компьютере, затем конвертировать эти картинки в текстовый массив на языке Си, вставить массивы в свой исходный код, а дальше написать функцию вывода этого массива данных на дисплей (см. функцию print_image_gray_05 в исходном коде).
Для основных цифр выбрал шрифт Cambria, набрал в MS Word все необходимые символы, затем сделал снимок экрана и вставил в MS Paint. Затем все кадрируем и делаем много картинок: один символ = один файл в формате bmp. Да, это долго, но не так долго как я делал полный шрифт.
Всё, файлы готовы, далее надо найти конвертер или написать свой. У меня свой, см. файловый раздел в конце статьи.
Сохраняем наши картинки символов в памяти программ с помощью макроса PROGMEM. Чтобы читать данные из массива, используем функцию pgm_read_byte или pgm_read_word.
↑ Видео реинкарнации UNI-T UT60E
↑ Файлы
🎁 Прошивка с проектом (AVR Studio v5.) 130.3 Kb ⇣ 59🎁 Схема и плата 137.54 Kb ⇣ 51
🎁 Даташит на дисплей 1.74 Mb ⇣ 46
🎁 bmp-картинки шрифта 63.39 Kb ⇣ 41
🎁 Мой конвертер «Картинка > текстовый массив" 1.33 Mb ⇣ 46
Спасибо за внимание!
Камрад, рассмотри датагорские рекомендации
🌼 Полезные и проверенные железяки, можно брать
Опробовано в лаборатории редакции или читателями.