Карпутер. 5. Пора программировать!

Что-то давно ничего не писал. Наверное, новогодние праздники помешали. Но алкомарафон закончился, поэтому неплохо бы вернуться к нашему контроллеру.

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

Так как программировать лучше дома, сидя в тепле и уюте, то я ничего сразу паять не буду. И более того. вам не советую. Лучше всего сначала все “обкатать” в контролируемой обстановке, когда возникновение ошибок сведено к минимуму.

Возьмем наш первоначальный алгоритм. Если напряжение поднялось больше 13В, то замкнуть реле ближнего света. Где мы тут можем ошибиться? Да везде – от подбора резисторов для делителя напряжения до распайки реле и неправильного подсоединения. Поэтому сокращаем возможность ошибки до минимума: вместо делителя напряжения бортовой сети воспользуемся обычным переменным резистором, а вместо реле – обычным светодиодиком. Как подключать – я уже писал в предидущем посте. Но если у вас, как и у меня, плата discovery, то там уже есть светодиодики (а значит, вероятность ошибки снижается еще сильнее).

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

01a9541850ca680e486975cc6dcf78e69f85d7241d

Как видно из фотографии, я подключил переменный резистор к GND и 3V, а вывод движка резистора – на PA1. В итоге даже в самом плохом случае, когда я выверну резистор “до упора”, на ножку контроллера попадут безопасные 3 вольта.

Теперь пора описать, где и как писать код. Открываем сгенерированный пару постов назад код и находим в левой панели фаил main.c. В нем ищем кусок кода while(1), как показано на картинке

p1

Вот все, что будет расположено между фигурными скобочками и будет выполняться бесконечно (для тех. кто знаком с ардуиной, это void loop()). Писать надо на языке С, обучать которому я тоже тут не буду.

Еще одно отступление – как управлять выводами. У ардуины есть кошмар под названием port mapping (это когда при смене контроллера все назания ножек меняются и программы перестают работать), на stm тоже до недавнего времени такой кошмар был. Именно был, сейчас все проще.

Итак, если вы посмотрите на микроконтроллер, что обнаружите, что ножки нумеруются от PA0 до PF15. Все функции используют следущую нумерацию ножек – Блок от А до F и номер ножки в блоке.

Переведение ножки PC12 в “высокое” состояние

HAL_GPIO_WritePin(GPIOC,GPIO_PIN_12,GPIO_PIN_SET);

А ножку PE15 – в “низкое”

HAL_GPIO_WritePin(GPIOE,GPIO_PIN_15,GPIO_PIN_RESET);

Выдаем на 1й канал ЦАП значение переменной s

HAL_DAC_SetValue(&hdac, DAC_CHANNEL_1, DAC_ALIGN_12B_R, s);

И мной написанная (или подправленная) функция для чтения значения АЦП

static int GetADCValue(uint32_t Channel,uint32_t Count)
{
int val = 0;
ADC_ChannelConfTypeDef sConfig;
sConfig.Channel=Channel;
sConfig.Rank=1;
sConfig.SamplingTime=10;
HAL_ADC_ConfigChannel(&hadc,&sConfig);

for(int i = 0; i < Count; i++) { HAL_ADC_Start(&hadc); HAL_ADC_PollForConversion(&hadc,1); val += HAL_ADC_GetValue(&hadc); } return val / Count; }

Как видно из кода, работает только с ADC1 (ссылки hadc).

В посте описать все невозможно, поэтому рекомендую заглянуть в "Firmware", которую скачал STMCube, и посмотреть там примеры.

Итак, вот мой код

if(GetADCValue(2,3)>2048)
{
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_15,GPIO_PIN_SET);
}
else
{
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_15,GPIO_PIN_RESET);
}

В чем его суть? Если значение, которое прочитали из АЦП, больше 2048, то перевести ножку PE15 на высокий уровень. Если меньше, что наоборот, на низкий.

В чем магия? Магия в двух вещах. Первое, это значение АЦП. Оно может быть от 0 до 4095 (3В на ножке). Как им распорядиться, решать вам. А второе - ножка PE15 на плате подключена с зеленому светодиоду.

Компилируем, заливаем (иконка с буковками LOAD во втором ряду) и наслаждаемся своей первой программой.

Сам код (полностью готовый и скомпилированный) можно взять отсюда http://multik.org/carsim/carputer.rar

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

Желаю удачи в написании своих проектов!

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

Карпутер 4. Кормим микроконтроллер

Сегодня пост будет самым зубодробительным для большинства автомобилистов. Придется вспомнить школьную физику за 5й класс и закон Ома оттуда. Но я покажу, где взять помощи 🙂

Итак, перед нами стоит 3 задачи.

1) Накормить микроконтроллер.
2) Дать данные. То есть позволить микроконтроллеру собирать всякую нужную ему информацию.
3) Позволить ему чем-либо управлять.

В чем основная проблема? Проблема как ни странно, в бортовой сети автомобиля. Напряжение в ней гуляет от 9 вольт до 14,5 вольт с возможными выбросами до 60 вольт. Попутно в этом самом “напряжении” есть куча шумов, всплесков и прочей гадости.

А микроконтроллеры очень нежные. Питаются только 5ю вольтами или 3,3мя. И желательно, что бы эти вольты не гуляли туда сюда больше 5%. То же самое и с входами-выходами. Те же самые условия, только еще желательно, что бы ток, проходящий по ним, не превышал единицы миллиампер. В случае необходимости ток может быть поднят до десятка-другого миллиампер, но это уже черевато.

В качестве завершающего гарнира условий добавлю то, что любой выход может быть внезапно закорочен на “плюс” или “минус”. В общем, на первый взгляд страшно.

Для питания “на быструю руку” давно придуманы готовые схемы. В любом приличном магазине электроники можете произнести слово “L7805” и вам за 10-15 рублей вынесут маленькую черную штучку, которая получает на входе от 8 до 30 вольт, а на выходе выдает стабильные 5 вольт. Вот тут (multik.org/carsim) вам собранная в proteuse схема на поиграться (carsim-power).

car-power1

Сколько бы вы не давали на “вход” напряжения, на выходе всегда будет около 5В. В чем подвох? Подвоха два. Во-первых, на холостом ходу (когда к ней ничего не подключено) эта штука потребляет единицы миллиампер. Для обычных условий эксплуатации это нормально, а вот если делать что-то типа сигналки, когда схема постоянно подключена к аккумулятору, это .. некрасиво. Во-вторых, если вы задумаете “снимать” с стабилизатора 1-1,5 ампера (хинт – это почти готовая зарядка для телефона), то вы внезапно обнаружите, что стабилизатор греется. Почему? Потому что он вынужден куда-то тратить те вольты, которые оказались ненужными. Считайте сами: пусть будет в бортовой сети 13,4 вольта. Телефон хочет 5В и 1А для своего заряда. Значит стабилизатору надо рассеять где-то (13,4-5)*1=8,4 ватта. Это вполне себе нехилая грелка. И именно поэтому у этого стабилизатора есть металлическое ушко, за которое его прикрепляют к радиатору (Кстати, радиатором может быть любая массивная железная часть автомобиля). Но повторюсь, для обычных применений это вполне себе штуковина.

Но если мы заранее задумаемся о снижении напряжения и тока питания, то есть варианты. К примеру LP2950. Он включается точно так же, как и 7805, но во-первых, на холостом ходу ест десятки микроампер, а во-вторых, больше 100 миллиампер с него не снять. Для многих схем этого может хватить.

Но что делать, если по каким-то причинам надо больше 1,5 ампер и радиолюбителей (что бы собрать блок питания) нет под боком? Тогда на выручку придут готовые DC-DC преобразователи. По сути это собранные и оттестированные блоки питания в миниатюрных корпусах. Например NSD15-12S5 (вход 9.4-36В, выход 5В и 3А) или наш МПА15А (вход 9-18В, выход 5В и 3A). На самом деле их куча, стоит только поискать. В чем их плюсы? Ну, они не греются, имеют встроенные фильтры, управление, защиту от КЗ и прочее, что полагается иметь блокам питания. Основной их минус в цене: от тысячи рублей и выше.

В своих схемах я пользуюсь всеми вышеперечисленными вариантами, но обычно тяготею к первому – больно дешево и просто.

Переходим к следующей задаче – дать микроконтроллеру данные. Проблемы те же самые: не дать микроконтроллеру много вольт и миллиампер. Все используемые варианты давно уже описаны и можно сказать, стали классическими.

Первый: делитель на резисторах. Просто ставим в цепь два резистора, в точке их соединения забираем данные. Уровень напряжения в точке будет равен входному напряжению * соотношение номиналов резисторов. А ток можно подсчитать по закону Ома – i=u/r Опять же, я понимаю, что это тяжко, поэтому вот очередная схема в протеусе, которая позволит “поиграться” (там же файл carsim-power-res). Ну или набрать в поисковике “калькулятор делителя напряжения”.

carsim-power-res copy

Справа можно увидеть амперметр (показывает миллиамперы) и вольтметр. Наша задача – добиться таких сочетаний резисторов R1 и R2, что бы на микроконтроллер не приходило больше 3В (если ардуино, то 5) и потребление тока было минимальным (а то так повесим с десяток датчиков, сжигающих на резисторах по 10 миллиампер и получим 0,1 ампера, способных посадить аккумулятор в “ноль”). Казалось бы, простая задача? Но давайте снова посмотрим на то, что может происходить в бортовой сети. От 9 до 60 вольт … Если сделать совсем классический вариант, то 99% времени напряжение на ножке контроллера будет составлять доли вольта. Как-то некрасиво.

Поэтому обычно рассчитывают делитель на входное напряжение 0-15В, а всплески (которых может и не быть) убирают отдельным элементом. Есть много схем, но я предпочитаю самую простую в изготовлении: на вход, перед делителем, ставлю защитный диод (он же супрессор, он же TVS). Скажем, китайский SA15 пропускает через себя все, что попадает в диапазон 0-15 вольт. Остальное он убирает и убирает довольно качественно (в смысле после него конденсатор если и нужен, то только для сглаживания). Минус у него только один – если что, то он (диод) превращается в простое короткое замыкание, заставляя сгорать всё что можно перед собой. Для 99% случаев этого достаточно, а для оставшегося 1% существуют предохранители. Схемы я нарисую в следующем посте.

ВАЖНО: нельзя использовать “делители напряжения” для схем, где есть напряжения больше нескольких десятков вольт. Просто небезопасно для здоровья. Для этого есть второй вариант.

Вторым вариантом ввода сигнала в микроконтроллер является оптопара. Внутри оптопары стоит светодиодик, который своим светом управляет транзистором, “включая” или “выключая” выходы. У оптопары главный плюс в следующем: легко можно измерять наличие сотен и тысяч вольт. Самая обычная оптопара легко “развязывает” до 1500 вольт. Минус же тоже существенный: с её помощью нельзя (практически, да) измерять уровень сигнала. Только “есть” или “нет”.

Кнопки и прочие выключатели обычно присоединяются в микроконтроллер напрямую – там обычно неоткуда возникнуть “бякам”. Если возможность есть, то либо опять поставить на входе супрессор, либо стабилитрон с керамическим конденсатором. Опять же, страшные схемы в следующем посту.

С вводом разобрались. Теперь с выводом. Сначала я начал писать свой текст, но потом вспомнил, что есть отличный пост на эту тему. Не мой, но это же не повод не считать его отличным?

062-Как подключить к микроконтроллеру нагрузку?

Моими любимыми способами являются использование “составного транзистора Дарлингтона” и “полевой транзистор”. Тут их переписывать не буду, ибо все прекрасно описано по ссылке выше. Мой выбор между способами простой: если надо коммутировать что-то до 5-10 ампер или быстро включать-выключать, выбираем транзистор. Выше – реле через составной транзистор. Быстро включать-выключать большие нагрузки мне не приходилось, но думаю, схем на всяких тиристорах и симисторах навалом.

Что бы проиллюстрировать вообще все вышеприведенное, вот вам очередная схема (она же в файле carsim-final)

carsim-final

Думаю, вдумчиво читающим уже почти все понятно, но на всякий случай прокомментирую. Слева вверху я сымитировал бортовую сеть автомобиля. Можно переключиться на 12В, 13,4, 16В и на регулируемое. Правее – стабилизатор напряжения на 5В. Слева внизу – делитель напряжения на резисторах R1 и R2 и развязка через оптопару U2. Правее стабилизатора две схемы включения нагрузки – через N-канальный полевой транзистор IRF610 и через сборку Дарлингтона ULN2003A.

К моему сожалению, proteus довольно небрежно относится (или у меня такая версия) к мощностям элементов, поэтому симуляция иногда прерывается (как и игнорируется D2). Если такое случилось, просто запустите заново.

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

Карпутер. 3. Выбираем микроконтроллер.

Итак, со схемами в proteus наигрались, теперь голова полна идеями, хотелками и желалками. Но ни одна идея не реализуется сама собой, поэтому надо выбрать “движок” для нее.

Как выбирают контроллер?

Во-первых, по личным предпочтениям. Кому-то нравится одна архитектура, кому-то другая. У кого-то уже есть опыт с одними микроконтроллерами и ему лень изучать другие … Но я считаю, что раз опыта и предпочтений нет, поэтому – stm32. Вам на данном этапе все равно, а мне потом спасибо скажете.

Во-вторых, по скорости. Если задача сложная, то думаю понятно, что работающий на 72МГц контроллер обгонит работающего на 16МГц (грубо – у кого больше литраж у двигателя, тот быстрее разгонится или больше увезет). А если устройство работает от батареек, то наоборот, устройство работающее на 16МГц легко даст фору работающему на 72х (опять же, чем больше литров, тем чаще на заправку надо будет ездить). Но на данном этапе нам совершенно все равно, какая скорость у контроллера – для нас подойдет любая.

И наконец, по числу портов и их возможностями. Все порты делятся на два типа: цифровые и аналоговые. Цифровые оперируют уровнями типа “есть сигнал” и “нету сигнала”, а аналоговые – “какой уровень у сигнала?”. Говоря другими словами – кнопки, выключатели и прочие переключатели – это цифровые, а всякие регуляторы, измерители и прочее – аналоговые. На каждую кнопку, релюшку или измеритель надо по одному порту (конечно, есть куча возможностей, как от этого уйти, но пока нам этого не надо). И крайне рекомендую при выборе зарезервировать пару портов под всякие доделки и внезапно всплывшие идеи.

Ладно, хватит разговоров, пора выбирать то, на чем делать будем, а то очень охота в магазине денег потратить, пока еще есть возможность.

Что будем делать-то? В смысле для чего мы все это затеяли? Давайте начнем с простого. Пусть будет система автоматического включения света в машине. Как пример использования: садимся в машину, включаем зажигание, заводим машину и через некоторое время наш контроллер включает фары. Выключили зажигание – все выключилось. Сплошные бонусы: стартеру легче крутить двигатель – фары не отбирают лишних ампер и вам не надо будет помнить о включении фар.

Какой будет алгоритм работы?

1. Измеряем напряжение бортовой сети
2. Напряжение меньше 13В? если да, иди на п.1
3. Подождать 5 секунд.
4. Включить фары.

Все, никаких заморочек. Просто и совсем не страшно. Как видно, нам потребуется всего 2 порта: один аналоговый для измерения напряжения в сети и один цифровой, для управления релюшкой фар.

(отступление) Не хотите фары включать? Ну тогда например можно автоматически включать и выключать компрессор в пневмосистеме. Или в зависимости от температуры включать нагреватель или вентилятор. В общем, подойдет любой вариант “измерил что-то и как это что-то достило такого-то уровня – включил или выключил нечто”.

Вернемся к нашим баранам. Нам нужен микроконтроллер, у которого есть как минимум 1 аналоговый порт на вход и 1 цифровой порт на выход. Сейчас смешно, да. Но потом всего будет не хватать и начнутся мучения.

Теперь готовимся скачать много из сети. Для начала нам нужна программа STM32CubeMx. (Все поисковики ее легко находят, но вот прямая ссылка http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1533/PF259242?sc=stm32cube там мотайте страницу в самый низ и справа будет маленькая красная кнопочка Download).

Зачем нужна эта программа? Как я писал в первом посте, STM32 имеют один, но очень большой и неприятный минус – очень сложно начать с ними работать. В этих микроконтроллерах очень много возможностей и вариаций, поэтому даже просто запустить его составляет очень большую проблему. Команды инициализации, предназначенные для одной серии, не подходят для другой. Один и тот же порт может выполнять разные функции на разной частоте, причем все это настраивается в четырех или пяти местах. В общем, реальный кошмар после атмеловских контроллеров и 99% причин неработащих программ.

Вот и придумали этакий “генератор кода инициализации”, когда можно мышкой не торопясь повыбирать порты и их функции. При этом идет одновременный контроль правильности использования порта и непересечение его с другими функциями. В общем, скачивайте, распаковывайте и запускайте программу (может потребовать java, так что тоже ставьте). Как ставить программы, нажимая next, я рассказывать не буду 🙂

stmcube1

Перед вами откроется очень информативное окно. New Project – это создать новый проект, Load Project – загрузить старый, который редактировали раньше. Нам естесственно надо выбрать создать новый. И тут …

stmcube2

И тут перед вами откроется окно, в котором собрана вся (почти) линейка микроконтроллеров. Первая вкладка – MCU Selector позволяет выбрать подходящие контроллеры в их голом виде. Слева в табличке функционал, справа – подходящие контроллеры. Скажем, нужно нам в нашем проекте использовать одновременно ethernet и часы реального времени, так значит ставим галочки и получаем, что нам подходят 88 микроконтроллеров из 590 (на момент написания). Но эта вкладка для продвинутых пацанов.

Нам нужна следующая вкладка, которая называется Board Selector. Тут уже можно выбрать готовые платы, со всем распаянным. Сразу рекомендую нажать кнопку “>>”, которая будет показывать изображение платы.

stmcube3

Механизм тот же самый – слева выбираем что хочется, а справа получаем список того, где это есть. Потом открываем веб-сайт ближайшего магазина электроники и смотрим на наличие и цену. Лично у меня есть платы STM32L100 и STM32F3 (именно она изображения на скриншоте). Так как F3 мне нравится больше, то и в дальнейшем я буду использовать именно эту плату. Но повторюсь, вы можете использовать любую плату или процессор – главное, что бы он вам подошел по характеристикам.

Выбрав плату или процессор, жамкаем на кнопоку ОК в самом низу. Компьютер немного подумает и потом выдаст примерно вот такую картинку.

stmcube4

Слева будут всякие возможности, которые умеет процессор, а справа – как и на что распределены ножки и процессора. Если вы вышли сюда из выбора плат, то программа сама показала, что на плате куда подключено. Как видите, все ножки помечены разными цветами.

Желтенькие и светлозеленые – ножки, назначение которых изменить нельзя. Питание, земля и прочие подобные ножки.
Оранживенькие – ножки, на которые повешено то, что есть на плате и что можно либо отключить, либо заиспользовать. У меня это кварцевые резонаторы, гироскоп с компасом, USB порт и так далее.
Зелененькие – это ножки, на которые тоже повешено то, что есть на плате, но это ТО – кнопки, светодиодики и прочее. Грубо говоря, отличие только в сложности с точки зрения контроллера. Таким же цветом будут обозначаться и ножки, которые вы выделили для вашего проекта.
Серенькие – свободные ножки, которые можно использовать.

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

Как менять назначение ножек? Есть два способа. Первый – это просто мышкой ткните на ножке. Вот для примера я ткнул на ножке, которая у меня подключена к голубой кнопке.

stmcube5

Как видите, эта ножка может выполнять аж 17 функций, но сейчас она работает как GPIO_Input (я ниже объясню, что это значит).

А второй способ – воспользоваться левой вкладкой и включить нужную функцию.

stmcube6

Как видим, у функции вообще горит желтый предупреждающий знак, который показывает, что что-то с ней не то. Открыв ее, можно увидеть подсвеченным красным подфункцию. В данном случае это IN1. Подведя мышку к красному, можно узнать, что с чем конфликтует. В данном конкретном случае можно увидеть, что 1й канал 1го аналого-цифрового преобразователя конфликтует на ножке процессора PA0, которая уже стоит в режиме GPIO_Input. Белиберда, да? Но ничего. Для примера можно обидеться и раз нам не дают использовать IN1, выбрать IN3, что бы это не значило. И обратите внимание, на рисунке процессора справа одновременно начнет показываться как “занятая” соответствующая ножка процессора. В нашем случае это PA3, в левом нижнем углу.

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

Итак, как же понять, какие функции можно повесить на ножку? Что бы не забивать голову, я опишу только наиболее нужные и часто используемые функции. Назначение других можете узнать сами, когда прижмет (но 90% это никогда не понадобится).

Итак, что можно выбрать?

ADC – Или АЦП, аналогово-цифровой преобразователь. Показывает значение напряжения. У большинства АЦП есть каналы, к которым он может подключаться. А каналы напрямую подключены к ножкам. То есть когда вам надо измерить напряжение на 1,2 и 3й ножке, то микроконтроллер на самом деле будет выполнять примерно следующее “подключить ацп к ножке 1, измерить, подключить ацп к ножке 2, измерить, подключить ацп к ножке 3, измерить”. В принципе, для большинства задач этого достаточно, ведь измерение одного канала занимает от 1 до 10 мс. Но есть задачи, когда необходимо реально одновременно измерить напряжение на несколких ножках. В таком случае используют два или больше АЦП. Например, в F3 серии аж 4 АЦП, поэтому мы можем измерять 4 уровня одновременно. Если мы заиспользуем все доступные ресурсы, то сможем за 0,1с измерить 59 аналоговых выводов (ардуинщики, вы рыдаете? :).

DAC – или ЦАП. Цифро-аналоговый преобразователь. Преобразует некоторое значение в уровень сигнала на выходе. Обычно один DAC имеет от 1 до 10 выходов, каждый из которых можно регулировать отдельно.

TIM – таймеры. Срабатывающие “раз в нное время” сигналы. На таймерах в stm делается очень многое – от PWM (управление сервомоторами и яркостью) до подсчета частоты смены сигнала на входе. Немножко к ним имеют отношение RTC – часы реального времени (которые считают минуты и секунды, а не тики и такты) и WDG – системы, которые автоматически перезагружают контроллер, если он завис, но я их касаться не буду

USART/UART – контроллеры для связи с “внешним миром”: с компьютерами, с другими контроллерами и так далее.

И наконец GPIO. Это порты общего назначения. То есть на них можно вешать все, что душе угодно. Они могут быть GPIO_Input – порт, работающий на вход (который принимает сигнал “есть” и “нет”) и GPIO_Output – порт, работающий на выход (который выдает сигнал “есть” и “нет”). Вы можете увидеть GPIO_Reset – это означает, что порт находится в хз каком стоянии и GPIO_EXTI – это выход прерывания. В общем лишнее на данном этапе.

Все ножки маркируются следующим способом: [подсистема]_[функция]. Пример:

ADC1_IN6 – 6й вход 1го АЦП контроллера
DAC1_OUT1 – 1й выход 1го ЦАП контроллера
USART1_TX – порт передачи 1 контроллера связи.

Но вернемся назад. Из всего выше перечисленного нам нужен один ADC ввод и один GPIO_Output вывод. Для ввода я заиспользую ADC1_IN2 (ножка PA1), а для вывода GPIO_Output – PC5. Они расположены на одной стороне реальной платы, поэтому мне будет удобно с ними работать. И что самое главное, они не конфликтуют ни с чем, что уже есть на плате.

stmcube7

Щелкаем и меняем назначение нужных нам ножек. Обратите внимание на то, что у PA1 нет булавки, а у PC5 – есть. Это та самая функция переназначения портов, когда вдруг функционал будет конфликтовать, а нам нет разницы, откуда его брать. Что бы “прикрепить” функционал к ножке, надо просто правой кнопкой мышки по ней щелкнуть и выбрать Signal Pinning. Теперь ни одна сволочь не отберет у нас ее :). Кстати, там же можно и дать название ножке, что бы не запутаться.

stmcube8

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

Можно сохранить проект на всякий случай, ибо это только начало.

Теперь щелкаем следующую вкладку – Clock Configuration. И у некоторых сейчас порвет мониторы 🙂

stmcube9

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

stmcube10

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

На картинке мы видим включенный контроллер ADC1 (для него нужны контроллер DMA, NVIC и RCC) и контроллер GPIO (Для него нужен RCC). В общем, давайте поверим, что нам это надо.

На этом экране у нас есть возможность тонкой настройки. Жмем на ADC1

stmcube11

Тут собраны все тонкие настройки для данного контроллера. Особо менять нечего, за исключением подсвеченного – Continuous Conversion Mode. Поставьте его в Enabled. Данная галочка говорит, что мы желаем запрограммировать контроллер так, что бы он постоянно мерял свои входы. И более того, измерянные значения сразу присваивал переменным. Ну ленивый я, пусть железка сама все делает 🙂

Аналогичную картинку можно получить и по GPIO портам.

stmcube12

Тут можно тоже поизменять разные параметры, но нам тут менять тоже ничего не надо.

В общем, полезная вкладка, особенно когда начинаешь использовать более сложные вещи, как USART или USB – здесь можно настроить все.

И наконец, последняя вкладка – Power Consumption Calculator. Тут можно прикинуть, сколько электричества будет потреблять микроконтроллер.

stmcube13

Но подчеркиваю, именно прикинуть. Ибо система не знает, сколько потребляет то, что еще подключено к этому контроллеру. На приведенном выше скриншоте я уже понажимал все кнопки. Согласно картинке, если мы ничего не будем подключать к этому микроконтроллеру, то на полной мощности он будет потреблять 30 миллиампер. Или говоря другими словами, от одной батарейки АА он проработает 3 с лишним суток. И это я не тыкал в различные режимы энергосбережения …

Итак, остался один последний шаг. Сгенерировать исходный код, котрый будет компилироваться и прошиваться в контроллер. На панели сверху есть кнопка “шестеренка с палкой”. Нажимаем ее и …

stmcube14

Заполняем, где будут располагаться файлики и как мы обзовем проект. Так же выберем, для какой среды разработки будет генерироваться исходный текст. Выбор небольшой и все предлагаемые системы – полный шлак (тут конечно у каждого свои фломастеры, но тот же бесплатный CoCox уделывает Keil как бог черепаху), поэтому выберите MDK-ARM, как наиболее описанную в русском интернете.

Если вы запускаете генерацию в первый раз, система предложит скачать Firmware Package именно для вашего процессора. Ждем пока скачает и нагенерирует.

stmcube15

Увидели это окошко? Поздравляю! Вы прошли большую часть пути. Остался еще один шаг. Всего один …

Открываем браузер на https://www.keil.com/download/product/ и выбираем MDK-ARM v5. Вам дадут анкету, в которой реально проверяется только email. Проверяется – в смысле их сервер подключается к вашему серверу и проверяет валидность ящика, поэтому емайлы типа 2@1.co не проходят. Остальное нужно только для того, что бы выбрать, на каком языке потом вам напишет продавец со словами “купите у нас”. Как обычно, у данной версии есть ограничения и самым главным из которых является ограничение в объеме кода в 32 килобайта. Поверьте, это довольно приличный объем для микроконтроллеров и вам его хватит надолго. Но если вас это напрягает, то сами знаете где можно найти вылеченную версию совершенно бесплатно.

На данном этапе можете спокойно идти пить чай. Версия, которую вам предлагают, занимает 500 мегабайт и скачаться мгновенно не может. А самизнаетекакая версия занимает еще больше, потому что в нее напихали всякого нужного и ненужного.

Как обычно, рассказывать как ставить программы с помощью нажатия кнопки next, я не буду. Единственное, что при первом запуске вылезет Packs Installer – дождитесь, пока он отработает и закрывайте его. Так что ставьте Keil и в той папочке, куда сохранили проект, найдите каталог Projects, в нем MDK-ARM и там ваш файл с типом mVision4 Project. Нажимаем на него …

stmcube16

Я тут его немного сплющил, но вы увидите именно это. Теперь нажимаем на кнопочку, которая во втором ряду, под “открыть”. Похожа на папку для бумаг, в которую входит стрелочка. Ну или на клавиатуре F7. Этим мы запускаем компиляцию всего того, чего мы нагородили выше.

stmcube17

И только после того, как вы увидели в окошке снизу строчку 0 Errors(s), 0 Warning(s) вы можете поздравить себя – у вас есть полностью готовая прошивка для микроконтроллера. Ну и что, что она пока ничего не делает, зато 90% нашей первоначальной задачи уже выполнено. Теперь вы можете идти в магазин и покупать реальный микроконтроллер за реальные деньги. И у вас есть уверенность, что он заработает.

А вот как и что подключать к контроллеру – это уже в следующем посте.

Карпутер. 2. Все не так страшно …

Отписываясь на форумах, я обнаружил что после предложений “давай сделай, это же не сложно” получал в ответ “не, у меня с электричеством плохо, боюсь чего-нибудь сжечь” или другие подобные ответы. Товарищи, господа и пацаны! Поверьте, автомобиль по своей сути – набор проводков, предохранителей и выключателей. Даже “мозги” машины внутри себя состоят из большого количества выключателей. Так что придется сделать отступление и помочь овладеть этими переключателями.

Раз вы читаете это, значит у вас есть компьютер и браузер. Открываете браузер и идете на http://www.labcenter.com/. Там все по английски, но вам нужен раздел Downloads, а там скачать prodemo.exe. В этом здоровом файле находится редактор схем и печатных плат. А так же симулятор этих самых электрических схем. То есть вы можете как угодно “коротить”, “вешать сопли” и развлекаться другими способами: никакого урона электронике вы не нанесете.

proteus_screen

Со скачанным с сайта есть одна засада: он не сохраняет и не печатает нарисованного. Но в интернете можно найти уже вылеченное и даже руссифицированное. Если сами не можете, спросите и вам ответят. В интернете же легко можно найти и инструкции, как и что делать с ним, поэтому я буду очень короток. Нет, я пойду другим путем.

Вот тут http://multik.org/carsim/ лежит готовый проект для proteus (просто скачайте файл carsim.dsn и кликните на нем – он откроется в proteus). Он довольно приблизительно имитирует электропроводку обычной машины. Знающие электрику начнут кривить носом и искать ошибки (а они там есть), а незнающие могут нажать слева внизу кнопочку “play” (треугольник вправо, если кто не понял) и поиграться. Поиграться в буквальном смысле: выключатели выключают и включают лампочки, а пипикалка пипикает.

При этом схема полностью отражает реалии: скажем, можно заменить предохранитель на имеющий более низкий номинал (Выделите мышкой предохранитель и нажмите Ctrl-E, там увидите что-то типа 2А) и увидеть, как он сгорает при попытке включить нагрузку.

Итак, что бы было понятно что к чему, пройдусь по схеме слева-направо.

proteus1

Здесь имитация генератора и ключа зажигания (SW1), аккумулятора и отключателя массы (SW2) вместе с главным предохранителем. Вольтметр показывает напряжение в “бортовой сети”.

proteus2

Тут имитация работы ближнего и дальнего света. Переключатель SW3 имеет три положения – выключено, ближний свет и дальний свет. Лампы L1 и L2 отвечают за “ближний”, а L3 и L4 – за “дальний”.

proteus3

Эта часть имитирует салонный свет. 5 выключателей – это концевики дверей и багажника. Пока любой из них замкнут (соответствующая дверь открыта), будет гореть свет в салоне или лампочка L5.

proteus4

Здесь можно поиграться с “уровнем топлива в баке”. Красивой стрелочки я не нашел, поэтому можете считать вольтметр за цифровой индикатор уровня горючего.

С последней частью предлагаю разобраться самим, главное громкость поменьше сделайте 🙂

Итак, я буду считать, что наиболее нетерпеливые наигрались, а некоторые даже пошли читать инструкции или даже смотреть (в гугле “proteus начинающим” выдаст все необходимое).

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

Кнопки. Бывают нормально замкнутые (концевики в дверях) и нормально разомкнутые (кнопка сигнала). Принцип простой: нажал, она сменила состояние (замыкала цель – теперь размыкает) и будет в таком состоянии, пока ее не отпустить.

Выключатель. Такой же, как кнопка, только состояние фиксируется (держать не надо)

Переключатель. Полностью аналогичен выключателю, только коммутирует несколько выходов. Пример – SW3 выше. Или замок зажигания.

Енкодер. Тот же переключатель, только после переключения на последний выход начинает с первого. Самое распространенное применение – крутилки громкости на современных магнитолах. Можно вращать в любую сторону сколько угодно раз.

Переменный резистор (он же переменное сопротивление). Штука, меняющая свое сопротивление в зависимости от каких-то условий. Наиболее распространенный пример – датчик уровня топлива. Много топлива – сопротивление маленькое, мало – сопротивление большое.

И … в принципе все. Все остальные датчики можно рассматривать как комбинацию предидущих. Скажем, датчик Холла (используется как датчик скорости в раздатке/коробке и на колесах) – для наших целей это тот же самый переменный резистор, только его переменность зависит от магнитного поля. Датчик температуры – это выключатель или опять же резистор, состояние которых зависит от температуры. Датчик дождя – это резистор, который реагирует на отраженный каплями воды свет от стоящего рядом светодиодика.

Да, особняком стоят всякие OBD, CAN и прочие, но там все в цифре и я этого коснусь потом.

Как читать разные датчики я опишу через пару постов. Сейчас могу упомянуть только то, что из-за нежности микроконтроллеров ничего нельзя подключать “напрямую”.

С обратным управлением все гораздо проще: микроконтроллеры “дохлые” и поэтому без транзисторов/релюшек не обойтись вообще никак. Типовые схемы я тоже опишу.

Согласитесь, совсем не страшно же? Тогда в следующем посту будем выбирать конкретный микроконтроллер под ваши нужды.

Карпутер. 1. Предисловие и выбор микроконтроллера

Хотел начать с обычного отсыла к классике (“этим постом я начинаю …”), но потом передумал. Начну обыкновенно.

Итак, после продажи машины и разборок с банком у меня появилось немного свободного времени, которое тут же начали заполнять мысли о не сделанном и недоделанном. А недоделанного у меня оказалось прилично: от дописывания диагностики машины через OBD и заканчивая переводом “из соплей на скрутках” различных доделок для машины.

С одной стороны, можно просто взять и забить на все это, ибо машины уже нет и тестировать особо не на чем. А с другой стороны, машина потом появится и снова вспоминать, чего не доделано и где это недоделанное валяется? Ну и свободное время позволяет более подробно описать тот путь, который может быть кто-то будет повторять.

Для начала я решил составить список того, что у меня недоделано (просто скопирую из форумных постов)

1) Контроллер второго аккумулятора. Штука с вольтметрами, контролирующая подключение второго аккумулятора. Есть подобная у t-max, но она вся в светодиодиках и тупая. Алгоритм грубо говоря такой: смотрим на напряжение на первом аккумуляторе, как превысило 13В (значит завелись), подключаем второй (для зарядки и теде). Если на первом долгое время 12В, значит можно отключить второй — мы на стоянке. Если ниже, то не отключать — мы лебедимся и второй аккумулятор нужен. Ну и кнопочка принудительного подключения второго, если первый на стоянке разрядился по каким-то причинам. У водителя индикатор с вольтами и кнопочка.

2) “Сумматор баков”. У многих машин есть два источника горючки (скажем, бензин и газ), а у некоторых их три (два бака с бензином и газ). Суть — выводить на штатный указатель уровня сумму уровней баков. Например, от нуля до четверти — первый бак, от четверти до половины — второй и от половины до полного — газ. Или еще как. Дополнительно выравнивание нелинейности датчиков уровня, когда то стрелка не двигается, то начинает падать. И специальная фича для патриотоводов — обработка уровня “приборка пикнула” так, что бы она не пищала при каждом торможении-разгоне.

3) “Корректор спидометра”. Меня напрягает 10-15% погрешность спидометра даже на штатных колесах. Меня напрягает нелинейность этого вранья. И стоит сменить размерность колес, как все привычки типа “раз стрелка на 90, значит я еду 85” приходится “перепривычивать”. Дополнительно была мысль сделать вывод “поехали — включи ближний свет/ДХО”, что бы не дергать переключатели руками и не зажигать фары перед заводом зимой.

4) “удлинитель выключателей”. Грубо говоря — управляемые удаленное релюшки. Например поставил свет вокруг, и к нему вместо кучи силовых проводов тащишь один силовой потолще и один управляющий. Или для компрессора сзади или для усилителя … в общем, везде, где надо управлять чем-то мощным и это мощное далеко от водителя.

Поначалу я хотел сделать все это по принципу “одна задача – один контроллер”. Причем навскидку получалось, что с любой из этих задач в одиночку справится практически любой микроконтроллер, доступный к покупке в магазине.

Но после прикидывания схем внезапно выяснилось, что очень многие функции дублируются. Скажем, для многих применений полезно знать напряжение в бортовой сети. И как индикатор для ответа на вопрос “заведен ли двигатель?” и как точку отсчета для некоторых корректировок. И если собрать 5 схем, то что, к аккумулятору тянуть 5 проводов от разных точек? А как настраивать все это безобразие? Городить кучу кнопок и выключателей и обрамлять все это светодиодами?

В общем, постепенно я пришел к идее “один микроконтроллер на всё”. Поначалу я опасался того, что эта электронника нежная, не любит автомобильных условий … Но годовые испытания в режиме “вот счас доделаю” показали, что обычный микроконтроллер “из магазина” спокойно переносит условия в машине и вообще, его поведение очень сильно отличается от моих первоначальных представлений.

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

Attiny, они же tinyAVR контроллеры. Основной их плюс – в распространенности. Они существуют в разных корпусах, с разным числом выводов, есть куча примеров схем и кода. Из минусов можно отметить то, что из-за широкой номенклатуры нет решений “все в одном”. И в итоге получается, что даже для изготовления одной схемы надо покупать отдельный программатор, разбираться с фьюзами и прочим. А это все стоит денег (скажем один более-менее приличный программатор стоит на порядок дороже контроллера) и окупается только на десятках собранных схем. Но для простых задач им нет равных.

AtMega или Adrduino. Те же самые плюсы, что и у “тинек”, но добавляется то, что все решения уже идут готовыми. Подключил плату к компьютеру, настучал в окошке код и он уже выполняется. Главный минус же состоит в том, что все эти решения рассчитаны на “сделал максимально быстро, не считаясь с затратами”. Отсюда совершенно дикие цены как на сами платы, так и на модули расширения (shield, шилд). Скажем, самая дешевая плата в классическом (для ардуинки) формате стоит от тысячи рублей, при этом функционала на ней – кот наплакал. А цены на самые дорогие, с чуть-чуть большим набором портов легко упрыгивают за сотню баксов.

Ну и есть у этих плат общие недостатки. Скажем, отлаживать (пошаговое исполнение программ и прочее) можно только с помощью специальных средств (jtag) и то на старших моделях контроллеров. Нет ЦАП, нет всяких околопромышленных интерфейсов (скажем, узнайте, во что встанет подключить к ардуинке контроллер CAN) и так далее и тому подобное.

Следующими идут миниатюрные компьютеры. Paspberry Pi, OLinuXino и так далее. Основной плюс – внутри них работает привычный многим Linux, код можно писать практически на чем угодно и они подключаются к монитору или обычному телевизору. Так как основное предназначение у них тоже самое, что и у ардуинок, то и минусы те же самые – дикие цены как на сами компьютеры, так и на платы расширения к ним. Плюс все эти компьютеры совершенно (ну по сравнению с вышеперечисленным) не имеют портов ввода вывода и обладают диким энергопотреблением.

К этому описанию можно смело добавить разные платы с Android внутри. Плюсы и минусы абсолютно те же самые. Для планшетов еще пойдет, а для встраиваемой электроники – никак.

И наконец, моя нынешняя вершина – микроконтроллеры stm32. У есть один, но очень большой и жирный минус: в них совершенно невозможно разобраться “с наскоку”. Даже простая задача “помигать светодиодиком” для начинающего легко может вылиться в многочасовое копание в документации, которая к тому же вся на английском. Все остальное – сплошные плюсы: от широчайшего арсенала портов и интерфейсов до дикой производительности. Как дополнение – архитектуру stm32 для своих микроконтроллеров используют несколько производителей, поэтому средств разработки – дикие горы, на любой вкус, любую задачу и на любой кошелек.

Скажем, возьму самую дешевую плату для разработки на stm32 – STM32L100C-DISCO. 256 килобайт памяти для программ (ардуинки и прочие уже рыдают), 16 килобайт ОЗУ, работает на 32Мгц, кроме АЦП (16 каналов!) и ЦАП имеет кучу аппаратных(!) интерфейсов типа I2C и 40 с лишним портов ввода-вывода. По меркам stm – это микроконтроллер начального (нет, начальнейшего) уровня. И вот эта плата, с уже готовым программатором и парочкой светодиодиков стоит в два раза дешевле самой дешевой ардуинки.

А стоит сравнять стоимость, как уже можно получить STM32F3DISCOVERY, где добавят гироскоп с компасом, кучку светодиодиков, поднимут объем ОЗУ до 48килобайт и частоту процессора до 72Мгц. После этого увеличат число портов ввода-ввывода практически в два раза и добавят горку аппаратных интерфейсов.

А за цену какой-нибудь arduino mega можно взять офигенный набор разработчика с LCD экраном и дичайшими возможностями.

Более того, подлая st обеспечила более-менее приличную совместимость снизу-вверх. То есть написав программу для “младшего” микроконтроллера, потом с минимальными переделками ее можно перенести на более “старший” микроконтроллер. Нет ни путаницы с обозначениями портов, ни с их функционалом.

Думаю, после этого вам станет понятным, какие микроконтроллеры я буду использовать в дальнейших разработках 🙂

Безопасность – она превыше всего …

… или день адреналина.

День начался хорошо: внезапно в мире сошлись три вещи: я, деньги и магазин, где продаются “концевики” от daewoo nexia. По такому радостному случаю я прикупил еще провода для “прикуривания” (а то зимой народ заводить нечем, а катать не всегда получается), пару светоотражающих жилеток (по типу как дорожные рабочие носят или гибдд), комплект наклеек и фильтр салона.

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

IMG_0046

IMG_0047

Просто отрываем защитный слой и наклеиваем на торец двери. Получается примерно так.

IMG_0044

Хоть фотография была сделана днем, я потом проверил вечером: от фонарика блестят и контраст с машиной очень сильный. Что и требовалось получить. Одно НО: обратите внимание: в пакетике 2 наклейки, а не одна. Я взял 4 комплекта и теперь у меня мысли, куда бы еще наклеить оставшиеся 🙂

Про концевики даже писать нечего: отверткой выкрутил старый, перецепил фишку и на его место вкрутил новый концевик. Дело на 5 минут даже при отсутствии отвертки (ну нож-то должен быть в машине).

И по внезапному же стечению обстоятельств, я был записан на сервис поменять тормозные диски и колодки. И те и те были живы и до их износа было далеко, но в процессе “раскатывания” Дрыня я сделал так, что один из дисков повело и теперь при плавном торможении на небольшой скорости торможение машины происходило рывками. Сам виноват – самому и платить.

Машину на подъемник, пока висит, осматриваем на предмет “а как бы где чего?”.

IMG_0055

Начал течь сальник ступицы на правом заднем колесе. На замену!

Машину на подъемник, колодки и диски долой, все меняем, собираем и уезжаем, не забыв предварительно понажимать на тормоз, что бы колодки прижались. Казалось бы, все?

А фигу. Отъехав буквально на пять километров, при очередном торможении я услышал резко усиливающийся прерывистый и скрежещущий звук. Вот реально, была тишина (окна были открыты) и вдруг уши закладывает. Пока я анализировал звук, справа показался дымок, который набирал силу и хорошо так дымил. Первая мысль “горю, надо телефон взять, что бы видео как у Тулупова получилось!”. А вторая “вот перед соседями по дороге неудобно – Можайка в сторону центра и так забита, а тут я загоревшись, пару полос дополнительно перекрою …”. Хорошо, что и так был в правой полосе, врубил аварийку, сполз на повороте и побежал за огнетушителем в багажник. Пока бежал, пришла другая мысль “а чего это я бегу? Надо быть солидным, да и Дрынь застрахован сверху донизу ..”. В общем, к месту дыма я подошел уже не как вспугнутый воробей, а как “гордый орель”.

А Дрынь не хотел гореть. Пока я подходил, дымок стал жиже и потом вообще перестал. “Огня без дыма не бывает”, поэтому я поставил огнетушитель и стал искать, чего загорелось. Жар чувствую … и все. Жар идет из колесной арки. “Ага, криворукий сервисмен чего-то не так сделали и тормоза клинануло! Хотя чего он мог не так сделать, если я рядом стоял и смотрел …”

В общем постоял, подождал, пока жар спадет, полазил … и ничего не нашел. Колодки, как им и положено, разведены, нажимаешь педаль тормоза (пятилитровой бутылью с водой) – сводятся. Чем-то сгоревшим воняет – но чем не поймешь, да и дорога рядом. Звоню в сервис, обрисовываю ситуацию. В ответ “ну давай потихоньку назад, если чего-звони”. Ну потихоньку, так потихоньку. Врубаю аварийку и по обочине попилил. А пилить далеко, ибо все развороты я уже проехал.

Припилил в сервис, скинули колесо, стали смотреть. Ну все на месте, ничего не клинит и так далее. Крутили колеса, нажимали педали, пока один из глазастых не обратил внимание.

Вот видео.

http://youtu.be/zSfbrPLseLQ

Обратите внимание на зазор между суппортом и диском. Он и так небольшой, а тут еще и плавает. Сняли …

IMG_0061

А вот и канавки, которые диск проточил …

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

Снятый диск на токарном станке обточили (биение было порядка 2х миллиметров) и собрали все назад. При сборке более опытный обратил внимание, что нам подсунули левые колодки.

Коробочка правильная

IMG_0059

А вот колодки – левые

IMG_0062

Слева – правильные, справа – неправильные. Когда держишь в руках разница ощутима. В общем, теперь у меня “пачти как бремба”, только синие. Покатались, потормозили “в пол”. Ничего. Значит, проблему решили … Кто бы мог подумать, что у УАЗа такие маленькие допуски в тормозах 🙂

А салонный фильтр я так и не поменял. Просто не смог понять как … Лазил “каком кверху”, фотографировал …

Отчетный пост про уазик.

Вот уже прошло полгода (ну или пройдет), как я кручу баранку. Что имеем на данный момент?

Из него ничего не течет. Совсем.

a1

Это я заехал на только-только выпавший снег и оставил на ночь. Будучи бывшим ведроводом, знаю поговорку про “если сухо, значит все уже вытекло” и регулярно сую нос в разные дырки и отверстия. Есть жидкости. И крышка омывайки всё никак не лопнет …

Расход горючего “по москве” устаканился в районе 15 литров на сотню. Я практичеки уже до рубля угадываю, сколько будет на счетчике колонки. Опять ничего нового.

Опять же, я залез с рулеткой под машину. На 245/75 просвет под передним редуктором составляет 21,5см. Я довольный. Но все равно посматриваю в сторону 235/85 …

И наконец, я собрал всю свою волю в кулак (а то лень-матушка …) и решил наконец-то избавиться от скрипа (это скрип? да руль вибрирует при повороте) в руле. Как полагается, предварительно прочитав в интернете все, что смог найти.

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

Смотрим на руль:

a2

Видите “нашорканную” полоску? Это нашоркалось кромкой крышки

a3

Некоторые (не будем показывать пальцами) просто смазывают либо руль, либо эту кромку какой-нибудь силиконовой смазкой и делают вид, что все в порядке. Во что превратится руль и как быстро оно снова заскрипит, набрав пыли, решайте сами.

Я решил просто подточить кромку. Напильника у меня нет, поэтому на его замену вышел Dremel.

a4

Шикарная крутилка на аккумуляторе. При желании выдает 30 тыщ оборотов … Железяки режет только искры летят! Кхм. В общем, надел “наждачный” круг и просто снял с кромки пару миллиметров пластмассы.

Примеряю …

a5

Даже при сильном нажатии остается зазор, не говоря уже о обычном состоянии. Стоит ли говорить, что скрип точно так же исчез? Мелочь, а приятно.

И наконец, сменил дворники. Решил побаловать нас (я и Дрынь) любимых и взял крутые, навороченные …

a6

В общем, я теперь гламурен немерянно. И зона очистки у них чуть-чуть побольше родных. Опять же радостно. А тем, кто тыкал в меня пальцем, хихикая что я дворники чуть не разломал, вот вам картинка про способы крепления дворников. Считайте сами, сколько вариантов:

a7

Диагностика всего интересного в машине. Часть 2.

… или железно-программная. Руки чешутся, а глаза боятся! Развлекаемся!

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

20140227_101802

Самый первый вопрос: какие железки брать? Конечно, собирать такой же арсенал как у меня, смысла особого нет. Прежде всего необходимо определиться, с помощью чего мы будем пытаться выдавить секреты из машины. Если это ноутбук или стационарный компьютер, то наиболее разумным будет покупка usb-адаптера и возможно удлинителя к нему. Если это смартфон или планшет на базе android, то необходимо будет приобрести bluetooth или wifi версию адаптера. А если у вас есть только iPhone или iPad, то вам подойдет только wifi версия адаптера, ибо apple решила, что bluetooth только для гарнитур и точка. Опять же, никто не запрещает с помощью ноутбука цепляться через bluetooth или помучившись, подключить usb версию к планшету с помощью OTG кабеля.

На рынке куча адаптеров, но 99% из них построены на базе микросхемы ELM327. Вот и смотрите на наличие этих буковок или фразы OBD-2. Маленький совет: не гонитесь за крутизной адаптера или его более новой версией. Лишние лампочки абсолютно никак не помогут вам, а более новая версия обычно означает больше китайского барахла внутри. Например, ELM327 v.1.5 не существует в природе. И если вы видите такую надпись (как у меня на фото), то это 100% означает, что внутри китайско-индусская эмуляция чипа на каком-нибудь дешевом pic’е. Но даже если вы купили именно его, то особо волноваться не надо: основные функции он выполнит.

Но прежде чем покупать что-то, сходите в интернет, поищите программы именно к вашим машинам. Скажем, наши для VAGовских делают Вася-Диагност и продают вместе с адаптером. Есть такое же для тойот, лексусов и прочих ниссанов. Поверьте, специализированные штуки гораздо удобнее общедоступных. У меня же патриот, поэтому буду использовать то, что есть у всех и общедоступно. Опять же, типа вызов 🙂

Итак, адаптер купили, ноутбук/смартфон зарядили, денег на симку положили, что бы был интернет и идем к машине. Открываем её и начинаем осматривать околорулевое пространство на предмет разъема (мы же инструкции никогда не читаем, да и не всегда там это написано). У машин оснащенных OBD2, это разьем обязан быть на расстоянии максимум метра от водителя (так, что бы сидя можно было дотянуться). И этот разъем не всегда на стороне водителя (привет RangeRover!). А найдя, можете смело (но аккуратно, а то будет как у меня) втыкать в него адаптер, естественно предварительно выключив зажигание. Если адаптер более-менее гламурный, то он обязательно зажгет внутри себя какой-нибудь огонек. Не волнуйтесь – просто на диагностическом разъеме есть +12В всегда, а адаптер таким образом сигнализирует вам, что он включился.

В принципе, остался последний шаг: подключить все это к компьютеру/смартфону. Если с USB все понятно, то c другими придется немного повозиться. bluetooth версии адаптеров “святятся” в эфире с говорящими именами типа “CAN-OBDII” или “OBD diag”. Думаю, как включить bluetooth на компьютере и поискать доступные устройства, вам рассказывать не надо. Если надо, то ой (на самом деле мне лень). PIN для этих адаптеров обычно 0000 или 1234 (один раз я видел 5678). WI-FI версии адаптеров поступают аналогично: они создают сеть с таким же говорящим названием и не менее сложным паролем. Компьютер цепляется к ней, как к обычной точке доступа, а дальше как обычно.

Как многие заметили, эти адаптеры никогда не выключаются и доступны всем. Страшного в принципе ничего нет, ибо радиус действия таких адаптеров невелик. Да и ничего плохого с их помощью сделать нельзя. Вроде. Я вам ничего не говорил, а вы ничего не узнаете, особенно из 3й части.

Ладно, хватит пугать, пора перейти к программам.

Сразу вас огорчу. Если программа не специализированна под какую-либо марку машины, то особо мучаться в выборе не надо: они все абсолютно одинаковы по возможностям. Просто кнопочки по разному расположены.

Начнем с компьютеров. Тут все хорошо. К большинству программ есть либо бесплатные, либо демонстрационные версии.

Скажем, ScanMaster. Красивенькая и гламурная с кнопочками.

02

Или ScanXL Professional. Типа суровая штука, для крутых профи.

03

Или наш Вася. Простой, но тоже знает про OBD.
04

Или (о ужас!), один из необходимых инструментов для сисадминов, она же терминалка.

05

Про айфоны не скажу, но для андроидов эталоном считается программа Torque и ее профессиональная версия Torque Pro.

06

В общем, можете смело ставить и тыкаться там во все места. Ничего плохого вы сделать не сможете по определению. Максимум, что вам доступно из “страшного” – это погасить лампочку CheckEngine. Опять же, если вы не используете “заточенную” под марку машины программу – там можно и набедокурить.

А теперь плавно начнем погружаться в пучины удовольствий. Ну или морально готовиться к 3й части моей рассказки.

Давным-давно на автопроизводителей надавили и заставили их все обеспечить соответствие своих машин стандарту OBD. Кроме разъема, этот стандарт описывает, как машина обязана отвечать на запросы сканера. Скажем, именно в этом стандарте описано, что обязательно “по-умолчанию” должен откликаться мозг двигателя. А что бы упростить работу разработчикам сканеров, были определены так называемые OBD pid. Так как этих пидов получилось слишком много и надо было как-то разрулить работу с ними, то ввели еще и OBD режимы:

Режим 01 – это считывание текущих данных из мозга. Именно отсюда программы берут данные о числе оборотов, скорости и прочем.

Режим 02 – это считывание данных, которые были раньше зафиксированы специальной командой. Режим придуман из-за того, что доступных параметров может быть много и адаптер просто не успеет их все прочитать разом. А для некоторых случаев надо знать значение параметров х1-х100, когда значение у1 было таким-то. Вот сканер дожидается нужного значения у1, дает команду зафиксировать все остальные параметры и спокойно их читает.

Режим 03 – считывание текущих кодов неисправностей. Всякие P0300 и прочее программы берут отсюда.

Режим 04 – стирание кодов неисправностей, зафиксированных значений и так далее.

Режим 05 и выше отвечают за работу с катализаторами, бортовыми системами и прочим.

Поэтому любой, кто делает свою диагностическую программу, повторяет одни и теже действия: цепляется к мозгу “по-умолчанию” (а это обязательно двигатель) и спрашивает в режиме 01, что тот умеет рассказывать. Затем расшифровывает полученные значения и начинает диагностировать вовсю. Вот, к примеру, что показывает torque для уазика:

07

И вот для отображения этих 17 параметров максимально гламурно и бьются авторы всех этих программ. Даже на иномарках их число обычно невелико и не превышает 30-40, так что не стоит огорчаться.

Но даже этого скудного набора вполне хватает понять, что с машиной и стоит ли волноваться, когда загорается CheckEngine. Большинству этого хватит с запасом. Но мне – нет.

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

Для начала нам нужна терминалка. Это простая программа, которая просто плюет в порт данные, полученные от клавиатуры и отображает на экране полученное в ответ. В старых версия windows был HyperTerminal, в линуксе есть minicom, я же буду делать скриншоты с помощью PuTTY. Для ленивых есть встроенная терминалка в ScanMaster, но она у меня регулярно падала. Как подключить терминалку к адаптеру, какие параметры выбрать, я специально не буду писать, хотя лично я их брал с логов ScanMaster. Я даже скриншот вставил. В общем, все как обычно, делаем вид, что это очень круто, страшно и доступно только избранным (шепотом: на самом деле я просто не могу знать, как и к какому “порту” компьютера подцепится ваш адаптер. Но тс-с-с!).

Подцепившись, первым делом проверим, к чему же мы прицепились:

>ati
ELM327 v1.5

Проверим напряжение в бортовой сети

>atrv
13.2V

Узнаем, по какому протоколу мы подключились

>atdp
AUTO, ISO 15765-4 (CAN 11/500)

Почешем в затылке и пойдем читать описание команд ELM327 по адресу http://elmelectronics.com/DSheets/ELM327DS.pdf , попутно пытая гугл на предмет “а как?”

P.S. Наиболее нетерпеливые могут потащится, введя последовательно команды ath1, ats1, atal и atma (получая после каждой OK) на машине с заведенным двигателем. Останавливается извержение любой клавишей.

Диагностика всего интересного в машине. Часть 1.

… или теоретическая. Ибо как завещали умные люди: “метод тыка хорошо, но пропустишь много интересного”.

Итак, как мы можем узнать, что происходит с машиной?

Способ первый, он же в большинстве случаев единственный: приборная панель. Скорость, обороты двигателя, сколько бензина в баке и немного всяких непонятных значков. Если загорелась лампочка “джекичан”, то ругаемся и пытаемся включением-выключением зажигания погасить ее. Если не удается, то едем в сервис к суровым дядькам, которым либо платим денег, либо доказываем, что она сломалась сама, а мы не причем и почините по гарантии.

Есть подспособ, применяемый в гламурных иномарках: там есть отдельный дисплейчик бортового компьютера, который рассказывает о погоде за окном и количестве оставшихся километров на литр топлива. И если что случается, то с помощью некоторых действия можно увидеть что-нибудь типа “Gearbox fault” или “Oil level low”. Эту надпись можно продиктовать мастеру в сервисе даже по телефону и получить предварительный диагноз. Или даже рассказ, как починить.

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

Эстетствующим нищебродам, которым не хватило денег на иномарку с бортовым компьютером или которым не нравятся существующие компьютеры, рынок предлагает другой вариант: включение в диагностический разъем адаптера и просмотр примерно тех же параметров на экране мобильника, планшета или ноутбука. Внешне ничего нового в машине, а попытаться узнать причину джекичана можно. Спрос породил предложение: есть адаптеры с bluetooth, wifi и usb. Короче на любой вкус и кошелек. И пофиг, что они сделаны на одном и том же чипе. Минус: необходимо хоть чуть-чуть поизучать специальные программы и помучаться, что бы любимый айфончик понял, что от него хотят.

Отдельной стайкой стоят владельцы экзотических или старых машин. Там либо вовсе нет диагностических разъемов, либо они нетрадиционных форм и размеров. Но с этой группой я знаком очень слабо, поэтому дальше касаться не буду.

И наконец, большие и страшные дядьки в сервисах с компьютерами. Они отработанным движением втыкают кабель от компьютера в потроха машины, с умным видом тыкают пальцем по кнопкам и непререкаемым тоном выносят вердикт. Но в 99% случаев они способны только озвучить написанное на экране компьютера или с озабоченным видом произнести “что-то мне не нравится этот параметр, надо поменять ХУЗ”. Оставшийся процент я отношу к настоящим диагностам, которые на самом деле понимают, почему компьютер может показывать то или иное и отвечают за свои слова.

Где-то еще рядом обитают чиповщики, прошивальщики и тюнингаторы. Те, которые заставляют мозги машины работать не так, как их запрограммировали на заводе. Их сама работа заставляет чуть аккуратней относиться к показываемому на экране компьютера, ибо если он спалит мозги машине, то он ставит новые за свои деньги. Но как и везде, есть и тупые обезьяны, и понимающие товарищи. Различить их очень сложно, ибо слишком много мифов вокруг этой области, которые все всеми силами поддерживают.

В какую категорию себя отнести, решайте сами. Я постараюсь описать все с точки зрения человека, который болтается где-то посредине тюнингаторов и диагностов. То есть я понимаю, что “электрика – это наука о контактах” и “компьютер – это просто”, но поддержать разговор про цикловое наполнения цилиндров не смогу. Учитывайте, если что.

Итак, воткнувшись в любую современную машину, мы можем получить аж два типа соединения: напрямую с мозгом/вебастой/коробкой/ещечем и широковещательное сразу всех со всеми. Давайте посмотрим еще раз на типовую картинку OBD-2 разъема.

obdii_port1070929671

Те, что помечены CAN и Bus – широковещательные. А остальные – прямые, direct и так далее.

Чем они отличаются? В широковещательных каналах одновременно присутствует множество устройств, которые по каким-то правилам обмениваются данными. В прямых только два: приемник и передатчик. В случае появления третьего весь обмен данными стопорится намертво.

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

RH00GG0048-1

Но почему-то у некоторых они не работают. Матерые уазоводы еще вспомнят те времена, когда у уазика было два обд разъема: под капотом и в салоне. И при попытке подключения адаптера при работающем бортовом компьютере либо не работало все, либо работало что-то одно. Почему? Давайте глянем на схему первого попавшегося, ибо они все равно все по одной схеме сделаны.

OBD2splitter_145802_pinout

Видите проводки, которые перекрещиваются? Это витая пара, она же twisted pair на инглише. Это именно широковещательные каналы. Остальные, которые напрямую соединены – прямые.

В итоге если мы берем два адаптера, которые хотят пообщаться напрямую с мозгом машины и включаем в этот разъем, то получаем фигу. Мозг ожидает разговора с одним адаптером, а ему подсовывают два. Он просто не знает, кому отвечать. И если адаптеры честные, то они оба затыкаются. А если нет, то кто кого переорет. Но в общем случае ничего хорошего не получится.

Зачем же нужны такие удлинители-разветвители? Взгляните еще раз на обозначение выводов разъема. Видите контакты, которые помечены “Vendor Option” (оно же типа зарезервировано для производителя)? Не скажу за все машины, но LandRover выводит (выводил точно, сейчас не знаю) на них выводы с мозгов вебасты и коробки. И в результате к одному разъему можно подключить обычный адаптер, а к другому – специализированный. Они друг другу не мешают, все счастливы и довольны. Или к обоим подключить адаптеры, которые работают только по CAN шине и снимать с обоих всякие данные. В общем, случаи применения довольно специфические и нужны редко кому. Но знать о такой возможности надо.

Теперь что можно воткнуть в этот разъем? Вы не поверите, но все, что можно вставить в этом разъем – тупые преобразователи. Тупые от слова “ничего сами делать не умеют”. Все, что они умеют это отдать данные, полученные от машины, в более-менее понятном виде в компьютер. Ну вернуть данные обратно при необходимости.

Что может купить простой автомобилист? Это всякие адаптеры, сделанные на основе чипа ELM327 и так называемые K/L-line (Написаний много, но все начинаются на букву K и имеют в названии буквы про line) адаптеры.

Принцип работы ELM-327 простой. Он понимает всякие протоколы, по которым машина умеет общаться и предоставляет простой и текстовый интерфейс для программок. В итоге производителю адаптера достаточно приделать микросхемку, отвечающую за bluetooth, com или wifi и готов адаптер на продажу. Программисту достаточно взять на сайте производителя чипа документацию и вуаля, “диагностический” софт готов. Я дальше расскажу, как можно превратить любой компьютер или смартфон с “терминалкой” в диагностический компьютер. Минус тут один, но существенный. Производитель ELM327 не может знать всяких тонкостей, используемых производителями, поэтому ориентируется на стандарты. А довольный производитель (привет LandRover и BMW) добавит какую-нибудь опцию и все, для доступа нужен специальный адаптер за 100500 денег.

К-лайн адаптер работает еще проще. Он просто преобразует напряжения сигналов от машины в удобоваримые для компьютера. Всё, больше он ничего не делает. Из-за тотального исчезновения com портов (это такие же разъемы как для монитора, только с поменяной местами вилкой и розеткой) с компьютеров, в схему обычно добавляют преобразователь com-usb или com-wifi. Повторюсь, вся, абсолютно вся логика общения с машиной делается компьютером. В результате стоит сменить программу и один и тот же набор железа будет способен работать с машиной другого производителя.

Есть еще редко встречающиеся can-адаптеры в “чистом виде”, но их я видел только в виде наборов для увлекающихся электронщиков (в гугле наберите arduino can bus adapter) или в составе “профессиональных” кабелей.

Чем же отличаются адаптеры, используемые профессионалами от тех, что может купить за 10 баксов любой желающий? Во-первых, банальной механической прочностью и влагозащитой. Ведь большинство народа работает в условиях, которые далеки от стерильных. Во-вторых, большей электрической защитой. Они не боятся статики, переплюсовок, коротких замыканий и прочих ужасов современной электроники. И наконец, во многие из них ставят маленькие, специализированные микрокомпьютеры, которые занимаются только тем, что общаются с мозгами, выдерживая всякие параметры очень точно. Ведь как с обычным компьютером? Начнем перепрошивку мозгов, а винда захочет жестким диском пошуршать или окошко обновить. А буфер у компьютерных портов маленький, обычно 16 байт всего. Р-р-а-з и кончается. А мозги в режиме перепрошивки тупые, таких приколов не понимают. Вот и получаются кирпичики от 7-8 тысяч рублей ценой. Нет, и их можно вернуть к жизни, но не со знаниями обычных гаражных мастеров. Но если глядеть сверху, то “их” адаптеры от “наших” не отличаются и 2х долларовым “ка-лайном” можно успешно прошить вазовские мозги.

Осталось немного рассказать про протоколы и можно переходить к программной части. Протокол – это просто набор правил, которые должны соблюдать все стороны. Туда входит все, начиная от уровней напряжений в проводах и заканчивая описанием того, как будут передаваться всякие значения и команды. Лично я считаю, что туда лезть совершенно смысла нет, ибо там епархия людей с паяльниками и осциллографами. В общем, там делать вроде нечего, но знать общие принципы полезно.

Из интересного для нас внутри машины есть только CAN-шина и CAN-протокол. Интересного во всем этом ровно три вещи:

1. На CAN-шине может быть много (а с всякими усилителями еще больше) устройств.
2. Никаких методов подтверждения правильности устройства на CAN шине нет.
3. CAN – широковещательный протокол.

Пойдем с конца. Что же все-таки значит широковещательный? Это значит, что внутри CAN все выглядит примерно так “Я мозги, обороты двигателя 1000. Я абс, левое переднее колесо буксует. Я мозги, температура охлаждающей жидкости 95 градусов. Я коробка, включила 4ю передачу”. Каждый пакетик занимает один и тот же объем в шине (для электронщиков: размер пакета одинаковый. 11, 29 или 64 бита) и летят они по шине от 10 тысяч пакетиков в секунду (250КБит/с) до … в общем до дофига. Поэтому не смотря на такую простоту сообщений, скорости хватает, что бы описать все происходящее в автомобиле, от работы двигателя до мигания поворотников. Правда, такое пока только в гламурных машинах, которые даже чихнуть не могут без компьютеров. В обычных в CAN-шине живут двигатель, коробка и всякие абс с климатами.

Рассмотрим простой пример: я хочу сделать световой индикатор необходимости включения следующей передачи. Ну как в формуле-1, когда двигатель подходит к отсечке, загорается зеленый-желтый-красный. Что делают обычно? Цепляются к форсункам, датчикам, разбирают приборку и занимаются прочими извращениями. Я же тупо возьму микросхему-адаптер для CAN, запрограммирую ее “только слушай, фильтруй мне все сообщения о оборотах двигателя” и выведу ее вывод на другую микросхему, которая будет мигать светодиодиками. Всё. Полученная схема будет работоспособна с абсолютно любым автомобилем, выпущенным после 2002 (или 2004 – не помню) года. Удобно? Не то слово!

Теперь про никакого подтверждения правильности устройств в CAN шине. Это значит что любое устройство которое работает с шиной, считает что все данные, поступающие по ней – правильные. То есть защиты “от дурака” нет (ну или почти нет). Именно эту дырку используют современные “моталки пробега”. Их просто вставляют в OBD-2 разъем и они начинают орать в шину “я коробка, скорость машины 4000км/ч”. Не работает 4000км/ч? Будет орать про 200км/ч: пара нажатий на кнопку. И всё: кому положено считать скорость и пробег (от спидометра на приборке до “секретных” хранилищ в мозгах) начинают “мотать”. А у машины всего-лишь включено зажигание …

И наконец, про много устройств на шине. Тут думаю все понятно: сколько повесим, столько и будет. Пожелаем, что бы у нас было 20 тахометров – будет. “Кричащему” на шине абсолютно все равно, сколько его услышат. Ему главное проорать.

Ну, вот кажется про теорию всё. Теперь можно переходить к играм с машиной. Я пойду писать, а вы вопросы по теорию задавайте.

Дырдочка!

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

20140220_090739

Интересно, не она ли является причиной, что у некоторых со временем начинает течь на левую ногу? Особенно, если что-нибудь с стеклом лобовым делали?

Изучаем аэродинамику Дрыня

Думаю, никого не удивлю, если скажу, что патриот на скоростях выше 80 км/ч свистит. И этот свист прекращается, если чуть-чуть рукой отжать уплотнитель около зеркала. И даже эмпирическим методом нашли лечение: воткнуть второй уплотнитель. Можно от 8ки, можно строительный для окон, можно еще какой-то …

Но это не наш метод. Прежде чем бороться, надо понять, с чем бороться. Для изучения поля битвы я в самый разгар “Чистой Москвы” вымыл (с пенкой!) Дрыня и поехал кататься. Результаты представляю вашему вниманию.

1

Как видно, поток воздуха упирается в стык крыло-дверь-стойка и выдавливает наружу всё.

2

Но то, что смогло пролезть внутрь, расходится более-менее равномерно

3

Вот в этом месте видно резкое падение давления набегающего воздуха, где грязь практически ничего не тревожит.

4

И затем чем ближе к голове, тем сильнее происходит разгон. Обратите внимание на правую часть проёма: “)))-образные” следы это подтверждают.

Поначалу я грешил на зеркала (дескать поток их обходит и творит такое), но veter1939 запостил прекрасную фотографию

5_veter1939

Обратите внимание на узкий створ потока и его положение. Ведь казалось бы, ему ничего не должно мешать быть шире или как минимум ниже …

Отсюда вывод: зеркала не виноваты.

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

Ставим мозги на место

Как-то раз я заметил, что когда я хлопаю капотом при заведенном двигателе, тот на момент глохнет, а потом снова работает как ни в чем не бывало. Я тренировался хлопать, что бы потом показать на сервисе – и у меня даже получалось повторять это на бис. Но потом пару раз ловил на колдолобинах зажигание лампочки давления масла и иммобилайзера. Ну и апогеем стала зажигавшаяся на секунду лампа CheckEngine при неаккуратном переходе на пониженную передачу.

При этом в остальные моменты все работает как часы.

В принципе, диагноз ясен: где-то отходит один контакт от другого. И от вибрации то есть контакт, то нету. И вроде не напрягает, но как-то некузяво …

Наконец индеец зоркий глаз при очередном залитии омывайки обратил свой взор на следующую картину.

20140206_171932

Почему так получилось, я не знаю. Нет, обвинять сборщиков уаза я не буду: на резьбе, как и положено, был нанесен фиксатор. Фотографий этого узла в самом начале я тоже не делал.

Затянул, теперь буду наблюдать. Косвенным признаком, что проблема была именно тут, стала полная индифферентность Дрыня к хлопанью капотом.

ОБДушевление Дрыня

Читающие меня помнят, что как-то у меня был черный день, когда все шло не так и я сломал себе OBD2 разъем. Ну как сломал … Один контакт в разъеме загнулся и отказывался пропускать в себя адаптер. А адаптер, будучи впихнутым насильно, утверждал, что у него нет связи с мозгами машины.

Потом я купил в интернет-магазине нормальный разъем для OBD2 … и наступил новый год. В общем, сегодня я решил сделать так, что бы у меня появилась-таки возможность пихать в Дрыня всякие диагностические приблуды.

Открываем крышку под рулем и видим картину маслом. Не забудьте скинуть клемму с аккумулятора!

20140214_091621

Откручиваем четыре болта и начинаем разматывать куски черной изоленты, изредка отстегивая стяжки. Абсолютно ничего этакого, только дико неудобно.

Выщелкиваем разъем и записываем распиновку проводов, согласуясь с найденной в сети распиновке разъема OBD2
obdii_port1070929671

Красный (16) – +12В
Белый (4) – Земля
Желто-зеленый (7) – K-Line
Серый (6) – CAN-High
Бело-коричневый (14) – CAN-Low

Смотрим на разъем, который я выкусил из машины.

20140214_130432

Смотрим на картинку распиновки OBD2 из интернета. Сравниваем. Еще раз смотрим. Еще раз сравниваем. Понимаем, почему адаптер не видел мозги Дрыня.

Внимание! Некоторые адаптеры не будут видеть ECU патриотов, при этом прекрасно работая с другими машинами. Причина: отсутствие что-либо на 5й ножке разъема, он же Signal Ground или “Сигнальная Земля”. Просто некоторые считают, что 5я и 6я ножка это одно и то же, а некоторые – нет.

Как эту проблему решать с обычными патриотами, я не знаю. Может, поможет переставка ламельки с 6й на 5ю … Мне проще: я впаивал новый разъем и просто объеденил 5ю ножку с 6й.

Пропускаю минут 15 мучений с засовыванием пучка проводов на место и прикручивание блока предохранителей на место. Подумав, я решил забить на правый верхний болт и изменил метод подключения земли (на фотографии она на правом нижнем болту): засунул под блок предохранителей для лучшего контакта.

Результат: при включении зажигания никакого дыма из-под руля и весь зоопарк адаптеров работает.

Что мне и требовалось. Ждите: как созрею, напишу про диагностику всего, чего есть в машине 🙂

Второй подход к лопухам

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

Для справки, сначала я сделал так:

20131215_153616

Основная проблема оказалась в том, что пластмассовый поводок к крышке на морозе тупо выламывал магнитики. Я поприкидывал условия и понял, что необходимо вернуться к конструкции, опробованной множеством патриотоводов.

Итак, я взял неодимовый магнит 10х10, болт М4х16 и 3 гайки. Выдрал резиновый демфер вместе с этой пластмассовой фигней и вкрутил болт. А магнит просто на крышку прилепил.

20140212_182848

20140212_182905

Теперь осталось подождать, когда и эта конструкция развалится

Ален ноби, ностра алис!

… Что означает — ежели один человек построил, другой завсегда разобрать может.

“У патриота глючная раздатка!”, “вон, в обзоре писали, что даже с помощью разработчиков с завода не могли включить пониженную!”. Ну и так далее и тому подобное. Любой форум, на котором хоть каким-либо образом обсуждается “патриот” с “электрораздаткой”, полон подобных высказываний. В “говорильных” разделах владельцы предидущих поколений глумятся над проблемами с раздаткой, а в технических народ обсуждает, как от этих проблем избавиться. Скажу честно, я долго ходил кругами вокруг собственной раздатки, пока наконец не решился докопаться до технически приемлемого решения. Тем более, что и у меня все это начало глючить.

Итак, если суммировать, к новой раздатке есть всего две проблемы: постоянное включение 4H в самый неподходящий момент и идиотский алгоритм “поверни ручку, подожди 3 секунды”. Вот сейчас я и расскажу вам, как их решить, раз и навсегда. А не так, как сделал завод в “новой версии”.

Начнем с снятия “модуля управления блоком управления раздаточной коробки” (так эту штуку назвали в одном из магазинов) или попросту говоря, “крутилки”. Ибо все (подчеркиваю: все) проблемы таятся именно в ней.

Зная как, для снятия вам не понадобится никаких дополнительных инструментов. Крутилка снимается руками. Но это зная как … В общем, на первый раз понадобиться что-то типа ножика.

Идем в патриот и смотрим в последний раз на девственную крутилку.

01

Аккуратно подсовываем нож и отщелкиваем вверх декоративную крышку

02

Повредить там что-то очень сложно, поэтому буквально через пару движений ножом вы должны увидеть вот такую картину.

03

Теперь можно либо ножом дальше повыщелкивать крепления корпуса крутилки к тоннелю, либо просто залезть рукой через снятый ковш подлокотника и отщелкнуть уже пальцами изнутри. Места там очень много. В итоге вы должны обнаружить подходящие снизу два кабеля.

04

ВНИМАНИЕ! Дальше все работы производить при выключенном зажигании! Сломать ничего не сломаете, но пару ошибок в мозги посадите.

Отсоединяем кабеля и разглядываем их. Лично для меня стало интересным количество неподключенных выводов и конфигурация разъемов.

05

Я потом конечно промаркирую (если не забуду), но на всякий случай: я в дальнейшем буду ссылаться на маркировку контактов, выполненную по схеме “от ключа по часовой стрелке”. В общем, это фотография будет этаким эталоном.

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

06

Я как компьютерщик сразу сделал стойку, но эмоции решил оставить на потом. Продолжаем разбирать. Откручиваем три шурупа и вынимаем плату.

07

Это вид снизу. Основное внимание вы должны уделить фиксаторам ручки. Это такие белые и толстые усики по бокам от крутилки. Они держатся только за счет вазелина/масла. Не протеряйте! Отщелкиваем ручку крутилки с помощью ножа/плоской отвертки.

08

Классический вид “крутилка потасканная”. А вот виновник потаскивания:

09

В принципе все понятно: подпружиненные шляпки тупо процарапали дорожку. На данном этапе все останавливаются. Причина понятна. Как лечить – тоже.

На всякий случай, напишу тут два опробованных рецепта:
– Первый, он же имени blueskypilot и примененный заводом. Пропаиваем процарапанные дорожки, смазываем всё техническим вазелином или другой подходящей смазкой и собираем назад. Хватит надолго. Но потом все вернется назад.
– Второй, не помню чьего имени. Поверх дорожек напаиваем герконы, в крутилку вместо контактов вклеиваем магнит. Хватит навечно, но идиотской проблемы с 3мя секундами не решает.

Собирать назад тоже просто. Берем эту белую штуку с усиками и аккуратно вставляем на место. Вернее, пытаемся, ибо белые усики не залезут. Но в положении 4H к ним очень легко подобраться чем-нибудь крепким и тонким (Я использовал пилочку для ногтей жены) и засунуть на место. Затем сверху плату, её крепим шурупами. Потом защелкиваем ручку крутилки. Проверяем и закрываем крутилку. Подключаем кабеля и защелкиваем крутилку в тоннель.

Но лично мне этого мало. У меня есть хороший мультиметр, есть огромные знания по реверс-инжинирингу всякого барахла … Продолжаю.

ВНИМАНИЕ! Не повторяйте сделанного мной, если не понимаете, что я делаю. Минимум, на что вы попадете – это предохранитель прикуривателя (крутилка на нем сидит), максимум – на сам блок.

Для примера: не лазьте мультиметром в работающую крутилку.

10

Пропускаю два вечера измерений, размышлений и копаний в интернете. Вот вам готовый результат.

11

1 – Реле переключения выходов ДУТ
2 – MOSFET транзистор 5002N, отвечающий за 2L
3 – Реле включения подогрева пассажирского сиденья
4 – Тактовая кнопка переключения показометра ДУТ
5 – Разьем 1. Маркировка ножек

1 – Вход ДУТ левого бака
2 – Вход ДУТ правого бака
3 – Минус/земля крутилки
4 – Выход 2H крутилки
5 – Выход 4H крутилки. Бесполезный, ибо на ответном разъеме нет ничего.
6 – Выход 2L крутилки (на землю)/контроль наличия крутилки (4,58В)
7 – Выход на показометр уровня горючего (примерно 2,7В – четверть бака, 13,11 – полный)
8-12 – не подключены

6 – Микроконтроллер STM8S003F3
7 – Тактовая кнопка включения подогрева пассажирского сиденья
8 – Тактовая кнопка включения подогрева водительского сиденья
9 – Разъем 2. Маркировка ножек

1 – Выход на реле включения подогрева левого сиденья
2 – Вход “+” подсветки кнопок с МУС. (Примерно 3В – минимальная яркость, уровень бортовой сети – максимальная).
3 – Минус/земля
4-6 – не подключен
7 – +12
8 – Выход на реле включения подогрева правого пассажирского сиденья.

10 – Реле включения подогрева водительского сиденья
11 – Разъем 3. Он же отладочный/программируемый разъем микроконтроллера

Сразу вырисовывается решение в лоб от электронщика: зацепиться отладчиком/программатором за разъем 3 и посмотреть, что происходит, а при желании и подправить. Но какая печаль, лично мне отладчиков не завезли, а в магазин идти лень. Да и обещал же железное решение, для суровых уазоводов.

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

12

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

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

Итак, вот вы повернули зажигание.

Инициализация

0. Ждем примерно секунду.
1. Контакт 6 сидит на земле? Если нет, тормозим и зажигаем 4WD check.
2. На контакте 6 есть напряжение примерно 4,5В (скорее всего, больше 2х вольт, но не уверен)? Если нет, тормозим и зажигаем 4WD check.

Работа

1. 4й контакт сидит на земле? Тогда режим 2H
2. 4й контакт никуда не подключен? Тогда режим 4H
3. 4й контакт никуда не подключен? Контакт 6 на земле? Нажали педаль сцепления? Тогда режим 4L

Внимание! Что будет, когда 4й и 6й контакт одновременно на земле – не проверял.

Что делают два резистора на 3кОм и 1,5кОм (хинт: его можно собрать из 2х на 3кОм) около выключателя 4L? Это так называемый делитель напряжения на резисторах. Нужен для получения “логической еденицы” на 6м контакте. Выключатель 4L нужен для шунтирования R2 и соответственно сажания 6й ножки на землю. Или логического нуля. Еще раз, там 5В и 0В, а не 12В!

Резюмирую:
– Что бы малой кровью избавиться от “проблемы 4Н”, хватит поставить блокирующий выключатель на ножки 3 и 4 первого разъема. “Замкнут” – 2H. “Разомкнут” – как на крутилке. Можно прямо из разъема в жгуте достать соответствующие провода и прицепить к тумблеру. Включен – 2H. Разомкнут – 4H.
– Схему для лечения “3 секунды для включения 4L” и “включение 4H после выключения зажигания” я тоже положил. Но если кто хочет повторить, то вот чуть-чуть модернизированная. Нужен выключатель на 3 положения типа on-off-on c 2мя контактными группами.

13

В положении 2H должна быть замкнута верхняя контактная группа, в положении 4H обе разомкнуты, а для положения 4L замкнута только нижняя. Подобные выключатели продаются в любом магазине для радиолюбителей.

Как обычно, у меня все работает. Но надеюсь, что у вас тоже все заработает. Удачи!

Расход горючего …

Видимо, это уже ничем не побороть. Один из первых вопросов в обсуждении “сколько жрет?”. Но тут самому было интересно: в Москве были морозы, я грел машину по 10 минут, если не больше. Плюс я специально ездил на пониженных передачах и крутил двигатель. Дескать, вдруг понадобится побуксовать, а я не готов. Ну и 100% город, короткие пробеги дом-работа в комплекте.

Результат “по заправкам” показал 18 литров. Д2 в таких же условиях показывал аппетит 30-31 литр, да еще и 95го.

Что бы не быть совсем постом ни о чем, даю картинку, рассказывающую, чем я сейчас занимаюсь, тщательно обдумывая различные варианты и возможности …

20140131_092552

Планы на будущее …

Как приехал в Москву, так и заболел. Сопли, кашель и абсолютная невозможность как-либо напрягать мозги. Голова попросту забыла само понятие “подумать”. Но как известно, что если лечить насморк, то он проходит за семь дней, а если не лечить – то за неделю. Срок болезни уже практически весь вышел и поэтому кое-какие попытки подумать удается предпринять.

Самая животрепещущая для меня тема это увеличение дальнобойности Дрыня. Когда я на предидущих машинах ездил к теще в липецкую область из москвы (примерно 500км), то доезжал с остатком в баке в районе 1/4-1/5 от объема. Тут … ну если честно, то еще ни разу у меня не возникло ощущение, что я вообще доеду без промежуточной заправки. Нет, если считать по чекам с заправки, то я доеду и с запасом. Но вся эта схема с двумя баками пока не въелась в мою кровь и плоть, поэтому я перестраховываюсь, доливая литров по 30 где-нибудь в середине пути.

А с другой стороны мысль о том, что машина должна иметь автономность в районе 1000км, не покидает меня. Как этого можно добиться? Будем считать, что машина будет и потом потреблять 12 литров 92го на 100 километров (или 12*30=360 рублей).

Во-первых, поставить увеличенные баки. По разным оценкам, каждый бак будет вмещать от 65 до 75 литров горючки. Итого – от 130 до 150 литров. Стоимость 50-60 тысяч рублей. Получаемая дальнобойность – 1100-1200 километров. Стоимость тысячи километров такая же, как и у оригинального решения – 3600 рублей. Самый основной плюс: никаких изменений в топливной системе и возможность в любой момент вернуться к оригиналу.

Во-вторых, в задний свес поставить еще один бак. В зависимости от лифта, желания сварщиков “облизывать” задний мост и прочих штук, можно получить еще до 120 литров. Стоимость … как договоритесь. Тут дальнобойность поднимается еще выше, до двух тысяч километров.

И наконец, можно сменить бензин на газ. В салон входит 100 литровый баллон, стоимость установки – в районе 25 тысяч рублей. Положим, что при тех же условиях машина будет потреблять 15 литров газа на 100км. В нормальный и исправный 100 литровый баллон зальется 80-85 литров газа. А это примерно 500 километров на газе. Итого дальнобойность будет 500 километров на газе и 600 (72/12) километров на бензине. Стоимость тысячи километров будет 80*15+360*5=3000 рублей. Итого с каждой тыщи километров мы получаем экономию в 600 рублей. А если вовремя находить газовые заправки, то получится 80*15*2=2400. Еще 600 сверху.

Можно баллон поставить вместо левого бака (вроде входит 60 литров). Но при такой установке весь смысл только в небольшом снижении расходов на топливо, дальнобойность практически не увеличивается …

А если и баки увеличенные воткнуть и баллон? Полторы тысячи километров добиться становится легко, но …

Вот опять это но. Начинаю считать плюсы и минусы решения.

Для газа: основной минус в том, что заправляться особо негде. Сайт-мониторилка цен на горючее нашел аж 16 заправок в липецкой области. При этом три из них на трассе М4 и восемь – в самом липецке. С воронежской лучше – всего 76, из них 11 на трассе и 34 в воронеже. Вроде неплохо, да? Но это магистральное направление, сочи и всё такое.

А вот для примера, карелия – всего 9 заправок. А на весь алтай – 34 заправки, из которых 11 в барнауле …

Как-то становится грустно, особенно если вспомнить первоначальное назначение машины: экспедиции. Какой толк в газе, если я буду вынужден “прыгать” от заправки к заправке? Вот для городской машины – да, газ будет очень удобен.

Следующим неудобством газа идет “отнимание” из объема багажника примерно 150 литров или четверти объема. Нет, я когда-то ходил в пешеходные походы и мне хватало 80 литров рюкзака для автономного существования на пару недель … Но сейчас-то я толстый, зажравшийся и ленивый автолюбитель. Мне и 400 литров мало будет.

А если ли у газа для экспедиционника плюсы? Я нашел только один: газ это полностью дублирующая топливная система. То есть остается шанс при пробитии бензобака добраться до цивилизации на газу. (шепотом) ну и если воткнуть редуктор, то можно подключить плитку или обогреватель. Хватит … надолго хватит.

А с другой стороны, много ли шансов пробить увеличенный бак? Их обычно делают из нержавейки 3мм … это надо очень хорошо прицеливаться и что бы что-то остро-твердое было, типа камня. Нет, в трофях каких-нибудь поверю. В экспедициях – нет.

В итоге сейчас мне кажется наиболее приемлемым такой вариант: купить и поставить правый бак увеличенного объема. Во-первых, ценник будет такой же, как и у газа: 25 тысяч рублей.
Во-вторых, исчезает вероятность закуковать где-либо из-за пробития бака. Из чего там сделан родной бак? Из железа толщиной ну максимум 1мм. А тут будет нержавейка, 3мм. Левый пробить не так страшно. И наконец, подрастет дальнобойность до (36+65)/12*100 = 840 километров. Все ближе к тыще, чем родные 600.

Потом либо газ, либо второй увеличенный …

А можете предложить другие варианты?

А теперь серьезно про 3500

20140112_135717 copy

Просто резинка водительского дворника начала “уезжать” из креплений. При этом окно чистится, просто снизу растет полоса нечищенного. Но через некоторое время при каждом проходе дворников раздается такой скрежет, что создает впечатление разламывающегося пополам уазика. Вставить на место — 5 секунд и повторять примерно каждые 100км. Как лечить пока не смотрел.

В остальном ничего крамольного обнаружено не было.

Если придираться и искать, то

— изредка двигатель начинает подколбашивать. Особенно на холостых. Списываю на не идеальное качество горючки: я как пижон, заказывал на заправке “самое крутое 92е” (вроде называется “фора”). Подозреваю, таких выпендрежников в моей деревне … не очень много.

— на заднем левом колесе из-под колпака потёки чего-то темного. Надеюсь на масло, но я ездил по такой чаче, что может и не масло.

— скрип руля начинает доставать. Было заскрипела педаль сцепления, но как-то быстро перестала.

В остальном … полный привод включал только при выезде на дорогу. На Cooper Discoverer M+S машина неплохо идет 80-90 км/ч по 1-2см мокрого снега и так. Пару раз срывало, но при перекусывании жопой лома нога отпускала газ и занос превращался в этакий гламурный дрифт.

Реально больше не к чему придраться.

3500 тысячи на одометре

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

И буквально на последних километрах порадовал меня очередной ужасной поломкой, которая несовместима с самим понятием “езда”. Теперь не знаю, куда бежать: за плоскогубцами с проволокой или в магазин.

Кто догадается, что за поломка, может взять с полки пряник. Но попросить погадать-то можно? 🙂

Для подсказки: это не поломка из серии “у всех патриотов так”.
Для подсказки2: Москва, дождь со снегом, платный участок трассы М-4, скорость 90-100 км/ч