Hab das ganze jetzt mal durchlaufen lassen. Die GPix habe ich durch folgenden Code ersetzt: Code: void TForm1::GPix(int x, int y) { Form1->Canvas->Brush->Color = clBlack; Form1->Canvas->Rectangle(x,y,x+2,y+2); } // endof GPix Ergebnis: 10 Millionen (!!!) Zeichenvorgänge einer Linie von Punkt 20/20 nach Punkt 500/200 benötigen auf einem P3 mit einem Gigahertz nur 29 Sekunden! Gerrit, das Teil ist schnell wie Sau. Zumindest die GLine-Funktion. Hier wird so gut wie nichts rauszuholen sein. Code: TTime Anfangszeit = Time(); int a = 0; while (a < 10000000) { a++; GLine(20,20,500,200); } Form1->Caption = TimeToStr(Time()-Anfangszeit);
Mh, das klingt schonmal erfreulich. Wie gesagt, ich hab mehrmals versucht das ding zu verstehen, aber wollte nich. Was mich an dieser Routine halt gefreut hat ist, dass sie ohne MOD oder DIV auskommt, was bei einem 8bittigen microprozessor in elendigen Subtraktions-Schleifen erledigt wird. Daher hab ich den damals ohne weiteres nachdenken genommen. In Mathe hab ich bei Vektorrechnung nämlich kläglich versagt Gruss, Gerrit
:rofl: Kannst das alles ja mal durchteste, was wir eben optimiert haben Ansonsten schick mir ruhig die Sachen, die du noch hast.
Jop, und vielen Dank dafür. Zu zweit kommt mann dann doch eher auf die Fehler. Ich denke, ich werd noch ein paar mal auf Dich zurückkommen, einfach nur, damit du mir sagst "Ey Alter, das kannste aber noch besser". Schau doch mal, ob in der GPix-Routine, die ich vorhin gepostet habe, die DIV und MOD noch irgendwie zu umgehen sind. Btw: Code: void TForm1::GPix(int x, int y) { Form1->Canvas->Brush->Color = clBlack; Form1->Canvas->Rectangle(x,y,x+2,y+2); } // endof GPix Borland Builder ??? :gruebel: Gruss, Gerrit
Richtig geraten, BCB6 Code: Offset = x % 8; Hier kann man auch Code: while (x > 7) x -= 8; schreiben. Ich weiß aber nicht, ob das wirklich schneller ist. Wie groß kann denn x maximal sein? Bei entsprechender Größe könnte sich eine Anweisung wie Code: while (x > 100) x -= 100; lohnen.
Moin ! Ich hab ja schon nicht mehr damit gerechnet, aber heute lag ein Paket in meinem Zimmer. Das war drin: :B: Eigentlich wollte ich nen MAX749-SMD haben, aber naja.... :-? Gruss, Gerrit
Ups, mir ist gerade was aufgefallen. Bitte die 100 durch 120 ersetzen, da 100 nicht wirklich durch 8 teilbar ist
was ihr hier so macht ist echt klasse son tacho möchte ich auch haben für meinen xr2i konnte leider nicht alles bilder im thread öffnen habe ihn aber komplett durchgelesen wünsche dir noch viel glück bei deiner arbeit und das es bald funtz
Meld dich für das Ring-Treffen an! Ich belaber den Gerrit solange, bis der auch kommt, und dann kannst du dir den Prototyp in seinem Auto ansehen
mein xr2i ist noch nicht fertig der ist gerade beim lacker und dann muss ich noch den motor überholen und wieder alles zusammen bauen sah so aus als ich ihn gekauft habe
Mh, ich wollte eigentlich noch eine modifizierte Zeichenroutine einbauen, aber mir fällt nix ein. Werds vllt heute mal testen, und wenn nicht heute, dann nächste woche, da hab ich nämlich Urlaub :B: Gruss, Gerrit
Moin zusammen ! Ich war heute - für meine begriffe - mal fleissig. Bzw WIR... Heute war der AndiMK4 bei mir und wir haben bei dem schönen Wetter erstmal eine 40km Radtour gemacht. Danach haben wir uns in meinen Fofi gesetzt und ein wenig an den Geschwindigkeitsroutinen rumgebastelt. Ergebnis: - bei höherer Geschwindigkeit ist eigentlich keine Glättung der Daten notwendig, d.h. man kann die ermittelte Geschwindigkeit sofort anzeigen. - es dauert 1,5sec, bis der Stillstand detektiert wird. - die Interruptlast wird bei hohen Geschwindigkeiten später zu hoch sein. - eine veränderte timingroutine könnte erst ab 2km/h anzeigen und würde 0,75 sec brauchen um den Stillstand zu detektieren. an alle, die mal nen bissel mathe machen wollen: Ich suche eine gescheite Möglichkeit, die Geschwindigkeit möglichst einfach und genau zu bestimmen und einen Stillstand schnell zu detektieren. ich habe: einen Zähler, der die Impulse zählt einen Timer, der in regelmässigen Abständen (beliebiges Intervall) den Zählerstand liefert und den Zähler auf 0 setzt. Geschwindigkeitsimpulse, die 4mal pro Radumdrehung (bei mir mit 155/70R13 : alle 42,xx cm) kommen. eine anzeigbare maximalgeschwindigkeit von 255km/h eine anzeigbare minimalgeschwindigkeit von 0 km/h wie lang muss das Timerintervall sein, um gute werte zu liefern ? Viel Spass Gruss, Gerrit
Rechnen wir jetzt mal durch, welches Intervall für genaue Geschwindigkeiten (auf 1 km/h) notwendig wäre: 1 km/h = 1000 m/3600 s = 5/18 m/s Da alle 42cm = 42/100 m ein Impuls kommt, muss dies einberechnet werden. 5/18 m/s / (42/100) m = 500/756 1/s = 125/189 Hz Das entsprich ungefähr 2/3 Hz. Heißt: Bei einer Geschwindigkeit von 1 km/h kommt alle 0,66 Sekunden ein Impuls. Wenn du also wirklich Geschwindigkeiten von 1 km/h anzeigen lassen willst, wäre dies das minimal mögliche Intervall. Wenn kein Impuls in dieser Zeit gezählt wurde, kannst du davon ausgehen, dass das Auto steht. Vorteil: Die Anzahl der gezählten Impulse entspricht genau der Geschwindigkeit
Moin ! Ja, sowas hatte ich am ende auch raus. Aber ich hab die Nacht mal drüber geschlafen und festgestellt: Habich aber Problem, weil unterschiedliche Radgrössen.. !!! Sagen wir mal, ich fange erst bei 2km/h an, bei einem ähnlich niedrigen Timerintervall. Ich brauche aber auch noch eine Rechnung mit einer Variablen X, welche irgendwie mit der Reifengrösse zusammenhängt. Vorschläge ? Gruss, Gerrit
Boah Gerrit, Mathematik Klasse 8! Kannst du denn das Intervall flexibel machen? Wenn ja, sagen wir einfach mal, der Faktor entspricht grundsätzlich dem Radumfang. Bei dir: 171,9 cm. Machen wir der Einfachheit halber den Faktor in mm, also xy = 1719. Dann ist die Formel: Frequenz = 5/18 m/s * 4 * 1000 / xy m = 10000/(9 * xy) Hz Wenn du das ganze in Millisekunden haben willst: Intervall = (9 * xy)/10 ms Ergebnis wäre ca. 1,5 Sekunden, habe oben Frequenz mit Intervall verwechselt Vorteil dieser Lösung wäre, dass man nur die Impulse zählen müsste, und die Anzahl identisch mit der Geschwindigkeit ist. Du brauchst also keinen komplexen Algorithmus, der jede Zählung in km/h umrechnet. Du könntest aber beispielsweise Sommer- und Winterreifen vorprogrammieren, so dass man relativ einfach zwischen ihnen wechseln kann, ohne immer den Faktor einzugeben. Wenn du nur auf 2 km/h genau sein willst, halbiere das Intervall und multipliziere die Impulse mit 2.
Bei der ganzen theorie aber net die praxis vergessen. Der radumfang is nur ein ca. wert und weicht je nach hersteller und verschles ab, die angegebenen werte sind glaub mit 50% profil. Für den TÜV darf der tacho auch auf keinen fall weniger anzeigen. Auserdem hat man mit zunehmender geschwindigkeit auch einen schlupf, ab ca. 160 wird das merkbar. Bei 200km dreht das rad etwa 8kmh schneller als sich das auto bewegt.
Das ist klar. Du kannst net 100% genau messen. Aber irgendwovon musst du ja ausgehen. Wenn rundum 5mm Profil abgefahren werden, verringert sich der Umfang um 31,4 mm, weniger als 2%. Daher sollte der Radumfang auf neue Reifen berechnet werden, damit keinesfalls weniger als die tatsächliche Geschwindigkeit angezeigt wird. Je mehr Profil abgefahren wird, desto mehr wird bei gleicher Geschwindigkeit angezeigt. Und das mit dem Schlupf unterscheidet sich von Reifen zu Reifen (je nach Härte und Hersteller), da wird auch höchstens zuviel angezeigt. Außerdem ist da die Tachowelle, die jetzt drin ist, auch net genauer