Автор Тема: Запалителни системи с управление на предварението  (Прочетена 103001 пъти)

Неактивен valex

  • Специалист
  • Много Напреднал
  • ***
  • Публикации: 1 512
  • Пол: Мъж
  • изчислителна техника
Re: Запалителни системи с управление на предварението
« Отговор #15 -: Декември 25, 2013, 09:29:01 am »
В този форум има малко инфо за аванс процесора на Румен http://www.renault-bg.com/smf/index.php?topic=77228.0
В момента имам такъв процесор, но двуканален при мен и смятам да го сложа на симулатора и да видя доколко е 'динамичен' по отношение на ускорения.
Една от идеите ми като започнахме да се занимаваме с MegasquirtAVR  е да се направи автоматизирано намиране оптималния ъгъл на запалването. Независимо от износването на двигателя, вида и качеството на горивото, атмосферни условия и други неща влияещи на горивния процес. Тази платка е просто средство за тестване на идеи :)
« Последна редакция: Декември 25, 2013, 12:18:32 pm от Maistora52 »

koko5

  • Гост
Re: Запалителни системи с управление на предварението
« Отговор #16 -: Декември 25, 2013, 02:11:10 pm »
elektros,
Не мисля, че в БГ ще има интерес към подобряване на екологията. Видяхме ги нашите дУпЕтати какво направиха със закона за данъците върху МПС. Понеже не могат да намерят информация за емисиите(да не говорим за измерването им) измислиха глупоста с годината на производство. Интересно какво ще стане ако им докарам едно VW костенурка от Бразилия(там още ги правеха до преди няколко години)  ;D

Относно разработката... сам разбираш, че дори стигнали на финала не можем да измерим емисиите, най малкото защото ЕВРО 3 и нагоре следят освен CO, CO2 и още доста други съединения, за които ще е необходим скъп газанализатор.

valex,
Размишлявайки снощи открих един недостатък у устройството на Румен (който е наличен и при мен): Няма точно измерване на оборотите! И при него, както и при мен оборотите се измерват като времето между два ръба(1->0 или 0->1), но тези ръбове не отговарят точно на положението на коляновия вал, тъй като EKU изменя аванса. Този проблем може да се продолее като се вкара сигнал от датчик на хол(ако положението на КВ е с такъв) или се вземе сигнала към инжекторите(той зависи от положението на КВ и натоварването). За да бъде точно ще трябва да се установи в каква посока ЕКУ удължава инжекторното време и за да се подбере подходящия ръб.

Дай малко инфо за ТАПа. Какъв процесор ползва и колко броя(един общ или за всеки канал по един). Иска ми се да преценя дали ще ми трябва още мощ :)

И още едно въпросче(незнам дали можеш да ми отговориш): Как програмираш АТМЕЛ-а? Става ли с кабела на LPT порта(AVRDUDE) или този метод работи само на старите контролери? ...питам защото може да обмисля да премина в другия лагер (от микрочип на атмел).
« Последна редакция: Декември 25, 2013, 02:19:51 pm от koko5 »

Неактивен caduceus

  • Експериментатор
  • Много Напреднал
  • ***
  • Публикации: 1 347
Re: Запалителни системи с управление на предварението
« Отговор #17 -: Декември 25, 2013, 02:31:07 pm »
Само малка вметка, тъй като видях цитата от форума на Рено за ТАП-я на Румен. На страница 18, двата поста най-горе визират моя оптимизатор К3 /който освен другото сваля радикално и емисиите/
http://www.renault-bg.com/smf/index.php?topic=77228.255
Колегата стефанчо беше силен скептик в началото, но сега както виждате казва "Въййййй"  ;D ;D ;D Това е най-простото решение и за новите еконорми - комплект оптимизатори К3. Работи при всички коли с ламбда, но старите дизели вероятно трябва да си слагат водородни клетки за да подобрят изгарянето. Иначе ако се спазват наистина новите екостандарти, трябва да ги спрат от движение.

По темата - необходимото предварение за обикновени пропан-бутанови уредби с К3 е +7 градуса на ниски и +15 градуса на високи обороти. Доказано на практика. При частична автотермия /по която работя от известно време с друго устройство, т.нар. автотермична клетка/ са необходими предварения над 50 градуса. Мегаскуирта ми е много интересен, защото може да намалява горивото и вероятно да дава устойчива работа на ДВГ при свръхобеднени смеси.  Така  че ако колегите направят годен за ползване продукт за бензинов инжекцион като моя, с удоволствие ще си купя един за тестове.
Поздрави
« Последна редакция: Декември 25, 2013, 02:45:06 pm от caduceus »

Неактивен valex

  • Специалист
  • Много Напреднал
  • ***
  • Публикации: 1 512
  • Пол: Мъж
  • изчислителна техника
Re: Запалителни системи с управление на предварението
« Отговор #18 -: Декември 25, 2013, 04:27:00 pm »
Пускам снимка. Ако има желание мога да пусна и основната част от схемата му. На базата на PIC16F628 мисля (не съм се задълбавал да проверявам. изтрил е всички надписи, но винаги може да се разбере кое какво е.  С това си вадя хляба :)  ). Като схемно решение не ми харесва, но предполагам че доста опит е сложил вътре. Кварца е 20MHz.
Изменението на ъгъла на аванса става плавно и не би трябвало да се отразява пагубно за измерването на оборотите. Поне при мен е така. Аз взимам информация от датчика на хол и на всеки сигнал се смята ъгъла на запалването и времената на инжектора. Това на базата на таблици за налягане , температури, напрежение, ... може и Ламбда.
Всички процесори от серията MEGA и TINY се програмират по един и същи начин. Може да се ползва PONYPROG с един програматор към RS232. Има мисля схемата му към сайта на PONYто. Елементарен е : няколко съпротивления и ценери. Иначе има програматори към USB ( http://www.sirius-pcb.com/index.php?mod=catalog&show=13 примерно). Всичките те се водят ISP programmers т.е. програматори директно към системната платка (със запоен процесор).
п.п Бръмна ми една идея: в ниските обороти може да се направи многоискрово запалване :)
« Последна редакция: Декември 26, 2013, 10:30:14 am от Maistora52 »

Неактивен valex

  • Специалист
  • Много Напреднал
  • ***
  • Публикации: 1 512
  • Пол: Мъж
  • изчислителна техника
Re: Запалителни системи с управление на предварението
« Отговор #19 -: Декември 25, 2013, 06:35:03 pm »
Пускам набързо начертана схема на Румен. Сигурно има неточности, но ме интересуваше идейната част. Горната част е управлението на крайното стъпало. Крайния транзистор е някакъв IGBT. Има два импулсни преобразувателя на +- 2.5V , които хранят драйвера за крайния транзистор. Като управлението му е ''галванично" разделено с кондензатор от процесора. Долната част е 'входа' от автомобилния компютър. Има 'имитатор' на бобини и сваляне на импулса към процесора, пак през кондензатор. Това е за всеки от 4 канала. Има още малко дреболии наоколо, но в общи линии идейната схема е такава.
Мисля си, че писанията ми не попадат под ударите на закона за авторските права :)

Неактивен valex

  • Специалист
  • Много Напреднал
  • ***
  • Публикации: 1 512
  • Пол: Мъж
  • изчислителна техника
Re: Запалителни системи с управление на предварението
« Отговор #20 -: Декември 26, 2013, 08:45:33 am »
Задачка за <8 клас. На мен ми е трудно да я реша :(
Имаме автомобил, който се движи по наклонен път праволинейно и равноускорително. Покрай пътя има на равни разстояния S стълбове на ЕнергоПро. Засичаме времето за което се изминава разстоянието между всеки два стълба Tx.
Търси се формула за времето Т4 на преминаване покрай следващия стълб ако имаме 3 последователни засичания на времена между стълбове Т1 Т2 Т3.
Прилагам и пищов: http://spravochnik-fizika.hit.bg/index_files/Page347.htm
« Последна редакция: Декември 26, 2013, 08:50:38 am от valex »

koko5

  • Гост
Re: Запалителни системи с управление на предварението
« Отговор #21 -: Декември 26, 2013, 09:04:16 am »
Значи съм на прав път :) остана да преработя алгоритъма така че с един процесор да смята всичко... но все не ми стига броя на таймерите.
Пика не е 16f628A! Ползвания е с 18 пина, а 628 в опаковка SSOP e с 20 пина.
Ако можеш пусни и снимка отдолу.

По твоята задачка... нали по-рано ми написа формулата за това - алфа-бета-гама.
Разбира се, реших да видя как работи, преди да се опитам да го имплементирам в кода.
Сложих формулата в клетка D1 в ексел, а в А1,B1,C1 измерените интервали (при теб стълбовете) :)

= C1 + (C1 - B1)/((C1 + B1)/2)*C1 + ((C1 - B1)/(C1 + B1)*2-(B1 - A1)/(B1 + A1)*2)/((((C1 + B1)/2)+((B1 + A1)/2))/2)*C1*C1



« Последна редакция: Декември 26, 2013, 10:33:11 am от Maistora52 »

Неактивен valex

  • Специалист
  • Много Напреднал
  • ***
  • Публикации: 1 512
  • Пол: Мъж
  • изчислителна техника
Re: Запалителни системи с управление на предварението
« Отговор #22 -: Декември 26, 2013, 09:33:12 am »
Пусни таймера да се върти постоянно, а само при фронтовете взимай стойността му. За изчисленията на интервалите проверявай дали крайната  стойност < от началната тогава значи, че таймера е превъртял и тогава преизчисляваш с превъртането.
Онова решение не ме устройва. Вкарани са коефициенти при сумирането на производните, което вкарва някаква неопределеност. За това търся друг начин. Това със задачката е 'аналов' метод на решаване. Може да имам проблем от дискретизацията на оборотите (времето за оборот го меря с таймер на 0.1mS).
Измислил съм и друг алгоритъм използващ скоростта и ускорението на промяната на времената между две засечки на обороти. Но нещо пак ми избягва :( По-късно ще го опиша.
« Последна редакция: Декември 26, 2013, 10:34:24 am от Maistora52 »

koko5

  • Гост
Re: Запалителни системи с управление на предварението
« Отговор #23 -: Декември 26, 2013, 10:27:22 am »
Оки, ще посмятам да видя какво ще излезе, така или иначе мислих да опитам дали мога да доразвия формулата така, че да смята на поне 5 интервала назад.

Относно таймера - Т0 е 8 битов и се превърта бързичко. При 600 оборота -> 100 мS. За да превърти не повече от веднъж: 100mS/500=0.2mS=200mikroS -> a това би означавало прескалер 256. При същия прескалер при 6000 оборота -> 10 мS таймера ще навърта 4 единици за 1мS, или 40 за един оборот, което пък означава на всеки 9 градуса по една единица -> твърде неточно.

Таймера на 0,1 милисекунда не е добра идея. По горните сметки... при 6000 оборота имаш 10мS за един оборот или 3.6 градуса за 0,1 милисекунда.

Неактивен valex

  • Специалист
  • Много Напреднал
  • ***
  • Публикации: 1 512
  • Пол: Мъж
  • изчислителна техника
Re: Запалителни системи с управление на предварението
« Отговор #24 -: Декември 26, 2013, 11:13:49 am »
Няма смисъл по-вече извадки. Само се увеличат сметките.
Така е за оборотите. Но при тези високи обороти не е фатална 3.6 градуса неточност. При мен има доста сметки в прекъсването. Другия вариант ще го ускорявам.
Мини на 16 битов бърз таймер за да не превърта.
Пускам втория алгоритъм, който май е верен ама нещо пак не ми върши работа. Не знам защо?

koko5

  • Гост
Re: Запалителни системи с управление на предварението
« Отговор #25 -: Декември 26, 2013, 11:57:31 am »
ddt4 = dt4  - dt3; - Тук се прави някакъв графичен опит за решавване, който не е коректен.
dt - време
ddt - скорост
dddt - ускорение

От тук горното твърдение, че скоростта е разлика на две времена издиша...
Затова не работи алгоритъма.
------------------------------------------------------
Относно таймеррите...
Предполагам си разгледал ПДФ-а който качих - там концепцията е двата таймера да се редуват на четен, нечетен оборот, а третия да мери оборотите.
При мен единия брои оборотите и времената, втория задава времето за зареждане, третия времето за "почивка" на бобината.
При Румен вероятно е различно, тъй като няма как с 3 таймера да управлява 4 канала.
По всяка вероятност с единия брои оборотите(при него е по точно защото това става на половин оборот при 2 канала) а с останалите два прави това което аз правя, но ги пуска по различен начин, така че да не се застъпват.
При теб как е?

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

Неактивен juliang

  • Заинтригуван
  • Много Напреднал
  • *
  • Публикации: 7 057
Re: Запалителни системи с управление на предварението
« Отговор #26 -: Декември 26, 2013, 12:23:51 pm »
Макар че не съм се задълбавал с тоя аванс процесор, да ви изложа как аз бих тръгнал:
Имам времето за завъртане T-2(преди 2 оборота), времето Т-1(преди 1 оборот). Ако Т-2 > Т-1 - мотора ускорява. Иначе - забавя. Или пък оборотите са постоянни. Мога да изчисля делта Т и да "предскажа" колко ще е времето за завъртане Т на оборота, в който сме в момента и оттам да пресметна кога да хвърля искрата.
Таймера... не можете ли да ползвате един таймер, който да измери "от началото до изчисленото време за подаване на искрата" и после "от както сме подали искрата до предполагаемото завършване на оборота"?
Примерно имаме 200 мс цикъл. Изчислили сме, че трябва да хвърлим искра на 165 мс. Настройваме си таймера на 165, пускаме го като дойде сигнал от ЕКУ-то, като изтече хвърляме искрата и после мерим от нея докато дойде следващия сигнал от ЕКУ-то (което трябва да е горе-долу след 35 мс, или ако е по-малко или по-голямо - това ще е делта Т). Така с един таймер ще измервате хем времето на един пълен цикъл, хем времето когато трябва да хвърлите искрата.
« Последна редакция: Декември 26, 2013, 12:26:46 pm от juliang »

koko5

  • Гост
Re: Запалителни системи с управление на предварението
« Отговор #27 -: Декември 26, 2013, 12:51:49 pm »
А тези 200 мс с какво ги измерваш? Това са ти времената Т-2,Т-1,Т....... тоест един таймер е постоянно зает със тях.

С втория таймер определяш момента на искрата(както предлагаш). Да, но за да имаме искра някой трябва да зареди бобината преди това - ето тук идва третия таймер. Ще кажеш че втория вече е своводен, но... ако имаме забавяне има риск той да ни затрябва за следващата искра, а още да не се е освободил.

Дотук ти трябват три таймера(както и на мен). Но казваме че искаме(много хубаво нали :) ) да управляваме ОЩЕ една бобина с НАЛИЧНИТЕ таймери. Какво правим? Почваме едно цепене на времената на половинки или... измисляме нова концепция!

Все пак да попитам... разработваш ли нещо - дай малко информация :) ... или просто от интерес по темата?

Неактивен valex

  • Специалист
  • Много Напреднал
  • ***
  • Публикации: 1 512
  • Пол: Мъж
  • изчислителна техника
Re: Запалителни системи с управление на предварението
« Отговор #28 -: Декември 26, 2013, 01:00:24 pm »
Скорост, ускорение са относително наименования. Имам предвид, че разликата между предното и сегашното време на оборота ще е същото както и сегашното и бъдещото време. И така нататък за другите междинни обороти. Съответно по същата логика и за 'ускорението'.
Скоростта на процесора не е много по-голяма - само 16 пъти. Пускам ти часта в прекъсването. Погледни какво се прави по таймер 0.1mS.
Имам организиран софтуерен таймер ма 0.1mS по който се следят времента на запускане и спиране на инжектора и бобината. Принципно тук могат да се добавят и другите канали на инжекторите. Като всичко е предварително пресметнато като времена. Оборотите се мерят в същия този таймер, кото софтуерно се брои до прекъсване от датчика на хол. Принципно по-правилно е да се ползват таймера за тези измервания.

Неактивен juliang

  • Заинтригуван
  • Много Напреднал
  • *
  • Публикации: 7 057
Re: Запалителни системи с управление на предварението
« Отговор #29 -: Декември 26, 2013, 01:23:44 pm »
Начи... не съм се пробвал още с ТАП-а. Ограничих се с ламбда контрола, тъй като не съм много в час със силовата страна на решението - как да управлявам тоците към бобините.
После - езика С за тия процесори за мен е извращение - направо се губя в тоя код... просто съм свикнал да го ползвам за компютър, не за тия процесори. Това което съм правил е било на чист асемблер. Става поне за мен малко по-разбираемо, а и предполагам по-бързо.
Явно нещо не ме разбрахте:
Имаш таймер TMR0. Знаеш че трябва да пуснеш искра на 165-тата мс. ЕКУ-то подава сигнал за искра. Ти си пускаш таймера. Имаш 2 варианта - или таймера да изтече, или да дойде втори сигнал от ЕКУ-то. Втория вариант означава че нещо яко си се ушил в сметките, защото означава че нямаш предварение, а закъснение. Евентуално би могло да се получи ако имаш значително увеличаване на оборотите за 1 такт, но не съм сигурен дали може чак толкова да се промени за 1 оборот.
Имаш измерени времена Т-2 = 220, Т-1 = 210. Очакваното време на този оборот е 200, ако мотора продължи да увеличава оборотите си. Теб ти трябва пускане на искрата с аванс 30 мс. Поставяш таймера на 170 (200-30). на 170-та мс. хвърляш искрата и поставяш таймера в режим "stopwatch" за да засечеш колко мс след тия 170 ще дойде новия сигнал от ЕКУ-то. Приемаме че идва след 45 мс. Преместваш променливите  - Т-2 става 210, Т-1 става 170+45 = 215. Усещаш че мотора забавя въртенето си. Изчисляваш новото Т - ще е 220. Изчисляваш че трябва да хвърлиш искрата на 220-30 = 180 мс. Слагаш таймера на 180. Хвърляш искрата. Пускаш същия таймер на хронометър и засичаш кога ще дойде новия сигнал от ЕКУ-то.... и така нататък.
Така с един таймер ще мериш хем времето между два импулса на ЕКУ-то, хем ще имаш времето когато трябва да хвърлиш искрата.
Естествено тия времена са условни - в тях трябва да вкараш и времената за изпълнение на самия код на програмата, което става след като напишеш кода.
« Последна редакция: Декември 26, 2013, 01:27:11 pm от juliang »