Jump to content

kako mjeriti brzine kotača? Koji algoritam?


Recommended Posts

Osim toga, Nikola, pisanje softvera za industrijske kontrolore sa skeniranjem senzora u realnom vremenu nije isto što i pisanje softvera za web stranice s pristupom nekoj maloj bazi. I ne, to se defitnivno ne radi niti u jednom od ovih jezika koje si naveo (osim u C-u, assembleru ili posebnim jezicima baš za tu namjenu).

 

Jel ti mene zajebavaš ili što?! :lamo: Ono je primjer što radim na HRT, jer kolega punjeni misli da ja reinstaliram windowse na HRT... :drink:

 

Svi embedded sustavi koje sam ja napravio sam napisao isključivo u C-u sa vrlo malo assemblera. Sve se pazi na optimiziaciju koda, distribuciju opterećenja procesora u vremenu i većinu u prekidnim rutinama sa prethodnim distribucijama..

 

Šta misliš koliko je velik kod za SMScommader? Neću ga ovdje kopirati zbog copyrighta... :rofl:

 

Kod u C-u bez include header fileova, znači kod kojeg sam ja svojeručno napisao ima 482 KB!!!! Znači skoro 500.000 stisaka moga prsta po točno određenim tipkama na tipkovnici!!!

 

Kompajliran u flash zauzme oko 80KB sa svim mogućim optimiziacijama na veličinu... Šta ti misliš sa kim ti komuniciraš?! :drink:

 

smscom.gif

 

Ovaj TC kod je za mene poslijepodnevna igra naspram tisuća i tisuća sati koliko sam uložio u razvoj SMSCommandera!!!!

Link to comment
Share on other sites

  • Replies 431
  • Created
  • Zadnji odgovor

Top Posters In This Topic

Fire, ne bih htio glumiti picajzlu, ali striktno uzevši, refresh rate nema veze s točnošću. On je samo frekvencija uzimanja uzoraka tj. mjerenja, a koliko su sami uzorci (mjerenja) točni je sasvim druga stvar..

 

Pa s statistikom se mogu poboljsati rezultati ako je sensor brz. Ali to stavio da bi pokazao da se 1k sample u 1s moze s tim jefitnim senzorima napraviti. Normalno u autu to bas i nije nesto korisno, tj ne treba tak puno mjerenja..

Link to comment
Share on other sites

Jel ti mene zajebavaš ili što?! :lamo: Ono je primjer što radim na HRT, jer kolega punjeni misli da ja reinstaliram windowse na HRT... :drink:

 

Svi embedded sustavi koje sam ja napravio sam napisao isključivo u C-u sa vrlo malo assemblera. Sve se pazi na optimiziaciju koda, distribuciju opterećenja procesora u vremenu i većinu u prekidnim rutinama sa prethodnim distribucijama..

 

Šta misliš koliko je velik kod za SMScommader? Neću ga ovdje kopirati zbog copyrighta... :rofl:

 

Kod u C-u bez include header fileova, znači kod kojeg sam ja svojeručno napisao ima 482 KB!!!! Znači skoro 500.000 stisaka moga prsta po točno određenim tipkama na tipkovnici!!!

 

Kompajliran u flash zauzme oko 80KB sa svim mogućim optimiziacijama na veličinu... Šta ti misliš sa kim ti komuniciraš?! :drink:

 

smscom.gif

 

Ovaj TC kod je za mene poslijepodnevna igra naspram tisuća i tisuća sati koliko sam uložio u razvoj SMSCommandera!!!!

 

Sorry Nikola, svaka rasprava s tobom na ovu temu je suvišna ..

Link to comment
Share on other sites

Sorry Nikola, svaka rasprava s tobom na ovu temu je suvišna ..

 

Apsolutno... :drink:

 

Sad barem znaš s kim razgovaraš... :drink:

 

A sve PC interface aplikacije za embedded sustave radim uglavnom u VB6 jer sa relativno malo truda brzo dobije grafički prihvatljiva aplikacija...

 

Nažalost VC i C# još nisam dovoljno apsolvirao... :drink:

Link to comment
Share on other sites

Pa s statistikom se mogu poboljsati rezultati ako je sensor brz. Ali to stavio da bi pokazao da se 1k sample u 1s moze s tim jefitnim senzorima napraviti. Normalno u autu to bas i nije nesto korisno, tj ne treba tak puno mjerenja..

 

To je istina, mogu se poboljšati, ali htio sam reći da nikakvim statističkim trikovima s povećanim sampling rateom ((uprosječavanje, spline i druge metode interplolacije) u osnovi nemožeš bogznakak kompenzirati točnost senzora.

 

U osnovi, ako je senzor točan interpolacijom ćeš relativno lagano nadoknaditi niski sampling rate, ali obrnuti slučaj je puno teži za popraviti. Osim toga, u današnje vrijeme visoki sampling rate nažalost ne govori puno o samoj točnosti senzora. Ne tako davno bilo je drukčije tj. samo vrhunksi senzori su imali i visoku točnost, danas međutim svako smeće ima dobar sampling rate..

Link to comment
Share on other sites

A gle kad su proizvodni procesi toliko postali jeftini da nema smisla drukčije raditi senzor od 20kn i senzor od 200kn...

 

Vrlo vjerovatno ovi skuplji su prošli ispite i testiranja i na testiranju zadovoljili strožije kriterije... A možda i sami proizvodni proces je čišći i pod kontroliranijim uvjetima rađen..

 

Znaš kako su se intel procesori radili. Svi su bili identični, no oni kvalitetniji su deklarirani neznam 2GHz, a oni lošiji 1.8GHz, itd... A u biti su identični procesori...

Link to comment
Share on other sites

To je istina, mogu se poboljšati, ali htio sam reći da nikakvim statističkim trikovima s povećanim sampling rateom ((uprosječavanje, spline i druge metode interplolacije) u osnovi nemožeš bogznakak kompenzirati točnost senzora.

 

U osnovi, ako je senzor točan interpolacijom ćeš relativno lagano nadoknaditi niski sampling rate, ali obrnuti slučaj je puno teži za popraviti. Osim toga, u današnje vrijeme visoki sampling rate nažalost ne govori puno o samoj točnosti senzora. Ne tako davno bilo je drukčije tj. samo vrhunksi senzori su imali i visoku točnost, danas međutim svako smeće ima dobar sampling rate..

 

Kakav spline, pa to je obicno spajane tocaka. Kako veze ima to s mjerenjen?

Pa dok mjeris stvari prvo sto moras eliminirati gausov sum. Mozes to raditi s obicnim niskoproposnim filterima, ali ako zelis tocnije rezultate uvjek ides s statistikom. Ja jos npr nisam vidio voltmetar bez nekog filtra, a da ne govorim o vrhunskoj opremi, uvjek je jedan dio zaduzen za statistiku da bi se dobili tocniji rezultati.

 

To je isto dok autu mjeris ubrzanje od 0-100km/h. Dali obicno ides samo jednom izmjeriti i reces to je to ili ides vise puta mjeriti. I onda u jednom mjerenju se zasaltas i ispadne rezultat 5s veci. Normalno neces taj rezultat uzeti u obzir(e to je statistika), a ako bi npr imao neki nisko propusni filter uzeo bi i taj rezultat u obzir i krajni rezulatat nebi bio cvijece(osim ako bi imao punooo ispravnih mjerenje, malo neispravih(zasaltavanje)).

Link to comment
Share on other sites

Ja mislim da su nabili takve cijene jer se u motorsportu očekuje da to sve toliko košta, a za sada nemaju dovoljno dobru konkurenciju...

 

Da vidiš kako bi im se cijena srozala da se nađe konkurentan proizvod daleko jeftiniji i da osjetan broj počne kupovati isti...

Link to comment
Share on other sites

Kakav spline, pa to je obicno spajane tocaka. Kako veze ima to s mjerenjen?

Pa dok mjeris stvari prvo sto moras eliminirati gausov sum. Mozes to raditi s obicnim niskoproposnim filterima, ali ako zelis tocnije rezultate uvjek ides s statistikom. Ja jos npr nisam vidio voltmetar bez nekog filtra, a da ne govorim o vrhunskoj opremi, uvjek je jedan dio zaduzen za statistiku da bi se dobili tocniji rezultati.

 

To je isto dok autu mjeris ubrzanje od 0-100km/h. Dali obicno ides samo jednom izmjeriti i reces to je to ili ides vise puta mjeriti. I onda u jednom mjerenju se zasaltas i ispadne rezultat 5s veci. Normalno neces taj rezultat uzeti u obzir(e to je statistika), a ako bi npr imao neki nisko propusni filter uzeo bi i taj rezultat u obzir i krajni rezulatat nebi bio cvijece(osim ako bi imao punooo ispravnih mjerenje, malo neispravih(zasaltavanje)).

 

Mislio sam na spline kad trebaš interpolaciju ili na moving average kad radiš oversampling . Ono kaj sam htio reći je da ako senzor krivo mjeri nikakav oversampling niti bilo koja statistička metoda ti neće pomoći jer će ti sva mjerenja imati grešku, vjerojatno s gaussovom razdiobom među mjerenjima (iako ni to nemora biti) ali s nepoznatim odstupanjem aritm. sredine mjerenja od "točne" vrijednosti i tipično s većom std. devijacijom od točnijeg senzora. Da ne velim da će kod lošijih senzora greška više varirati u odnosu na temperaturu i druge faktore.

 

Kad ideš mjeriti ponovo to je druga serija mjerenja - niti s tim nemožeš nadoknaditi netočan senzor. On je naprosto - netočan.. :)

Link to comment
Share on other sites

Možeš staviti 2 ili 3 senzora vrlo blizu na jednaku orijentaju na PCB i imati redundantna mjerenja... Onda možeš dobiti točnije veličine ako je baš tolika preciznost bitna... :D

 

Ma pričamo općenito, nevezano za potrebnu preciznost teme ovog topica.

 

Nažalost niti to neće pomoći, zato kaj (u općenitom slučaju) ne znaš na koju stranu "vuče" koji senzor. Drugim riječima sva 3 ti mogu javljati isti shit, tako da će ti i taj podatak vrijediti manje od mjerenja skinutog s jednog točnog senzora.

 

Ali inače, ta ideja ti je ok ako imaš 3 senzora koja imaju standardnu grešku otprilike jednaku tvojoj željenoj točnosti - u tom slučaju će već uprosjećivanje mjerenja ta 3 senzora tipično dati bolji rezultat od jednog senzora..

 

Drugim riječima, moraš zanti koju preciznost želiš i onda moraš nabaviti senzor koji mjeri (barem) s tom tvojom željenom preciznosti. I to svaki dan, u svim temperaturama, vlazi, vibraciji, i svim drugim uvjetima.

 

U svim drugim slučajevima - banana..

Link to comment
Share on other sites

kaj cekate?

 

posto upravo vadim papire i to za jedan drugi projekt vezan s autima, neda mi se to raditi jos jednom da bi eventvalno prodao 10primjeraka, iako bi imao 95% zarade sto se tice djelova.

Jedostavno to je tavka muka i tolko love treba da mi se vise neda s tim jebati.

 

Evo ja ti kazem, ja ti napravi proizvod koji ce davati kvalitetne podatke van, biti robustan i to sve, a ti sredi papire. Moze?

 

kova: bilo bi dobro da pogledas koji pdf od tih senzora, mozda primjetis kompenzacije po temperaturi. Istina bjezane po temperaturu postoji ali je malo.

Link to comment
Share on other sites

Evo napravio sam štopericu za metre... Sutra ću ju testirati da vidim jel radi...

 

Znači staneš, i po gasu... A on ti izmjeri ubrzanja do 100m, 200m, 300m, 400m, 500m, 600m, 700m, 800m, 900m, 1000m....

 

Tako da možeš isprobati i vidjeti jel se šta promijenilo ako nešto diraš po elektronici, ili se samo vježbaš.. :D

 

Moram smiisliti način i kako ću štopati 0-100km/h, 0-160km/h, 0-200km/h, 100-200km/h, itd.. :D

Link to comment
Share on other sites

stavi si timmer u interupt mod da npr svaki 0.1ms pogleda kolko impulsa si izbroji i doda vrijeme(znaci imat ces 0.1s rezoluciju). I ako je u tih 0.1s izbrojeno dosta impulsa postigao si tu brzinu. Imas onaj 16bitni timmer za to. Makar i 8bitni bi se vjerovanto dao ok iskoristiti.

Link to comment
Share on other sites

Ali će ti fulati... Razmišljao sam o tome da se broje impulsi svakih 0.1s ali onda je +/- 1 impuls oko 5km/h fulanje... :(

 

Tako da ću morati napraviti kombinaciju. No to će žderati vrijeme... Znači broji 40 impulsa ili 0.05s, što prije dođe i onda izmjeri točno onaj zadnji impuls koliko vremena je uzeo... Tako ću dobiti preciznija vremena...

Link to comment
Share on other sites

Znaš što je još interesantno? Ja imam km/h koji je spojen digitalno na imppuls geber..

 

E sad, ja želim mjeriti stražnje kotače a ne diferencijal... Tako da sam napravio konverziju odnosno izbacivanje viška impulsa sa ABS-a da dobije impulse za km/h..

 

No znaš koji je zajeb? Treba mi 1:2.11 impulsa za sat.. I gle sad. Kako podijeliti 2.11 impulsa? :lol:

 

No nema niti za to beda, ja napravio algoritam koji se integralom približuje stalno toj vrijednosti... Samo je algoritam malo jači (nekoliko linija zbrojeva i par if) i mora biti unutar interapta...

 

Pa sam razmišljao napraviti pretvaranje stvarne brzine u digitalnu (broj koji mogu pročirari na onaj način koji sam napisao post ranije, te onda iskoristiti generator frekvencije (timer kao PWM odnosno hardware generator) gdje bih po tablici odnosno funkciji rekao točno za tu brzinu izbaci tu frekvenciju koja odgovara toj brzini...

 

To je genijalno, no kao što rekoh treba relativno jeftino dobiti precizno brzinu zadnjih kotača.. :D

Link to comment
Share on other sites

Onda mozes ovak. Stavis za timmer1(16bitni) djelenje s 1024 i interapt kada dode do 0. Izracunas kolko je to vremena i dodajes nekij tunit16 varijabli(znaci tako efikasno brojis vreme, tj imas sat).

Onda iskoristis jedan od 8 bitnih timmera, njih npr stavis na 10(ili kolko treba tak da pri 100km/h se relativno cesto osvjezava) i da se okidaju s impulsom od zadnjeg kotaca. Kada dode prvi impuls neka pocnu brojiti i zapamti vremene(nekad 32 bitna varijabla, samo u prvoj dio pretocis onu prvu za brojene, a u ostalih 16bita od timera1(16bitni)). I kada dode do 0 taj timmer ides opet gledati vrijeme, oduzmes i izracunas brzinu.

Normalno zapamtio si vreme kad si krenuo i to sve.

Link to comment
Share on other sites

Jednostavno ti se djeli s 1:2.11 . Samo napravis polje i za svaki impuls postavis to stanje van.

Znaci ovak ce ti otprilike izgledati

01010101010101010110101010101010101011 (38bito, moze biti 19).

Znaci tako ces izgubiti na 19 ulaznih dobiti van 9 impusla sto je djelenje 2.1111.

Link to comment
Share on other sites

Da tako otprilike i radim. Samo što se sa integralom približavam točnom djeljenju...

 

19 bita bi već išlo, no ovaj algoritam je univerzalan... Upišeš djeljenje npr:

205 i dobiješ dijeljenje sa 2.05.. :D Matematika je luda stvar.. No treba znati raditi i optimizaciju koda.. :D

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.

Announcements


×
×
  • Create New...