Бортовой компьютер на avr микроконтроллере

Бортовой компьютер для ВАЗ на ATmega8 с цветным дисплеем

Дата публикации: 20 ноября 2012.

Рейтинг:  5 / 5

Питание. Тут всё просто. LM317 формирует стабилизированный ток 20 мА для светодиодов подсветки дисплея. LM7805 стабилизирует напряжение для питания микроконтроллера. Защитный диод 1N6281 рассчитанный на 27 вольт спасет от возможных всплесков напряжения.

При отладке можно использовать +12 вольт с 16-го пина колодки OBD2. А при постоянной работе напряжение на БК должно подаваться при каждом включении зажигания. Т.е. необходимо протянуть провод от замка зажигания к БК.

Ну и сама радиосхема:

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

Как только напряжение пропадет, на выводе появится логическая единица.  Энергии накопленной конденсатором 470 мкФ хватит на то чтобы микроконтроллер успел отправить команду выключения в дисплей.

Диод 1N5818 не даст разряжаться конденсатору в «сеть», а так же защищает от переплюсовки при подключении питания.

Прошивка для микроконтроллера написана в среде CodeVisionAVR 2.05 на языке Cи.

Описание протокола есть в приложенных к статье материалах. Кратко пробежимся по основным моментам. Чтобы начать диагностику, нам надо отправить в ЭБУ запрос startCommunication:

Запрос startCommunication:
81 10 F1 81 03

Ответ:
83 F1 10 C1 6B 8F 3F

В ответе C1 означает, что ЭБУ готов с нами работать (на связи).

После этого мы можем запросить у него параметры, отправив запрос:
82 10 F1 21 01 A5

ЭБУ моей машины отвечает:
80 F1 10 26 61 01 3B 90 41 04 00 00 00 00 47 80 00 00 00 52 52 80 18 00 8E 00 5C 00 00 00 00 00 00 00 00 00 FF FF DD A4 47 02 CE

Расшифровка (пример):61 – Положительный ответ readDataByLocalIdentifier01 – afterSalesServiceRecordLocalIdentifier (что то там….)….11-й байт – Температура охлаждающей жидкости….Формула для расчета: N=E-40 [°C]E – передаваемое значение

N – физическая величина

У меня это значение 47. Берем windows калькулятор. Переводим 47 hex в dec. Получаем 71. Дальше 71-40=31°C. На момент снятия данных машина постояла на улице. До конца не остыла.

И так далее… со всеми остальными параметрами.

Запрос ошибок readDTCByStatus:
84 10 F1 18 00 00 00 9D

ЭБУ моей машины отвечает:
88 F1 10 58 02 04 43 E0 14 26 E0 24

P0443 – всё верно, 2 ошибки у меня сейчас.

P1426

Самое сладкое, сброс ошибок clearDiagnosticInformation:
83 10 f1 14 00 00 98

Запрос значений АЦП:
82 10 F1 21 03 A7

Из АЦП взял напряжение на датчике кислорода и на датчике массового расхода. Хотя необходимость этого пункта под сомнением. Думаю вообще убрать. Всё остальное есть в описании.

Плата разведена на одностороннем фольгированном текстолите. Дисплей приклеен при помощи клея “секунда”. Защитное стекло для дисплея сделал из коробки от компакт диска. На самоклеящейся бумаге распечатал лицевую часть (черную), наклеил на пластик, совместил, приклеил к плате. Чтобы под стекло не набивалась пыль, промазал обычным герметиком.

Доработал напильником посадочное место в ящике для мелочей и просто вставил туда БК. Подключил питание и диагностическую линию. Левая кнопка смена режимов отображения, правая сброс ошибок (в режиме сброса ошибок) и сброс времени разгона на ноль (в режиме замера времени). На плате имеется место для памяти 24LC512. Но она не использовалась (не хватило flash памяти МК на реализацию).

Фьюзы МК выставлены на работу от внешнего кварца.

По себестоимости получилось порядка 450 руб

Вариант №2. ВАЗ 2115. Тачскрин

Далее был изготовлен компьютер под панель ВАЗ 2115. Элементная база остается та же. Только добавляется тачскрин от телефона Sony-Ericsson G900. Цена тачскрина 35 руб. Ну и естественно меняется прошивка. Были небольшие проблемы при калибровке экрана. Хотел сначала ввести алгоритм калибровки по 4-м точкам. Добавить соответствующий пункт в меню.

Но, почитав и посмотрев алгоритмы на англоязычных сайтах (под Андройд и прочее), понял, что это довольно сложно и в моём случае не нужно. Просто записываем значения АЦП по 2-м точкам,  сопоставляем координаты и через уравнение прямой по 2-м точкам находим промежуточные значения нажатия. У меня получилось:
x = 232 – 0.276*ADC
y = 0.25*ADC – 67.

5

Печатная плата претерпела существенные изменения. Теперь используется микроконтроллер ATMega16A.

При помощи ножа, напильника и шпатлевки по пластику тачскрин был вмонтирован в панель, которую потом обтянул карбоновой пленкой.

По началу прикупил стилус, но потом оказалось что проще «тыкать» пальцем в экран. Залапывается он конечно. Но не более чем на телефонах с сенсорным экраном.

Для повторения рекомендую вариант с тачскрином. Его можно использовать как под Калину, так и под Пятнашку. На этом всё.

Источник: https://radioparty.ru/device-avr/452-board-computer-vaz-atmega8

ARCAdaptor

Многие профессионалы-разработчики электроники часто “воротят нос” от семейства микроконтроллеров производства Atmel – фи, мол, эта ваша Атмега — только лампочками поморгать. Однако, это спорное утверждение.

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

В этот раз мы рассмотрим конкретные примеры реализации одноплатных (и не очень) конструкторов на базе микроконтроллеров семейства ATMega. Все они вполне реализуемы в домашних условиях, а некоторые можно приобрести на сайте авторов. Для начала – небольшое отступление про “одноплатники” вообще.

Название говорит само за себя – все компоненты компьютера, необходимые для его базового функционирования размещены на одной плате. Совсем юные читатели сразу подумают о новинках вроде Raspberry Pi, а те, кто уже имеют понятие о мироустройстве — вспомнят РК-86, ZX-Spectrum и БК-0010, например.

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

И вот 21 век сдвинул “окно ностальгии” в нужную позицию и радиолюбители по всему миру не сговариваясь выпустили несколько проектов, которые по характеристиками ну очень напоминают те самые “эр-кашки” и “спектрумы” конца восьмидесятых годов прошлого века. А некоторые — в точности повторяют, но обо всём по порядку.

AVR Chip Basic

Первый персонаж нашего обзора – компьютер AVR Chip Basic, точнее это целое семейство компьютеров, различающееся по степени “навороченности” и наличию той или иной периферии.

Из под пера автора ( Jörg Wolfram ) вышла целая плеяда устройств:

  • AVR-ChipBasic8 на базе ATMega8 или ATMega88 (та же микросхема используется в ARCAdaptor)
  • AVR-ChipBasic на базе ATMega16
  • AVR-ChipBasic32 на базе ATMega32
  • AVR-ChipBasic2 на базе ATMega644

Все они имеют (как минимум) ТВ-выход и общаются с пользователем с помощью языка BASIC. В качестве устройства ввода используется стандартная PS/2 клавиатура.

Как уже говорилось, каждое из устройств обладает разными характеристиками, так например, AVR-ChipBasic8 имеет чёрно-белый видеовыход, может хранить программы на языке BASIC на подключаемой микросхеме EEPROM, ибо память самой микросхемы оставляет лишь 512 байт для хранения исходного текста. 

Тем не менее – имеется и звуковой выход, и даже “свободные ножки”, на которые можно повесить дополнительное оборудование. 

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

Из “фишек” интересное – прошивку можно собрать самостоятельно как под PAL развертку, так и под NTSC.

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

Более того, версии на ATMega16,32 и 644 используют одну и ту же плату, то есть достаточно поставить микросхему в панельку и загрузить нужную прошивку.

Остальные подробности можно почерпнуть на странице автора. К сожалению страничка на немецком языке, но онлайновые переводчики значительно облегчат жизнь.
Кстати, среди его проектов есть и эмулятор компьютера ZX-81 на микроконтроллерах AVR.

FIGnition

Движемся дальше – следующий экспонат – одноплатный компьютер Fignition.

Автор Julian Skidmore создал “одноплатник”, работающий под управлением ФОРТ-машины. Устройство способно управляться с экраном размером 25×24 символов, 16 пользовательскими символами, ну или графикой размером 160×160 точек.

Стоит отметить, что устройство может работать как с PAL-телевизорами, так и с NTSC – зависит от загруженной прошивки микроконтроллера ATMega168.

Особый интерес вызывает способ ввода данных. Обычно с AVR-устройствами часто интегрируют поддержку PS/2 клавиатуры, коих в избытке (пока что). Автор подготовился к вселенской катастрофе и организовал ввод с помощью восьми кнопок… Перебор значений на них организован по образу и подобию набора SMS в кнопочных мобильных телефонах.

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

Сайт проекта

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

PMD-85

Первый в списке – компьютер PMD-85. Это довольно интересное устройство, которое выпускалось с 1985 по 1989 в социалистической Чехословакии. По характеристикам он очень похож на семейство “РК-86”, выпускавшийся в СССР в середине и конце восьмидесятых годов прошлого века – процессор i8080 и небольшой объем памяти.

Подробнее можно почитать в Википедии , ну а пока что рассмотрим аппаратную реализацию на ATMega.

Даже по этой иллюстрации видно – на плате всего лишь 2 микросхемы – непосредственно контроллер ATMega128 и микросхема памяти.

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

А вот видео работы, правда записано с настоящего PMD:

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

Проект был бы весьма интересен отечественным фанатам РК-86, тем более что уже есть реализация на микроконтроллере PIC в проекте Maximite.

AVR-CP/M

Дальше – больше. Если возможна эмуляция i8080, то почему бы не попытаться запустить на АТМеге операционную систему CP/M ?

Это стоит сделать хотя бы ради великого и ужасного ZORK! И ведь запускают.

 В качестве устройства отображения используется serial port.

Для него в плату установлен конвертер Serial->USB, но вполне можно обойтись и без него, точнее – обойтись внешним конвертером.

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

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

UzeBox

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

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

Что “под капотом”:

  • Низкая стоимость. Всего 2 чипа (микроконтроллер и кодер NTSC), более того – второй не обязателен, если есть телевизор с полноценным разъемом SCART.
  • Ядро управляется прерываниями. Нет “тормозов”, никто не отсчитывает такты процессора, генерация аудио и видео происходит в фоне.
  • 256 цветов 4 звуковых канала – 3 wavetable +1 шумовой
  • MIDI-интерфейс
  • Стандартные джойстики от SNES (на 15 долларов на Aliexpress можно приобрести несколько штук).
  • Есть возможность использовать NES (Dendy), но потребуется перекомпиляция игр, хотя это вообще не проблема
  • Поддержка манипулятора “мышь” от SNES
  • Поддержка SD-карточек UART и SPI интерфейсы доступны, также есть некоторое количество свободных “ножек” ATMega
  • Есть эмулятор для разработки игр Загрузчик игр/программ с SD Развитое API для разработки Полностью открытая схемотехника и код

Приставка оказалась настолько удачной, что комплектами для сборки подторговывал магазин Adafruit Industries — признанный лидер в DIY движении.

Сама приставка базируется на микросхеме ATMega644 в DIP-исполнении (об этом чуть подробнее ниже). Этого контроллера вполне хватает для вышеописанных задач, а на выходе можно наблюдать игры примерно такого качества:

Без сомнения – классика не стареет.

Неплохо для микроконтроллера, правда ?

Автор разработки – канадец Alec (Uze) Bourque. Проекту не один год, но сообщество, сложившееся вокруг консоли всё еще полно идей и энтузиазма для дальнейшего движения вперед.

По этой ссылке можно ознакомиться с минимальной версией UzeBox – полностью модульной системой, которая состоит из базовой платы с микроконтроллером и SCART-выходом, а также дополнений – платы энкодера NTSC, платы адаптера SD-карты и платы MIDI-переходника.

Последний, кстати, никогда не был воплощен “в металле” за отсутствием MIDI-оборудования 🙂 Выглядит “домашняя версия” в сборе примерно так:

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

Конечно же, нужно упомянуть о недостатках.

  • Для обеспечения нужной скорости ATMega работает в режиме “overclock” – аж на 28.6 Mhz
  • Для сборки подходят только DIP-версии микросхемы
  • При использовании SMD-версий перестает работать UART, перебои с SD-картой и вообще большой риск “не завестись”. Причина тому – указанный выше “разгон”
  • Чип AD725 (энкодер NTSC) в наших краях редкость и довольно дорого обходится (хотя он по большому счету и не нужен в начальной конфигурации)
  • SNES-джойстики не так распространены и уж тем более “ответные” разъемы для них
  • Нормально работают далеко не все SD-карты (точнее, большинство не работает, хотя подобрать в конце концов можно)

Достоинства консоли, кстати, с лихвой перевешивают описанные недостатки, так что её действительно можно рекомендовать к сборке даже новичкам.

Официальный сайт консоли со всей информацией, исчерпывающей документацией и весьма позитивным форумом здесь.

AVR ZX Spectrum 2.0

Ну и в финале — действительно потрясающий проект нашего соотечественника – Василия Лисицына – полностью функциональный “клон” компьютера ZX-Spectrum!

Спецификации впечатляют:

  • Разрешение экрана: 256 х 192 точки
  • Матрица знакомест экрана: 32 х 24
  • Количество цветов на знакоместо: 2
  • Число цветов экранной области: 8
  • Число цветов бордюра: 8
  • Число градаций яркости для каждого цвета: 2
  • Эквивалентная частота ЦП: 2,333 МГц
  • Порты ввода/вывода: 0xFE, 0x7FFD, 0x7FFD, 0xBFFD
  • Клавиатурный интерфейс: PS/2
  • Число задействованных клавиш: 82
  • Число каналов звукового сопровождения: 4
  • Перечень каналов звукового сопровождения: левый AY8910, правый AY8910, средний AY8910, бипер
  • Видеовыходы: ЧБ выход, RGB выход, отдельный выход синхронизации
  • Поддержка загрузки/выгрузки «на ленту»: имеется
  • Дополнительные устройства ввода/вывода: micro-SD карта
  • Поддерживаемые модели ZX Spectrum: Pentagon 128 K, ZX Spectrum 128 K, ZX Spectrum 48 K, ZX Spectrum +2, ZX Spectrum +3, ZX Spectrum 48 K ` 2006, OPEN SE BASIC 128 K, OPEN SE BASIC 48 K
  • Дополнительная операционная система: SD DOS
  • Файловая система: FAT32
  • Разъём шины ввода/вывода: имеется
  • Конструкция: двухсторонняя печатная плата 140 х 22 мм, установка внутри клавиатуры или в отдельный корпус
  • Питание устройства: соединитель mini-USB «F», напряжение +5 В

На фото –  плата AVR ZX-Spectrum 2.0 с установленным эмулятором AY8910(12), кстати тоже на ATMega.

Плата в базовой конфигурации имеет на борту 3 микроконтроллера и микросхему динамической памяти аж на 512 кб:

  • Центральный процессор (ATMega128)
  • Видеопроцессор (опять ATMega128)
  • Контроллер клавиатуры (ATTiny2313)

Это позволяет “в теории” реализовать компьютер с таким объемом памяти. Помимо этого на плате есть некоторое количество микросхем мелкой логики.

Уже сейчас помимо “спектрума” плата может функционировать, как Robotron 1715. То есть на этой базе можно реализовывать и другие компьютеры!

Что может быть лучше ретро-платы все в одном! Впрочем, о тайнах и возможностях может поведать сам автор:

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

Заключение

Микроконтроллеры – отличная возможность прикоснуться с миру разработки микроэлектроники. Для “олдскульщиков” – возможность “нырнуть” в то время, когда они были молодыми, а компьютеры простыми. Для поколения Arduino – шаг вперед в образовании. И пусть фанаты навороченных FPGA и ARMов утверждают о том, что время ATMega прошло – мы-то знаем на что она способна.

Удачных самоделок!

Источник: http://adapto.rs/arc/site/artcls/avrcomputers/

Бортовой компьютер

Андрей Бывших

Чесались руки сделать что-то для свежекупленного автомобиля, остановился на полезной вещи – бортовой компьютер. Автомобиль Nissan Almera N15 1.6SR, двигатель GA16DE. Лепил из того что было, и хотелось поскорее, так что за конструкторскую проработку не пинайте.

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

Место не самое удобное для бардачка и для БК, но ничего более подходящего не нашел. Корпус БК – сам бардачок, передняя панель – кусок обычного фольгированного текстолита с наклеенной черной пластиковой самоклеящейся пленкой (такой холодильники обклеивают).

После перелопачивания определенного количества материала на тему БК, пришел к выводу, что самый правильный подход реализован вот тут http://multi-set.ru/. Только дисплей все же у них слишком аскетичный. Поэтому и решил делать БК в том же русле, весь теоретический материал есть на их сайте. Брать поток данных с БУ двигателя не хотелось, т.к.

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

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

Кнопка, индикатор и его подсветка размещены на передней панели. Печатная плата под устройство не разрабатывалась, все спаяно на обычной макетке. Дополнительное гнездо прикуривателя с огромным конденсатором – не силовое, а для питания, чтобы при старте двигателя не перезагружался FM-MP3-трансмиттер, или навигатор.

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

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

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

Принципиальная схема:

Кликните для увеличения

МК PIC18F258 или PIC18F252 в DIP корпусе, установлен в панельке. Термодатчик TMP36 – заменим на микрочиповский MCP9700. MCP1525 – источник опорного напряжения +2.5 В, заменим на TL431 + резистор 680 Ом к +3.3 В. Индикатор TIC-120 и LED подсветку к нему TB1084 можно купить в Тритоне или Гамме, там же можно купить МК, опорник и термодатчик.

Можно использовать и другие индикаторы 64х32 точки на контроллере PCF8531. LP2950-3.3 – стабилизатор питания на 3.3 В, можно применить LM1117-3.3, или какой-нибудь регулируемый. Хотя, по большому счету, тут надо использовать специализированый стабилизатор для автомобильного применения. На все детальки даташиты без труда можно найти гуглем.

Дополнительный прикуриватель – от какой-то нашемарки.
Подключение. Все подписано на схеме, добавлю только, по цепи “+12v”ON”3” – провод, на котором появляется +12 В только при 3 положении ключа зажигания. Все цепи не силовые, и по автомобильным меркам ничего не потребляют, кроме цепи “Масса” и “+12V Accu”, их нужно подключить толстым проводом.

К форсунке в автомобиле подходят два провода: +12 В и сигнальный, к БК нужно подключить сигнальный.

Внешний вид экрана (в дежурном режиме и при включенном зажигании):

На первой строке отображается температура в салоне автомобиля (символ “мордочка”) и на улице (“солнышко”).

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

https://www.youtube.com/watch?v=pxnaFB9irX0

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

количество топлива проходящее через инжектор за единицу времени, в пересчете к литрам в час.

Сначала был сделан еще и прогресбар этой величины, (графическое отображение) но пришел к выводу, что это интересно только первые дни использования БК.

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

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

На четвертой строке отображается количество израсходованного топлива и параметр “dF”.

Блок управления двигателем во время работы на основе сигнала с датчика кислорода (лямда-зонда) непрерывно корректирует время, в течении которого открыта форсунка.

Параметр “dF” – это разница(разброс) между максимальным и минимальным значением времени на которое блок управления открывает форсунку в течении 10 циклов работы двигателя. Параметр “dF” отображается в микросекундах.

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

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

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

Сопровождается надписью “Save” в третьей строке.

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

Использование параметра “F”:

  1. На холостых оборотах прогретого двигателя блок управления подает через форсунки определенную порцию топлива в цилиндры (параметр “F”), длительным нажатием на кнопку принимаем величину этой порции за начальную точку отсчета – 0%.
     
  2. Теперь при последующей эксплуатации автомобиля, выведя двигатель на холостые обороты всегда можно будет увидеть на сколько изменилось это значение, по отношению к запомненному. Его увеличение означает, что для того же режима работы, двигателю требуется больше топлива, а значит времени для впрыска, например из-за засорения инжектора, или было заправлено не качественное топливо. Уменьшение будет наблюдаться наоборот, при заправке более качественным топливом, после чистки инжектора, или после правильных регулировок различных систем двигателя. А чтобы увидеть, что на эту величину повлияли изменившиеся холостые обороты – их отклонение в процентах так же отображается.
     
  3. Резко, до пола, нажать на одну секунду педаль газа и тут же отпустить. Число до которого увеличится параметр “F” – это “приемистость” двигателя. По сравнению с холостыми оборотами, объем топлива должен возрасти примерно в 3 раза, т.е. до 300%. Через короткое время после этого параметр “F” должен уменьшиться примерно до 100% – это работа экономайзера, который уменьшает подачу топлива. Для правильной работы экономайзера необходимо правильно выставленное начальное положение датчика дроссельной заслонки.
     
  4. Плавно нажать на педаль газа и придержать 3000 об/мин. Параметр “F” должен показать некоторое уменьшение объема топлива на один цикл, т.к. на таких оборотах возрастает КПД двигателя. В идеальном случае – 20%, т.е. на пятую часть меньше, по сравнению к объему топлива холостых оборотов.

Производительность форсунки двигателя GA16DE – 181-189cc, 185 см3/мин = 3.0833 мл/с = 11.1 л/час. Данные для других форсунок можно взять тут (47 kb).

Для использования БК с другими автомобилями нужно скорректировать исходник.

Файлы для MPLAB, прошивка, а так же исходники находятся в архиве – mplab.zip (26 kb).

Среду разработки MPLAB можно взять на сайте Microchip.

Используемый компилятор – HI-TECH PICC-18 STD 9.51PL2.

Программаторов для прошивки МК очень много, один из них, например, описан на моей страничке.

ab2000.by.ru

Источник: https://www.rlocman.ru/shem/schematics.html?di=66404

Источник: http://cxema21.ru/publ/mikrokontrollery/raznoe/bortovoj_kompjuter_s_cvetnym_ehkranom_na_vaz/21-1-0-216

Бортовой компьютер на любой инжекторный двигатель

Все началось с того, что как мне казалось, у меня большой расход топлива. Машина у меня Audi-80 с 2-х литровым движком (ABT) и моновпрыском (одна электрическая форсунка стоит во впускном коллекторе, т.с. вместо карбюратора).

Когда я разобрался, как работает система впрыска, все оказалось очень просто, вот тогда и загорелся сделать какой-то расходомер, типа. Тем более на моей машине 93 года с моновпрыском MOTRONIC 1.

2 через K-Line можно снять только значения по лямбде, обороты двигателя и его температуру.

Даже, если разобраться в конкретном для моей машины протоколе обмена – больше того, что показывает диагностика уже не считать, ну и конечно, тем более не показывается там длительность впрыска. И тогда начал искать в Интернете, что можно придумать и сделать, а также спрашивать на разных форумах. Если кто-то и делал что-то подобное, то обязательно тока за денежку.

Но я ведь старый радиолюбитель, но никогда не работал с микроконтроллерами, правда. Тогда решил начать с их изучения, и мой выбор пал на микроконтроллеры семейства AVR фирмы Atmel. Писать решил на Си, т.к. в свое время увлекался Borland C++. Все так в Интернете нашел похожую электрическую схему и использовал ее как образец.

Переделал ее и изменил под свои “нужды” и получилось следующее: посмотреть схему

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

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

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

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

Кстати производительность применяющихся электрических форсунок можно взять на http://users.erols.com/srweiss/tableifc.htm. Исходя из этой таблицы производительность моей форсунки – 819 см3 в мин. Далее, от полной заправки до полной заправки “смерил” литраж и сверил по своему расходомеру.

В результате калибровки получилась произв. моей форсунки – 516.

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

Датчик скорости – 2-х контактный, выдает 4 импульса за один оборот колеса с амплитудой ~8V.

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

Краткое описание к приложенной фотке
При включении – на 0.5 сек. появляется – Audi, затем напряжение. Всего управляющих кнопок 4. При нажатии 1-й (слева) появляется (F.)ull – полный расход; при следующем ее нажатии – (Г.)рязный – расход стоя, на ХХ, при скорости < 7 км/ч; еще раз нажать - опять (U.

) – напряжение. Если держать кнопку при напряжении более 2-х сек. комп. переходит в спящий режим (Idle), из которого выходит по прерыванию от форсунки. При (F.) – более 2-х секунд, он обнуляется. Также при этом обнуляются (Г.) и (У.). (F.) и (Г.) сохраняются при выкл. двигателя.

При нажатии 2-й (слева) кнопки появляется (Р.)асход – мгновенный (за 1 сек.) расход на 100 км; далее (H.) – мгнов. (за 1 сек.) часовой расход; далее (У.)средненный расход на 100 км. за расстояние, пройденное при скорости >= 7 км/ч. При (H.) более 2-х сек. переходим к вводу производительности форсунки от 0-9999 см3(мл.)/сек.

У меня после калибровки – 516 мл/сек. (У.) сохраняется.
При нажатии 3-й (слева) кнопки появляется (С.)корость – мгнов. (за 1 сек.) скорость; далее (d.)anger- скорость, при превышении которой звучит пьезик 1 сек. Если скорость упадет меньше (d-5), при превыш. (d.) будет подан опять сигнал.

В ином случае сигнал не повторится; далее (E.)xstra – макс. скорость которая была. При (С.) более 2-х сек. переходим к вводу кол-ва сигналов с датчика скорости за 1 км. У меня – 465 (на 1 км). При (d.) более 2-х сек. переходим к вводу скорости, при превыш. которой будет подан сигнал. При (E.) более 2-х сек – знач. обнуляется.

(d.) и (E.) сохраняются.
При нажатии 4-й (слева) кнопки появляется (П.)уть – пройденный путь; далее (L.)- пройденный путь 2; далее (d.OFF) – при этом будет отключен пьезик при превышении скорости при заданном знач. Когда мы вернемся опять к этому режиму появится (d.

on) – и пьезик будет готов к работе. При (П.) и (L.) более 2-х сек. – знач. обнуляются. При (d.OFF) или (d. on) более 2-х сек. – гасятся индикаторы, при этом комп продолжает работать и горит светодиод.Там где значение с десятыми, при достижении 99.9 – отображение происходит в целых.Код программы написан в IAR-е на Си.

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

…Так что кому все еще не понятно как вычисляется расход, немножко поясню. Производительность форсунки (задается любая от 0-9999, находим (калибруем) ее после израсходования топлива от одной полной заправки до следующей), к примеру, у нас получилось – 530 см3/мин=0,53л/мин(0,00883л/сек).

Частота оборотов двигателя на ХХ, к примеру – 950, значит, форсунка открывается с частотой 29 Гц (примерно все более-менее и зависит от системы впрыска). Время открытия форсунки из осциллограммы – 1,33 мс (0,00133 сек), значит, за это время впрыскивается – 0,00883/(1/0,00133)=0,0000117 л. Теперь умножаем на 29 и получаем – 0,00034 л/с, далее умножаем на 3600 и получаем – 1,226 л/час на ХХ.

Это просто для примера. Естественно все это можно записать одной небольшой строкой и к тому же частоту, а, следовательно, время открытого состояния форсунки за нас будет делать таймер. Ну а нам главное – это найти время впрыска одного импульса, используя 16-разрядный (желательно) таймер. Зная производительность форсунки за 1 сек., и определив общее время ее открытого состояния в 1 сек.

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

Так что для определения относительного расхода и знать из-за чего идет перерасход, на каких режимах, при каких нагрузках и т.д., такого алгоритма больше чем достаточно.Для общей картины приведу некоторые снятые фактически данные. На ХХ при 950 оборотах и Тдв.=90 гр. часовой расход 1,2 л, при 0 за бортом и выкл. потребителях, напряжение – 13.9-14В. Еще есть такие данные при -15 гр. зимой.

Проехал – 71,8 км, полный расход получился – 16.8 л. Расход на ХХ и при скорости < 7 км/ч - 7.9 л (на ХХ много в тот раз сжег). Средний расход при этом - 13,2 л. По трассе (перед этим все обнулил) расход средний был 7 л на 100 км, пока не въехал в город. При +10, как только заводишь в первые сек. часовой расход был - 2,5-3 л. При -15 гр.

– 8 литров, и соответственно мгновенный расход на 100 км больше, пока не прогреется достаточно. Средний расход конечно тоже в первые метры поездки немного увеличивается, потом опять восстанавливается до ~13 /100 км. На ХХ ходу при прогретом движке и при -15 гр. за бортом – те же 1,2 л в час. (у меня картонка еще перед радиатором, не на весь, стоит). Ну и вот и все в кратце.

Теперь буду делать новый комп. с графическим ЖК-индикатором, чтобы сразу отображалось все, а при нажатии – определенный режим высвечивался бы на весь экран. Также наверно применю 64-ю Мегу, отдельно поставлю память с часами реального времени через SPI, т.к. встроенная очень медленная, а также 2 цифровых датчика температуры – в салоне и за “бортом”, ну и может еще что.Всем Удачи, Дмитрий.

Файлы проекта:

cкачать код в .cpp
скачать плату (без транзистр. ключей) в .pcb
скачать плату и биты защиты для МК в .jpg
скачать график для определения напряж. в Excel
скачать полную прошивку
скачать весь материал

Автор проекта: Кондратьев Дмитрий
Связаться с автором можно по e-mail: kd at gers.ru.

Оригинал: http://telesys.ru/electronics/projects.php?do=p141

Источник: http://radioded.ru/skhema-na-mikrokontrollere/bortovoy-kompiuter-na-liuboy-inzhektornyy-dvigatel

Свободное программное обеспечение для Windows, Linux и FreeBSD, статьи по проектированию сетей, органинизации информационной безопасности и IT технологий

Источник: http://sariolla.ru/index.php?option=com_content&view=article&id=290%3Aavrchipbasic-&catid=49%3Ajornaldg5&Itemid=83&lang=ru

Бортовой компьютер для мотоцикла с LCD от Nokia 6280

В данном проекте мото-бортового компьютера вы увидите как можно использовать LCD-дисплей от мобильного телефона Nokia 6280, управляемый микроконтроллером PIC18F4455. Данный БК установлен на мотоцикле Yamaha TDM850 (99 г. выпуска).

Характеристики устройства:

  • отображение текущей передачи (с 1 по 5), плюс нейтральная передача
  • напряжение аккумулятора. Отображение аналоговое и цифровое
  • время с запуска
  • отображение аналогового и цифрового спидометра
  • суточный счетчик
  • отображение положения ручки газа (в процентах)
  • отображение аналогового и цифрового тахометра
  • если мотор не заведен, то отображается надпись «Engine Stop»
  • отображение температуры воздуха, охлаждающей жидкости, масла
  • при определенных оборотах отображается надпись «GearUp» (переключить передачу вверх). В режиме настроек (Debug Mode) возможна корректировка об/мин при которых появляется предупреждающая надпись
  • на 5-ой передаче при раскручивании движка более 3500 об/мин и при параметре TRP меньшем чем задан в настройках (к примеру 17%), отображается надпись «Economic Drive» (экономичная езда)

Режим настроек (Debug Mode):

В данном режиме БК показывает данные датчика скорости, TPS датчика (ручка газа), уникальные коды устройств датчика температуры DS18B20. Также, врежиме настроек вы можете поменять параметры для режимов «GearUp», «Economic Drive» и настроить подсветку LCD.

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

Вход в режим настроек и изменение параметров:

  • ручку переключения передач передвиньте на нижнюю передачу и включите питание. На экране устройства появится надпись Debug Mode.
  • для пролистывания параметров передвигайте вниз ручку переключателя передач.
  • для изменения параметра используйте ручку газа
  • для сохранения изменений параметра, передвиньте ручку переключателя передач вверх. Параметр изменит свой цвет на синий.

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

Вся электронная начинка расположена слева от защиты и с LCD экранчиком соединена плоским шлейфом. С второй стороны электронного блок БК отходят соединения к модулю зажигания, температурным датчикам и датчику положения ручки передач.

От модуля зажигания БК получает +12В, сигналы об/мин (RPM) и ручки газа.

Температурные сенсоры DS18B20 подключены по протоколу 1Wire, в режиме «parasite power» (т.е. не требуют внешнего питания).

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

На данном мотоцикле нет заводского датчика скорости, поэтому я сделал его своими руками. В качестве датчика скорости я использовал датчик-Холла TLE4945. Датчик установлен под крышкой картера двигателя.

Для работы датчика Холла требуются магниты, в моем случае я использовал три магнита. Причина этого более высокая точность: скорость измеряется от 0 до 350 км/ч с разрешением 1 км/ч, обновление данных происходит каждую секунду.

При монтировании магнитов вы должны соблюдать ориентирование их магнитного поля. Последовательность полюсов магнитов у меня такая: S-N-S-N-S-N.

В принципиальной схеме используется простое решение для связи PIC18F4550 и Nokia 6280 Lcd (320×240 пикселей) через параллельный порт.
Для термодатчиков DS18B20 используется 1 канал вводавывода 1Wire.

Для датчика положения передач и нейтральной передачи используется 3 линии МК, один вход МК используется для датчика скорости, 2 аналоговых входа для измерения напряжения питания и датчика ручки газа, и один выход используется для подсветки LCD.

USB разъем используется для программирования и тестирования.

Как было сказано выше, все 3 датчика DS18B20 сидят на одной линии 1Wire и для правильной работы устройства надо знать их уникальные 64-разрядные коды.У моих датчиков были следующие коды:«Воздух» = 9300000078625728«Вода» = D5000002061B2128

«Масло» = 4600000206125A28

Для правильной работы БК, в коде программы вы должны изменить эти коды на коды своих датчиков (см. скриншот выше).

Скачать прошивку

Оригинал статьи на английском языке (Перевод: Колтыков А.В. для сайта cxem.net)

Небольшое видео работы устройства:

Источник: http://elektro-shemi.ru/bortovoj_kompjuter_dlja_motocikla_s_lcd_ot_nokia_6280.html

Ссылка на основную публикацию
Adblock
detector
",css:{backgroundColor:"#000",opacity:.6}},container:{block:void 0,tpl:"
"},wrap:void 0,body:void 0,errors:{tpl:"
",autoclose_delay:2e3,ajax_unsuccessful_load:"Error"},openEffect:{type:"fade",speed:400},closeEffect:{type:"fade",speed:400},beforeOpen:n.noop,afterOpen:n.noop,beforeClose:n.noop,afterClose:n.noop,afterLoading:n.noop,afterLoadingOnShow:n.noop,errorLoading:n.noop},o=0,p=n([]),h={isEventOut:function(a,b){var c=!0;return n(a).each(function(){n(b.target).get(0)==n(this).get(0)&&(c=!1),0==n(b.target).closest("HTML",n(this).get(0)).length&&(c=!1)}),c}},q={getParentEl:function(a){var b=n(a);return b.data("arcticmodal")?b:(b=n(a).closest(".arcticmodal-container").data("arcticmodalParentEl"),!!b&&b)},transition:function(a,b,c,d){switch(d=null==d?n.noop:d,c.type){case"fade":"show"==b?a.fadeIn(c.speed,d):a.fadeOut(c.speed,d);break;case"none":"show"==b?a.show():a.hide(),d();}},prepare_body:function(a,b){n(".arcticmodal-close",a.body).unbind("click.arcticmodal").bind("click.arcticmodal",function(){return b.arcticmodal("close"),!1})},init_el:function(d,a){var b=d.data("arcticmodal");if(!b){if(b=a,o++,b.modalID=o,b.overlay.block=n(b.overlay.tpl),b.overlay.block.css(b.overlay.css),b.container.block=n(b.container.tpl),b.body=n(".arcticmodal-container_i2",b.container.block),a.clone?b.body.html(d.clone(!0)):(d.before("
"),b.body.html(d)),q.prepare_body(b,d),b.closeOnOverlayClick&&b.overlay.block.add(b.container.block).click(function(a){h.isEventOut(n(">*",b.body),a)&&d.arcticmodal("close")}),b.container.block.data("arcticmodalParentEl",d),d.data("arcticmodal",b),p=n.merge(p,d),n.proxy(e.show,d)(),"html"==b.type)return d;if(null!=b.ajax.beforeSend){var c=b.ajax.beforeSend;delete b.ajax.beforeSend}if(null!=b.ajax.success){var f=b.ajax.success;delete b.ajax.success}if(null!=b.ajax.error){var g=b.ajax.error;delete b.ajax.error}var j=n.extend(!0,{url:b.url,beforeSend:function(){null==c?b.body.html("
"):c(b,d)},success:function(c){d.trigger("afterLoading"),b.afterLoading(b,d,c),null==f?b.body.html(c):f(b,d,c),q.prepare_body(b,d),d.trigger("afterLoadingOnShow"),b.afterLoadingOnShow(b,d,c)},error:function(){d.trigger("errorLoading"),b.errorLoading(b,d),null==g?(b.body.html(b.errors.tpl),n(".arcticmodal-error",b.body).html(b.errors.ajax_unsuccessful_load),n(".arcticmodal-close",b.body).click(function(){return d.arcticmodal("close"),!1}),b.errors.autoclose_delay&&setTimeout(function(){d.arcticmodal("close")},b.errors.autoclose_delay)):g(b,d)}},b.ajax);b.ajax_request=n.ajax(j),d.data("arcticmodal",b)}},init:function(b){if(b=n.extend(!0,{},a,b),!n.isFunction(this))return this.each(function(){q.init_el(n(this),n.extend(!0,{},b))});if(null==b)return void n.error("jquery.arcticmodal: Uncorrect parameters");if(""==b.type)return void n.error("jquery.arcticmodal: Don't set parameter \"type\"");switch(b.type){case"html":if(""==b.content)return void n.error("jquery.arcticmodal: Don't set parameter \"content\"");var e=b.content;return b.content="",q.init_el(n(e),b);case"ajax":return""==b.url?void n.error("jquery.arcticmodal: Don't set parameter \"url\""):q.init_el(n("
"),b);}}},e={show:function(){var a=q.getParentEl(this);if(!1===a)return void n.error("jquery.arcticmodal: Uncorrect call");var b=a.data("arcticmodal");if(b.overlay.block.hide(),b.container.block.hide(),n("BODY").append(b.overlay.block),n("BODY").append(b.container.block),b.beforeOpen(b,a),a.trigger("beforeOpen"),"hidden"!=b.wrap.css("overflow")){b.wrap.data("arcticmodalOverflow",b.wrap.css("overflow"));var c=b.wrap.outerWidth(!0);b.wrap.css("overflow","hidden");var d=b.wrap.outerWidth(!0);d!=c&&b.wrap.css("marginRight",d-c+"px")}return p.not(a).each(function(){var a=n(this).data("arcticmodal");a.overlay.block.hide()}),q.transition(b.overlay.block,"show",1*")),b.overlay.block.remove(),b.container.block.remove(),a.data("arcticmodal",null),n(".arcticmodal-container").length||(b.wrap.data("arcticmodalOverflow")&&b.wrap.css("overflow",b.wrap.data("arcticmodalOverflow")),b.wrap.css("marginRight",0))}),"ajax"==b.type&&b.ajax_request.abort(),p=p.not(a))})},setDefault:function(b){n.extend(!0,a,b)}};n(function(){a.wrap=n(document.all&&!document.querySelector?"html":"body")}),n(document).bind("keyup.arcticmodal",function(d){var a=p.last();if(a.length){var b=a.data("arcticmodal");b.closeOnEsc&&27===d.keyCode&&a.arcticmodal("close")}}),n.arcticmodal=n.fn.arcticmodal=function(a){return e[a]?e[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?void n.error("jquery.arcticmodal: Method "+a+" does not exist"):q.init.apply(this,arguments)}}(jQuery)}var debugMode="undefined"!=typeof debugFlatPM&&debugFlatPM,duplicateMode="undefined"!=typeof duplicateFlatPM&&duplicateFlatPM,countMode="undefined"!=typeof countFlatPM&&countFlatPM;document["wri"+"te"]=function(a){let b=document.createElement("div");jQuery(document.currentScript).after(b),flatPM_setHTML(b,a),jQuery(b).contents().unwrap()};function flatPM_sticky(c,d,e=0){function f(){if(null==a){let b=getComputedStyle(g,""),c="";for(let a=0;a=b.top-h?b.top-h{const d=c.split("=");return d[0]===a?decodeURIComponent(d[1]):b},""),c=""==b?void 0:b;return c}function flatPM_testCookie(){let a="test_56445";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(a){return!1}}function flatPM_grep(a,b,c){return jQuery.grep(a,(a,d)=>c?d==b:0==(d+1)%b)}function flatPM_random(a,b){return Math.floor(Math.random()*(b-a+1))+a}
");let k=document.querySelector(".flat_pm_modal[data-id-modal=\""+a.ID+"\"]");if(-1===d.indexOf("go"+"oglesyndication")?flatPM_setHTML(k,d):jQuery(k).html(b+d),"px"==a.how.popup.px_s)e.bind(h,()=>{e.scrollTop()>a.how.popup.after&&(e.unbind(h),f.unbind(i),j())}),void 0!==a.how.popup.close_window&&"true"==a.how.popup.close_window&&f.bind(i,()=>{e.unbind(h),f.unbind(i),j()});else{let b=setTimeout(()=>{f.unbind(i),j()},1e3*a.how.popup.after);void 0!==a.how.popup.close_window&&"true"==a.how.popup.close_window&&f.bind(i,()=>{clearTimeout(b),f.unbind(i),j()})}f.on("click",".flat_pm_modal .flat_pm_crs",()=>{jQuery.arcticmodal("close")})}if(void 0!==a.how.outgoing){let b,c="0"==a.how.outgoing.indent?"":" style=\"bottom:"+a.how.outgoing.indent+"px\"",e="true"==a.how.outgoing.cross?"":"",f=jQuery(window),g="scroll.out"+a.ID,h=void 0===flatPM_getCookie("flat_out_"+a.ID+"_mb")||"false"!=flatPM_getCookie("flat_out_"+a.ID+"_mb"),i=document.createElement("div"),j=jQuery("body"),k=()=>{void 0!==a.how.outgoing.cookie&&"false"==a.how.outgoing.cookie&&h&&(jQuery(".flat_pm_out[data-id-out=\""+a.ID+"\"]").addClass("show"),j.on("click",".flat_pm_out[data-id-out=\""+a.ID+"\"] .flat_pm_crs",function(){flatPM_setCookie("flat_out_"+a.ID+"_mb",!1)})),(void 0===a.how.outgoing.cookie||"false"!=a.how.outgoing.cookie)&&jQuery(".flat_pm_out[data-id-out=\""+a.ID+"\"]").addClass("show")};switch(a.how.outgoing.whence){case"1":b="top";break;case"2":b="bottom";break;case"3":b="left";break;case"4":b="right";}jQuery("body > *").eq(0).before("
"+e+"
");let m=document.querySelector(".flat_pm_out[data-id-out=\""+a.ID+"\"]");-1===d.indexOf("go"+"oglesyndication")?flatPM_setHTML(m,d):jQuery(m).html(e+d),"px"==a.how.outgoing.px_s?f.bind(g,()=>{f.scrollTop()>a.how.outgoing.after&&(f.unbind(g),k())}):setTimeout(()=>{k()},1e3*a.how.outgoing.after),j.on("click",".flat_pm_out .flat_pm_crs",function(){jQuery(this).parent().removeClass("show").addClass("closed")})}countMode&&(flat_count["block_"+a.ID]={},flat_count["block_"+a.ID].count=1,flat_count["block_"+a.ID].click=0,flat_count["block_"+a.ID].id=a.ID)}catch(a){console.warn(a)}}function flatPM_start(){let a=flat_pm_arr.length;if(0==a)return flat_pm_arr=[],void jQuery(".flat_pm_start, .flat_pm_end").remove();flat_body=flat_body||jQuery("body"),!flat_counter&&countMode&&(flat_counter=!0,flat_body.on("click","[data-flat-id]",function(){let a=jQuery(this),b=a.attr("data-flat-id");flat_count["block_"+b].click++}),flat_body.on("mouseenter","[data-flat-id] iframe",function(){let a=jQuery(this),b=a.closest("[data-flat-id]").attr("data-flat-id");flat_iframe=b}).on("mouseleave","[data-flat-id] iframe",function(){flat_iframe=-1}),jQuery(window).on("beforeunload",()=>{jQuery.isEmptyObject(flat_count)||jQuery.ajax({async:!1,type:"POST",url:ajaxUrlFlatPM,dataType:"json",data:{action:"flat_pm_ajax",data_me:{method:"flat_pm_block_counter",arr:flat_count}}})}).on("blur",()=>{-1!=flat_iframe&&flat_count["block_"+flat_iframe].click++})),flat_userVars.init();for(let b=0;bflat_userVars.textlen||void 0!==a.chapter_sub&&a.chapter_subflat_userVars.titlelen||void 0!==a.title_sub&&a.title_subc&&cc&&c>d&&(b=flatPM_addDays(b,-1)),b>e||cd||c-1!=flat_userVars.referer.indexOf(a))||void 0!==a.referer.referer_disabled&&-1!=a.referer.referer_disabled.findIndex(a=>-1!=flat_userVars.referer.indexOf(a)))&&(c=!0),c||void 0===a.browser||(void 0===a.browser.browser_enabled||-1!=a.browser.browser_enabled.indexOf(flat_userVars.browser))&&(void 0===a.browser.browser_disabled||-1==a.browser.browser_disabled.indexOf(flat_userVars.browser)))){if(c&&void 0!==a.browser&&void 0!==a.browser.browser_enabled&&-1!=a.browser.browser_enabled.indexOf(flat_userVars.browser)&&(c=!1),!c&&(void 0!==a.geo||void 0!==a.role)&&(""==flat_userVars.ccode||""==flat_userVars.country||""==flat_userVars.city||""==flat_userVars.role)){flat_pm_then.push(a),flatPM_setWrap(a),flat_body.hasClass("flat_pm_block_geo_role")||(flat_body.addClass("flat_pm_block_geo_role"),flatPM_ajax("flat_pm_block_geo_role")),c=!0}c||(flatPM_setWrap(a),flatPM_next(a))}}}let b=jQuery(".flatPM_sticky");b.each(function(){let a=jQuery(this),b=a.data("height")||350,c=a.data("top");a.wrap("
");let d=a.parent()[0];flatPM_sticky(this,d,c)}),debugMode||countMode||jQuery("[data-flat-id]:not([data-id-out]):not([data-id-modal])").contents().unwrap(),flat_pm_arr=[],jQuery(".flat_pm_start, .flat_pm_end").remove()}

На этот раз решил повторить бортовой компьютер на ВАЗ, с цветным дисплеем от сименса LS020 и тачскрином SE G900. Плату слегка доработал, т.к. не было у меня стабилизаторов в “микросхемных” корпусах, да и в городе их чета не нашел.

Рекомендую использовать в схеме указанный стабилизатор в корпусе SO-8, иначе бортовик не будет работать корректно, надо будет дорабатывать.

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

https://www.youtube.com/watch?v=yr4VMvDZ_pE

В варианте SO-8 есть задержка включения (спящий режим и.т.п) благодаря чему он и работает идеально. Итак, бортовик на Мк атмега 16, для тех кто хочет повторить проект, есть прошивка под мегу 32 – пишите в ПМ. Статья находится на сайте .

 LM317 формирует стабилизированный ток 20 мА для светодиодов подсветки дисплея. LM7805 стабилизирует напряжение для питания микроконтроллера. Защитный диод 1N6281 рассчитанный на 27 вольт спасет от возможных всплесков напряжения.

При отладке можно использовать +12 вольт с 16-го пина колодки OBD2. А при постоянной работе напряжение на БК должно подаваться при каждом включении зажигания. Т.е. необходимо протянуть провод от замка зажигания к БК.

Схема бортового компьютера:

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

Как только напряжение пропадет, на выводе появится логическая единица. Энергии накопленной конденсатором 470 мкФ хватит на то чтобы микроконтроллер успел отправить команду выключения в дисплей.

Диод 1N5818 не даст разряжаться конденсатору в «сеть», а так же защищает от переплюсовки при подключении питания.

Первый запуск после сборки:

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

Тач посадил на дисплей с помощью двухстороннего скотча.

Ранее я собирал осциллограф на LS020 и меге32, корпус красил краской из баллончика, в 3-4 слоя, а потом еще лаком крыл в 3 слоя. получился очень глубокий и насыщенный цвет.

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

Еще пару фоток…

файлы проекта  (~ 208 кб.)
 

Программирование под .Net без Visual Studio
Многие знают, что сценарии на JavaScript и VBS выполняются в браузерах, но не все знают, что эти же скрипты можно запускать и в операционной системе Windows напрямую.За запуск сценариев JavaScript и VBScript  отвечает компонент Windows Script Host (WSH), состоящий из оконного интерпретатора WSCript.exe и консольного интерпретатора CSCript.exe, его отрицательным моментом является то, что он не может создавать из скриптов исполняемые файлы EXE. Вообще скомпилировать VBScript  и JavaScript в исполняемый бинарный файл можно установив на компьютер Microsoft Visual Studio.Но мало кто знает, что на самом деле компилятор уже встроен в операционную систему. В составе пакета .Net присутствуют два файла: jsc.exe и vbc.exe, с помощью них можно создать EXE приложение из наших скриптов *.vb или *.js. Для того, чтобы компилятор начал работать, путь к нему надо добавить в переменную PATH, для этого находим поиском папку, где находится файл vbc.exe или jsc.exe и добавляем путь до неё в переменную,

 

Первая в мире игровая приставка
Многие читатели помнят домашние компьютеры zx-spectrum, использовавшиеся в качестве игровой приставки, позднее в начале 90-ых годов в продаже появились 8-и битные приставки Dendy, на смену им пришли 16 битная Sega и 32-х битные игровые платформы Panasonic 3DO, Sony Playstation и X-Box.Но мало кто знает о первой в мире игровой приставке – Magnavox Odyssey. В основе приставки лежала идея американского инженера Ральфа Баера создать игровое устройство для подключения к телевизору. Разработка игровой приставки началась в 1966 году, и после более чем двух лет упорной работы прототип был готов. Назывался он Brown Box, в нем присутствовало 12 встроенных игр, далее начался следующий важный этап – патентование и поиск инвестора. Прототип был представлен кабельным и эфирным телекомпаниям, в итоге контракт на выпуск приставки был подписан с Magnavox.

 

Бесплатная лечащая утилита
Microsoft Safety Scanner – бесплатная программа для сканирования компьютера на вирусы от Microsoft. Скачать ее можно с официального сайта корпорации, срок действия скачанного файла составляет 10 дней, по его истечению необходимо скачать сканер вновь. Данное ограничение  введено по той причине, что Microsoft постоянно добавляет в данный пакет новые сигнатуры вирусов.

 

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

 

После успеха игровой приставки Magnavox Odyssey рынок видеоигр испытывал небывалый подъем, что неудивительно, в конце 70-ых персональный компьютер стоил порядка 1000 долларов, в то время как игровая приставка обходилась в 200 $.Американская фирма Atari решила выпустить на рынок новую игровую приставку. В качестве центрального процессора была выбрана 8 битная микросхема MOS Technology 6502, разработанная той же командой схемотехников, которые перед этим создали легендарный процессор Motorolla 6800. Хотя и возможности процессора были невелики, он имел 16 битную адресную шину, соответственно объем оперативной памяти, к которой мог обращаться процессор был ограничен 64 килобайтами. Другая особенность заключалась в малом количестве регистров, в процессоре присутствовали 8 разрядные аккумулятор A, два индексных регистра X и Y, указатель стека S, регистр флажков P

 

В прошлых статьях мы рассматривали применение программируемых калькуляторов и их эмуляторов.  Рассмотрим теперь, как же обойтись без них. Мало кто из новичков знает, что в операционную систему Windows уже строена поддержка языков программирования JScript  и Visual Basic Scripting Edition или попросту говоря  VBScript. Остановимся на последнем поподробнее.Данный язык программирования является интерпретируемым, то есть исходный код не компилируется в исполняемый файл,  а проходит через компонент операционной системы Windows Script Host.Применяется VBScript  для повседневных  задач автоматизации процессов системного администрирования, создания динамических Web-страниц на серверах и написания клиентских интерфейсов пользователей Web приложений для браузера Internet Explorer.Рассмотрим пример написания простейшей программы на VBScript, рассчитывающей площадь круга.Для расчетов нам понадобится значение числа пи, к сожалению в VBS нет данной функции и нам придется создать ее самостоятельно,

 

Microsoft Small Basic – простейший язык программирования
В 2009 году крупнейший производитель программного обеспечения выпустил простейший язык программирования – Microsoft Small Basic. Интерфейс программы выполнен в виде традиционной ленты и интуитивно понятен. Вообще язык Small Basic был разработан в Майкрософте для обучения программированию детей в возрасте от 10 до 16 лет и включает в себя всего лишь 14 ключевых слов. Несмотря на свою простоту, программы созданные в Small Basic, могут быть легко преобразованы в формат Microsoft Visual Basic.Системные требования программы невелики, для работы требуется операционная система Windows XP, Vista или Семерка, а так же .NET Framework 3.5 или выше.Программа, созданная в Small Basic может как быть скомпилирована в исполняемый файл EXE так и загружены в Интернет и выполняться в обычном браузере.В предыдущей статье мы описывали программу для микрокалькулятора, вычисляющую площадь круга. Напишем такую же программу на Small Basic:

 

Программирование на микрокалькуляторе
В то время, когда в школах Соединенных Штатов детей обучают использованию микрокалькуляторов Texas Instruments, в Российской Федерации использование программируемых калькуляторов на экзаменах запрещено. Сегодня мы расскажем, как написать простейшую программу для калькулятора, для чего это необходимо и что же вообще представляет собой этот враг Российского образования, программируемый калькулятор.В качестве стенда будем использовать программируемый калькулятор МК-61 или его эмулятор, описанный в предыдущей статье.Данный калькулятор был популярен в 80-ых годах прошлого века, в то время никто не запрещал использовать его на экзаменах. Встроенных функций в микрокалькулятор немного, он может вычислять тригонометрические функции, возводить число в степень, вычислять квадратные корни чисел, а так же работать с логарифмами. Казалось бы, немного, но калькулятор имеет 14 адресуемых регистров, 5 регистров стека и имел оперативную память в 105 шагов программы. Интерфейс калькулятора представлял клавиатуру из 30 клавиш и экран, отображающий 8 цифр мантиссы