Коллега на работе купил себе новый автомобиль Chery Tiggo FL, куда китайцы напихали много различных функций за невысокую стоимость автомобиля. Одной из самых необычных штуковин в авто оказалось «волшебное» зеркало, которая наделено функциями барометра, альтиметра и компаса.
Главным недостатком всей начинки данного автомобиля является отсутствие датчиков температуры за боротом автомобиля и внутри его. Данный недостаток решили с коллегой изменить, путем модификации штатного зеркала заднего вида нештатными методами.
Итак, приступим к созданию «патча» на зеркало.
Постановка задачи. Необходимо в автомобиле получать информацию о внешней температуре окружающей среды и температуре внутри салона. В качестве ограничения принимаем, что дополнительные «колхозные» устройства ставить не будем. В качестве допущения принимаем возможность отказаться от показаний альтиметра и барометра. В качестве исходных данных выступает зеркало заднего вида, изображенное на рисунке.
Анализ исходных данных. Любое дело начинается с анализа исходных данных, поэтому начнем с демонтажа зеркала и его разбора. Судя по внешнему виду в зеркале имеется два индикатора светодиодных семисегментных по 4 знака, значит либо до них можно добраться, либо придумать что-то свое.
Вообще стоит отметить, что реализация функций альтиметра, барометра и компаса довольная отвратительная в зеркале, потому что показания плавают сильно, значения кратны 100, а компас не калибруем по известным методикам. Поэтому данные функции можно выкинуть при случае. Тем более, известно, что одновременное измерение высоты и давления одним барометрическим датчиком с допустимой точностью невозможно. Если изменяется высота, то датчик должен измерять только высоту, а если стоим на месте, то измеряем только атмосферное давление. Судя по показанием приборов, складывается ощущение, что в зеркале имеется один компас и один барометрический датчик.
Внутри зеркала находится такая плата:
Итак вскрытие показало, что у нас внутри зеркала находится плата, на которой для управления индикаторами LED стоят драйверы TM1638, а логика зашита в контроллер MPC82E54AS2. В качестве датчика используется MEMSIC C2122M. Заниматься перезашивкой текущего контроллера и модификацией платы пока желания нет, поэтому решено сделать свою плату для зеркала, которая будет реализовать нашу логику и выводить нужную нам информацию от датчиков.
Решение задачи. Итак, решено сделать свою плату, повторяющую габариты штатной платы и индикаторы, только не будет использовать индикатор компаса, он нам не нужен. Логика работы устройства следующая:
1) Имеется три кнопки: "+", «PWR», "-": прибавить яркость, вкл или выкл подсветки, убавить яркость;
2) При нажатии на кнопки, включается подсветка и информация отображается 20 секунд;
3) Если экран включен, то PWR выключает его;
4) Данные температур обновляются раз в 1 секунду.
Соответственно функциональная схема устройства имеет вид:
Таким образом, в соответствии со схемой у нас микроконтроллер по SPI взаимодействует с двумя драйверами LED, двумя датчиками температуры. Все запитано по схеме, повторяющей штатную, чтобы использовать часть радиоэлементов из платы.
В качестве микроконтроллера будем использовать STM8S003, как самый дешевый из линейки STM8S, периферии у него достаточно, а в частности нам необходимы только GPIO, RCC, SPI. В качестве датчиков температуры использованы DS18B20, которые не составляют дефицита и есть на руках. Для управления LED индикаторам используется MAX7221.
МК STM8S003 имеет следующие характеристики:
Выбор данного МК обусловлен его простотой, дешевизной в условиях кризиса, а также наличием простых средств разработки (STM8S-Discovery). Для тех кто не хочет разводить печатку, можно сделать все тоже самое на макетной плате с использованием следующей просто отладочной платки:
Исходя из функциональной схемы получается следующая принципиальная схема устройства:
Плату с двухсторонним монтажом изготовили с помощью фоторезиста, также им сделан слой маски фиолетового цвета, в результате чего получилось следующее изделие, вид «штатной» платы и «патч» платы со своей логикой:
Программная реализация довольно простая, сначала отработана на базе Arduino, потом функционал портирован на STM8S боевого изделия, готового к установки на автомобиль. Стендовые испытания на климатику и на наработку на отказ плата прошла успешно, поэтому сейчас осуществляется монтаж платы в автомобиль. Когда коллега сделает установку, то выложу комплексный отчет обо всех изменения его автомобиля.
Внутри исходного кода три простых библиотеки на языке Си:
работы с бипером
работы с драйвером LED
работы с DS18b20
С точки зрения программирования ключевым моментом является факт, что у STM8 плавают такты, поэтому задержки для DS18b20 реализованы на базовом таймере номер 4, для примера функция задержки на 15 мкс для контроллера на частоте 16МГц имеет вид:
Уровень яркости индикаторов сохраняется в энергонезависимой памяти по принципу «карты памяти» описанной с помощью структуры. Для каждого поля структуры имеется функция взятия значения и функция записи нового значения.
Выводы. Итак, разработано устройство для автомобиля, которое решает задачу измерения температуры внутри салона и вне его. Казалось простая функция, но почему то в Китайских авто её нет, либо она очень спрятана от обывателя.
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]
Волк слабее льва и тигра, но в цирке волк не выступает!
Волк - единственный из зверей, который может пойти в бой на более сильного противника.
Если же он проиграл бой, то до последнего вздоха смотрит в глаза противника. После этого умирает...
Администратор сайта laptop.ucoz.ru не несет ответственности за содержание рекламных объявлений. Все используемые на сайте зарегистрированные товарные знаки принадлежат своим законным владельцам! Используемая со сторонних источников информация публикуется с обязательными ссылками на эти источники.