IT News: Digital Camera, OS, Laptop, Smartphone, Smart TV, Sound...

The Author's Project by Valeri N.Kravchuk
Сайт проверен Dr.Web
Меню сайта
  • Главная страница
  • Информация о сайте
  • Дневник
  • Каталог файлов
  • Обратная связь
  • Каталог сайтов
  • FAQ
  • Доска объявлений
  • Форум
  • Фотоальбом
  • Категории раздела
    Автомобильные гаджеты, ремонт... [220]
    Безопасность IT [484]
    Блоки питания, Power Banks, зарядки... [489]
    Видеорегистраторы [220]
    Гаджеты для спорта и здоровья... [190]
    Гаджеты, аксессуары... [625]
    Измерительная техника, инструменты [444]
    Накопители данных [226]
    Нетбуки, Ноутбуки, Ультрабуки [679]
    Мультиварки, блендеры и не только... [158]
    Планшеты [758]
    Радар-детекторы [26]
    Роботы-пылесосы [37]
    Своими руками [353]
    Сети, сетевые технологии, оборудование... [267]
    Смартфоны [4963]
    Фотокамеры, объективы, искусство фотографии.. [542]
    Умный дом [47]
    Электронные книги [95]
    CB, LPD, PMR- связь... [169]
    DECT, IP-телефоны [18]
    Drones, boats, cars... [108]
    electric cars [35]
    GPS-навигаторы, трекеры... [51]
    Linux и не только [4380]
    mini computers и не только... [409]
    News IT, Это интересно, ликбез... [1112]
    Smart TV, UltraHD, приставки, проекторы... [414]
    Smart Watch [263]
    Sound: наушники, плееры, усилители... [616]
    Windows 10... [298]
    Windows 11 [28]
    Погода

  • Метеорадар БРЕСТ
  • Погода в Бресте от www.yr.no

    Яндекс.Погода БРЕСТ

  • Интересные ссылки

    COMPIZOMANIA

    Наш опрос
    Оцените мой сайт
    Всего ответов: 1338
    Статистика
    Анализ веб сайтов

    Яндекс.Метрика

    Рейтинг@Mail.ru Яндекс цитирования

    Russian America Top. Рейтинг ресурсов Русской Америки.

    eXTReMe Tracker

    Правильный CSS!


    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0
    Locations of visitors to this page
    Форма входа
    Главная » 2015 » Апрель » 16 » «Патчим» зеркало в автомобиле
    09:30
    «Патчим» зеркало в автомобиле

    «Патчим» зеркало в автомобиле

    Коллега на работе купил себе новый автомобиль 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). Для тех кто не хочет разводить печатку, можно сделать все тоже самое на макетной плате с использованием следующей просто отладочной платки:



    Цена на ebay всего 120 рублей.

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



    Плату с двухсторонним монтажом изготовили с помощью фоторезиста, также им сделан слой маски фиолетового цвета, в результате чего получилось следующее изделие, вид «штатной» платы и «патч» платы со своей логикой:



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

    Внутри исходного кода три простых библиотеки на языке Си:
    • работы с бипером
    • работы с драйвером LED
    • работы с DS18b20


    С точки зрения программирования ключевым моментом является факт, что у STM8 плавают такты, поэтому задержки для DS18b20 реализованы на базовом таймере номер 4, для примера функция задержки на 15 мкс для контроллера на частоте 16МГц имеет вид:
     
    void _delay_15us(u16 n_15us)
    {
     /* Init TIMER 4 */
     CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER4, ENABLE);
     /* Предделитель: / (2^3) = 8 /3 */
     TIM4->PSCR = 3;
     /* SYS_CLK_HSI_DIV1 Auto-Reload: 16M / 8 = 2M, тогда 15мкс это 30 тактов */
     TIM4->ARR = 29; // 30 - 1
     /* Компенсация времени инициализации таймера в МК*/
     TIM4->CNTR = 29;
     /* Сбросить флаг обновления */
     TIM4->SR1 &= ~TIM4_SR1_UIF;
     /* Включить счет */
     TIM4->CR1 |= TIM4_CR1_CEN;
    
     while(n_15us--)
     {
     while((TIM4->SR1 & TIM4_SR1_UIF) == 0) ;
     TIM4->SR1 &= ~TIM4_SR1_UIF;
     }
    
     /* Отключить таймер */
     TIM4->CR1 &= ~TIM4_CR1_CEN;
     CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER4, DISABLE);
    }
    


    Пример обмена с датчиком DS18b20 средствами UART1 подсказал artko:
    void ds1820_uartinit(uint32_t baud)
    {
     USART_DeInit(USART1);
     USART_Init(USART1, baud, USART_WordLength_8b, USART_StopBits_1, USART_Parity_No,
     USART_Mode_Rx | USART_Mode_Tx);
    }
    void ds1820_write(uint8_t byte)
    {
     UART1->DR = byte;
     while (!(UART1->SR & (uint8_t)UART1_FLAG_TC)); // ждем завершения передачи
    }
    
    uint8_t ds1820_read() 
    {
     return ((uint8_t)UART1->DR);
    }
    
    void ds_write(uint8_t byte) {
     int i;
     for(i = 0; i < 8; i ++) {
     if(byte & 1) {
     ds1820_write(0xff);
     } else {
     ds1820_write(0x00);
     }
     ds1820_read();
     byte >>= 1;
     }
     
    }
    
    uint8_t ds_read() {
     int i;
     uint8_t res = 0;
     for(i = 0; i < 8; i ++) {
     ds1820_write(0xff);
     uint8_t c = ds1820_read();
     if(c == 0xff) {
     res |= (1 << i);
     }
     }
     return res;
    }
    
    void ds1820_startconversion()
    {
     ds1820_uartinit(9600);
     ds1820_write(0xf0);
     ds1820_uartinit(115200);
     ds_write(0xcc);
     ds_write(0x44);
    }
    
    int16_t ds1820_readtemp()
    {
     ds1820_uartinit(9600);
     ds1820_write(0xf0);
     ds1820_uartinit(115200);
     ds_write(0xcc);
     ds_write(0xBE);
     uint8_t temp1 = ds_read();
     uint8_t temp2 = ds_read();
     
     int16_t temp3 = (uint16) temp2 * (uint16)0x0100L + (uint16) temp1;
     return temp3;
    }
    
    ну и сам сброс
    ds1820_uartinit(9600);
    ds1820_write(0xf0);
    


    Уровень яркости индикаторов сохраняется в энергонезависимой памяти по принципу «карты памяти» описанной с помощью структуры. Для каждого поля структуры имеется функция взятия значения и функция записи нового значения.

    Выводы. Итак, разработано устройство для автомобиля, которое решает задачу измерения температуры внутри салона и вне его. Казалось простая функция, но почему то в Китайских авто её нет, либо она очень спрятана от обывателя.

    Демонстрация функционала новой платы:



    Даташиты на компоненты «штатной платы»:
    www.moly-tech.com/uppdf/MEMSIC/MMC2122MG%20RevC.pdf
    kazus.ru/datasheets/pdf-data/3675111/MEGAWIN/MPC82E54AS2.html
    cholla.mmto.org/computers/avr/cool_parts/tm1638.pdf

    Исходный код прошивки платы:
    Исходный код для IAR

    UPD:
    Как обещал процесс сборки в зеркало:


    Испытания на отрицательные температуры:


    Зеркало в сборе!
     
     
    Категория: Своими руками | Просмотров: 667 | Добавил: laptop | Рейтинг: 4.5/2
    Всего комментариев: 0
    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]
    Волк слабее льва и тигра, но в цирке волк не выступает!
    Волк слабее льва и тигра, но в цирке волк не выступает!
    Волк - единственный из зверей, который может пойти в бой на более сильного противника.
    Если же он проиграл бой, то до последнего вздоха смотрит в глаза противника. После этого умирает...

    Праздники сегодня

    Поиск
    Календарь
    Архив записей
    Друзья сайта
  • Официальный блог
  • JEEP - the best! Mercedes - the best! Автомобильный портал города Бреста: технические характеристики с фото, авторынок, автоспорт...
    Наша кнопка
    IT новости с моего лаптопа...

    Внимание!
    Администратор сайта laptop.ucoz.ru не несет ответственности за содержание рекламных объявлений. Все используемые на сайте зарегистрированные товарные знаки принадлежат своим законным владельцам! Используемая со сторонних источников информация публикуется с обязательными ссылками на эти источники.
    Copyright Valeri N.Kravchuk © 2007-2024