Меню Закрыть

Схема круиз контроля своими руками

Содержание / Contents

↑ Выходы:

1. Забить и ездить так. Неинтересно, с круизом удобнее.
2. Купить машину с круизом. Дорого, и мне эта нравится.
3. Найти б/у ECU с круизной прошивкой. Нереально. Кто тебе скажет, есть там что внутри или нет? А стоит 2 штуки зеленых.
4. Перешить имеющийся бортовик с помощью "умных" из гаража. В неудачном случае имеем неисправный ECU и мертвую машину.
5. Купить немецкую универсальную //www.waeco.com/en/4374.php, на многие авто идет. Митцы в списке нет. Опять колхоз? Отдать 15 штук и колхозить?
6. Собрать самому. Недорого, научиться обращаться с микроконтроллерами, разминка для мозгов. И сколько еще японоГрандисов по стране ездит. Плюс Аиртреки, плюс праворульные Аутлендеры, и такие же Галанты. Их тоже немало, опыт круизостроения явно пригодится не мне одному.

↑ Выбрал последний вариант.

Логика работы устройства понятна и прозрачна: при задании определенной скорости запоминается показание датчика скорости, положение педали акселератора и далее при уменьшении скорости эмулируется нажатие на педаль сильнее, при увеличении скорости — слабее. Далее ограничители по скорости (не менее 40 и не более 160 км/ч), ограничители по максимальному и минимальному положению педали и прочие условия нормального функционирования устройства.
Внешне управление устройства не должно было отличаться от фирменного. Было изучено устройство и принцип работы органов управления, приобретены (не без труда) джойстик-рычаг для управления и концевик на педаль тормоза. Без последнего вполне можно было обойтись, но хотелось как можно ближе приблизиться к оригиналу. Кроме того, этот концевик позволяет электрически развязать сигнальные цепи 12 и 5 Вольт , что немаловажно для безопасной работы контроллера.

Скажу честно, опыта работы с микроконтроллерами было ноль. Поэтому приступал к проектированию и изготовлению как к покорению первой горной вершины (сколько их у нас в жизни, верно?) — глаза боятся а руки делают.
Конечно, большую часть информации нарыл сам. Только я бы не знал, куда тыкаться, если бы не форум. Но "спасибы" в конце статьи, а пока о деле.

Для CPU был выбран Atmega8535. Просто по совету. Теперь понимаю, насколько дальновидным был этот совет. Ну да, 40-ножка, большой микропроцессор. Зато в нем предусмотрено все, что мне понадобилось, вернее я не использовал и половины имеющихся на борту устройств и возможностей. И теперь знаю, что они есть! Он доступен, недорог.
Среда написания программы — CodeVisionAVR, язык — Си. И опять помог портал, чудные статьи по первым шагам в освоении микроконтроллеров были распечатаны и замусолены по вечерам до непотребного состояния. После прочтения остались вопросы, захотелось копнуть глубже. Помогли книги Трамперта и Баранова, и несчетное количество страниц в интернете, посвященные контроллерам Atmel. Всю жизнь мечтал изучить Си. Но только взяв какой-нить учебник через 3-4 листа понимал что я=лошара, и это все для избранных. Надо заметить, что также у меня начиналось с консольным сервером на Линуксе. А почитав статьи и просто скопировав некоторые простенькие программы, понял, что все вполне доступно. Си — рулез! Конечно на Ассемблере код короче и программа быстрее, но написание и отладка мне ближе на Си, более "юзабельно".
Очень помогла великолепная программа Proteus, ее часть ISIS, позволяющая "паять без паяльника", логика работы схемы наполовину отработана в ней.

Первым делом определился с входными параметрами. В очередной раз порадовали инженеры MMC — датчик скорости и педаль акселератора сделаны на эффекте Холла. В педали сдвоенный датчик, в "скоростемере" одиночный. Одноклассник помог промерять данные с датчика скорости, оказалось все очень просто — прямая зависимость частоты от скорости движения, вышло F=25*V, F — частота в Гц, V — скорость в км/ч. Т.е. на 40 км/ч 1000 Гц, на 90 км/ч 2250 и так далее. Напряжение меандра 4,96 В вверху и абсолютный ноль внизу. Просто супер для контроллера. Полез в педаль акселератора, тоже победа, диапазон напряжений, выдаваемых с педалей 0,55-4,55 Вольт , отставание одного датчика от другого 0,3 В. Все очень разумно и легко контролируемо и реализуемо! В контроллере есть аж 8 входов АЦП, да какие — можно выбрать разрядность от 8 до 10 бит, и сразу передавать на выход аппаратного ШИМ.

↑ В эйфории сваял первый вариант схемы:

Вывод производится через аппаратный ШИМ контроллера. В Протеусе все было шикарно, небольшие флуктуации напряжения (около 0,01 вольта) не смущали. Пора в железо! Пришлось отвлечься сначала на освоение технологии ЛУТ, потом на изготовление нормального программатора по мотивам PROTTOSSa. Но и тут время не потеряно зря, теперь уж изготовление небольших печатных плат достаточно высокого качества для меня по плечу! Заодно освоил покрытие сплавом Розе, результаты тоже очень понравились.

Всем привет!
Как же не продублировать запись в своё любимое сообщество?))
Перед тем как писать: купил бы джойстик, зачем такой колхоз, штатные кнопки есть и т.д. напомню Правила сообщества: Сообщество людей которые Своими руками, создают, перекраивают, изменяют, оптимизируют, разрабатывают и т.д.

Долго думал стоит или нет, ставить себе сей девайс… И тут возникла необходимость съездить в Саратов, а почему бы не замутить круиз и заодно опробовать его? Да не вопрос!

Читайте также:  До какого числа нужно менять зимнюю резину

Необходимо:
1. Большое желание и внимательность при производстве и подключении.
2. Два метра трехжильного провода, резисторы 240 Ом, 390 Ом и 910 Ом. Две кнопки стеклоподъёмников с нашего автопрома. Мне хватило одной, т.к. на руле у меня есть две лишние две кнопки, которые для управления ГУ в принципе не нужны! Как сделать можно глянуть у меня в бж.
И так поехали!
1. Снимаем оба бардачка, панель приборов, кожух руля.
2. Три провода подсоединяем через контакты от старого компа к второму разъёму ЭБУ.
3. Плюс берем откуда вам удобнее подаём на 10 контакт.
4. 13 контакт идёт на светодиод Круиз на приборке.
5. 24 идёт к кнопкам, а второй провод от кнопок к массе!
6. Провода с двух кнопок руля вывел через улитку.
7. А сейчас пойдёт самое интересное! Зачем нам в Короллах это бесполезное монетохранилище?)) Выдёргиваем, аккуратно отпиливаем лишнее и туда идеально входит кнопка стеклоподъёмников с нашего автопрома! Думаю цены на оригинальные королловские кнопки все знают!

Для полноценной работы рекомендуется пройти регистрацию.

Рекламные сообщения будут удаляться вместе с пользователем. Что есть реклама — буду решать я.

Круизконтроль своими руками. ATmega168

Круизконтроль своими руками. ATmega168

hardlock » 18 май 2012 14:38

Очень давно хотелось поставить на машину круиз контроль (КК), но готовые решения очень не дешёвые (самый простой — около $300). Есть в интернете несколько проектов для самостоятельного изготовления, но в них всегда останавливал исполнительный механизм, вернее его изготовление. Долго ходил вокруг да около и всё же решился. За механическую часть будет отвечать мой дядька — инженер с огромным стажем, а за электрическую — я. Поэтому начал со схемы.
За основу взял готовый проект, который уже подвергся доработке. Я тоже не оставил без внимания некоторые моменты и получилась вот такая схема.

J5 не устанавливаем.

Перечень элементов по порядку (в скобка — корпуса):
Код: Выделить всё BZ1 = KPX1205B

C1 = 470µFx35v
C2 = 100nF (0805)
C3 = 220µFx10V
C4 = 100nF (0805)
C5 = 100nF (0805)
C6 = 100nF (0805)
C7 = 22pF (0805)
C8 = 22pF (0805)
C9 = 100nF (0805)
C10 = 100nF (0805)
C11 = 1nF (0805)
C12 = 100nF (0805)
C13 = 100nF (0805)
C14 = 100µFx35V
C15 = 100nF (0805)
C16 = 100nF (0805)
C17 = 100nF (0805)
C18 = 1nF (0805)
C19 = 100nF (0805)
C20 = 1nF (0805)
C21 = 22nF (1206)
C22 = 0,47µF (0805 / 1206)

D1 = ATtiny13 (SO-8)
D2 = ATmega168 (TQFP-32)
D3 = L298N (Multiwatt-15)
DA1 = LM7805 (TO-220)

FU1 = 5A (Стекло 5x20mm )

J1 = (0805)
J2 = (0805)
J3 = (0805)
J4 = (0805)
J5 = (0805)

R1 = 4,7k (0805)
R2 = 4,7k (0805)
R3 = 4,7k (0805)
R4 = 4,7k (0805)
R5 = 4,7k (0805)
R6 = 4,7k (0805)
R7 = 100 (0805)
R8 = 100 (0805)
R9 = 1k (0805)
R10 = 100 (0805)
R11 = 100 (0805)
R12 = 470 (0805)
R13 = 2к (0805)
R14 = 1к (0805)
R15 = 1 (1206)
R16 = 4,7k (0805)
R17 = 4,7k (0805)
R18 = 4,7k (0805)
R19 = 470 (1206)
R20 = 470 (1206)
R21 = 2k / 300 (1206)
R22 = 1к (0805)
R23 = 1 (1206)
R24 = 4,7k (0805)
R25 = 100 (0805)
R26 = 100 (0805)
R27 = 4,7k (0805)
R28 = 15k / 300 (0805)
R29 = 1к (0805)
R30 = 100 (0805)
R31 = 10k (0805)
R32 = 4,7k (0805)
R33 = 1,3k (0805)
R34 = 4,7k (0805)
R35 = 4,7k (0805)
R36 = 10 (1206)
R37 = 1,3k (0805)
R38 = 4,7k (0805)
R39 = 51 (0805)
R40 = 10k (0805)
R41 = 10k (0805)
R42 = 10k (0805)
R43 = 100 (0805)
R44 = 4,7k (0805)
R45 = 0,1 (2Wt)
R46 = 4,7k (0805)
R47 = 4,7k (0805)
R48 = 4,7k (0805)
R49 = 100 (0805)
R50 = 330 (0805)

O1 = PC817C (DIP-4)
O2 = PC817C (DIP-4)

VD1 = LL46 (SOD-80)
VD2 = BZV55C5V1 — 5,1V (SOD-80)
VD3 = BZV55C5V1 — 5,1V (SOD-80)
VD4 = BZV55C5V1 — 5,1V (SOD-80)
VD5 = BZV55C5V1 — 5,1V (SOD-80)
VD6 = BZV55C5V1 — 5,1V (SOD-80)
VD7 = LL46 (SOD-80)
VD8 = BZV55C5V1 — 5,1V (SOD-80)
VD9 = BZV55C5V1 — 5,1V (SOD-80)
VD10 = BZV55C5V1 — 5,1V (SOD-80)
VD11 = LL46 (SOD-80)
VD12 = BZV55C5V1 — 5,1V (SOD-80)
VD13 = BZV55C5V1 — 5,1V (SOD-80)
VD14 = LL4148 (SOD-80)
VD15 = BYV27-200 (SOD-57 / DO-201AD)
VD16 = BYV27-200 (SOD-57 / DO-201AD)
VD17 = LL4148 (SOD-80)
VD18 = BYV27-200 (SOD-57 / DO-201AD)
VD19 = BYV27-200 (SOD-57 / DO-201AD)
VD20 = BZV55C5V1 — 5,1V (SOD-80)
VD21 = M7 (SMA / DO-214AC)

VT1 = BC847 (SOT-23)
VT2 = BC847 (SOT-23)
VT3 = BC847 (SOT-23)
VT4 = BC847 (SOT-23)
VT5 = BC847 (SOT-23)

X1 = Keyboard (CWF-6R (WK-6R) (MW-06R)), на кабель CHU-6 (HK-6) (MW-06H)
X2 = Sys (MiniFit MF-2x08R), на кабель MiniFit MF-2x08F
X3 = ISP tiny
X4 = Display (CWF-4R (WK-4R) (MW-04R)), на кабель CHU-4 (HK-4) (MW-04H)
X5 = ISP-Mega (BH-10R)

ZQ1 = 20MHz (HC49)

Опять перечень, объединённый по номиналам:
Код: Выделить всё Резисторы
0 (0805) — 5 — J1,J2,J3,J4,J5
0,1 (2Wt) — 1 — R45
1 (1206) — 2 — R15,R23
10 (1206) — 1 — R36
51 (0805) — 1 — R39
100 (0805) — 9 — R7,R8,R10,R11,R25,R26,R30,R43,R49
300 (0805) — 1 — R21,R28
330 (0805) — 1 — R50
470 (1206) — 3 — R12,R19,R20
1k (0805) — 3 — R14,R22,R29
2k (0805) — 1 — R13,R21
1,3k (0805) — 2 — R33,R37
4,7k (0805) — 20 — R1,R2,R3,R4,R5,R6,R9,R16,R17,R18,R24,R27,R32,R34,R35,R38,R44,R46,R47,R48
10к (0805) — 4 — R31,R40,R41,R42
15k (0805) — 1 — R28

Конденсаторы
470µFx35v — 1 — C1
220µFx10V — 1 — C3
100µFx35V — 1 — C14
0,47µF (0805/1206) — 1 — C22
100nF (0805) — 12 — C2,C4,C13,C15,C5,C6,C9,C10,C12,C16,C17,C19
22nF (0805) — 1 — C21
1nF (0805) — 3 — C11,C18,C20
22pF (0805) — 2 — C7,C8

Диоды, стабилитроны, транзисторы
M7 (SMA / DO-214AC) — 1 — VD21
LL46 (SOD-80) — 3 — VD1,VD7,VD11
LL4148 (SOD-80) — 2 — VD14,VD17
BYV27-200 (SOD-57 / DO-201AD) — 4 — VD15,VD16,VD18,VD19
5,1V (BZV55C5V1) (SOD-80) — 11 — VD2,VD3,VD4,VD5,VD6,VD8,VD9,VD10,VD12,VD13,VD20
BC847 (SOD-80) — 5 — VT1,VT2,VT3,VT4,VT5

Микросхемы
ATtiny13 — 1 — D1
ATmega168 — 1 — D2
L298N — 1 — D3
LM7805 — 1 — DA1

Оптотранзисторы
PC817C (DIP-4) — 2 — O1,O2

Разъёмы
CWF-6R (WK-6R) (MW-06R) — 1 — X1 Keyboard
CHU-6 (HK-6) (MW-06H) — 1 — Х1 на кабель
CWF-4R (WK-4R) (MW-04R) — 1 — X4 Display
CHU-4 (HK-4) (MW-04H) — 1 — X4 на кабель
MiniFit MF-2x08R — 1 — X2 Sys
MiniFit MF-2x08F — 1 — X2 на кабель
BH-10R — 1 — X5 ISP-Mega

Кварц
ZQ1 = 1 x 20MHz

Бузер
KPX1205B — 1 — BZ1

Предохранитель
5A Стекло 5х20мм — 1 — FU1

Дросель
10µH (EC-24) — 1 — L1

Печатная плата:
Из-за того, что мы решили впихнуть плату в определённый корпус (Z80) и все подключения сделать только одним разъёмом, плата получилась не простая, но оно того стоит! Вот так выглядят платы, изготовленные в Киеве:

Внимание 1! Плата шире корпуса на 0,6мм, но фольга начинается как раз на 0,6мм дальше. Так получилось, что пришлось сделать плату чуть шире. Поэтому, перед монтажом разъёмов плату нмного обработать напильником со сторон установки разъёмов, тогда она ложится в корпус идеально.
Внимание 2! Радиатор SA631045 всё равно высоковат для этого корпуса, поэтому перед установкой надо отпилить одну секцию от него сверху. Тогда он становится как родной. Для установке на плате предусмотрены отверстия (по 3 в ряд), которые надо рассверлить в длину для установки радиатора.
Внимание 3! Чтобы надёжно приаять радиатор надо снять часть маски по бокам от 3-х отверстий для его ног. Тогда при пайке получается надёжное крепелние радиатора к плате.

Для программирования Меги используется стандартный ISP 10pin разъём IDC-10 (X5), который доступен снаружи корпуса и может быть использован для лёгкого обновления прошивки меги. Для программирования тиньки разъёму места не хватило, поэтому программируется она таким же разъёмом (X3), но через переходник "папа-папа" надетый на торец платы. Надо только учесть, что питание на этот разъём развести не удалось. Поэтому, если Ваш программатор требует питания на разъёме ISP (например STK200/300), то его надо подать отдельно (на 2-й вывод разъёма), иначе прошить тиньку не получится.

Как уже писалось выше, схема (и печатная плата соответственно) допускает вариации.
Например для входа концевика сцепления:
— если у Вас концевик замыкается на землю при нажатии педали сцепления, то устанавливаются элементы R19, R20, VD7, R21 (300 Ом), J1;
— если у Вас концевик замыкается на +12V при нажатии педали сцепления, то устанавливаются элементы J2, R21 (2k), R22, R24, VT2;
Элементы отмеченные чёрным устанавливаются не зависимо от варианта входа, т.е. VD8, C10, R18 устанавливаются в любом случае.

Х2
1) +12V ("15" зажигание). Подключается к проводу, на котором появляется 12 Вольт при включенном зажигании и не пропадает даже при включении стартера. На проводе должен быть предохранитель 5-10А.
2) GND — общий. Силовая земля, прикручивается к кузову.
3) M- к мотору в приводе
4) M+ к мотору в приводе
5) +12V для питания датчиков в приводе, или запитке светодиода.
6) GND — общий. Водключается к общему проводу концевиков в приводе.
7) Подключается к концевику, который замыкается при достижении максимального положения привода.
8) Подключается к концевику, который замыкается при достижении минимального положения привода.
9) К концевику педали тормоза. При нажатой педали должно быть +12В.
10) GND — общий. Запасной или для концевика педали сцепления.
11) Подключается к датчику скорости или датчику ABS. В случае с ДС рекомендую делать вход чувствительным к минусу, в случае с ABS — к плюсу.
12) Концевик сцепления. Если его нету штатно, то рекомендую делать вход чувтвительным к минусу, а массу для концевика брать рядом с ним или на 10-м выводе этого разъёма.
13) Аналоговые кнопки.
14) GND — общий. Запасной.
15) Выход для светодиода.
16) GND — общий. Для пульта управления.

Выходы М+ и М- подключают так, чтобы при такой полярности привод двигался в сторону открывания ДЗ (т.е. в сторону максимального концевика).

X4
1) +12V для питания индикатора.
2) GND — общий.
3) TxD — передача данных от круиза к индикатору.
4) RxD — передача данных в круиз. Не используется.

X1
1) GND — общий.
2) Светодиод. Управление только плюсом.
3) Кнопка REST
4) Кнопка AUTO
5) Кнопка DOWN
6) Кнопка UP

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

Светодиодом можно управлять и по другому. Например у меня в приборке есть светодиод анодом подключенный к "15"му проводу, катод выходит на разъём приборки. Поэтому я использую другой вариант управления светодиодом. На схеме он анодом подключен к выходу для питания датчиков, но дела это не меняет.

Основные отличия от оригинала (gnomon72) и ремейка (OKLiK):
— добавлен вариант пульта на резисторах (большинство штатных пультов для круиза) на ATtiny13,
— зашутнированы светодиоды оптопар на входах концевиков (для исключения наводок); светодиоды питаются от 12В, чтобы никакая зараза не пролезла на 5В.
— резистор в цепи бузера (исключает помехи в цепь питания),
— убрал оптроны на входах "Стоп", "Сцепление" и "Скорость". Ну не откуда там взяться таким наводкам.
— выход 12В для питания датчиков в приводе (например датчики Холла) или для светодиода.
— подтянул входы драйвера к земле. Теперь при сбросе МК (когда выходы в 3-м состоянии) драйвер будет гарантировано выключен.
— конденсатор на РЕСЕТ сделал через резистор 100 Ом, для возможности программирования без выпаивания конденсатора.
— вернулся к драйверу L298N (26 грн), т.к. L6203 (72 грн) оказался очень нежным и успел спалить 2 штуки.
— Защита выходов, а не только входов.
— универсальный выход на светодиод — можно управлять +5В или землёй (у меня как раз на приборке есть свободный светик и управляется он землёй)
— универсальный вход ДС — управление "0"-ем или "1"-ей (от 2,5В).
— универсальный вход концевика сцепления — управление землёй или 12В.
— добавили защитный диод по питанию (М7). Если питание платы включить наоборот — диод вылетит, и выжжет предохранитель. Предохранитель должен быть перед проводом питания.

29.05.2012 — v0.7
Плодотворный день. Выяснили, что привод делает мало шагов и пришлось изменить прошивку. После заливки новой прошивки и устранения люфтов в приводе успешно спалили ещё одну L6203. Хорошо, что в воскресенье съездил на рынок и купил L298N на ней собрал и всё заработало. Наверное на ней и остановимся, т.к. она дешевлее и более дубовая. Также кой чего поменял по схеме — теперь всё выходит на один разъём, чтобы удобнее было подключать.

01.06.2012
Сегодня был первый полноценный выезд на трассу с КК. Я в восторге. Есть небольшая проблема с приводом (большой выбег после замыкания концевика), но уже видно отличный результат! Пока фото не привожу, т.к. всё меняется очень быстро. Когда будет окончательный вариант, то всё будет в лучшем виде!

18.06.2012 — v0.8
Окончательная версия схемы (надеюсь).

30.06.2012 — v0.91
Зря надеялся. Очередная версия схемы. При установке концевика на педаль сцепления понял, что его проще подключить к земле, чем к +12В, поэтому изменили входы "Сцепление" и "Скорость" для возможности управления как нулём, так и единицей.

07.07.2012 — v0.92
В связи с тем, что авторы прошивки сказали, что ресурсов в контроллере осталось очень мало, пришлось вынести функционал аналоговых кнопок на отдельный контроллер. Им стал ATtiny13.

12.07.2012 — v1.0 — Релиз.
Скажу словами Алекса: (ссылка на пост)

В посте прикреплён архив со схемой и печатной платой.

30.07.2012
Приехали платы и были немедленно собраны 2 штуки. Ошибок не обнаружено, всё работает.

1.08.2012 завершено внедрение сего дэвайса на мой автомобиль. На данный момент пользуюсь прошивкой cruise_4_7_2a_6_66imp_UARTtxt . Прошивки можно взять на сайте OKLiK`a (свежак — только там) или у меня во вложении (то, что ставлю себе).

В последней версии прошивки (4.7.2a) появилась возможность менять базу замера скорости. От 100мс до 500мс. Для тех датчиков скорости где не гуляет длительность импульса можно ставить базу 100мс, для других надо подбирать (сейчас катаюсь с базой 300мс). Параметр меняется в eeprom, чтобы Вам было проще я создал 5 файлов с содержимым eeprom сразу после прошивки, отличаются они только этим параметром (от 100 до 500). По умолчанию база замера 500мс, т.е. соответствует файлу eeprom_5.hex . Можно просто прошить нужный файл. Нужно только помнить, что это сотрёт калибровку и все настройки. Архив с пятью файлами во вложении (eeprom.rar). Ещё раз повторю — в файлах ТОЛЬКО содержимое eeprom.

12.08.2012 добавил софтинку для настройки параметров круизконтроля путём редактирования содержимого eeprom. Сама программа читать и писать eeprom не умеет, поэтому читаем его и сохраняем в отдельный файл любым программатором (PonyProg, AvrProg, avrdude и т.д.), потом открываем файл в проге, меняем что нам надо, сохраняем в другой файл и заливаем его назад в eeprom. В заголовке окна и в About написана версия прошивки под которую подходит конфигуратор. Если Ваш антивирус орёт на неё, то это Ваши проблемы, т.к. она чиста.

15.08.2012 Обновилась прошивка до 4.7.7. Много новых вкусностей!

31.01.2013 Зарелизилась прошивка круиза. Версия 4.8.3. Все вариации одним файлом. Источник, как всегда тут.

Обявления

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

error: Content is protected !!
Adblock detector