PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bascom und rechnen -> Problem



Olle_Filzlaus
01.02.2007, 21:27
Hallo,

ich will mit Bascom ein Temperatursensor einlesen und dann als Temperatur per rs232 ausgeben.

Ich habe die Kennlinie aufgenommen und in Excel in eine Formel umgerechnet. Aber da liegt das Problem. Ich weiß das ich pro Zeile nur eine Rechenoperation ausfüren darf.

Die ermittelte Formel:
y = 6E-05x2 + 0,1898x - 76,344



$regfile = "m16def.dat"
$crystal = 8000000
$baud = 9600



Dim T As Integer
Dim Teil_eins As Single
Dim Teil_zwei As Single
Dim Teil_drei As Single
Dim Ergebnis As Single

'y = 6E-05x2 + 0,1898x - 76,344

T = 441

Teil_eins = 0.00006 * T

Teil_eins = Teil_eins * T


Teil_zwei = T * 0.1898


Teil_drei = Teil_eins + Teil_zwei


Ergebnis = Teil_drei - 76.344


Do
Print "T=" ; T

Print "Ergebnis=" ; Ergebnis

Print "Teil_eins" ; Teil_eins

Print "Teil_zwei" ; Teil_zwei

Print "Teil_drei" ; Teil_drei

Loop


Teil eins rechnet er richtig. Aber bei Teil zwei habe ich das Problem, das er da immer auf die Falschen Werte kommt.

er sollte bei Teil_zwei = T * 0.1898 auf 83.701 kommen, aber er rechnet mir immer 41 aus (für T = 441).

Ich kann aber den Fehler nicht finden. Mit Kommas muss er ja rechnen, weil sonst würde bei teil eins ein falscher wert raus kommen.

Habt ihr eine Idee warum das nicht geht.

und noch ein Problem, wenn ich den Wert auf Singel stelle, kommt immer nur der Wert 220,5 raus. Wieso das? Single deckt doch einen großen Bereich und Kommastellen ab, oder?

thx Arno

PicNick
02.02.2007, 07:29
Probier einfach mal, "T" auch als single zu defininieren.
Mit gemischten Formaten hat es der Bascom nicht so.

Olle_Filzlaus
02.02.2007, 07:41
Wenn ich T als Single Single setze ist T immer 220,5. Egal was ich für eine Zahl übergebe.

Das macht mich so konfus.
Bisher hatte ich viel von Bascom gehalten. Aber das finde ich eine ganz schöne Schwäche.

Werde wohl auf eine Datentabelle umsteigen um die Werte zu bekommen.

Aber wenn noch jemand ne Idee hat. Immer her damit.

cu arno

PicNick
02.02.2007, 07:52
Jetzt habe ich dein Programm oben mit copy in den Bascom reingetan, ohne eine Pieps zu ändern und er rechnet ganz genau das aus, was er soll.
Da is woanders ein Wurm drin.




eine ganz schöne Schwäche

Falscher Ansatz. Zu 99.99 % prozent sitzt das Problem zwischen den Ohren und nicht im Computer.
Is nur ein gutgemeinter Tip und keine Rüge. Kannst du auch gleich wieder vergessen, wenn du magst.

Olle_Filzlaus
02.02.2007, 07:56
Danke für deine Hilfe.

Jetzt weiß ich nicht wo mein Fehler liegt. Mist.

Heißt aber das mein Program funktioniert. Juhu

thx für deine Hilfe

cu Arno

PicNick
02.02.2007, 08:16
Na, dann mach es so wie ich Bascom->neues program und den obigen Code mit Copy reinstellen, kompilieren und simulieren.
(Aber wirklich genau so) Das gibt erst mal Vertrauen

Nehme an, das da oben ist nicht das vollständige programm und irgendwo anders zerschmetterst du deine Felder.

Olle_Filzlaus
02.02.2007, 08:53
Is Richtig, das oben ist nur die Berechnung des Temperaturwertes aus dem ADC Wert.

Aber das Programm so wie ich es oben stehen habbe, habe ich einzeln in einem neuen Programm erstellt. Also das Programm oben ist mein Testprogramm. Dort wollte ich es testen weil im Hauptprogramm falsch gerechnet wurde. Aber auch im neuen Testprogramm ging es niccht.

na ich werde das nochmal checken.

thx arno