Hi, Höre ich da raus, dass du die Dinger dann auch verkaufst? Oder quasi "in Serie" produzierst? a) Wenn ja, wo würden deine Preisvorstellungen liegen? b) Ich habe keine Ahnung von dem was du da so gemacht hast *lob dafür!* aber die Grafiken könnte ich auch selber machen, oder? Markus...
Moin ! Wenns funktioniert, und die LCDs noch zu kriegen sind, kann ich ne Kleinserie draus machen. Wie meinst Du das mit den Grafiken ? Also die Geschwindigkeitsanzeige ist ne Windows-Schriftart. Die kann man tauschen, aber bei den restlichen Grafiken.. also ums einfach zu sagen: Man müsste komplett umprogrammieren, wie die grafiken gezeichnet werden... Wenn Du schonmal die Tankanzeige nach Deinen Wünschen umbauen willst, bitte: Code: void DrawTank(unsigned char Prozent) { unsigned char i; unsigned char j; unsigned char FillByte; unsigned char *lpacTankBMP; //unsigned char Text[4]; //wir benutzen die Arrayvariable aMemSpalte LCDWriteCmd(C_CSRDIR_RIGHT); LCDWriteCmd(C_CSRW); LCDWriteData( LOW((((TANKPOS_Y/8)-1) * (LCD_X/8)) + TANKPOS_X/8) ); LCDWriteData(HIGH((((TANKPOS_Y/8)-1) * (LCD_X/8)) + TANKPOS_X/8) ); if (Prozent < 10) //Bissel in die Mitte rücken LCDWriteData(' '); LCDWriteString(itoa(Prozent,aMemSpalte,10)); LCDWriteData('%'); LCDWriteData(' '); //% Zeichen an der 100er Stelle killen // Reinschreiben Prozent = Prozent >>1; lpacTankBMP = (unsigned char *)aZapf; //Cast gegen die Fehlermeldung LCDWriteCmd(C_CSRDIR_DOWN); for (j = 0; j < 5; j++) { LCDWriteCmd(C_CSRW); //CursorPos LCDWriteData( LOW(((TANKPOS_Y-21) * (LCD_X/8)) + (TANKPOS_X/8)-1+j + LCD_LAYER2) ); LCDWriteData(HIGH(((TANKPOS_Y-21) * (LCD_X/8)) + (TANKPOS_X/8)-1+j + LCD_LAYER2) ); LCDWriteCmd(C_MWRITE); for(i = 50; i > 0;i--) { FillByte = 0; if ((j > 0) && (j < 4) && (i < 29) ) { FillByte = pgm_read_byte(lpacTankBMP++); } if (i < Prozent) FillByte = ~FillByte; LCDWriteData(FillByte); } } } //endof DrawTank Gruss, Gerrit
Boah ne ey, ich werd noch bescheuert.... Scheiss Mathe... Helft mir mal, geht um die Selbstlernfunktion der Tankanzeige. gegeben sei Tank als Wert 0..255 Gewollt ist Anzeige als Wert 0..100% Da die gemessenen Werte schwanken, werden sie gemittelt: m = m - (m / 256) + Tank; Anzeige = ((m / 256) * 100) / 256; soweit ganz gut, funzt auch. Jetzt habe ich noch folgendes drin: if (Tank > Max) Max = Tank; if (Tank < Min) Min = Tank; jetzt möchte ich meine Anzeige nicht mehr nach 0% = 0 100% = 255 sondern nach 0% = Min 100% = Max ausrichten. Und da hörts jetz bei mir auf.... Kann jemand besser rechnen als ich ? Gruss, Gerrit
Wenn ich jetzt keinen Denkfehler drin hab, dürfte der min-Stand bei 12%, also ca 5Liter liegen, somit ergibt sich: 12%=0 100%=255 wobei, wenn man in die Reserve reinkommt, ein negativer Wert entstünde..
ich als delphi progger würde das so machen. nur dann musst du den tank einmal richtig leer fahren und einmal bis zum auslaufen vollmachen, sonst haste mal 15%=0 und 95%=255 und mal 05%=0 und 80%=255 (je nach tankgewohnheit) und was machst du mit der reserve? ich schätz mal wenn deine tankanzeige bei 10-15 Prozent ist lässte etwas aufblinken oder so, weil wenn nicht und ich hätte deine tankanzeige, dann würd ich auf dem blanken fahren, da ich oft mit reserve fahre.
Sollte mit der Zeile am ende funktionieren: Ausgabeprozent = (Min+Anzeige) / Max; Dann würde es zum Beispiel so aussehen: Max=237 Min=11 Aktueller Tankwert (Anzeige) = 33 Prozentausgabe--> 19% // Anzeige hab ich als die Variable verstanden in der der Aktuelle (gemittelte) tankwert (0...255) steht, korrekt?
Hi ! Ich wollt mal eben so loswerden, das ich die Display-Kommunikation gerade um 40 Kommandos ärmer gemacht, d.h. entlastet habe. Timing ist alles Das heisst, das jetz noch weniger Zeit beim Schreiben aufs Display vertrödelt wird. Zeit, die jetzt für andere Spielereien über ist. Wer will, darf mir applaudieren arty: Gruss, Gerrit
Leute ich bin frustriert :x Da mir ja niemand nen Widerstandswert eines leeren Tanks sagen konnte, hab ich mir vom FastFiesi die Spritpumpe mit Schwimmerschalter besorgt. Der Widerstand bei leerem Tank beträgt ca 148 Ohm Bei vollem Tank hat man noch ca 23 Ohm auf der Leitung. Wenn das Ganze über einen 1:1 Spannungsteiler geht, hat man bei leerem Tank am Messpunkt ungefähr halbe Betriebsspannung (2,483221V). Bei vollem Tank noch ca. 0,385906 V So is das geschaltet: Für die die mitrechnen: Uaus = Uges * R1 / (R1 + R2 ) Der Prozessor sampelt mit einer Auflösung von 256 Stufen von 0 bis Betriebsspannung. D.h. ich kriege für "Leer" bis "Voll" ca 0..127. Viel ist das nicht, aber es geht. Der grosse Kack kommt aber erst noch: Solange der Prozessor den AD-Wandler noch nicht aktiviert hat, ist dieser Pin ein ganz normaler Digital-Ausgang und liegt auf logisch 0 also Masse. D.h. es fliesst ein Strom von +5V über R2 in den Prozessor. Und nach U=R*I macht das I = U / R = 5V / 150Ohm = 0,0333A = 33mA. Da der Prozessor nur maximal 20mA treiben kann, ist das definitiv zu viel. Der aufmerksame Leser fragt sich vielleicht: "Wieso macht der Junge so ein Geschiss, soll der den Pin gleich auf AD-Wandler schalten und gut ist". Stimmt ja auch, lieber Leser, aber während man den Prozessor neu flasht liegt dieser Pin ebenfalls auf Masse. Und die Programmierphase dauert definitiv länger als der Prozessor diese Überbelastung aushält. "Dann nimm doch einen grösseren Widerstand" wird der Fachazubi sagen. Okay, grübeln wir mal... :gruebel: 10mA sollte der Port ja wohl aushalten... 10mA macht nach U=R*I: R = U / I = 5 V / 0,010 A = 500 Ohm (boah, war das schwer) Setzen wir diesen Wert nun in obige Formel für den Spannungsteiler ein: Für leeren Tank: Uaus = 5 V * 148 Ohm / (148 + 500) Ohm = 1,14197530864197530864197530864198 V Für vollen Tank: Uaus = 5 V * 23 Ohm / (23+ 500) Ohm = 0,219885277246653919694072657743786 V So, jetz rechnen wir mal schnell aus, wieviel eine Stufe beim AD-Wandler ist um dann zu ermitteln, welchen Wert mir der AD-Wandler bei vollem Tank ausspuckt: 5V / 256 = 0,01953125 V 1,14197530864197530864197530864198 V / 0,01953125 V = 58 Und bei leerem Tank: 0,219885277246653919694072657743786 V / 0,01953125 V = 11 58 - 11 = 47 Na wie geil, 47 Stufen zwischen leer und voll, bzw 0 und 100 % Also jede Stufe = 2% oder wie ? Na Prima, bin ich wieder bei dem gleichen Quark, den uns die analoge Tankanzeige auch präsentiert. :x So, da ich ja nun der digitale Typ bin und bei solchen Rechnungen schon anfange zu schwitzen, kommt nun das kalte Grausen auf mich zu. Ich muss diesen Messbereich ja irgendwie spreizen. Das Signal verstärken. Die Leute vom Fach wissen es bestimmt schon: Sowas macht man mit einem Transistor. :schreck: Erschrocken ? Macht nix, ich auch. :-? Weil nämlich so ein Transistor und die Widerstände wollen hübsch dimensioniert werden. :roll: Dazu muss man ins Datenblatt gucken, noch mehr Formeln rechnen und noch mehr aufpassen und ahrg, da ich nie sowas erwartet habe, habe ich auf meiner Platine auch garnicht den Platz für solche Bauteile Naja, irgendwo werd ich mir schon ein Stückchen freikratzen. Und damit ich nicht wieder vor so einem Problem stehe, bitte ich Dich, lieber Leser, auch wenn Du obige Rechnungen nicht ganz verstanden hast, dir mal dein Multimeter und einen Schraubendreher zu nehmen und mal eben am Tachostecker deines Fofis (vorausgesetzt, es ist ein MK3) den Widerstandswert für vollen oder relativ leeren Tank zu messen. Anleitung gibts hier: http://www.fiesta-tuning.de/forum/viewtopic.php?t=44377 Guten Rutsch und weiterhin viel Spass mit unserer kleinen Hobbythek wünscht Dir: Gerrit P.S.: Ich habe Kopfschmerzen. Kommt das nun vom vielen Rechnen oder dampft die Spritpumpe immernoch Benzingase aus ???
Wieso willst du das eigentlich so weit auflösen? Momentan entspricht eine Stufe ca. 1 Liter, oder willst du eine Restfahrstreckenauswertung machen, so in der Art: Noch 2,35 km bis zum endgültigen Stillstand?
Nein, so genau werd ich das eh nicht hinkriegen. Aber der AD-Wandler wirft auf Grund von Störungen usw. bei gleicher Stellung des Schwimmers immer mal einen anderen Wert aus. Die Abweichung beträgt meisstens so 2 oder 3 nach oben oder unten. Wenn ich nen Range von 200 habe, schlägt eine Abweichung von 2 gerade mal mit 1% ein. Bei einem Range von 47 hab ich gleich 8% Abweichung. Ich bilde zwar den Mittelwert über 256 Sampelungen aber 8% reissen den trotzdem ganzschön runter. Klar ? Gruss, Gerrit
Das schaut ja lustig aus. Warum ham wir net so schöne einfache geber wie bei opel. Tank leer wiederstand unendlich, tank voll wiederstand null. Eine abweichung von 8% find ich net so schlim, die originale anzeige hat locker 15%