Fórum témák

» Több friss téma
Fórum » Fogyasztásmérő készítés autóba
Lapozás: OK   18 / 22
(#) Suncorgo válasza Suncorgo hozzászólására (») Aug 4, 2013 /
 
Most számoltam egy fogyasztást is. 180km-ert mentem 11.75 liter benyával kb. ez 6.5liter/100km. A kütyü is ennyit mért.
(#) atox válasza Suncorgo hozzászólására (») Aug 4, 2013 /
 
Nem ismerem ezt az Ic-t, de a INT0, INT1 az külső megszakítás ugye? Azt használod valamire, mert azzal is számoltathatnál..
Én azt mondom, hogy ne építs véglegest... Én egy évig fejlesztgettem és most is tudnék mit fejleszteni rajta hardveresen.
(#) Suncorgo válasza atox hozzászólására (») Aug 4, 2013 /
 
Igen, az külső megszakítás. Konkrétan az a bajom hogy rezeg a km/h mutatóm. Ez azt jelenti hogy hol gyorsabban forog a sebesség jeladóm tárcsája, hol lassabban. Mivel most nem timer/counter méri a jelét hanem szoftveres periódusidő mérés van így mikor hol sikerül mérnie, hülyeségeket mér. Csinálhatnék több mérést is és akkor átlagolhatnám, így kb középértéket kapnék, de az + idő. Lassabb lesz a szoftver, lassabban reagál majd a menü kezelő gombokra, és lassul a képernyőfrissítés is. Nem vagyok híve az egy másodperces képernyőfrissítésnek mint sok gyári mérőnél láttam. Azt szeretem ha pörögnek az értékek (persze csak annyira hogy leolvasható legyen pl 1/4 másodperc)
Ez is igaz, ennek még ki kellene forrnia magát, azután lehet végleges csak de, igyekszem az eddigi tapasztalataimból most már mindenre gondolni.

Lecserélem az LM358-at is egy nagy sebességű komparátorra, LM311.
A hozzászólás módosítva: Aug 4, 2013
(#) atox válasza Suncorgo hozzászólására (») Aug 4, 2013 /
 
Nálam úgy működik a dolog:
Egy időzítővel előállítok megszakításokat (ez esetemben 2s) közben külső megszakításokon számoltatom a sebességet és a benzint. Minden 2 másodpercbe számoltatok és így tovább.
Azért mondom ezt mert te bajba vagy az időzítőkkel, azt írtad...
A hozzászólás módosítva: Aug 4, 2013
(#) Suncorgo válasza atox hozzászólására (») Aug 4, 2013 /
 
Bajba nem, csak nincs belőle elég megoldom ezt is
(#) atox válasza Suncorgo hozzászólására (») Aug 4, 2013 /
 
úgy értettem
(#) moltam válasza Suncorgo hozzászólására (») Aug 4, 2013 /
 
Nem lehet valahogy egy olyan sebesség jeladót felapplikálni, ami közvetlen a váltónál van? Bővebben: Link
(#) Suncorgo válasza moltam hozzászólására (») Aug 5, 2013 /
 
Minek? Az opelekben tudtommal van. Csak ezzel a módszerrel mér hülyeséget, a timer counterrel mérem akkor jó. A 2 mérés között az a különbség hogy:

-szoftveres: a timert/counter a CPU órajelére kapcsolom, mikor kezdődik a felfutó él akkor nullázom, és a következő felfutó élnél kiolvasom a timer értéket. Vagyis periódus időt mérek, amiből ki tudom számolni a frekvenciát. Ezért ugrál a mért sebesség ha nem tökéletes a spirál mert mikor hol sikerül megmérni a periódusidőt. Egyszer gyorsabban forog a jeladó tárcsa egyszer lassabban. Ez a fajta mérés viszont elég felbontást ad pl fordulatszámméréshez mert nekem a 30-as felbontás nem elég de, sebesség méréshez igen, mert a kerék körbefordulásakor 32 impulzust ad a sebességjeladó míg a főtengely körbefordulásánál 2 impulzust ad a gyújtás jeladó.

-hardveres: ehhez 2 timer/counter kell. az egyik aszinkron módba működik és egy másodpercenként megszakítást idéz elő, ez az időalap. A másik timer/counter-t külső órajelre kapcsolom és ennek az órajele a sebesség jeladóból jövő impulzus. Mikor megszakítás van akkor kiolvassa a timer/counter értéket egy változóba és nullázza a timer/counter értéket. Így ha a spirál nem is tökéletes, hiába ugrál a mutató, egységnyi idő alatt (esetemben 1sec) mindig ugyanannyi impulzus jön be, ugyanaddig számol el a timer/counter és ezért nem ugrál a mért érték, ebből kiszámolva a mért sebesség sem.
A hozzászólás módosítva: Aug 5, 2013
(#) Suncorgo hozzászólása Aug 5, 2013 /
 
ez nagyon beteg most vettem észre hogy ami egy adott oldalon fel van sorolva alkatrész és van a Hestoron itt most az első 3, LM311 LM358 Atmega16 mindig megjelenik, hiába frissítek, viszont a másik kettő mindig más
A hozzászólás módosítva: Aug 5, 2013
(#) atox válasza Suncorgo hozzászólására (») Aug 5, 2013 /
 
Hardveres mérésnél miért kell 2db timer/counter? Az első az oké, de a másodiknak miért kell timernek lennie???
(#) Suncorgo válasza atox hozzászólására (») Aug 5, 2013 /
 
Meg lehet csinálni delay-el is de, akkor addig fogja a fő program szálat értelemszerűen, addig nem fut tovább a program vagy, még úgy is meg lehet csinálni hogy egy változó értéket növelek és a proci sebességéből kiszámolva, mikor eléri azt az értéket ami 1 secnek felel meg, akkor kiolvasom a timer/counter értéket és nullázom. De akkor mindig ugyanannyi utasítást kell végrehajtani hogy ne legyen csúszás... de ezeket neked tudnod kellene
(#) Suncorgo válasza atox hozzászólására (») Aug 5, 2013 /
 
ki lehet váltani a másik timert-t is ha külső megszakítás lábra kötöm, és mikor érkezik egy le vagy felfutó él, vagy akármilyen szint változás van, akkor egy változó értékét növelem, és ezt olvasom ki, nullázom és számolok belőle. De ez is fogja a procit míg azt az egy változót növeli eggyel, minden impulzuskor.
Miért kell kettő? Így a legminimálisabb a proci programjának a lassítása mert így amit lehet hardveresen van megoldva.
(#) atox válasza Suncorgo hozzászólására (») Aug 5, 2013 /
 
Pont erre gondoltam! Sztem ez a megoldás sem terhelné a procit annyira ami már zavarná a működést... De értem a logikádat....
(#) sargarigo válasza Suncorgo hozzászólására (») Aug 5, 2013 /
 
Bocs hogy belevau, de ha használnád a külső megszakítást, akkor pont azt nyernéd vele, hogy a főprogramban már nem kellene mérni! Így aztán mindegy, hogy egy két órajellel több, vagy kevesebb jut a főprogramra, hiszen az úgyis csak matekozik, meg gombokat, lcd-t kezel.
(#) atox válasza sargarigo hozzászólására (») Aug 5, 2013 /
 
Hát erről van szó
(#) moltam válasza Suncorgo hozzászólására (») Aug 5, 2013 /
 
Azt írtad, hogy ugrál a mutató. Az említett kocsiban ha jól tudom a vss egy reed cső a sebességmérő mellett. Ha ugrál a mutató az befolyásolja a mérést. Másik sebességszenzorral tökéletes lenne a mérés eredménye, mert az közvetlen a váltóba csatlakozik, nincs ugrálás.
Bár tényleg sokkal egyszerűbb ezt a szoftverben lekezelni.
(#) Suncorgo hozzászólása Aug 6, 2013 /
 
Már megálmodtam hogy lesz srácok. Timer0-val mérem a sebességet. A fordulatot és a befecskendezési időt periódusidő méréssel, Timer1-el. Timer2 pedig 1s időalap lesz. Így ki is van használva a 3 timer/counter. Azt kell ügyesen leprogramozni még hogy ha épp méri a fordulatot vagy befecsi időt, akkor az 1s megszakítás ne következzen be. Vagyis meg fogom mérni hogy mennyi idő megmérni a fordulatot és a befecsi időt és nézem timer2 értékét. Ha belefér még a mérés akkor mérek, ha mérés közben megszakítás lenne akkor pedig nem engedem hogy megszakítás következzen be közbe.

Idézet:
„Azt írtad, hogy ugrál a mutató. Az említett kocsiban ha jól tudom a vss egy reed cső a sebességmérő mellett...”

Nem reed cső, hanem egy optokapus jeladó, enkóder tárcsával.

Idézet:
„Bocs hogy belevau, de ha használnád a külső megszakítást, akkor pont azt nyernéd vele, hogy a főprogramban már nem kellene mérni! Így aztán mindegy, hogy egy két órajellel több, vagy kevesebb jut a főprogramra, hiszen az úgyis csak matekozik, meg gombokat, lcd-t kezel.”

Nem látom értelmét használni a külső megszakításnak. Csak a sebesség méréshez kell egy timer. Az meg van. Tök mind egy hogy hardveresen léptetem a timert ami úgy is van, meg gyorsabb is, mint hogy most megszakításból szoftveresen léptessek egy változót.

A fordulat méréshez is periódusidőt akarok mérni mivel a képlet szerint:
Fordulatszam = ((Timer1val*60)/2);

A képlet szerint látni ha Timer1val (ami a timer értéke) ha egész szám, akkor csak 30-as felbontás van.

Viszont ha lehet tizedes tört is akkor a felbontás lehet 1 is

Ekkor a képlet:
uint32_t buff1 = (F_CPU*100)/Timer1val;//freki
Fordulatszam = ((buff1*60)/2)/100;

F_CPU = 16000000;
A hozzászólás módosítva: Aug 6, 2013
(#) moltam válasza Suncorgo hozzászólására (») Aug 6, 2013 /
 
Nemtudom, hogy ismered e ezt: Bővebben: Link
Bővebben: Link Elég kevés infó van róla. A blokkdiagrammon nem látom, hova van kötve a sebességjel.
A hozzászólás módosítva: Aug 6, 2013
(#) sargarigo válasza Suncorgo hozzászólására (») Aug 6, 2013 /
 
Ha megálmodtad akkor jó, nincs több hozzáfűznivaló! Az a lényeg, hogy a te elvárásaidnak megfeleljen.
Idézet:
„Nem látom értelmét használni a külső megszakításnak. Csak a sebesség méréshez kell egy timer. Az meg van. Tök mind egy hogy hardveresen léptetem a timert ami úgy is van, meg gyorsabb is, mint hogy most megszakításból szoftveresen léptessek egy változót.

A lényeg az utolsó mondatod második fele! A külső megszakítás nem csak arra jó, hogy amikor bekövetkezik, akkor majd te szoftveresen csinálsz valamit! Tudsz olyat is, hogy maga a megszakítás hardveresen léptessen egy regisztert, tehát a többi dolgodba nem is szól bele! Sőt ha jól tudom, akkor ennek a regiszternek egy adott értékénél vagy túlcsordulásánál generál neked egy belső megszakítást, amivel már végre is hajtottad a mérést! Nincs szükség mérni a mérés idejét, és egyéb varázslatokra! Ezt csak azért mondtam el, hogy ha mégis nyitva lenne még a megvalósítás módja, akkor ezzel is egyszerűsíthetsz!


Idézet:
„Viszont ha lehet tizedes tört is”

Ezt viszont kerülném a helyedben, mert jól megdobja a kódméretet, és még be is lassít! Inkább szorozd fel 1000-el, és akkor számolhatsz egészként. Max a kijelzésnél jó helyre pozícionálod a tizedespontot!
A hozzászólás módosítva: Aug 6, 2013
(#) Suncorgo válasza moltam hozzászólására (») Aug 6, 2013 /
 
Nem ismertem, köszi Jók ezek a VFD kijelzők. A sebesség jeladó szerintem az odometer.
(#) Suncorgo válasza sargarigo hozzászólására (») Aug 6, 2013 /
 
Tudom hogy nagyon lassít, pont ezt csinálom itt:
uint32_t buff1 = (F_CPU*100)/Timer1val;//freki -> szorzok 100-al

Fordulatszam = ((buff1*60)/2)/100; //-> osztok 100-al

(#) moltam válasza Suncorgo hozzászólására (») Aug 6, 2013 /
 
Hát tényleg... Szemem kiüti.... Tényleg szépek ezek a karakteres vfd -k. Sajna nekem csak hétszegmentses van péztárgépből. Szép nagy, szerintem lesz abból még valami Jó tudni, hogy a tizedestört belassít. Kiveszem akkor a készülő pic es analóg fordulatmérőmből is.
A hozzászólás módosítva: Aug 6, 2013
(#) sargarigo válasza moltam hozzászólására (») Aug 6, 2013 /
 
Meg az "osztom százzal" is kimehet belőle, ha a fordulat közvetlenül a kijelzőre megy. Egyszerűen két nullát nem írsz ki. Persze ez függ a megvalósítástól, de ha lehet használni, akkor ez is gyorsít.
(#) Suncorgo válasza sargarigo hozzászólására (») Aug 6, 2013 /
 
Idézet:
„A lényeg az utolsó mondatod második fele! A külső megszakítás nem csak arra jó, hogy amikor bekövetkezik, akkor majd te szoftveresen csinálsz valamit! Tudsz olyat is, hogy maga a megszakítás hardveresen léptessen egy regisztert, tehát a többi dolgodba nem is szól bele! Sőt ha jól tudom, akkor ennek a regiszternek egy adott értékénél vagy túlcsordulásánál generál neked egy belső megszakítást, amivel már végre is hajtottad a mérést! Nincs szükség mérni a mérés idejét, és egyéb varázslatokra! Ezt csak azért mondtam el, hogy ha mégis nyitva lenne még a megvalósítás módja, akkor ezzel is egyszerűsíthetsz!”


Igen, ezt csinálom meg mikor majd a sebességet mérem. A timer/countert külső órajellel hajtom, hardveresen lépteti a számláló regiszterét. Ezek esetemben a T0, T1, Tx láb a mikrokontrolleren. Mikor külső megszakításról beszélek akkor az INT0, INT1, INTx lábakat értem ez alatt, ahova is egy függvényt lehet írni ami viszont ugye szoftveres.

Mikor azt mondtam hogy megmérem a mérés idejét.... egyszer fogom ezt tenni mielőtt megírom, de megmérni sem kell mert ki tudom számolni... szóval elmondom mit értettem ez alatt.

Fut a főprogram, és egyszer belebotlik egy olyan függvénybe ami meg fogja mérni a fordulatszámot. Ez esetemben tételezzük fel hogy alapjárat: 960RPM de én ennek csak a periódusidejét fogom mérni így:

  1. //fordulat számítás kezdete
  2.         Fordulatszam=0;
  3.         while(RPMin && hiba){hiba--;}//áll míg magas a szint
  4.         while(!RPMin && hiba){hiba--;}//áll míg alacsony a szint
  5.         TCNT1=0;
  6.         Timer1owf=0;
  7.         while(RPMin && hiba){hiba--;}//áll míg magas a szint
  8.         while(!RPMin && hiba){hiba--;}//áll míg alacsony a szint
  9.         Timer1val=TCNT1+(65536*Timer1owf);
  10.         TCNT1=0;
  11.         Timer1owf=0;
  12.         uint32_t buff1 = (F_CPU*100)/Timer1val;//freki
  13.         Fordulatszam = ((buff1*60)/2)/100;
  14.         if(hiba==0){Fordulatszam=0;}
  15.         //fordulat számítás vége


Ahova az van írva hogy "áll míg az a szint be nem következik, ott lassítja, megfogja a főprogramot addig. Ez esetemben, és akkor a maximum időt számolom:

960RPM -> 16RPS -> ez 16hz másképp mondva mert másodpercre váltottam. Ennek a periódusideje: 62,5ms tehát ez 2 féle jelszint, ugye periódusidőt felfutóéltől felfutóélig mérünk vagy lefutótól lefutóig. ezért ha ezt osztom kettővel, akkor kijön egy jelszintre várás maximum. Ez: 31,25ms. A mérő függvényben hány sor tudja megfogni a főprogramszálat? Ahány while utasítás van. Addig nem megy tovább míg a zárójelek közzé írt feltétel nem teljesül. Ez esetemben 4db. Ami 4x31,25ms= 125ms.

Másik mérés. Befecskendezési idő.

  1. //Befecskendezési idő mérés kezdete
  2.        
  3.         while(INJ_L && hiba){hiba--;}
  4.         while(INJ_H && hiba){hiba--;}
  5.         TCNT1=0;
  6.         Timer1owf=0;
  7.         while(INJ_L && hiba){hiba--;}
  8.         Timer1val=TCNT1+(65536*Timer1owf);
  9.         TCNT1=0;
  10.         Timer1owf=0;
  11.         if(hiba==0){Timer1val=0;}
  12.         uint32_t buff3 = Timer1val*Timer1StepTime;//8000*121=968000
  13.         BefecskendezesiIdo=buff3/1000;
  14.        
  15.         while(INJ_H && hiba){hiba--;}
  16.         while(INJ_L && hiba){hiba--;}
  17.         TCNT1=0;
  18.         Timer1owf=0;
  19.         while(INJ_H && hiba){hiba--;}
  20.         Timer1val=TCNT1+(65536*Timer1owf);
  21.         TCNT1=0;
  22.         Timer1owf=0;
  23.         if(hiba==0){Timer1val=0;}
  24.         uint32_t buff4 = Timer1val*Timer1StepTime;//8000*121=968000
  25.         BefecskendezesiSzunet=buff4/1000;
  26.        
  27.         BefecskendezesiKitoltes=100/((BefecskendezesiIdo+BefecskendezesiSzunet)/BefecskendezesiIdo);
  28.         if(hiba==0){BefecskendezesiIdo=0;BefecskendezesiSzunet=0;BefecskendezesiKitoltes=0;}
  29.         //Befecskendezési idő mérés vége


Fordulatszám ugyan úgy 960RPM-nek veszem. Az alapjárati befecskendezés kb 1.5ms. Most fordulatból kiszámolom ugyan ezt mint az előbb csak, a vezérműtengelyem és a főtengelyem között, amit ugye a vezérmúszíj köt össze, 2:1 áttétel van. Ezért a fordulathoz tartozó periódusidőt feleznem kell ami ismét 31,25ms-re jön ki és ebből kivonódik a befecskendezési idő/ egy hengerhez. Tehát ennek is maximum 31,25ms lesz a mérési ideje.

Fordulat: 125ms
Befecsi idő: 31,25ms
(ha növekszik a fordulat csökken a méréshez szükséges idő is, ezt könnyű belátni, ha nem hiszed számold ki!)

Összes idő: 156,5ms

Menjünk tovább... Most már belejöttem

Aszinkron timer/counter2. Számlálóregisztere 8bites ami 256-ig tud elszámolni.
32768khz kvarccal, 128-as órajel osztóval 1 másodpercenként túlcsordúl, megszakítás következik be. A timer/counter2 két érték közötti ideje: 1/256 = 3,90625ms

Most megnézem hogy mikor nem fog megszakítás bekövetkezni az időalap miatt mikor épp a periódusidő méréseket kezdeném:

156,5ms / 3,90625ms = 40,064 érték lépés amit, inkább kicsit többre veszek. Legyen 50.

A timer/counter2 felfelé számol tehát 256-50=206. Így a 2 periódus idő mérést még simán el lehet végezni akkor ha a timer/counter2 értéke kisebb mint 206 mert akkor míg még 256-ig ér, és megszakítást generálna a mérés közepén, 195,3125ms idő van hátra, ami több mint a 2 periódusidő méréshez szükséges idő maximum. Ebbe belefér a 156,5ms és még marad is.

Ez programban így néz ki:

  1. if(TCNT2<206)
  2.         {
  3.                 //fordulat számítás kezdete
  4.                 Fordulatszam=0;
  5.                 while(RPMin && hiba){hiba--;}//áll míg magas a szint
  6.                 while(!RPMin && hiba){hiba--;}//áll míg alacsony a szint
  7.                 TCNT1=0;
  8.                 Timer1owf=0;
  9.                 while(RPMin && hiba){hiba--;}//áll míg magas a szint
  10.                 while(!RPMin && hiba){hiba--;}//áll míg alacsony a szint
  11.                 Timer1val=TCNT1+(65536*Timer1owf);
  12.                 TCNT1=0;
  13.                 Timer1owf=0;
  14.                 uint32_t buff1 = (F_CPU*100)/Timer1val;//freki
  15.                 Fordulatszam = ((buff1*60)/2)/100;
  16.                 if(hiba==0){Fordulatszam=0;}
  17.                 //fordulat számítás vége
  18.                
  19.                 hiba=HibaErtek;
  20.                
  21.                 //Befecskendezési idő mérés kezdete
  22.                
  23.                 while(INJ_L && hiba){hiba--;}
  24.                 while(INJ_H && hiba){hiba--;}
  25.                 TCNT1=0;
  26.                 Timer1owf=0;
  27.                 while(INJ_L && hiba){hiba--;}
  28.                 Timer1val=TCNT1+(65536*Timer1owf);
  29.                 TCNT1=0;
  30.                 Timer1owf=0;
  31.                 if(hiba==0){Timer1val=0;}
  32.                 uint32_t buff3 = Timer1val*Timer1StepTime;//8000*121=968000
  33.                 BefecskendezesiIdo=buff3/1000;
  34.                
  35.                 while(INJ_H && hiba){hiba--;}
  36.                 while(INJ_L && hiba){hiba--;}
  37.                 TCNT1=0;
  38.                 Timer1owf=0;
  39.                 while(INJ_H && hiba){hiba--;}
  40.                 Timer1val=TCNT1+(65536*Timer1owf);
  41.                 TCNT1=0;
  42.                 Timer1owf=0;
  43.                 if(hiba==0){Timer1val=0;}
  44.                 uint32_t buff4 = Timer1val*Timer1StepTime;//8000*121=968000
  45.                 BefecskendezesiSzunet=buff4/1000;
  46.                
  47.                 BefecskendezesiKitoltes=100/((BefecskendezesiIdo+BefecskendezesiSzunet)/BefecskendezesiIdo);
  48.                 if(hiba==0){BefecskendezesiIdo=0;BefecskendezesiSzunet=0;BefecskendezesiKitoltes=0;}
  49.                 //Befecskendezési idő mérés vége
  50.         }


Bocs a regényért, remélem érthető
(#) Szasza9668 hozzászólása Aug 7, 2013 /
 
Sziasztok!

Talán ez segít picit. Bővebben: Link
Bascom avr ben irogatom a programot.

Amúgy én is bajlódom vele. Nem tudom melyik az injektor vezérlő vezetéke, szkópom meg nincs. Üdv!
A hozzászólás módosítva: Aug 7, 2013
(#) Suncorgo válasza Szasza9668 hozzászólására (») Aug 7, 2013 /
 
Injektor vezérlő vezetéke? Ez elég kevés infó. Milyen kocsid van? Ha autódatában benne van akkor megmondom neked. Általában az injektorok pozitív testelésüek, ezért ha az akksit leveszed, és lehúzod az injektor vezetékét, akkor egy szakadásvizsgálóval, (pl multiméter diódavizsgáló állásban) meg tudod melyik a test, és a másik a jel.

Nem rosz az sem amit belinkeltél. Sokat dob rajta az a grafikus kijelző amúgy. Csak nekem nem tetszik.... nagyon kicsike. Eredetileg én is grafikus kijelzőt akartam használni, csak igény van a gyári Opel TID-re is. Ezért 3 kijelző kezelésére is fel fogom készíteni a BC-met. A gyári TID-re, egy 2x16 karakteres kijelzőre, és amire én eredetileg tervezem, az egy 5 colos LCD. Ehhez igaz hogy kell még majd egy mikrovezérlővel kezelhető videókártya is de, ez is összeállt már fejben.

Továbbá ki akarom bővíteni hőmérséklet méréssel is, kinti benti és motorhűtő folyadék méréssel is.
A hozzászólás módosítva: Aug 7, 2013
(#) Szasza9668 válasza Suncorgo hozzászólására (») Aug 7, 2013 /
 
Skoda Felicia 1.3 mpi az autó típusa.
A hozzászólás módosítva: Aug 7, 2013
(#) Suncorgo válasza Szasza9668 hozzászólására (») Aug 7, 2013 /
 
Még mindig kevés.... Évjárat? Motorkód?
(#) Szasza9668 válasza Suncorgo hozzászólására (») Aug 7, 2013 /
 
2001 évi
motorkód 135m
(#) Suncorgo válasza Szasza9668 hozzászólására (») Aug 7, 2013 /
 
Sajna kapcsolási rajz nincs a programban róla.

Minden infót összeszedtem neked ami benne volt.
Következő: »»   18 / 22
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem