Ja,richtig.
Auf der halben differenz (Also in der Mitte 2.5° vom nächsten Stützwert) ist die Abweichung vernachlässigbar.
Druckbare Version
Ja,richtig.
Auf der halben differenz (Also in der Mitte 2.5° vom nächsten Stützwert) ist die Abweichung vernachlässigbar.
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
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 ?
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 :wink:
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.Zitat:
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.Zitat:
Was meinst du mit Datazeile?? Dieses Lookup???
Ds ist recht einfach.
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.
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.Zitat:
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 ?
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