30. 7. 2002 - Projekt se nejak zakonzervoval, ale možnná na něj taky jednou dojde. Začal jsem před několika dny dělat palivoměr s halovou sondou. Vypada to, že to pujde. V prvni verzi by to mělo umět na stisk tlacitka zapamatovat prazdnou a plnou nadrž a linearne mezi tím zobrazovat procenta případně pak lze doplnit po zjištění kolik je obsah nadrže prepočet na linární litry, až se provede pár takování a zjistí se odchylky, opraví se program tak, aby si pamatoval další hodnoty a aproximoval křivku lépe. Zatím nevím jak by se to dalo kalibrovat jednoduše. Asi před tankováním stisknout tlačítko, a po nataknovní nakrokovat na displeji stejnou hodnotu a zapsat do paměti. Možná by bylo lepší kdyby palivoměr ukazoval, kolik se bude čerpat a ne kolik je v nadrži, až jednou by se to dojelo do nuly, pak by se dalo přepinat mezi oběma zobrazeními. Uvidime, to všechno je už jen věc programu a počtu tlačítek. Vidím to na 4. Zobrazovaní zatím předpokládám na LED 3 segmenty. Pro ECU jsem si našel krasnej lampovej displej s 8 znaky po 16 segmentech, sviti krasne zelene.
9. 6. 2002 - Provedl jsem komplexnější analýzu zapalování, časování předstihu a všeho kolem a nacpal to do nové stránky. Tímto pro dnešek končím, protože toho mám opravdu dost. Vypadá to však, že mám potřebné údaje a teď jde již jen o to nadrátovat to v autě, což znamená stíněné vodiče. Můj záměr s použitím plochého šedého vodiče mi nyní po tom co jsem viděl co se děje na drátu, který hodím volně do motoru, asi nebude to nejlepší. Mám domem, že výrobce taky svoje drátky nestíní, uvidíme. Líbí se mit, že CAS poskytuje krásné TTL signály, ovšem i ty bude nutné zpracovat. Procesor totiž pracuje na 3V logice.
8. 6. 2002 - Změřil jsem signál do koncového stupně zapalovací cívky. Vypadá sice divně, ale zřejmě to půjde lehce zavest do procesoru. Taky jsem se podíval na impulzy do vstřiků a zjistil, že při nižších výkonech jednotka používá dve delky vstriku. Jako by vstrikoval jednou dlouho a jednou kratce. Ted mě napadá, že jsem se měl podívat na delší úsek a podívat se jak často se krátký vstřik s dlouhým opakuje. Z osciloskopu to vypadá, že je to jedna ku jedné. Jen by me zajímalo, jestli ten krátký vstřik je v době se naplno vstřikuje do druhého válce, nebo opravdu střídá dlouhý a krátký impulz. Krátký impulz je asi 550 us a dlouhý je asi 2,15 ms. Délka toho druhého se zcela jednoznačně mění podle signálu na lambda sondě. Ovšem není to jako dělá Atrapa BRC, tohle se mění velmi zvolna a když to dosáhlo konečně kmitání lambdy, což trvalo dlouho, neboť jednotka byla velmi rozladěná, tak se délka vsřiku začala měnit a zároveň s ní lambda ovšem tak, že když se začal vstřik natahovat, lambda teprve začala klesat, tedy žádná zpětná vazba, což jsem předpokládal. Stejně to funguje při vyšších výkonech, pouze to tam pálí stejně dlouhé impulzy. A nakonec to nejzajímavější. I při 4 tisících bez zatížení je délka impulzu téměr shodná s volnoběhem. A při přidání plynu se délka moc nemění, jestli vzroste o 20% možná to je hodně, ale mě to nepřipadlo. Prostě to nedělá prasečiny jako když přidám při provozu na LPG. Pro opačný proces dojde k krátkodobému zkrácení impulzu, ovšem mám dojem, že to nevyplne palivo úplně.
Takto vypadá vstřikovací impulz při otáčkách asi 2500. Je vidět, že indukčnost vinutí ve ventilu opravdu není zanedbatelná a docela se divím, že ten indukovaný pulz není tvrději srážen. Jednotka ale zřejmě pracuje jako otevřený kolektor a pouze přizemňuje vyvod z vinutí vstřikovacího ventilu a tranzistor je zřejmě dimenzován na daleko vyšší napětí, takže se tam běžně na 200 až 300 us vyskytuje i 100 V (Průběh je REF-A, takže je nutné uvažovat 20V a 500us na dílek!).
14. 4. 2002 - Hlásím se po delší odmlce, ale to neznamená, že jsem celou tu dobu nic nedělal. Testoval jsem upravenou "jako-jednotku" EM BRC Lambda a musím řící, že úprava má své výhody i nevýhody. Nevýhodou číslo 1 je rozkmit při běžném nízkém zatížení, který je cítit na výkonu. Hned další je to, že lambda se více zdržuje v hodnotě "sytá směs", což plyne asi z toho, že překlápěcí napětí OZ neodpovídá 0,5 neb 0,45 ale vyššímu napětí. Zajímavou vlastností, o které nemohu tvrdit, že by byla výhodná je to, že jednotka je schopna při brždění motorem velice přesně nasadit lambdu do středu a už se ani nehne. Většinou přiletí z vyšího napětí a zřejmě při pomalém průtoku a vyšších otáčkách stačí aby v okamžiku když klesne na střední hodnotu servo zastavilo a pokud jedu přibližně stálou rychlostí a nejezdím do zatáček, lambda skutečně přesně sedí na středu. Toliko k úprave BRC jakojednotky. Dalším postupem ve vývoji je zmapování zapalování Subaru L série a zároveň s tím jsem nalezl nějaký snímač polohy klikovky, který není jak bychom čekali na setrvačníku ale pod rozdělovačem. Vedou k němu 4 dráty, ale zatím nevím nic víc. O zapalování naopak vím skoro vše a vím kde šmiknout drát a odvést do mé jednotky a zase zpět. Zvyšovač předstihu se totiž jeví jako nejjednodušší zařízení, které se do jednotky naprogramuje. Zároveň s algoritmem zvyšování předstíhu (prozatím budu zvyšovat o 0, abych vůbec ověřil jestli to chodí) získám možnost měřit otáčky a někam do registru ukládat aktuální hodnotu, kterou si budou používat další části programu. Potřeboval bych ale změnit přesné úrovně, protože tranzistorový (nebo co to je) knocový stupeň zapalování je až pod cívkou a je bohužel zalisován, takže netuším, co tam je za součástky a nejlepší by bylo hodit ten drát na osciloskop, což asi udělám.
23. 3. 2002 - V poslední dny jsem neměl moc času. Hledal jsem inspiraci na diskuzi lpg@pandora.cz a dělal všechno možné jiné. Pak jsem se začal zabývat snímáním pozice proudového serva a vyplynula z toho úprava řídící atrapy EM BRC Lambda, kterou stále v autě používám. Jestli ta úprava funguje. To uvidím teprve až s tím někam pojedu. Asi to bude chtít více utáhnout servo a více povolit seriový šroub na hadici, aby jednak nebylo servo šroubem omezováno při nízkých výkonech (volnoběh a tak), kdy je potřeba otevřít průchod hadicí co nejvíce a naopak aby při plném výkonu servo zvádalo uzavřít. Zatím se to nedařilo nastavit obojí, buď to zavíralo, ale akcelerace spožeděná, nebo to nezavíralo a akcelerace a směs na volnoběh dobrá. Pravděpodobně ještě bude nutné upravit zpětnou vazbu u posledního OZ nebo seriový odpor v koncovém stupni, to sem to tohoto deníku už moc nepatří, takže jestli něco dalšího na této jednotce upravím, bude to ve zmiňovené stránce.
18. 3. 2002 - Mám další poznatek. Referenční napětí v převodníku není až tak přesné jak jsem si myslel. Musím se podívat pořádně do katalogového listu, jak to teda je. Proč to píšu. To vychází z včerejšího poznatku, že budu muset napájet operační zesilovač za DA převodníkem přímo z 12V, abych docílil plného otevření serva. I když ani to není zcela definitivní, jde přeci o proud a ne o napětí, takže pokud zmenším odpor na bázi konzového tranzistoru, dostanu se možná na rozumné fungování i při OZ napájeném z 5 V. Ovšem o tom zase pochybuju, protože 5 V nesymetricky je docela málo, spíš by to chtělo aspoň 8 V a už jsme zase u toho, při poklesu napětí v sití na 10V už stabilizace nebude nejlepší, možná poklesne i těch 8 V a zase je tu problem. Takže to nechám přímo na 12 V a budu si měřit napětí v síti a podle něho budu upravovat výstupní hodnoty na DA převodníku. To bude ale chtít měnitlený zdroj napětí od 8 do 15 V, donést si servo z auta domů a experimentovat. Teoreticky mám jasné, jak to udělat, jen jen otázka, jestli se neuplatní někde něco, na co jsem zapoměl. Ostatně tenhle experiment nebude na škodu, aspoň si zjistím proudy potřebné k odchýlení záklopky a k jejímu maximálnímu otevření. Uvidíme kdy to zvládnu, protože příští týden se budu máchat v Rudém moři a musím si taky něco málo zabalit. Takže experimentování o nejbližším a následujícím weekendu nebude.
A ještě mě napadlo, že obecné doporučení pro tyhle multiplexované převodníky je používat signály s menší impedancí. Jenze Lambda sonda k takovem zdroji zrovna nepatří. Takže zvažuji použít nějaký vstupní zesilovač se zasilenim 1 s fet tranzistory na vstupu. Zatím jsem nemusel nic kupovat, všechny obvody pocházejí z různých torz zařízení, co jsem měl doma. Takže i v případě zesilovače budu nejdříve hledat doma. Finální design samozřejmě nebude postaven na součástkové základně co dům dal, to dá rozum. Já to musím ventilovat raději už teď protože znám šťouraly, co mi začnou říkat, kde seženu třeba tamten OZ a podobně. Proto taky zatím nezveřejňuji schéma, jednak teď zrovna žádné platné není a potom, schéma pro součástky, které nejsou k mání a místo nich tam jsou použíty symbolické značky z jiných není zrovna nejelpší uveřejňovat, pak se to někomu dostane do ruky a jediné, co se může stát je, že se to obrátí proti autorovi. Ale jinak se nebojte schéma bude určitě, to slibuju. (To totiž není zádné knowhow, jak to dopadne se software to je jiná otázka:)
17. 3. 2002 - Jednotka byla dneska poprvé v autě, ale na první pokus to dopadlo docela špatně. Nic neshořelo, ale neustále se resetovala. Po doplnění filtračních kondenzátorů na kdejaký napájecí drát se resety odstranily. Druhý pokus ukázal, že zapojit výstup L2722 přímo na bázi tranzistoru koncového stupně není nejlepší řešení. Ještě, že LM2722 má teplotní ochranu. Takže jsem se nechal inspirovat původní jednotkou, kde je koncový stupeň řízen "pouze" LM324, což je obvod, který snese daleko méně, než L2722. Při této příležitosti jsem prozkoumal vlastní provedení koncového zasilovače.
Po nějaké době: Velmi překvapivé bylo zjištění, že jednotka reaguje příliž rychle a to jsem dvakrát zmenšil koeficient rychlosti reakce. Takže program předávám na konstatní reakci. To znamená, nebude záležet jak moc lambda ulétne od středu, rychlost změny polohy serva bude konstantní. Je to logické, protože lambda je vpodstatě 2 stavová, a to, že není na 1 V ale jen na 0,8 V může znamenat pouze to, že není ještě plně zahřátá.
Po nějaké době: Auto s jednotkou kupodivu jezdí. Reakční rychlost směrem nahoru byla nastavena 3x větší než směrem dolů. Výsledkem je, že lambda kolísá se střídou 3:1, tedy více méně neustále sytější směs než je lambda-optimum. Zvládá to ale se servem pohybovat od dorazu k dorazu, takže ho dokáže (sice po dlouhé době, to je dáno pomalým reakčním mechanizmem směrem dolů) zavřít tak, že vždy lambda aspoň na chvilku proletí přes optimum dolů a zpět. Volnoběh to drží přibližně jako analogová jednotka. Co dodat. První prototyp funguje. Možná ještě dnes, nebo zítra reprogramuji logiku tak, abych viděl kolik je potřeba budit koncový stupeň pro plné otevření serva a nehnal se zbytečně s budícím signálem do krajních mezí napájení. Když ale nad tím uvažuji, tak se na to možná vykašlu, protože postačí přiotevřít šroub na hadici a servo se nebude muset tolik otevírat a nemusím řešit jak mu pořidat proud. Teď už nebude problém zapojit další vstupní obvody a to nejtěžší začně být opravdu aktuální - algoritmus.
Foto jednotky jednotky bez procesoru a displeje 17. 3.
16. 3. 2002 - práce na vývojové verzi jednotky moc nepokročily, alespoň ne v oblasti software. V hardware je situace lepší. Připojil jsem převodník, v zapojení napěťového výstupu. Poskytuje napětí od 0 do 2,5 V. To se mi pro buzení koncového stupně zdálo málo. Takže jsem doplnil operační zesilovač. V jednotce BRC co mám je použito LM324, ten jsem také doma našel, ale už jsem měl připraven L2722, což je dvojitý OZ s výstupním proudem až 1A, což by mělo pro buzení koncového stupně stačit. Upravil jsem BRC jednotku tak, že na 5 kolíku DIN je nyní jeden pin vyhrazen jako vstup a po přepnutí přepínače v jednotce je tento pin spojen s bází koncového tranzistoru, zatímco původní signál od OZ v jednotce je odpojen. V části SW jsem právě doprogramoval velmi primitivní zpětnou vazbu. Snažím se zachovat vnitřní uložení hodnot v logicky srozumitelných číslech i když je to na úkor paměti a rychlosti. Takže otevření serva ukládám v procentech v reálném vyjádření a až na výstupu to převádím na 8 bitové binární číslo. Podle mě to má jisté výhody, uvidíme později až budu muset ta data ukládat, přeci jenom 4 bajty a 1 bajt je dost rozdíl. Jednotka se nyní chová jako ta původní BRC EM jednotka, tedy při lambdě nad 0,5 V zavírá servo a pod otevírá. Čím větší je odchylka napětí od středu tím rychleji se servo pohybuje. Na rozdíl od BRC EM jednotky realizuje i režim otevřené zpětné vazby. Jakmile během asi 7s nenadetekuje pohyb napětí lambdy, nastaví servo do předem předepsané polohy a nic víc nedělá. Aktivuje svůj běžný režim až když se nalětí na lambdě začne hýbat. Do režimu otevřené zpětné vazby je uvedena jednotka po resetu, což je asi 0,5 sekundy po zapnutí napájení, to by mělo zajistit ustálení hodnot a nevyskočení z režimu OZV ani při startování. Zároveň ukazuje hodnotu lambdy a otevření serva na displeji (na 3. sloupci ukazuje teplotu procesoru :). Zítra zkusím praktické zapojení do auta. Jakmile otestuji toto, natáhnu v autě kabely i do motorového prostoru napevno a napojím je na všechna čidla. Je to asi jednodušší, než se hrabat u řídící jednotky, protože nemám nikde schéma, který vodič je který a jednotka má asi 6 konektorů, těžko oddělatelných, sama jednotka se blbě vyndává a ještě se musí sundávat spusty krytů, to je opravdu jednodušší napájet dráty přímo u motoru.
Foto jednotky jednotky bez procesoru 16. 3.
14. 3. 2002 - připravil jsem si vstupní děliče napětí a zapojil pro klapku a váhu vzduchu. Pro zapojení do auta mi chybí ještě nějaký konektor a dlouhé kabely. Zkušebně jsem napsal program co na LED displeji zobrazuje hodnotu lambda sondy a na druhém sloupci binárně vyjádřenou teplotu procesoru. Vstupní odpor procesoru je poměrně malý, protože pokud zapojím na vstup z lambdy (fiktivní, nahrazuje ji trimr jako dělič napětí) přes odpor 2M2, tak pokud dělič produkuje 0 V, na převodníku to ukazuje kolem 0,5 V. Nevím co s tím. Snad vstupní OZ s fet vstupy, zapojený jako neinvertorující sledovač (= zasílení 1). Druhá možnost je píchnout lambdu přímo na vstup převodníku, nebo použít řádově menší odpor. Poslední možnost je nakalibrovat převodník tak, aby tam těch 2M2 mohlo zůstat, což mi ale nepřipadá nejlepší, protože odpor se s teplotou mění a celá stupnice by se asi posouvala sem a tam. Taky mám již připraven dvojitý DA převodník, zatím nezapojený k procesoru. Je to Maxim MX7628. Vytáhl jsem ho z jednoho harddisku. Jestli se mi zítra podaří udělat vstupní drátárnu, tak mohu přes víkend zkusit nějakou aplikaci přímo na autě. Asi bych měl začít takovejma nesmyslama, jako otevření serva na určitou nastavenou hodnotu do nastartování motoru, tato hodnota se později získá jako průměrná pozice serva na volnoběh těsně po nastartování motoru kdy bude optimalizace na nejlepší směs probíhat ne podle lambdy ale podle otáček. S tím ale souvisí, zda bECU nahodou nereguluje prestihem i otáčky sytiče. Zároveň tato hodnota se uplatní pouze na studeném motoru, tedy pokud bECU otevře obtok sytiče ... jsou to maličkosti, ale bude to podmínek, že se v nich člověk může rychle ztratit.
13. 3. 2002 - napadlo mě, že v češtině se píše za dnem i měsícem mezera, takže od příšt tak. Jednotka moc nepokročila, dneska jsem měl jiné věci na práci. Takže jsem dopsal pouze obsluhu displeje a ted se koukam jak mi to ukazuje hodnotu lambda sondy, kterou mění generátor náhodného čísla. Zatím nic víc. Snad do konce týdne udělám aspoň vstup na klapku a váhu vzduchu. Servo budu moci nějak připojit přímo do stávající jednotky a nepatlat se zatím s koncovým stupněm. To záleží na tom jak bude zítra a pozítří čas.
12.3.2002 - kašlu na převodník, to se uvidí později. Podstatné je rozchodit aspon základní funkci, něco jako dělá moje současná jednotka. Potom přidat třeba klapku a naprogramovat režim brždění motorem bez spotřeby paliva. Pak přidat i váhu vzduchu a zkusit jednoduchou 2 rozměrnou tabulku. Nakonec zkusit vymyslet jak spočítat zatížení ze známých veličin a podle toho dělat směs více hustější nebo chudější. Dneska jsem udělal výstupní uživatelský panel. Tedy jde o přední panel z odepsané UPS, je tam asi 16 diod, mají vlastní registry a původně se to ovládalo 2 dráty. Přidal jsem 3, asynchronní reset posuvných registrů, ale vzápětí jsem zjistil, že je zbytečný. Stačí přece vždy zapsat plnou délku registru a nemusí mě zajímat, co tam bylo. Jelikož ty obvody zvládají takt řídově desítky megaherců, tak se s tím krásně pracuje, žádné čekání, prostě to tam z procesoru naperu, co to dá. Zatím ale používám ten reset před každou změnou obsahu. Je to jeden vodič navíc, takže se ho zase zbavím. Chtěl jsem udělat fotky, ale koukám, že už je 14.3. takže na fotky není čas a dokud to nebude něco dělat, nemá cenu to ukazovat.
9.3.2002 - znovu jsem přehodnotil nutnost použití převodníku. Pokud to nebude nutné, nebudu ho používat vůbec a celý problém vyřeším pomocí PWM. Začínám mít pocit, že i když zatím nemám jasno v programu, měl bych si udělat vývojovou desku a začít na ní budovat vstupní a výstupní obvody, protože bez toho asi nemá ani cenu začít programovat. Pokusím se o to během příštího týdne. Začal bych se zpracováním 4 signálů: Lambda, Klapka (to jsou vlastně 2), Váha Vzduchu a Otáčky. Trošku jsem nad tím uvažoval a viděl bych to na 2 samostatné tabulky. Jedna by přiřazovala k hodnotě VV (možná by měla mít 2 rozměry - VV a O) nějakou hodnotu pro řízení Serva a ta by se opravovala na základě signálu z L. To by se dělo pouze pokud by nedocházelo ke změně polohy K. Při změně polohy K, by se naopak učila druhá tabulka, která by říkala, jak se ma dočasně a okamžitě změnit S, než se dosáhne vyrovnání. K vyrovnání dojde v okamžiku kdy změny na VV nebo O budou nepatrné. Problém je, jak učit druhou tabulku. Tohle byla jedna možnost. Druhá je vícerozměrnou tabulku pro VV a O i K, jenže jak učit tu, když do nekterých souřadnic se skoro nikdy nedostanem. A jak udělat učení a jak kolísání kolem střední hodnoty bez přeučování, to je stále otázka, kterou jsem více méně nevyřešil.
4.3.2002 - přehodnotil jsem použití převodníku, protože komunikaci s uvedenou sérivou zběrnicí bych si musel napsat sám a to se mi nechce. Takže hledám jiný převodník se zběrnicí SPI a pokud nenajdu asi padne volba na Analog Devices DAC08, což je nejlevnější varianta, hnedka po sestavě odporů. Bohužel se nevyhnu blokaci 8 vystupu, v nejhoším mohu přidat nějaký latch a používat ty vodiče i pro ovládání něčeho jiného, například nějaké výstupní zobrazovací jednotky (LCD, vlastní řadič LED a pod.). Zítra proberu další součástky, které se dají běžně koupit v krámě a uvidíme, jestli se tam najde něco levného a sériového. Bojím se, že pod 200 korun nic nebude.
21.2.2002 (večer) - ráno jsem nalezl v katalogu GM rozumný DA převodník se zběrnicí I2C. Stojí jen asi 75 korun, což lze pro prototyp akceptovat a i když je jen 6 bitový, lze přece spojit 2 výstupy a realizovat vyšší přesnost a i tak ještě několik DA výstupu zůstane, je totiž 8 kanálový. Zbývá akorát nakreslit značku do schématu a pouzdro na PCB, což asi udělám o weekendu a nebo se na to vykašlu, protože stejně prototyp nabastím ně nějaký univerzál.
21.2.2002 (těsně po půlnoci) - po dlouhém zvažování jsem se rozhodl použit pro výstup na servo externí DA převnodník se sériovým vstupem. Použití SPI zběrnice bude výhodnějši nez realizovat DA převodník pomocí PWM, když časem se stejně ukáže vhodnější použít servo s krokovým motorem. V tom okamžiku se zruší DA převodník a čítač, který by jinak musel obsluhuvat PWM, bude už nyní volný např. pro řízení předstihu.
16.2.2002 - oficiální zahájení projektu, proměření senzorů a zahájení návrhu zapojení, stránka s fotografiemi senzorů a zástavbu, popis prvních 2 senzorů, zjištění, že asi bude potřeba prověřit další senozry a najít konektory pro imobilizer a něco podobného implementovat do ECU4LPG.
Veškeré informace na těchto stránkách jsou autorským dílem z pohledu autorského zákona a je nutno k nim i tímto způsobem přistupovat. Pokud chcete některé obrázky nebo části textu dále jakýmkoli způsobem rozšiřovat nebo publikovat, je nutné mít výslovné svolení autora.