Hallo alle zusammen, hab da so ein Problem ich arbeite mit Bascom an dem Abschlussprojekt meiner Ausbildung und Zwar einer digitalen temperatur regelnden Lüftersteuerung mit einstellbaren Hysterese werten. die werte dollen über eine LCD ausgegeben werden. Ich verwende einen LM235 um die Temperatur zu Messen die Spg des LM halbiere ich über einen Spgteiler und Wandle ihn über den ADC Wandler des Atmegas 8 um. die Messung und die Ausgabe funktioniert auch wunder bar nur muss ich um die Temperatur anzuzeigen muss ich den Binärwert durch einen wert teilen nur ändert sich der Faktor durch den ich Teilen muss und ich weiß nur nicht so recht wie ich das anstellen soll. Programm lade ich mit hoch sowie das Datenblatt des LM235. Danke schon mal Knut
G. Matthias schrieb: > Hallo alle zusammen, > > hab da so ein Problem ich arbeite mit Bascom an dem Abschlussprojekt >... > die Temperatur anzuzeigen muss ich den Binärwert durch einen wert teilen > nur ändert sich der Faktor durch den ich Teilen muss und ich weiß nur > nicht so recht wie ich das anstellen soll... > > Hallo, ich bin jetzt etwas verwirrt, Teilen => Faktor. Im Kopf habe ich noch Divident dividiert durch Divisor gleich Wert des Quotienten. Hoffe dennoch wir beide meinen das gleiche. Egal, da gibt es doch so Sachen wie IF... THEN. Ich meine, wenn die Bedingung ( IF ) für diesen ?Faktor? gegeben ist,( THEN ) dann lädst Du halt die Variable mit diesem Faktor. ldi Divisor,Wert_1 ;Das ist Asssembler von Bascom habe ich keine Ahnung. Also, im THEN Programmabschnitt für diesen Faktor - lädst Du halt die Variable die ich Divisor genannt habe, mit dem Wert_1. Falls der Divisor ein anderer sein soll, dann wird halt die nächste IF... THEN... Sache abgearbeitet. Sprich ldi Divisor,Wert_2 usw. Bernd_Stein
moin >Hallo, >ich bin jetzt etwas verwirrt, Teilen => Faktor. >Im Kopf habe ich noch >Divident dividiert durch Divisor gleich Wert des Quotienten. >Hoffe dennoch wir beide meinen das gleiche. hass ja recht das hab ich auch schon ausprobiert hab den binären wert genommen wollte es eigendlich so machen das ich den wert wann das if losgehen soll ändere und den Wert durch den die Binärzahl geteilt wird. hab ein Temperatur bereich von ca 70° C das heist 700 if befehle(wenn ich bei jedem ° den divisor ändere,was erforderlichwäre) das ist bissi viel find ich. Ne idee wie der IF befehlt aus sehen könnte B=606 If A > B Them D=D /1,14 B=B + 5 aber dann wird B ja oben wieder zurück gesetzt auf 606 Gruß knut
G. Matthias schrieb: > moin > > >>Hallo, > >>ich bin jetzt etwas verwirrt, Teilen => Faktor. >>Im Kopf habe ich noch >>Divident dividiert durch Divisor gleich Wert des Quotienten. >>Hoffe dennoch wir beide meinen das gleiche. > hass ja recht > > das hab ich auch schon ausprobiert hab den binären wert genommen wollte > es eigendlich so machen das ich den wert wann das if losgehen soll > ändere und den Wert durch den die Binärzahl geteilt wird. hab ein > Temperatur bereich von ca 70° C das heist 700 if befehle(wenn ich bei > jedem ° den divisor ändere,was erforderlichwäre) das ist bissi viel > find ich. Find ich auch. Es wird doch irgendeinen mathematischen Zusammenhang geben! > Ne idee wie der IF befehlt aus sehen könnte Nein. AUs deinem Gestammel kann man noch nicht einmal erkennen warum eigentlich durch immer irgendetwas anderes dividiert werden soll. Noch nicht mal dann, wenn ich deinen anderen Thread mit dazu nehme. Formuliere deine Frage erst einmal ordentlich und gib alle relevanten Details
na dann also an meinem LM fallen bei 20° 2,932V ab über den Spg teiler wird sie halbiert 1,466 Vref = ",485 ADC= VIn * 1024 /2,485 = 604 SO 604 ist mein wert für 20 ° ich will auf meinem Display auch 20 ° stehen haben nicht 604 604 /20 = 30,2 . für 21° ist mein binäre wert V in = 2,942/2 =1,471V Vin * 1024 / 2,485 = ADC = 606 jetzt brauch ich wieder den Temp wert durch 30,2 sind das ? Richtig 20,066 also 606 / 21 =28,86 dieser wert ist also um 95,55% kleiner das ist die Änderung die ich in dem Divisor habe ? ist mein Gestammel jetzt einleuchtend??
Meine Frage ist jetzt wie ich das um setztn kann das ich den faktro änder ohne jeden einzelnen binären wert in einer If Verknüpfung abzufragen braucht ganz schön viel Rechen zeit 700 if befehle ab zu arbeiten.
G. Matthias schrieb: > also an meinem LM fallen bei 20° 2,932V ab über den Spg teiler wird sie > halbiert 1,466 Vref = ",485 > > ADC= VIn * 1024 /2,485 = 604 > > SO 604 ist mein wert für 20 ° ich will auf meinem Display auch 20 ° > stehen haben nicht 604 604 /20 = 30,2 . > > für 21° ist mein binäre wert V in = 2,942/2 =1,471V Vin * 1024 / > 2,485 = ADC = 606 jetzt brauch ich wieder den Temp wert durch 30,2 sind > das ? > > Richtig 20,066 > also 606 / 21 =28,86 dieser wert ist also um 95,55% kleiner das ist die > Änderung die ich in dem Divisor habe ? > > ist mein Gestammel jetzt einleuchtend?? Nein. Aber ich denke du bist auf der Suche nach einer linearen Gleichung und nicht einfach nur nach einer Division. Temp = ADC_Wert * Konstante + Offset Du kennst 2 Wertepaare Bei einem Messwert von 604 müssen 20 rauskommen Bei einem Messwert von 606 müssen 21 rauskommen Also 20 = 604 * k + d 21 = 606 * k + d das sind 2 Gleichungen in 2 Unbekannte und das kann man lösen und so die Konstante k und den Offset d bestimmen. (Und wenn deine Kalibrierwerte weiter auseinander liegen würden, wäre es noch besser. Einen Wertepärchen für 0° [Eiswasser] und eines bei 100° [Kochendes Wasser] wäre besser) Und da das deine Abschlussarbeit ist, werde ich dir das hier nicht vorrechnen.
Also 100° sind 3,732 also ist mein Binärer wert 768,92 = 769 da es keine Kommastellen gibt 0° sind 2,732 also 562,89 = 563 100° = 769 * k + d (-d 100-d = 769*k (/100 - d = 769*k / 100 100 = 769 *k - 769*k/100 ( *100 10000=769*k*100-769*k (/k 10000/k = 769*100-769 10000/k= 76131 (/ 10000 1/k = 76,131 (^-1 k = 0,0131 100 = 769*k+d 100 = 10,07+d ( - 10,07 89,3 = d 0° = 563 *k + d 0 = 7,375 +d d= -7,375 Meintest du das so ja das heißt bei 100° Temperatur Änderung wird d um 96,67 größer oder kleiner
Hallo, die Dinger liefern 10mV pro Grad Kelvin... Messwert z.B. 2,73V = 273 Grad Kelvin - 273 = 0 Grad Celsius. 3,73 Volt = 373 grad Kelvin - 273 = 100 Grad Celsius. Wo ist das Problem? PS: Kommastellenkram habe ich mal weggelassen. Gruß aus Berlin Michael
G. Matthias schrieb: > Meine Frage ist jetzt wie ich das um setztn kann das ich den faktro > änder ohne jeden einzelnen binären wert in einer If Verknüpfung > abzufragen braucht ganz schön viel Rechen zeit 700 if befehle ab zu > arbeiten. Oh Mann! Hast du in Deutsch gefehlt oder bist du besoffen? Du willst doch was von uns, dann formulier deine Anfrage gefälligst vernünftig!
Mh will die werte von binär in Dezimal umwandeln und dafür brauche ich eine Divisor der sich für jedes Grad mehr verkleinert für jedes Grad weniger erhört. Geb die Temperatur auf einem LC-Display aus und da brauche ich den dezimalen Wert .
Wie Schreibe ich eine If Verknüpfung die es schaft den Divisor und sich selbst in Abhängigkeit der Temperatur hoch oder runter zu setzten? @g_ast Vernünftig genug?? Wenn wir jetzt kleinlich werden es heißt es formuliere und nicht formulier also erst mal an die eigene Nase packen bevor man jemanden anderen wegen etwas verurteilen will .
Ich verstehe nicht was du dauernd mit der if-Verknüpfung willst? (wäre sowieso eine if-Abfrage!) Bei Temperaturfühlern, welche auch immer, kann man meist eine Gerade über die Kennlinie legen. Also: Geradengleichung für deinen Fühler aufstellen und gut ists! z.B: Offset = xxxxx; Steigung = yyyy; Temperatur = (ADU_Wert * Steigung) + Offset;
G. Matthias schrieb: > @g_ast > Vernünftig genug?? > Wenn wir jetzt kleinlich werden es heißt es formuliere und nicht > formulier also erst mal an die eigene Nase packen bevor man jemanden > anderen wegen etwas verurteilen will . Sei froh dass ich hier kein Mod. bin! Darf ich mal entschlüsseln? Der Mensch hat keine Ahnung und schreibt jetzt so lange wirres Zeug bis ihm jemand eine fertige Lösung serviert. plonk
Hallo, vielleicht habe ich oben zu undeutlich geschrieben: der LM235 ist misst LINEAR mit 10mV/Grad Kelvin! mit seinem Spannungsteiler (wozu???) bekommt er dann eben 10mV/2 Grad Kelvin. Also ohne Teiler (U lm235 - 2732mV) = Temperatur in 1/10 Grad Celsius. Mit seinem Teiler dann eben (U lm235 - (2732/2)) = Temperatur in 1/5 Grad Celsius. Gruß aus Berlin Michael
Weil ich seit 2 Wochen mit Bascom arbeite und noch nie was von Offset gehört habe. Was gibt Offset an , die Steigung ist mir schon klar die Steigung die ich habe von Grad zu Grad. und der ADU_wert meinst du welchen wert Binär oder Dezimal.
> Weil ich seit 2 Wochen mit Bascom arbeite und noch nie was von Offset > gehört habe. > und der ADU_wert meinst du welchen wert Binär oder Dezimal. Das muss man sich mal auf der Zunge zergehen lassen... :-(
>ADU_wert meinst du welchen wert Binär oder Dezimal.
Ich glaube dir fehlt noch einiges an Verständnis.
Mit Offset meinte ich, dass du vermutlich nicht 0V bei 0°C hast.
Wenn du eh 10mV/°C hast ist das Ding ja linear!
Also wo ist das Problem?
Das hat nichts mit BASCOM zu tun, sondern mit y= mx +b .
9. Klasse mal gelernt...
>ADU_wert meinst du welchen wert Binär oder Dezimal.
Erinnert mich an die aktuelle Ausgabe von COM.
Auf der Titelseite steht: IPv6 : Kann Ihr Rechner das hexadezimale
Zahlenformat?
Wie man eine Linearen Grafen berechnet ist mir klar nur die Befehle waren unklar okay. Es tut mir leid das ich ein unwissender kleiner dummer Azubi bin möchte mich dafür entschuldigen das ich eure Zeit beanspruche.
@Michael: Der Spannungsteiler ist dafür da das ich die interne Referenzspannung benutzen kann diese beträgt 2,485 V.
>Wie man eine Linearen Grafen berechnet ist mir klar nur die Befehle >waren unklar okay. Befehle? Du brauchst eine Addition und eine Multiplikation. Aber mach dir nichts draus, es gibt viele Erstsemestler die keine Geradengleichung aufstellen können.
G. Matthias schrieb: > und der ADU_wert meinst du welchen wert Binär oder Dezimal. sowas tut immer wieder weh...
Es geht nur um den Befehl den ich in Bascom brauche wie ich einen Gottverdammten Linearen Grafen berechne weiß ich F (x) = mx + b B ist der Punkt an dem der Graf die y schneidet m die Steigung und X der wert auf der X Achse ,soll ich auch noch erklären wie man eine Parabel berechnet bevor ihr mich weiter für blöd verkauft.
G. Matthias schrieb: > Es geht nur um den Befehl den ich in Bascom brauche wie ich einen > Gottverdammten Linearen Grafen berechne weiß ich F (x) = mx + b Dann guck in die gottverdammte Doku oder frag Google und belästige uns nicht weiter! RTFM Kann das mal einer zumachen? Ist ja nicht zu glauben!
Und ich weiß auch das meine Steigung also m = 2,0604 ist und b mein Offset = 2,732 ist.
Naja das erste mal das in diesem Forum fast nur bessere Menschen als ich es bin antworten Michael danke für deine Hilfe dem Rest auch danke fürs Augen öffnen.
Justus Skorps schrieb: > G. Matthias schrieb: >> und der ADU_wert meinst du welchen wert Binär oder Dezimal. > > sowas tut immer wieder weh... Hallo, da hast Du recht. Aber ich meine deine Antwort und nicht seine Frage. Okay, die Experten hier im Forum dürften erkannt haben, was er vor hat und wo im Moment sein Problem liegt. Für die anderen, will ich es mal mit meinen Worten versuchen zu formulieren. Mit einem ATMega8, LM235, LC-Display und noch anderen Hardwarezutaten möchte oder muß G. Mattias alias knut89 eine Lüftersteuerung realisieren. Der Temperaturbereich für den Fühler liegt zwischen 0° Celsius und 70° Celsius. Im Moment hat er ein Problem damit, die vom AD-Wandler eingelesene Spannung als Grad Celsius auf dem LC-Display korrekt anzuzeigen. Der LM235 erzeugt z.B. bei 20°C eine Spannung von 2,932 Volt. Über einen Spannungsteiler, welcher diese Spannung halbiert bekommt der interne AD-Wandler des ATmega8 deshalb an seinem Analogeingang Vin eine Spannung von 1,466 Volt ( Spannung des LM234 dividiert durch zwei ). Die Eingangsspannung Vin am AD-Wandler wird in folgender Gleichung als Zahlenwert umgewandelt. ADC = Vin * 1024/2,485 Als Zahlenwert erhält man nun 604. Zum Beispiel soll dieser Zahlenwert 604 nun in die Temperatur überführt werden und dann auf dem LC-Display als " 20°C " erscheinen. Schade das ich da von zu wenig Ahnung habe, aber für einige Experten hier im Forum dürfte das mit Leichtigkeit zu machen sein. Nur ist hier das Problem, es einem anderen auch Vermitteln zu können, wie man so etwas macht. Ich klinke mich jetzt hier aus, da ich weder das eine, noch das andere behersche. Bernd_Stein
Also Lösung für dieses Problem ist wie oben schon von vielen gesagt die Formel y=mx+b. Nur muss y der Bit wert sein m die Steigung X die Temperatur b Der Offset (der y-Wert an dem X=0 ist) Um die Temperatur zu berechnen muss ich also nach X umstellen lautet die Formel also X = (y-b)/m und das ist es Lb1 = Adcl 'Abfrage des Lowbits Hb1 = Adch 'Abfrage des Highbits Hb1 = Hb1 And &B00000011 'Highbit mit 3 und verknüpfen um eventuele Störsignale ich ein zu Beziehen Hb1 = Hb1 * 256 'High bit * 256 um 1023 bit zu bekommen A = Lb1 + Hb1 'Variable A = Gesamt bit High- und Lowbit D = A * 100 'Umwandlung von A für die Berechnung der Temperatur Y = D - C X = Y / B Wenn noch fragen bestehen fragen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.