Обе платы разрабатывались исходя из имеющейся платы OLED-индикатора, с которой предполагалась работа. При выборе понравившегося варианта можно увидеть плату индикатора на фотографии к статье и заказать такую же в известном интернет-магазине с размером индикатора 1,54 дюйма.
Детали на плате устройства размещены зеркально расположению деталей на плате индикатора. На местах, над которыми будут находиться детали индикаторной платы, на плате устройства деталей нет, и наоборот. Это позволило сократить расстояние между двумя платами в пакете до толщины самого большого компонента для поверхностного монтажа - около 2,5 мм (рис. 9 - рис. 11).
Рис. 9.
Рис. 10.
Рис. 11.
В первом варианте вольтметра использован подстроечный резистор 3314G, кнопка - FSM8JSMATR. Во втором - подстроечный резистор 3313G, миниатюрная тактовая кнопка - KMS221GLFS.
Все постоянные резисторы и керамические конденсаторы - типоразмера 0805. Танталовые конденсаторы - типоразмера А (ёмкостью 4,7 мкФ), типоразмера B - все остальные.
Стабилитрон Д818Е1 также припаян со стороны печатных проводников, дополнительно укреплён и до некоторой степени теплоизолирован с помощью клеевого пистолета.
В первом варианте устройства паяльная маска не покрывает ту часть фольги, которая используется как теплоотвод, на ней можно видеть напаянные "рёбра" высотой 2,5 мм (рис. 12, рис. 13). Плата индикатора первого варианта показана на рис. 14.
Рис. 12.
Рис. 13.
Рис. 14.
В обоих вариантах плата индикатора была доработана с помощью напильника: сделаны выемки для фоторезистора, а в первом варианте также и для кнопки и подстроечного резистора. Платы устройства и индикатора второго варианта показаны на рис. 15. Гальванический элемент типоразмера ААА присутствует для масштаба.
При монтаже следует уделить особое внимание качеству сборки: устройству предстоит работа в условиях вибраций, и "холодная пайка", которая может долго оставаться незамеченной в "домашних" устройствах, здесь быстро приведёт к выходу из строя.
Рис. 15.
Второй важный фактор условий работы данного устройства - большие и резкие перепады температуры, особенно зимой, когда салон за несколько минут прогревается с отрицательных температур до комфортных 20 и более градусов. Такие условия могут привести к выпадению конденсата с последую щими неприятными последствиями. Поэтому после монтажа и завершения отладки тщательно покрывают плату в несколько слоёв электроизоляционным лаком, например Plastik 71. Лаком заливают рабочую поверхность фоторезистора, а также контакты на плате, используемые для программирования МК. Также тщательно покрывают лаком плату индикатора, включая разъём шлейфа. Стоит покрыть лаком и торцы стеклянной части индикатора. После монтажа межплатных соединений их также необходимо тщательно покрыть лаком.
Налаживание второго варианта несколько сложнее, поэтому начну с него. При монтаже платы следует на первом этапе не впаивать МК и не подключать индикатор. Подав напряжение 12...15 В, необходимо проверить наличие и значение напряжения 5 В после DC-DC преобразователя. Напряжение должно быть равно 5±0,05 В. Если на выходе нет напряжения, следует проверить, в первую очередь, исправность и индуктивность катушки L1, исправность и правильную установку диода Шоттки. Вы ведь уже проверили перед началом монтажа целостность всех дорожек и отсутствие замыканий между ними? В случае, если напряжение больше либо меньше, нужно подбором резистора R2 добиться требуемого значения. Следующим шагом рекомендую нагрузить цепь +5 В любым способом для достижения тока 100...150 мА и убедиться, что нет существенного изменения напряжения. Если напряжение под нагрузкой нестабильно, проверьте катушку индуктивности, возможно, её индуктивность недостаточна.
Следующие шаги относятся к обоим вариантам.
Впаивают МК и программируют его. Либо сначала программируют МК, затем впаивают его, последовательность не имеет значения. Мне удобнее программировать уже установленный на плату МК. Подключают временной проводкой плату индикатора. При отсутствии ошибок в монтаже и корректной прошивке после включения на индикаторе будет показана цифровая и графическая информация (рис. 16).
Рис. 16.
На этом этапе подключают внешний цифровой вольтметр к контактам питания устройства и фиксируют подаваемое напряжение, например 13,5 В. Затем регулировкой подстроечного резистора добиваются, чтобы то же значение отображалось на индикаторе. Проверяют, что при изменении входного напряжения его значение на индикаторе устройства отображается корректно, при необходимости корректируют подстроечным резистором.
На этом налаживание устройства заканчивается, и можно переходить к электроизоляции лаком и финальной сборке в единую конструкцию.
Программная часть конструкции создана под оболочкой Arduino IDE. К сожалению, из огромного числа библиотек для работы с OLED лишь очень немногие могут работать с серией МК ATtiny, и только единицы из них представляют все необходимые функции. По результатам экспериментов выбор был сделан в пользу библиотеки lcdgfx [2]. Однако в неё пришлось внести небольшие дополнения.
По умолчанию для шины I2C использованы выводы 2 и 3 МК. В этом случае остаётся только один свободный аналоговый вход вместо двух требуемых. Вариант использования в качестве аналогового входа вывода 1 МК не рассматривался, поскольку после подобного изменения состояния потребовалось бы для каждой последующей процедуры прошивки применять высоковольтный программатор. Таким образом, было принято решение для работы с шиной I2C использовать выводы 5 и 7 МК. Для этого были внесены изменения в файл src/lcd_hal/avr/ i2c_embedded.cpp библиотеки.
Потребовалось использовать различные шрифты, но при максимальной экономии памяти. В основном показываются цифры и только два символа - пробел и буква V. Загружать полный алфавит при потребности в двух символах - расточительство в плане использования памяти. По этой причине был прописан сокращённый фонт, состоящий из цифр, а также знаков ":" и "/", как наиболее близко расположенных к цифрам. При этом отображение двоеточия было заменено на пробел, а "/" - на символ "V". С этой целью внесены изменения в файлы src/canvas/fonts/ fonts.c и src/canvas/fonts/fonts.h.
Изменённые файлы прилагаются к статье вместе с исходным кодом.
По исходному коду отдельного описания делать нет смысла, поскольку размер исходной программы невелик, и она полностью прокомментирована, при желании не составит труда разобраться в ней, а также внести изменения, если захочется внести собственные доработки.
Для тех, кому не хочется разбираться в исходниках и править библиотеки, прилагаю также готовый hex-дамп скомпилированного кода, который можно непосредственно залить в МК с помощью любого подходящего программатора.
Информация, выводимая на экран индикатора, показана на рис. 17.
Рис. 17.
1- текущее напряжение в бортовой сети. Выводится в инверсном виде, если значение находится выше максимально допустимого или ниже минимально допустимого уровня.
2- минимальное зарегистрированное напряжение с момента включения или обнуления.
3- максимальное зарегистрированное напряжение с момента включения или обнуления.
4- графический индикатор напряжения.
5- цифровые отметки напряжения для графического индикатора.
6- графические отметки минимального и максимального значений измеренного напряжения с момента включения либо обнуления.
7- линии, обозначающие значения напряжения на графическом индикаторе, выходящие за пределы допустимого, пониженное и повышенное.
8- графические метки для значений п. 5.
Корпус для первого варианта куплен готовый, размерами 50x50 мм, обрезан по толщине до нужного размера. Для индикатора и фоторезистора прорезаны окна, закрытые оргстеклом толщиной 1 мм.
На верхнем и нижнем торцах, напротив теплоотвода, сделан ряд вентиляционных отверстий диаметром 1,5 мм. Все отверстия, а также пространство вокруг кнопки и ввод проводов закрыты поролоном толщиной 0,5 мм для защиты от пыли.
Для второго варианта подходящего корпуса в продаже не нашлось, поэтому была заказана его печать на 30-принтере с последующим закрытием окон для индикатора и фоторезистора тонким оргстеклом. Для изготовления толкателя кнопки был пожертвован миниатюрный светодиод (рис. 18). Как и в первом варианте, тонким поролоном закрыты все места, через которые внутрь может попадать пыль. Вентиляционные отверстия для этого варианта не требуются (рис. 19).
Рис. 18.
Рис. 19.
Практическое применение показало, что прибор полностью выполняет возложенные на него функции, он весьма миниатюрен, но при этом информация на его экране хорошо читается. Инверсия показаний при выходе напряжения за разрешённые пределы хорошо привлекает внимание. Яркость изображения в дневное время достаточна для лёгкого считывания показаний даже в солнечную погоду, при этом сниженная яркость ночью не слепит глаза.
Измерение напряжения, отображение критических режимов показаны в [3], а работа в автомобиле, изменение яркости - в [4].
Файлы для программирования и чертежи печатных плат находятся здесь.
Литература
1.Автомобильный вольтметр на Ардуино с OLED-дисплеем. - URL: https://youtu.be/ hT3C0Ecr2ds (19.05.22).
2.Библиотека lcdgfx. - URL: https:// github.com/lexus2k/lcdgfx (19.05.22).
3.Измерение напряжения. - URL: https://youtu.be/keLmJEPmAJY (19.05.22).
4.Работа в автомобиле. - URL: https:// youtu.be/NE2mg61DCXo (19.05.22).
Автор: В. Ватрушин, г. Дубна Московской обл.