Digitalna instrument tabla za automobile marke YUGO 45/55es.elfak.ni.ac.rs/Seminar works...

16
Elektronski fakultet u Nišu Sistemi za akviziciju podataka Projektna dokumentacija na temu: Digitalna instrument tabla za automobile marke YUGO 45/55 Student: Profesor: Miloš Milenov 12967 Branislav Petrović Nikola Milivojević 12971 Nemanja Momčilović 12998

Transcript of Digitalna instrument tabla za automobile marke YUGO 45/55es.elfak.ni.ac.rs/Seminar works...

Page 1: Digitalna instrument tabla za automobile marke YUGO 45/55es.elfak.ni.ac.rs/Seminar works DAS/Digitalna instrument tabla za YUGO 45 55 - Milos... · 1. Cilj projekta Tema razmatranja

Elektronski fakultet u Nišu

Sistemi za akviziciju podataka

Projektna dokumentacija na temu:

Digitalna instrument tabla za automobile marke

YUGO 45/55

Student: Profesor:

Miloš Milenov 12967 Branislav Petrović

Nikola Milivojević 12971

Nemanja Momčilović 12998

Page 2: Digitalna instrument tabla za automobile marke YUGO 45/55es.elfak.ni.ac.rs/Seminar works DAS/Digitalna instrument tabla za YUGO 45 55 - Milos... · 1. Cilj projekta Tema razmatranja

1. Cilj projekta

Tema razmatranja ovog rada jeste digitalizacija postojeće instrument table kod automobila marke Zastava, model YUGO 45/55, uz maksimalno korišćenje postojećih resusrsa. Dati model automobila, u nekoliko razlicitih fabričkih izrada, poseduje analogne pokazivače brzine, kilometraže, temperature tečnosti u moturu i preostale količine goriva u rezervoaru, kao i svetlosnu signalizaciju za 9 različitih vrsta obaveštenja i upozorenja, što se može videti na slici 1.

Slika 1: Jedna od fabrickih izrada intrument table kod yugo 45/55

Terminom digitalizacija, podrazumeva se zamena postojećih analognih pokazivača digitalnim kao i dodavanje još nekoliko funkcija koje po nekom nepisanom pravilu poseduju savremeni automobili.

2. Ideja i funcionalna šema sistema

Sistem će se zasnivati na mikroprocesuru PIC 18F2550 kompanije MICROCHIP, koji ce biti ujedno i glavni deo sklopa. Njegova uloga biće pribavljanje sirovih podataka sa senzora,

Page 3: Digitalna instrument tabla za automobile marke YUGO 45/55es.elfak.ni.ac.rs/Seminar works DAS/Digitalna instrument tabla za YUGO 45 55 - Milos... · 1. Cilj projekta Tema razmatranja

njihova matematička obrada i odgovarajuća interpretacija na nekom od displaja ili dioda. Funkcionalna blok šema celog sistema prikazana je na slici 2.

Slika 2: Funkcionalna šema sistema

Trenutna brzina vozila pokazivaće se na 3 sedmosegmentna displaja . Pokazivači broja obrtaja motora i preostale količine goriva biće realizovana koristeći 16 i 8 5mm-led diode,respektivno. Kilometraža, temperatura rashladne tecnosti motora, pritisak ulja u motoru, količina goriva u rezervoaru i temperatura kabine biće prikazivani na monohromatskom displeju od NOKIA 3310 telefona. Postojeća svetlosna signalizicija za obaveštenja i upozorenja biće zadržana uz zamenu postojećih automobilskih sijalica 5mm-led diodama i korekciju pobudnih signala. Dodaće se i 4 5mm-led diode za pozadinsko osvetljenje celog sklopa.

Automobil već poseduje davače količine goriva u rezervoaru, temperature rashladne tečnosti i pritiska ulje. Ostali davači biće realizovani ovim projektom.

Page 4: Digitalna instrument tabla za automobile marke YUGO 45/55es.elfak.ni.ac.rs/Seminar works DAS/Digitalna instrument tabla za YUGO 45 55 - Milos... · 1. Cilj projekta Tema razmatranja

3. Davači sistema, njihova svojstva i komponentne šeme

3.1 Davač temperature kabine

Dati senzor nije deo fabričkog modela automobila, pa je potrebna njegova zasebna realizacija. Temperaturu kabine potrebno je meriti u opsegu od 0-50 °C sa tačnošću od 1 stepena. U tu svrhu biće upotrebljen temperaturni senzor LM 35 Dz proizvođača Nacional Semiconductor. Dati sezor u realizaciji datoj na slici 3 daje 10mv po °C, a na 0°C izlazni napon je 0V. Opseg sezora u ovakvoj realizaciji je 2-150°C što je u saglasnošću našim zahtevima. Druga pogodnost ovog senzora jeste što nezahteva nikakvih dodatnih komponentni, jer se njegov izlaz može direktno povezati na AD konvertor mikrokontrolera.

Ulazni napon VCC je u opsegu od 4-20V. U našem slučaju VCC=5V. Izlazni stepen senzora filtrira se opornikom od 1 kohm i na taj način stabiliše napon VO.

Slika 3: Šema davača temperature kabine

3.2 Davač količine goriva

Senzor za količinu goriva u rezervoaru postoji u samom automobilu. To je potenciometar koji na osnovu količine goriva daje odogvarajuću otpornost. Karakteristika ovog sezora data je na slici. Odavde se može zaključiti da je senzor u većoj meri linearan pa se može aproksimirati funcijom prvog reda. Na taj način dobija se funkcija količine goriva u zavisnosti od otpora:

퐾퐺[퐿] = −0.1068 ∗ 푂푡푝표푟[푂ℎ푚] + 32.1574

Za praktično merenje optornosti ovog senzora upotrebiće se naponski delitelj, kao sto je prikazano na slici 4, ćiji ce izlaz biti vezan na AD konvertor mikrokontrolera. AD konverzijom dobicemo napon na izlazu delitelja, a na osnovu

Page 5: Digitalna instrument tabla za automobile marke YUGO 45/55es.elfak.ni.ac.rs/Seminar works DAS/Digitalna instrument tabla za YUGO 45 55 - Milos... · 1. Cilj projekta Tema razmatranja

funkcije 푅 = ∗ ,dobija se željena vrednost otpornosti senzora.

Slika 4: Šema naponskog delitelja .

3.3 Davač temperature rashladne tečnosti u motoru

Senzor koji je instaliran u automibilu a koristi se za merenje temperature rashladne tečnosti je NTC otoprnik čija je katakteristika prikazana na slici. Postupak merenja temperature svodi se na merenje otpornosti senzora. Ovaj postupak je potpuno identičan postupku merenja otpornosti

kod količine goriva. Kako je senzor veoma nelinearan koristiće se LOOK-UP tabela. Index elementa tabele predstavljaće temperaturu, a njegova vrednost biće upravo otoprnost koja odgovara temperaturi sa vrednošću indexa. Tabela je data u kodu mikrokontrolera.

3.4 Davač pritiska ulja u motoru

Merenje pritiska ulja u motoru vrši se pomoću senzora koji već postoji u autobomilu. Njegova karakteristika data je na slici, sa koje se zaključuje da se prilikom linearizacije mora koristiti Piece-wise linearna interpolacija . Na grafiku su date i tačke iterpolacije. Postupak merenja zasniva se na merenju otpornosti senzora, na način kao u odeljku 3.2 , na osnovu koje se primenjuje jedna od šest funkcija radi dobijanja pritiska. Sve funkcije su

Page 6: Digitalna instrument tabla za automobile marke YUGO 45/55es.elfak.ni.ac.rs/Seminar works DAS/Digitalna instrument tabla za YUGO 45 55 - Milos... · 1. Cilj projekta Tema razmatranja

oblika 푓(푥) = 푓(푥 ) + ( ) ( ) (푥 − 푥1). Koja ce se od njih primeniti zavisi od dobijene

oprornosti, odnosno, u kojem se segmentu nalazi( 푥 ∈ [푥1,푥2]).

3.5 Davač broja obrtaja motora

Davač obrtaja motora nije deo fabričke realizacije automobila. Obrtaje treba meriti u opsegu od 0-8000 obrtaja*min-1 . Impulse za obrtaje najlakše je meriti paralelno platinama kod paljenja automobila. Šema u kojoj se koristi ovakav pristup, data je na slici 5.

Slika 5: Kolo za merenje obrtaja motora

Problem kod impulsa dobijenih sa platina, jeste u piku, veoma malog vremena trajanja koji može imati vrednost i do 400V. Rešenje ovog problema jeste stavljanje u red dva opornika snage 1w i zener diode, čime se postiže konstatan napon. Potrebno je i paljenje galvanski izdvojiti od ostatka sistema što je postignuto optokaplerom. VCC je napajanje mikrokontrolera. Svaka pojava impulsa na ulazu kola manifestovaće se logičkom nulom na digitalnom ulazu mikrokontrolera. Broj izmerenih impulsa na kraju treba podeliti sa 4 jer je u pitanju četvorotaktni motor.

3.6 Davač brzine i kilometraže

Za dobijanje trenutne brzine, kao i pređenog puta iskoristiće se postojeća sajla sa menjača za merenje brzine. Sajla na vrhu ima magnet u obluku slova T. Svaki obrtaj sajle predstavlja pređeni put od 1m. Potrebno je iste pretvoriti u električne signale. Zbog postojanja magnetnog vrha sajle, upotreba reed relea je logičan izbor. Na slici je dat princip mernog sistema. Potrebno

je i prilagoti izlaz relea sa ulazom miktrokontrolera što se postže naponskim deliteljem.

Page 7: Digitalna instrument tabla za automobile marke YUGO 45/55es.elfak.ni.ac.rs/Seminar works DAS/Digitalna instrument tabla za YUGO 45 55 - Milos... · 1. Cilj projekta Tema razmatranja

4. Displeji i svetlosna signalizacija

4.1 Monohromatski displej sa NOKIA 3310 telefona

Korišćenje ovog displeja rezlultat je njihove dostupnosti i cene, kao i njihovih veoma dobrih karakteristika. Ovaj displej baziran je na kontroleru PCD8544, koji se moze kontrolisati sa samo 5 ulaza, što ga uz činjenicu da ima 48x84 piksela, čini mnogo pogodnijim za korišcenje u odnosu na klasične LCD displeje koji se mogu naći na tržištu.Za komunikaciju sa mikrokontrolerom displej poseduje sledeće pinove:

1.SDIN-serijska komunikacija 2.SCLOCK-clock kontrolera 3. DC-selektovanje između podačne i kontrolne banke 4. RESET- resetovanje kontrolera 5. CE-chip enable pin

Ovaj displej služiće za prikazivanje kilometraže, temperature kabine, temperature rashladne tečnosti, pritiska ullja kao i količine goriva sa tačnošću od jedne decimale. Displej se povezuje direktno na digitalne izlaze mikrokontrolera ukoliko napajanje mikrokontrolera nije veće od 3.3V,što će i ovde biti slučaj.

4.2 Sedmosegmentni displeji

Za prikazivanje trenutne brzine biće upotrebljeni 3 sedmosegmentna displaja sa zajednickom katodom. Radi smanjenja izlaza mikrokontrolera, potrebnih da se kontrolišu displaji, upotrebiće se 2 integralna kola. Prvo CD4511BCN , BCD sedmosegmentni drajver, i drugo HCF4555BF , dekoder za selekciju displaja. Displeje je potrebno osvezavati na 50Hz pa ce biti iskorišćena interupt rutina mikrokontrolera. Kompletna šema displaja data je na slici 6.

4.3 Pokazivači obrtaja motora i količine goriva

Za pokazivanje broja obrtaja motora 16 5mm-led dioda biće iskoriščeno. Svaka dioda predstavljaće 500 obrtaj*min-1 . Za kontrolu ovih dioda upotrebiće se 2 8 bitna shift registra, MM74HC164N, kaskadno vezanih kao na slici 7. u takvoj realizaciji uključivanje dioda vrši se

Page 8: Digitalna instrument tabla za automobile marke YUGO 45/55es.elfak.ni.ac.rs/Seminar works DAS/Digitalna instrument tabla za YUGO 45 55 - Milos... · 1. Cilj projekta Tema razmatranja

pomoću 2 izlaza iz mikrokontrolera. Klokom se pali određeni broj dioda dok se resetom gase sve.

Slika 6: Šema sedmosegmentnih displaja

Za prikazivanje količine goriva upotrbiće se isti princip, samo što će biti 8 dioda i jedan shift registar.

.

Slika 7: Pokazivač obrtaja motora

Page 9: Digitalna instrument tabla za automobile marke YUGO 45/55es.elfak.ni.ac.rs/Seminar works DAS/Digitalna instrument tabla za YUGO 45 55 - Milos... · 1. Cilj projekta Tema razmatranja

5. Praktična realizacija projekta

Praktično realizovan projekat ugradiće se u već postojeću šasiju instrument table, prikazanoj na slici 1. Zbog takvog prohteva porebno je realizovati 3 pcb-a:

Levi,unurašnji, na kojem će se nalaziti pokazivači za brzinu, broj obrtaja motora i količinu goriva kao i propratna elektronika, potrebna za kontrolu prethodno navedenih pokazivača. Kružnog oblika, prečnika 9 cm.

Desni,unutrašnji, na kojem će se nalaziti displej NOKIA 3310 telefona i njegovo napajanje, i svetlosna signalizacija za obavešzenja i upozorenja. Kružnog oblika, prečnika 9cm

Spoljašni, na pozadini šasije, na kojem će se nalaziti mikrokontroler sa napajanjem. Pravougaonog oblika, dimenzija 10x5cm

PCB i šema realizovani su je u EAGLE 5.7.0 PROFESSIONAL programskom paketu kompanije CADSOFT. PCB-i dati su na sledećim slikama:

Levi pcb

Page 10: Digitalna instrument tabla za automobile marke YUGO 45/55es.elfak.ni.ac.rs/Seminar works DAS/Digitalna instrument tabla za YUGO 45 55 - Milos... · 1. Cilj projekta Tema razmatranja

Desni pcb

Pcb na zadnjoj strani šasije

Šema celog projekta data je na zadnjoj strani ovog rada.

Page 11: Digitalna instrument tabla za automobile marke YUGO 45/55es.elfak.ni.ac.rs/Seminar works DAS/Digitalna instrument tabla za YUGO 45 55 - Milos... · 1. Cilj projekta Tema razmatranja

6. Kod mikrokonrolera

Kod mikrokontrolera pisan je u MCC18 c kompajleru za PIC mikrokontrolera za familiju 18F.

Ovaj kompajler vec u sebi posedije osnovne funkcije mikrokontrolera, kao što je AD konverzija i procesori su detalljno mapirani u svojim heder fajlovima. U nastavku rada dat je deo koda sa nekim od funkcija potrebnim za rad projekta:

void low_ISR(void);

void high_ISR(void);

#pragma code high_vector = 0x08

void high_vector (void){_asm goto high_ISR _endasm}

#pragma code

#pragma interrupt high_ISR

void high_ISR (void) // HIGH interapti

{

if(TMR0FL){s++;

if(BRON1){

countBR++;}

if (countBR>137){BRON1=0;countBR=0;BRshow=0;}

TMR0H = 0;TMR0L = 0;TMR0FL=0;} else

if(TMR1FL){

SHOW(BRshow,j);j++;j=j%3;TMR1H = 0;TMR1L = 0;TMR1FL=0;}else

if(TMR3FL){

if(RPMW<147){ RPMW++;} else {RPMW=0;RPMON=0;}

Page 12: Digitalna instrument tabla za automobile marke YUGO 45/55es.elfak.ni.ac.rs/Seminar works DAS/Digitalna instrument tabla za YUGO 45 55 - Milos... · 1. Cilj projekta Tema razmatranja

RMP(RPM);NG(G);TMR3L = 0;TMR3FL=0;}

}

#pragma code low_vector = 0x18 //force the following statements to start at

void low_vector (void) {_asm goto low_ISR _endasm}

#pragma code //return to the default code section

#pragma interruptlow low_ISR

void low_ISR (void) {if (TMR2FL){TMR2FL=0;}}

///////////////////////////////////////////////////////////////////

void main(void)

{ long broj=2011;

u8 mystring[] = "DAS ELFAK";

u8 niz[21];

u8 *p= &mystring[0], *k= &niz[0];

unsigned char chanel=0x00;

km=readEEPROM16(0);

while(1)

{

while(E1)

{

PORTA=0;TRISA=255;TRISB=0;TRISC=0;PORTC=0;

TRISAbits.TRISA4=0;

TRISAbits.TRISA5=0;

OpenTimer0( TIMER_INT_ON & T0_16BIT & T0_SOURCE_INT & T0_PS_1_1);TMR0H = 0;TMR0L = 0;INTCON2bits.TMR0IP=1;

Page 13: Digitalna instrument tabla za automobile marke YUGO 45/55es.elfak.ni.ac.rs/Seminar works DAS/Digitalna instrument tabla za YUGO 45 55 - Milos... · 1. Cilj projekta Tema razmatranja

OpenTimer1(TIMER_INT_ON & T1_16BIT_RW & T1_SOURCE_INT & T1_PS_1_1 & T1_OSC1EN_OFF);TMR1H = 0;TMR1L = 0;IPR1bits.TMR1IP=1;

OpenTimer2( TIMER_INT_ON & T2_PS_1_1);IPR1bits.TMR2IP=0;

OpenTimer3( TIMER_INT_ON & T3_8BIT_RW & T3_SOURCE_INT & T3_PS_1_1 & T3_SYNC_EXT_OFF);TMR3L = 0;IPR2bits.TMR3IP=1;

RCONbits.IPEN=1; INTCONbits.GIE=1; INTCONbits.PEIE=1;

//////////////////////////////////////////////////////////////////

Nokia_init();

lcd_printf(p,20,1);

ltoa(broj,k);

lcd_printf(k,32,3);

while (E1)

{ if((!IN_RPM)&(!RPMON)){RPMON=1;countRPM++;RPMW=0;}

if(IN_RPM){RPMON=0;}

if(s==500){ showKM(km);}

if(s==1000){ G=showNG();a=(countRPM/13.1072)*60;RPM=(int)(a/500 +1);countRPM=0;m=m+0.5;}

if(s==2000){ showTin();}

if(s==3000){ showTM();}

if(s==4000){ showPU(); s=0;}

if((IN_BR)&(!BRON))

{

BRON=1;

BRON1++; BRON1=BRON1%2;

Page 14: Digitalna instrument tabla za automobile marke YUGO 45/55es.elfak.ni.ac.rs/Seminar works DAS/Digitalna instrument tabla za YUGO 45 55 - Milos... · 1. Cilj projekta Tema razmatranja

if(!BRON1){ c=0.5/(countBR*0.0131072);countBR=1;BRshow=(long)(c*3.6); }

}

if(! IN_BR){BRON=0; }

}

}

CloseTimer0();

CloseTimer1();

CloseTimer2();

CloseTimer3();

if(m>=100000)

{km=km+100;m=m-100000;

writeEEPROM16(0,km);

}

}

}

long showNG(void)

{long ad,sh,cif1,cif2,cif3;

float otpor, Vout;

u8 tacka='.';

u8 litar[]= "L";

u8 mystring[] = "PETROL";

u8 warn[]="GAS STATION";

Page 15: Digitalna instrument tabla za automobile marke YUGO 45/55es.elfak.ni.ac.rs/Seminar works DAS/Digitalna instrument tabla za YUGO 45 55 - Milos... · 1. Cilj projekta Tema razmatranja

u8 niz[15];

u8 *p= &mystring[0], *k= &niz[0], *l= &litar[0],*w= &warn[0];

ad= readADC(ADC_CH2);

Vout=(ad*3.24074)/1024;

otpor=(Vout*220)/(3.24074-Vout);

ad=(long)((-0.106848)*otpor + 32.157379);

sh= (long)(((-0.106848)*otpor + 32.157379)*10);

Nokia_init();

lcd_printf(p,27,1);

cif2=sh%10;

cif1=sh/10;

ltoa(cif1,k);

lcd_printf(k,26,3);

Nokia_gotoxy(37,3);

Nokia_printchar(tacka);

ltoa(cif2,k);

lcd_printf(k,42,3);

lcd_printf(l,48,3);

if(ad<=5)

lcd_printf(w,15,4);

return ad;

}

Page 16: Digitalna instrument tabla za automobile marke YUGO 45/55es.elfak.ni.ac.rs/Seminar works DAS/Digitalna instrument tabla za YUGO 45 55 - Milos... · 1. Cilj projekta Tema razmatranja

long readADC( unsigned char chanel)

{ long ADCResult=0; unsigned char config1=0x00,config2=0x00,i=0;

config1 = ADC_FOSC_32 & ADC_RIGHT_JUST & ADC_16_TAD ; config2 = chanel & ADC_INT_OFF & ADC_VREFPLUS_VDD & ADC_VREFMINUS_VSS ;

CloseADC(); OpenADC(config1,config2,ADC_4ANA);

INTCONbits.GIE=0;

SetChanADC(chanel);

Delay10TCYx(5);

ConvertADC();

while(BusyADC());

ADCResult = ReadADC();

CloseADC();

INTCONbits.GIE=1;

return ADCResult;

}