Palubní počítač pro VAZ 2101 – Žiguli

Projekt předmětu MMIA

 

Bc. Martin Klíma, 2009

 

 

Tato práce se zabývá návrhem a konstrukcí palubního počítače pro vozy VAZ – LADA staré řady 2101 – 2107 se zaměřením na zákadní typ. Ukazuje možnost instalace moderního zařízení do historického vozu, či vozu starší koncepce s karburátorovýmy motory s neřízeným procesem spalování. Popsaný palubní počítač zajímavě doplňuje vůz o nový prvek a v některých odhledech předčí současné systémy moderních automobilů.

Deska plošných spojů je uzpůsobena pro montáž do vozu VAZ 2101 – Žiguli. Použít však lze pro řadu jiných vozů prakticky bez úprav, pouze zamontovaná ve vhodné krabičce.

 

1                Návrh palubního počítače

Zde popsaný palubní počítač (PP) je komplexem dílčích řešení, zahrnující jak problematiku sběru dat ve vozidle, tak jejich zpracování.

1.1          Problematika sběru dat

Pro rozbor problematiky sběru potřebných dat, je nutno říci, jaké jsou požadavky na výstupy PP a jaké jsou možnosti v sortimentu snímačů. Žádané výstupy jsou

·        Ujetá dráha a rychlost vozu, případně denní počítač kilometrů,

·        okamžitá spotřeba,

·        průměrná spotřeba pro různě dlouhé intervaly,

·        zásoba paliva v nádrži,

·        odhadovaný dojezd na zásobu paliva maximálně a pro aktuální způsob jízdy od posledního startování či splnění jiné podmínky,

·        doplňkové informace jako teplota motoru, palubní napětí, otáčky motoru, zařazený převodový stupeň…

Vybrané údaje se logují s časovým údajem a na požádání sdělují osobnímu počítači. Některé údaje se průběžně zobrazují na displeji.

1.2          Použité snímače a čidla

Vzhledem ke konstrukci vozidla a vybavení přístroji a snímači je vhodné založit výběr snímačů na těch, které již vozidlo obsahuje, nebo jsou jinak dostupné. Jistou roli může hrát snaha o minimální narušení vozu z hlediska mechanického nebo vzhledového, avšak zásadní je funkčnost a odolnost vůči podmínkám ve voze panujícím.

1.2.1    Snímač dráhy

Vozy s analogovým tachometrem hnaným bowdenem od převodovky poskytují údaj o ujeté dráze a okamžité rychlosti ve formě nevhodné pro elektronické zpracování, proto je třeba přistoupit k instalaci vhodného snímače.

Konstrukčně jednoduché je provést úpravu stávajícího náhonu tachometru vložením vyrobeného mezikusu s např. optozávorou nebo přímo upravit některý z dílů náhonu a o optozávoru či jiný snímač jej doplnit. Lze použít indukční čidla nebo Hallovy snímače. V tomto případě byl zvolen způsob úpravy tělesa tachometru vyvrtáním otvoru skrz přírubu spolu s hřídelí náhonu tachometru. Na takto upravené těleso lze připevnit LED infradiodu a např. fototranzistor ve funkci optozávory. Takový snímač poskytuje díky vhodným převodům dva impulzy na každý ujetý metr.

Z elektrického hlediska je tento snímač 3 resp. 4 svorkový; jeden vodič je společný pro optický vysílač LED i pro optický přijímač FT. Dále má jak LED tak FT napájecí přívod.

1.2.2    Snímač okamžité spotřeby - průtokoměr

S ohledem na možnosti měření spotřeby paliva u vozidel s karburátorem nelze provést pouhý výpočet z doby vstřiku paliva jako u soudobých vozů, existuje však možnost měřit přímo průtok paliva palivovou soustavou. K tomuto účelu se hodí libovolný průtokoměr schopný pracovat v rozsahu průtoků asi 2 - 30 l/h, odolný vůči palivu a tolerantní k podmínkám panujícím ve voze. Vhodný průtokoměr lze koupit jako náhradní díl do vozů vyráběných v bývalé NDR jako jsou Wartburg 353W a Trabant 601, nebo jako univerzální sadu vhodnou pro množství vozů z období 80. let minulého století od stejného výrobce – FER Ruhla, DDR viz. [1],[2].

Použitý průtokoměr pochází z vozu Trabant 601 viz. Obr.1. Je konstruovám jako turbínka s oběžným lopatkovým kolem a optoelektronickým snímáním. Napájí se ze zdroje 5Vss/50mA a poskytuje na svém výstupu impulzy konstantní šířky. Pro zachování možnosti připojit původní LED ukazatel z univerzální sady pro vozy LADA a podobné byla upravena šířka impulzu pro ukazatele s větším rozsahem. Typická převodní charakteristika průtokoměru je bohužel nelineární.

 

Obr.1: Průtokoměr 3.0551/06 pro vůz Trabant 601

1.2.3    Snímač zásoby paliva v nádrži

Množství paliva je ve voze indikováno poměrovým analogovým měřicím přístrojem který porovnává napětí získané ze snímače hladiny paliva v nádrži s palubním napětím pro vyloučení chyby závislé na palubním napětí.

Vlastní snímač hladiny paliva v nádrži tvoří rameno s pouzdrem, ve kterém je umístěn potenciometr a kontakt kontrolky nouzové zásoby. K potenciometru je připojena páka s plovákem, který plove na hladině paliva. Charakteristika tohoto snímače je nelineární z důvodu složitého tvaru nádrže, proto je vhodné plovákový palivoměr ocejchovat pomocí měrné nádoby a vytvořit cejchovní tabulku, resp.křivku.

1.2.4    Ostatní snímače použité v konstrukci

Mezi další sledované veličiny patří teplota motoru přípdně venkovní/vnitřní tepota a palubní napětí pro správnou funkci čidla teploty a snímače paliva. Pro měření analogových veličin slouží A/D převodník použitého mikrokontroléru ve spojení s děliči napětí, případně ochrannými vstupními obvody. Pro měření teploty motoru je použit původní termistorový snímač v nezměněném zapojení. Termistor je značně nelineární; typická převodní charakteristika viz. Obrázek. Dále je možné měřit otáčky motoru za pomoci ochranného a přizpůsobovacího obvodu. Všechny potřebné signály ze snímačů jsou dostupné na elektrické přípojce tachometru vyjma přívodu pro otáčkoměr a průtokoměr.

1.3          Zpracování sebraných dat

Údaj o ujeté dráze vozidla se zjišťuje prostým čítáním impulzů ze snímače dráhy. Rychlost se z něj určí podle množství načítaných impulzů za časovou jednotku, která je dána obvodem reálného času, případně podle oscilátoru mikrokontroléru. Podobně je získán údaj o spotřebě paliva, avšak s jednou změnou, což je korekce naměřené hodnoty podle převodní tabulky/křivky. Průměrná spotřeba je vypočtena z údajů spotřeby za daný časový interval resp. ujetou dráhu. Je možné počítat dlouhodobé průměry.

Ze znalosti vlastností palivoměru se stanovuje obsah paliva v nádrži a následně za pomoci údaje poslední průměrné spotřeby, která charakterizuje aktuální styl jízdy, se odhaduje pravděpodobný dojezd vozu. Optimální je adaptivně přizpůsobovat hodnotu poslední průměrné spotřeby s ohledem na délku v kuse ujeté trasy, tedy nejlépe od okamžiku rozjetí vozu na začátku cesty.

Analogové hodnoty jako je palubné napětí, hladina paliva a teplota motoru se korigují podle palubního napětí a podle příslušných převodních charakteristik, které jsou reprezentovány tabulkami hodnot. Samozřejmostí je zobrazování vybraných údajů na znakovém LCD displeji umístěném v zorném poli řidiče.

 

 

2                konstrukce Palubního počítače

Konstrukce PP je uzpůsobena možnostem montáže a použití ve vozidle.

2.1          Elektronická část PP

Elektrické zapojení PP vychází z možností daných konstrukcí vozu, který je vybaven dnes již klasickou stejnosměrnou soustavou o napětí 12 V a ukostřeným záporným půlem baterie. Zapojení desky PP potom navazuje na zapojení sdruženého přístroje kde je možné odebírat většinu potřebných napětí či signálů. Schema zapojení viz. Obr. 2.

Obr.2: Schema zapojení palubního počítače

 

Jádrem PP je mikrokontroler ATMega16, který poskytuje dostatek portů a periferií potřebných k propojení s vozidlem a dalšími částmi PP. Obsazení portů není zcela kritické, obvod má záměrné rezervy. Port A má interně připojený A/D převodník, jsou k němu tedy připojeny všechny analogové vstupy z nichž jeden je určen pro měření palubního napětí a další tři jsou univerzální. Port B je využit pro programovací rozhraní SPI a pro dvouvodičovou sběrnici I2C. K této sběrnici jsou připojeny dva obvody – obvod reálných hodin a EEPROM paměť pro ukládání dat. K portu C je připojený Znakový displej a zabírá téměř celý. Poslední z portů, port D je využit seriovou linkou pro komunikaci s počítačem, dále jsou k němu připojeny snímače průtoku a dráhy na přerušovací vstupy a nakonec jsou z portu vyvedeny 4 volné piny, které je možné využít například pro ovládací tlačítka či jiný účel.

Zobrazení údajů je zajištěno dvouřádkovým znakovým displejem LCD s integrovaným řadičem podle standardu HD44780.

Napájení je provedeno pomocí stabilizátoru 5V, který napájí všechny použité obvody. Obvod reálného času má zálohovací vysokokapacitní kondenzátor o kapacitě 0,1F.

2.2          Deska plošných spojů PP

Deska plošných spojů je navržena tak, aby ji bylo možno jednoduše připevnit na zadní stranu tachometru – sdruženého přístroje (viz. Obr. 3), kde je vhodné relativně bezpečné místo a šroubek použitelný pro připevnění desky. Je zde soustředěno maximum potřebných napětí a signálů potřebných pro funkci přístroje. Samotný sdružený přístroj má elektrickou část konstruovánu na desce plošných spojů což usnadňuje propojení.

 

Obr. 3: Deska plošných spojů, TOP

2.3          Softwarové vybavení PP

Veškeré softwarové vybavení PP je psané v jazyku C v prostředí AVR Studio / gcc. Zajišťuje obsluhu periferií a základní funkci přístroje. Program je velmi variabilní a dobře rozšiřitelný, umožňue jednoduše měnit zobrazované veličiny a parametry na displeji podle potřeby. Zdrojový kód:

#include "lcd_h.h"

#include <avr/io.h>

#include <avr/interrupt.h>

 

#define FOSC 8000000                 // hodinovy kmitocet

#define BAUD 9600                    //prenosova rychlost

#define MYUBRR FOSC/16/BAUD-1   //vypocet hodnot registru UBRR

 

#define FIFO_LENGTH 20               //delka fronty

//#define EEPROM_address        //adresa EEPROM

//#define RTC_address a3        //adresa RTC cteni - to je blbost jak mraky

#define INT_STR_LEN 8

 

//=============================================================================

volatile int status = 0, head = 0, tail = 0;

 

volatile unsigned int dist_cnt = 0, fuel_cnt = 0,ADCRES = 0, fuel = 0, spotreba = 0,

               dist = 0, volt_tmp, dojezd = 0, zasoba = 490;

 

char fifo [FIFO_LENGTH];        //fronta

//=============================================================================

void HW_Init (void)

{

  //PORTY--------------------------------------------------------

  DDRA = 0;                          //port a je cely vstupni.

  DDRB = (1<<3);                //def B3 jako vystup PWM.

  DDRC = 0b11111100;            //port a je cely vstupni.

  DDRD = 0b10000000;            //port a je necely vstupni.

 

  //pullup rezistory 32k na vstupni piny.

  PORTD = (1<<2) | (1<<3) | (1<<4) | (1<<5) | (1<<6);

 

  //ADC-------------------------------------------------------------

  ADMUX = (1<< REFS0)|(1<<MUX0)|(1<<MUX1);       //AVCC na AREF pin, vstup ADC0

  ADCSRA = (1<<ADPS0)|(1<<ADPS1)|(1<<ADPS2);     //ADC Prescaler128

  //INT-----------------------------------------------------------------

  MCUCR = (1<<ISC00)|(1<<ISC01)|(1<<ISC10)|(1<<ISC11);//INT0,1 na vzestupnou hranu

  GICR = (1<<INT0)|(1<<INT1);        //povoleni preruseni INT0,1

  TIMSK = (1<<TOIE1);           //

  TCCR0 = (0<< WGM01)|(0<<WGM00)|(0<<COM01)|(0<<COM00)|(0<<CS02)

  |(1<<CS01)|(1<<CS00);//PWM,Clr, /deleni osc. .....8.??

  //Provozni casovac                            

  TCCR1B =(1<<CS12);            //TC1Normal,ClockSel,

 

}

//=============================================================================

int GetADCSample(char channel)

{

    char c0, c1;

    int result;

 

    ADMUX = channel;            // nastaveni kanalu ADC

    ADCSRA |= (1<<ADSC); // pozadavek na prevod

    ADCSRA |= (1<< ADEN);       // zapnuti ADC

   

    while (ADCSRA & (1<<ADSC))   

        ;                            // ceka na flag ukonceni prevodu

   

  c0 = ADCL;                   //ulozeni vysledku

    c1 = ADCH;

 

    result = c0;

    result |= c1 << 8;

 

    ADCSRA &= (0<<ADEN);  //vypnuti ADC

 

    return result;

}

 

//=============================================================================

void Compute(void)

{

  dist = dist_cnt/2;            //konst. prevod 2 imp/metr, takze 1 dist = 1 m.

  fuel = fuel_cnt/10;           //konstantni prevod 10 000imp./l,takze 1 fuel = 1 ml.

  volt_tmp = ((unsigned long)ADCRES*2435)/100;

 

  if (dist_cnt != 0)

        spotreba = fuel_cnt / dist_cnt;    //osetreni deleni nulou

  else

  spotreba = 0;

 

  if (spotreba != 0)

        dojezd = 100 * zasoba / spotreba;

  else

  dojezd = 0;

 

}

 

void Disp_Value(void)

{

  char dojezd_str [INT_STR_LEN+3]; 

  char dist_str [INT_STR_LEN+2];           //najeto

//  char fuel_str [INT_STR_LEN+2];         //sezrano

  char volt_str [INT_STR_LEN+3];           //retezec hodnoty AD prevodu

  char spotreba_str [INT_STR_LEN+6];

  char zasoba_str [INT_STR_LEN+2];

 

  sprintf(dojezd_str,"%ukm ",dojezd);

//  sprintf(fuel_str,"%um ",fuel);

  sprintf(dist_str,"%ux10m",dist/10);      //zobrazeni po deseti metrech

  sprintf(volt_str,"%umV ",volt_tmp);//presne cislo je 0,02435

  sprintf(spotreba_str,"%uml/km",spotreba);

  sprintf(zasoba_str,"%ul",zasoba);

 

  lcd_gotoxy(0, 0);

//  lcd_puts(fuel_str);              //absolutni pocitadlo sezraneho paliva

  lcd_puts(dojezd_str);

  lcd_gotoxy(0, 1);

  lcd_puts(dist_str);

  lcd_gotoxy(8, 0);

  lcd_puts(volt_str);

//  lcd_puts(zasoba_str);

  lcd_gotoxy(8, 1);

  lcd_puts(spotreba_str);

 

 

}

 

/*----------------------------------MAIN-------------------------------------*/

/*----------------------------------MAIN-------------------------------------*/

 

int main (void)

{

  HW_Init ();                   //inicializace portu a periferii

//  USART_Init(MYUBRR);         //inicializace USART

  lcd_init();                   //inicializace displeje

  lcd_clrscr();                      //smazani displeje

 

  head = 0;                          //inicializace fronty

  tail = 0;

 

  sei() ;                            //globalni povoleni preruseni

 

//  Disp_Value();                    //prvni zobrazeni hodnot

 

  while( 1 )                    //hlavni programova smycka

  {

    if (status)                      //pokud je vypocitana hodnota AD prevodu

  {

    Compute();                 //vypocet hodnot

    Disp_Value();              //zobrazeni hodnot

    status = 0;

  }

 

    if (head != tail)           //pokud je neco ve fronte

    /*Comm()*/;                //zpracuj pozadavek, komunikuj

  }

}

/*-----------------------------END OF MAIN-----------------------------------*/

/*-----------------------------END OF MAIN-----------------------------------*/

 

ISR(USART_RXC_vect)             //preruseni na prijem dat

{

  fifo[tail] = UDR;             //prijeti dat do fronty

  tail = (tail + 1) % FIFO_LENGTH;

}

//=============================================================================

ISR( TIMER1_OVF_vect )          //preruseni od casovace 1

{

 

  ADCRES = (unsigned int)GetADCSample(3);// 3=Un, 0=Zasoba

 

  zasoba = (unsigned int)GetADCSample(0)/12;     //napeti z AD prevodu delim na litry

  status = 1;             //provede se Measure()

 

}

//=============================================================================

ISR( INT0_vect )                //preruseni od prutokomeru

{

  fuel_cnt++;

  //v zasade staci inkrementovat promennou ktera rika kolik benalu proteklo,

  //ale protoze je prevodni chaka prutokomeru nelinearni je treba znat rychlost prutoku.

  status = 1;

}

 

//=============================================================================

ISR( INT1_vect )                //preruseni od cidla drahy

{

  dist_cnt++;

  //inkrementace pocitadla drahy - absolutni hodnota ujete drahy

  //vyuzitelna pro denni pocitadlo

  status = 1;

}

 

//=============================================================================

 

2.4          Mechanické úpravy nutné pro montáž PP do vozu

První mechanickou úpravou seriového vozu je montáž průtokoměru v motorovém prostoru. Jako vhodné (nejméně nevhodné) místo byla zvolena věž pravého podběhu nad technologickým otvorem (viz. obr. 2.1). Použitý průtokoměr má vývody do boku, což komplikuje situaci o potřebu držáku který zajistí vhodné směrování vývodů s ohledem na mechanické namáhání a zatížení hadicemi; nicméně zde jsem z důvodu úspory času zvolil montáž bez držáku s jedinou nevýhodou, což je přívodní palivová hadice vedená těsně nad baterií. Toto řešení nedoporučuji z důvodu komplikovaného přístupu k baterii při (nouzovém) vyjmutí. Celá změna v palivovém systému vozu sestává v přidání hadice délky l = 110cm mezi AC pumpu a průtokoměr; přitom původní hadice AC pumpa – karburátor je pouze přemístěna do pozice průtokoměr – karburátor s nezměněnou délkou.

Obr. 4:       Upevnění průtokoměru na věži pravého podběhu. Zespodu je vedena přívodní hadice od AC pumpy; shora je potom vývod do karburátoru. Trojice vodičů je vedena společně s kabelovým svazkem vozu po motorové stěně.

Elektrická instalace související s průtokoměrem sestává ze tří laněných vodičů vedených od průtokoměru společně s původním svazkem až k průvlaku motorovou stěnou do kabiny. Zde je využito otvoru po demontovaném ručním ostřikovači čelního skla pro protažení vodičů do kabiny. Dále je třeba připojit jeden vodič na kostru, další dva potom na napájení z PP a vstup PP.

Druhou vážnější úpravou je modifikace sdruženého přístroje spočívající ve vyvrtání otvoru skrz náhon tachometru pro umístění optozávory jako a bsolutního snímače dráhy. Dále již následuje připevnění desky PP k zadní stěně sdruženého přístroje viz. Obr.5 pomocí nového šroubu M4x20, izolační podložky pod hlavu šroubu a distanční podložky s D <= 9mm a H = 4mm . Poslední částí tohoto zásahu je připájení vodičů napájení a signálů na vhodná místa plošného spoje sdruženého přístroje, připojení modulu displeje a čidel.

 

Obr. 5: Deska PP namontovaná na zadní stěně sdruženého přístroje.

3                Závěr

Konstrukce ukázala, že je možné a účelné zkonstruovat zařízení jako zde popsané i do historického vozu, který tím získá nejen na komfortu ale zajisté i na atraktivitě. Z pohledu technika je zajímavé skloubení technologií značně rozdílných, především pak kombinace dílů a nápadů s věkovým rozdílem téměř 40 let. Počítač zobrazuje vybrané hodnoty jako je ujetá dráha, množství paliva v nádrži, aktuální spotřeba a dojezd s aktuálním stylem jízdy.

Další práce na přístroji je žádoucí, konstrukce dává prostor především ve zpracování dat, jejich logování a sdílení s osobním počítačem. S těmito oblastmi práce bylo uvažováno již od prvotního návrhu a zajisté budou prozkoumány blíže. Vodítkem ke změnám či vylepšením mohou být prameny jako internetová fóra [3] a potřeby majitele. Jistým prostorem pro práci je též estetická stránka věci, která se s funkční kloubí. Z pramene [3] lze vysledovat různost požadavků jednotlivých uživatelů.

 

Literatura:

[1] Geber der Kraftstoffmomentanverbrauchsanzeige, dostupné na www: http://www.wartburgpeter.de/te_kmva1.htm

[2] Čidlo průtokového měřiče paliva, dostupné na http://www.w353.cz/technika/ekonomer.html

[3] Palubní počítač pro VAZ 2101 – Žiguli – internetová diskuze na  http://forum.ladaklub.com/viewtopic.php?t=9048&postdays=0&postorder=asc&start=25