Ja,richtig.
Auf der halben differenz (Also in der Mitte 2.5° vom nächsten Stützwert) ist die Abweichung vernachlässigbar.
Werbung
Ja,richtig.
Auf der halben differenz (Also in der Mitte 2.5° vom nächsten Stützwert) ist die Abweichung vernachlässigbar.
Gruß
Ratber
Ich glaube ich habs,
habe es zumindest sowetit das der code nur noch 40% bracuht, also mal eben 50% eingespart.
Ihr könnt mir ja evtl nochmal einen Tip geben um das weiter zu verkürzen, oder ist das so schon OK?
Ich habe alles in excel aufbereitet und musste dann nachher nur aus excel in Bascom rauskopieren. Das klappt hervorragend.
Ich hänge die Excelliste auch mal an. Dann seht ihr auch die Werte die ich berechnet habe und die Werte die der mega errechnet hat.
Code:$regfile = "m8def.dat" $crystal = 3686400 $baud = 9600 Declare Sub Fall Dim Temp As Integer Dim Volt As Integer Dim Differenz As Integer Dim Helfer As Integer Dim Startwert As Integer Dim Wert As Integer Dim Anzeige As Integer Ddrb = &B00000001 Original Alias Pinb.3 Auf Alias Pinb.5 Zu Alias Pinb.4 Relais Alias Portb.0 Set Portb.3 Set Portb.4 Set Portb.5 Config Adc = Single , Prescaler = Auto , Reference = Internal Start Adc Cursor Off Cls Locate 1 , 2 Lcd Chr(239) ; "ltemp:" Locate 1 , 13 Lcd Chr(223) ; "C" Lowerline Lcd Chr(239) ; "ltemp2:" Locate 2 , 13 Lcd Chr(223) ; "C" Do Volt = Getadc(0) Locate 1 , 9 Fall Print "vor berechnung" Print "startwert:" ; Startwert Print "Tempstartwert:" ; Temp Print "Differenz:" ; Differenz Print Helfer = Differenz / 5 'analogwert um wieviel verändern damit temperatur um 1 größer Wert = Volt - Startwert Wert = Wert / Helfer Anzeige = Temp + Wert Print "Ergebnisse" Print "Isttemperatur" ; Anzeige Print "aufzu addierender Wert:" ; Wert Print "Helfer für Berechnunng:" ; Helfer Wait 2 Loop End Sub Fall Select Case Volt 'startwertetabelle für alle 5°C Case 0 To 515 Lcd " LO " Case 515 To 567 Startwert = 515 temp= 20 differenz= 51 Case 567 to 616 startwert= 567 temp= 25 differenz= 49 Case 616 to 662 startwert= 616 temp= 30 differenz= 46 Case 662 to 705 startwert= 662 temp= 35 differenz= 43 Case 705 to 744 startwert= 705 temp= 40 differenz= 39 Case 744 to 779 startwert= 744 temp= 45 differenz= 35 Case 779 to 811 startwert= 779 temp= 50 differenz= 32 Case 811 to 838 startwert= 811 temp= 55 differenz= 27 Case 838 to 862 startwert= 838 temp= 60 differenz= 24 Case 862 to 882 startwert= 862 temp= 65 differenz= 21 Case 882 to 900 startwert= 882 temp= 70 differenz= 18 Case 900 to 916 startwert= 900 temp= 75 differenz= 16 Case 916 to 929 startwert= 916 temp= 80 differenz= 13 Case 929 to 941 startwert= 929 temp= 85 differenz= 12 Case 941 to 951 startwert= 941 temp= 90 differenz= 10 Case 951 to 959 startwert= 951 temp= 95 differenz= 8 Case 959 to 966 startwert= 959 temp= 100 differenz= 7 Case 966 to 973 startwert= 966 temp= 105 differenz= 6 Case 973 to 978 startwert= 973 temp= 110 differenz= 6 Case 978 to 983 startwert= 978 temp= 115 differenz= 5 Case 983 to 987 startwert= 983 temp= 120 differenz= 4 Case 987 To 1025 Lcd " HI " End Select End Sub
Also ganz genau hab ich mir das jetzt nicht angesehen aber die vielen Case-anweisungen sind zuviel.
Das kann man besser mit ner Schleife erledigen.
Die Stützpunktwerte kannst du in einer Datazeile verewigen dann kann man das Abklappern auch per Schleifenzähler erledigen.
Das macht dann Codemäßig nen schlanken Fuß
Mit nem KTY-81-210 wäre das ne Sache von 5 Zeilen Code bis du deine Temp hast.
Muß es denn unbedingt dieser Fühler sein ?
Gruß
Ratber
OK, werde dann da nochmal ran gehen. Aber war ja auhc schn spät gestern. Und von 91% auf 41% ist ja schonmal was.
Werde dann das nochmal mit der Datazeile versuchen.
Wegen dem Fühler:
Ja es muss dieser Fühler sein, weil das fürs Auto eine Öltemperatur anzeige wird. Und da gibts halt nur entweder original BMW, VW, Audi usw oder halt Fühler von VDO. Und ich habe halt diese VDO Fühler. Das Problem ist das Einschraubgewinde der Fühler. Man könnte höchsten so einen Fühler kaufen den aufbohren und einen anderen einbauen. Aber das wollte ich eigentlich vermeiden.
Werde mir am WE auch noichmal die Polynomfunktion zu Gemüte führen. Um die Werte des Öldruckgebers direkt zu berehcnen, also ohne die Wertetabelle. Bei den Druckgebern sind die Polynomfunktionen ja angegeben. Bei den Temperaturfühlern leider nicht.
Melde mich dann nochmal wenns neue Ergebnisse gibt.
Und danke nochmal. Bin erst vor knapp 2-3Wochen mit uC programmieren angefangen. Aber klappt schon recht gut wie ich finde. Also habt ein nachsehen falls ich komische oder blöde Fragen stelle
ciao Marco
EDIT: Was meinst du mit Datazeile?? Dieses Lookup???
Zu fühler:
Ja,gut,wenn es nicht anders geht dann gehts eben nicht anders.
Das wird schon.Und danke nochmal. Bin erst vor knapp 2-3Wochen mit uC programmieren angefangen. Aber klappt schon recht gut wie ich finde. Also habt ein nachsehen falls ich komische oder blöde Fragen stelle
Bevor ich mir Fransen anne Finger tipper ackerst du am besten mal die Hilfe dazu durch.Was meinst du mit Datazeile?? Dieses Lookup???
Ds ist recht einfach.
Gruß
Ratber
Ja habs schon gefunden, bin da gerade mit am spielen.
Ja,probier einfach mal einwenig damit rum um ein gefühl dafür zu bekommen.
Die Verweise auf zusammenhängende Befehler ebenfalls.
Gruß
Ratber
Ich habe jetzt ma ein bißchen getestet,
bin im moment der Meinung das ich am einfachsten 3 Datenreihen mache undd dann mit dem Befehl look up die Stützpunktwerte einlese.
Und dann die gleiche Berechnung wie die von gestern. Nur hole ich mir die Daten halt anders.
Kann man datenreihen auch übere mehrer zeilen schrieben?, er macht immer ein fehler wenn nicht alle sin einer reihe steht, ahe es mit sämtlichen kombinationen aus leerzeihchen und komma probiert.
Meinst du das so?
oder habe ich wieder die verkehrte richtung eingeschlagen.
Ja richtig.
Ringo hat es ja schon angesprochen.
Mit Lookup (Zähler,Wert) kannste die Werte schön einfach ansprechen und mit ner Schleife abfragen was wesentlich kürzer als die lange Casereihe ist.
Du kannst in einer Zeile 256 Zeichen unterbringen.Kann man datenreihen auch übere mehrer zeilen schrieben?, er macht immer ein fehler wenn nicht alle sin einer reihe steht, ahe es mit sämtlichen kombinationen aus leerzeihchen und komma probiert.
Was wollteste denn unterbringen ?
Gruß
Ratber
OK, ich schreibe dann die werte mal in die Data Zeile.
Schreibe dann alle 5°C schritte ein. Musss halt nur mal gucken wie ich das mache das der uC auch weiß welches Feld er jetzt nehmen muss. Aber das bekomme ich schon hin.
Werdfe da nochmal ein bißchen mit rumtesten.
Dank euch allen.
ciao Marco
Lesezeichen