Перейти к содержанию

Круиз-контроль для Mitsubishi Grandis Atmega8535


Гость еще один max

Рекомендуемые сообщения

Не, это не вариант. Я жесткий сторонник минимализма в отношении авто. Все должно быть внутри, а снаружи только самое необходимое. И на кой мне бортовое напряжение, если его контролирует ECU? Как и расход топлива, температура снаружи, погода на завтра... Я так счастлив, что у меня нет бортового компа с дисплеем, а вместо него стоит хороший 2-диновый Кенвуд, который показывает картинки типа спектроанализатора и часы, ВСЁ! А на приборке только контроль АБС, ЕСП, подушек, ремней, дверей и чек-инжин (ну не считая скорости, тахометра и пр.), и от процесса наслаждения драйвом ничто не отвлекает...

Так что спасибо, уже только за идею с ЭЭПРОМом тебе полагается бонус. Буду проезжать ваши края, поставлю магарыч :smile: А дисплеи дополнительные - неееееееееее...

Приехал ЦАП, так серьезно упакован был:

post-1142-1275998742_thumb.jpg

Прям настоящий такой Analog Devices! Круто. Сегодня вечерком воткну, поуправляю, если время часик выдастся.

Ссылка на комментарий
Поделиться на другие сайты

  • Ответов 218
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

Изображения в теме

ну эт...как сказать хозяин барин...тода электрическы эстираемую эпамить микроконтра шить с программатора ну и копаться в ней через все это...тока что шить её адну...(у неё ресурс больше раз в сто :smile: )....самое то для хранения поправочных данных....коэффициентов....

ждем результы ...что за сей девайс ad7302..

Ссылка на комментарий
Поделиться на другие сайты

Уже прикупил 4 кнопы. Две будут увеличивать и уменьшать дельту напряжения, еще две будут так же корректировать временную реакцию. А контролировать буду так - прошью начальные значения, буду считать нажатия (прибавлять или вычитать) и записывать на бумажку. Мне кажется чем проще тем лучше.

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

Ссылка на комментарий
Поделиться на другие сайты

Макс.....предотвращение дребезга...по факту изменения состояния кнопки-делаем задержку на 3-6 милисекунд...патом заново делаем опрос состояния входа мк....и если ано после изменённое...то выполняем то что нада...если после задержки не изменилось...типа помеха....и все такое..пропускаем её .....

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

 

конструкция обнаружения изменения состояния порта и подавление дребезга....

if (knopka_1==0)

{delay_ms(6);

if (knopka_1==0)

{flag_knopka_1=1;

};

};

 

конструкция проверки отпускания кнопки и делаем что нада если это так....

if (flag_knopka_1&&knopka_1==1)

{flag_knopka_1=0;

<здессь пишем что надо сзделать при срабатывании>

};

 

..неудобство это то что на каждую кнопку нужно будет еще и иметь переменную флаг на каждую кнопку.и его нада будет сбрасывать в программе ...естесвенно логика работы кнопок...включил..нажал на входе у мк "0", отпустил +5 вольт..

Ссылка на комментарий
Поделиться на другие сайты

Получилось! Схема заработала в том виде, как спаял.

Тестовая программа:

unsigned char dac_a=0;
unsigned char dac_b=0;

while (1)
  {
  // Place your code here
PORTC=dac_a;//запись значения в порт
PORTD.6=0;//выбор порта А
PORTD.7=0;//синхронизационный импульс
//delay_ms(1);//пауза на запись
PORTD.7=1;//снятие синхронизационного импульса
PORTC=dac_b;//запись значения в порт
PORTD.6=1;//выбор порта В
PORTD.7=0;//синхронизационный импульс
//delay_ms(1);//пауза на запись
PORTD.7=1;//снятие синхронизационного импульса
dac_a++;//инкремент порта А
dac_b--;//декремент порта В
delay_ms(500);
  };

Делал вначале паузы при синхронизации записей в порт

delay_ms(1);//пауза на запись

потом закомментировал - ничего не изменилось, видимо скорости срабатывания ЦАП хватает.

Отлично все контролируется мультиметром - напряжение на порте А плавно возрастает, на порте В также плавно уменьшается. Супер!

Сегодня больше ничего не успею. Думаю тестировать с внешним резюком нет смысла, не может не сработать. Надо провести тест на нагрузочную способность ЦАПа (потянет ли он ECU), и собирать проводку в машине. А рычажок еще, блин, едет...

По антидребезгу завтра почитаю, спасибо, Женя!

Изменено пользователем еще один max
Ссылка на комментарий
Поделиться на другие сайты

Получилось! Схема заработала в том виде, как спаял.

Тестовая программа:

unsigned char dac_a=0;
unsigned char dac_b=0;

while (1)
  {
  // Place your code here
PORTC=dac_a;//запись значения в порт
PORTD.6=0;//выбор порта А
PORTD.7=0;//синхронизационный импульс
//delay_ms(1);//пауза на запись
PORTD.7=1;//снятие синхронизационного импульса
PORTC=dac_b;//запись значения в порт
PORTD.6=1;//выбор порта В
PORTD.7=0;//синхронизационный импульс
//delay_ms(1);//пауза на запись
PORTD.7=1;//снятие синхронизационного импульса
dac_a++;//инкремент порта А
dac_b--;//декремент порта В
delay_ms(500);
  };

Делал вначале паузы при синхронизации записей в порт

delay_ms(1);//пауза на запись

потом закомментировал - ничего не изменилось, видимо скорости срабатывания ЦАП хватает.

Отлично все контролируется мультиметром - напряжение на порте А плавно возрастает, на порте В также плавно уменьшается. Супер!

Сегодня больше ничего не успею. Думаю тестировать с внешним резюком нет смысла, не может не сработать. Надо провести тест на нагрузочную способность ЦАПа (потянет ли он ECU), и собирать проводку в машине. А рычажок еще, блин, едет...

По антидребезгу завтра почитаю, спасибо, Женя!

 

 

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

насчет нагрузочной способности цапа думаю вполне его хватит ибо смотрел по его дш...его выходной ток может достигать до 14 милиампер...это хватит с лихвой думаю...ну если канено у тя входное сопротивления входа на ECU не меньше будет 200 ом.......пока рычажок идёт сделай китайские кнопки на время ,пока придет устройство уже будет отлаживаться ва всю...

Ссылка на комментарий
Поделиться на другие сайты

Дубликация работает! Вчера потратил 3 часа, чтобы вдумчиво сделать разводку около ECU, но уверен, что потрачено не зря. Подобрал провод по цвету и диаметру к оригинальной проводке, все пометил, соединения тщательно пропаял, вычистил от флюса спиртом и закрыл термоусадочным кембриком. Вывел удлинительный кабель в багажник, спаял заглушку (для прямого направления сигнала с педали). МК прошил еще на работе вот так:

	  PORTC=read_adc(1);//чтение и запись значения в порт
  PORTD.6=0;//выбор порта А
  PORTD.7=0;//синхронизационный импульс
  PORTD.7=1;//снятие синхронизационного импульса
  PORTC=read_adc(2);//чтение и запись значения в порт
  PORTD.6=1;//выбор порта В
  PORTD.7=0;//синхронизационный импульс
  PORTD.7=1;//снятие синхронизационного импульса

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

Утром поехал на контроллере, разницы не почуял. Но в каждой бочке меда... Заезжал в магазин, вышел, завожу - вылезает Чек инжин, машин на педаль не реагирует. Поставил заглушку - та же песня... Аж вспотел мгновенно, вот думаю и приплыли... вылечилось отстыковкой аккумулятора и установкой заглушки. Доехал до работы, подцепил контроллер к программатору - все нормально, прошивка на месте. Залил тестовую для ЦАПа - тоже в порядке, не сгорел... В конце концов выяснилось - у меня в цепи 12 В стоял предохранительный диод КД522А. Видимо не выдержал тока, интересно, какой же ток потребления у контроллера? Порылся, нашел диод Шотки на 10А (был приготовлен комплект для усилителя), впаял. Сбегал к машине, воткнул - заработало! Уф... А то бы работать не смог :smile:

На сегодня план написать такую прошивку, чтобы в ЭЭПРОМ записала в виде массива данные соответствия резисторов педали. Та табличка, что я мультиметром снял хорошо. Но полную таблицу напряжений иметь надо, ибо АЦП точнее измерит, тем более на ходу. А потом можно будет слить ЭЭПРОМ, в Протеусе набросать схему с двумя индюками и переписать соответствия в табличку. Кто знает, можно ли совместить разные прошивки и ЭЭПРОМы? Т.е. если я напишу программу, которая будет заливать в ЭЭПРОМ, откатаю на железном контроллере, потом солью ЭЭПРОМ и изменю основную программу, они состыкуются?

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

Ссылка на комментарий
Поделиться на другие сайты

если я напишу программу, которая будет заливать в ЭЭПРОМ, откатаю на железном контроллере, потом солью ЭЭПРОМ и изменю основную программу, они состыкуются?

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

 

Макс привет.....если основная программа будет лезти по тому же самому адресу в еепромку то проблем не должно быть...

Ссылка на комментарий
Поделиться на другие сайты

Ребята, а гляньте-ка на вот такую микруху: MAX548 как внешний ЦАП со связью через СПИ (на будущее в смысле миниатюризации устройства). Поскольку SMDшки мне паять не светит и корпуса микрух иже с ними, остановлюсь на ДИПовых корпусах, и буду осваивать СПИ-интерфейс.

Какой МК к нему в пару будет достаточно? Мне кажется должно хватить полутора портов: 5 входов (2 АЦП, джойстик, педаль тормоза, датчик скорости), 3 выхода на ЦАП и 1 индикация. 1 пина не хватило, чтобы однопортовый МК применить типа ATTINY45, но без индикации никак низзя...

 

Добавлено после раздумий:

Макс привет.....если основная программа будет лезти по тому же самому адресу в еепромку то проблем не должно быть...

Это как понять? Если один и тот же массив будет под одинаковым именем?

Ссылка на комментарий
Поделиться на другие сайты

если памяти программ хватит то мона посмареть тиньку24.....если нехватит то папольше 44.....они двух портовые есть спи адц...14лап вроде...

 

 

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

 

Добавлено после раздумий:

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

Ссылка на комментарий
Поделиться на другие сайты

Погонял на прошивке, которая пишет данные в ЭЭПРОМ со входных АЦП. Бред какой-то получился:

post-1142-1276242069_thumb.jpg

Это соотношение напряжений на датчиках. Кто в лес, кто по дрова...

А получается так потому, что в функции чтения АЦП есть задержка, маленькая, но есть. И пока измерится один вход, на другом входе педаль уже пролетает соответствующее значение.

Вернулся к инструментальным замерам, там где разница составляла 0,3 В у педалей. Примерно это 0,3/(5/256)=15 отсчетов в ячейке (5 - опорное напряжение, 256 - количество отсчетов, 0,3 - абсолютное напряжение).

Сделал так - читаю АЦП с датчика А, вывожу напрямую на вход А, прибавляю 15 и вывожу на вход В. Все идеально видится, холостые сразу стабилизировались (а то плавали немного), отклик на педаль тоже вернулся в норму.

Т.е. вообще можно читать один датчик и на его показания опираться. А второй читать только для контроля и проверять в пределах ли напряжение. Если нет, то как-то сигнализировать (диодом моргать), что мол педаль неисправна. Видимо так в ECU и делается.

Хочу следующий вариант сделать с 10-ти битным АЦП-ЦАП, Atmega8 это позволяет. Не могу найти внешний ЦАП с двумя каналами, 10 битами и передачей через СПИ. Может подскажет кто? Аналог MAX548, только 10-ти битный?

Ссылка на комментарий
Поделиться на другие сайты

Привет макс...посмотри...вот нарыл например такой MAX5293 Двухканальные 10- битные ЦАП

... инфа на них..._alldatasheet.com.....да ток вот адно..удастся ли его найти живьём...

Ссылка на комментарий
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...