Hallo Forum, möchte ein Analogsignal(0-5V) mit 8bit digitalisieren. Somit erhalte ich bei 5V 1111 1111 und bei 0V 00000000. Wie mache ich das jetzt am besten wenn ich bei 5V einen Digitalwert von 80(Temperaturwert) und bei 0V 10(Temperaturwert) erhalten möchte? Grüsse Thomas
mitti schrieb: > möchte ein Analogsignal(0-5V) mit 8bit digitalisieren. > Somit erhalte ich bei 5V 1111 1111 und bei 0V 00000000. Gibt es einen besonderen Grund, warum du diese Werte in der Binärdarstellung schreibst? > Wie mache ich das jetzt am besten wenn ich bei 5V > einen Digitalwert von 80(Temperaturwert) und bei 0V 10(Temperaturwert) > erhalten möchte? 10 und 80 was? Äpfel, Birnen? Oder doch eher °C? Durch umrechnen? Male ein Diagramm: x-Achse ist der ADC-Wert, y-Achse die Temperatur. Du hast bereits zwei Punkte in diesem Diagramm. Je nachdem, welche Kennlinie dein Temperatursensor hat, mußt du da jetzt eine Gerade oder eine passend gekrümmte Kurve durchlegen. Falls dein Problem ist, die Formel für die Gerade herauszubekommen - das ist Mathe-Stoff ca. 8. Klasse.
mitti schrieb: > Wie mache ich das jetzt am besten wenn ich bei 5V > einen Digitalwert von 80(Temperaturwert) und bei 0V 10(Temperaturwert) Rechnen? Das war ja einfach! >das ist Mathe-Stoff ca. 8. Klasse. In Bayern? Normalerweise gibt es das spätestens in der Sechsten.
:
Bearbeitet durch User
Ah ok, dann muss ich die werte mit einem uc umschreiben damit ich diese am lcd ausgeben kann!?
Route 6. schrieb: >>das ist Mathe-Stoff ca. 8. Klasse. > In Bayern? Normalerweise gibt es das spätestens in der Sechsten. Leider nicht nur in Bayern, sondern z.B. auch in Hessen. Ich gebe den Nachbarskindern hin und wieder Mathe-Nachhilfe. Die Große ist jetzt in der 7. Klasse und weit und breit nichts von linearen Funktionen in Sicht <seufz>. Eine kurze Google-Suche meint, das wäre Stoff für die 8. Klasse.
Mitti schrieb: > Ah ok, dann muss ich die werte mit einem uc umschreiben damit ich diese > am lcd ausgeben kann!? Nicht umschreiben. Umrechnen! Ein µC ist am Ende auch nur ein Computer. Rechnen ist sozusagen das einzige, was der kann.
Stephan schrieb: > Aufpasse ! Teperaturen können auch negativ sein. Bei Frost. Ich glaube, das Rechnen mit Zahlen unter Null ist bereits in der fünften Klasse dran.
Mitti schrieb: > Ah ok, dann muss ich die werte mit einem uc umschreiben damit ich diese > am lcd ausgeben kann!? Wie dachtest Du denn die LCD-Ausgabe ohne MC? Alternativ kannst Du aber auch vor dem ADC analog rechnen (mit OPV und Widerständen). Mit dem Ohmschen Gesetz tun sich aber viele schwer.
So ein blödes Geschwätz! Bloß keine Hilfe leisten -aber grienend Leute verarschen.... @TO Du mußt den Zusammenhang zwischen der Spannung (die in festem Zusammenhang zur Temperatur steht) und dem Anzeigewert herstellen: Anzeigewert=(Spannungswert*14)+10 Bei Null Volt: Anzeigewert=(0*14)+10 -> ist 10 Bei Fünf Volt: Anzeigewert=(5*14)+10 -> ist 80 -Feldkurat-
Wobei Du natürlich 0..255 bekommst, die in ein Byte passen. Zur Umrechnung brauchst idealerweise einen mindestens 2-Byte-Wert. Das ist kein Problem, wenn der Compiler "integral Promotion" nicht abschaltet Lineare Skalierungen (aus einem x wird ein y) laufen immer in folgender Form ab: y = mx+b; mit m=Steigung (Multiplikator) und b=Basis. Rein technisch kann man auch y=m(x+b) rechnen, dann haben m und b andere Zahlenwerte. Wenn Du mit Integer-Zahlen rechnen willst, dann wird noch ein Divisor gebraucht, meist eine Potenz von 2, z.B. 256, da der µC dann ggf. nicht rechnen braucht, also: y = (mx+b)/256 Die Koeffizienten bestimmt man durch Lösung linearer Gleichungen, was in diesem Fall (ein Wert ist 0) auch einfacher geht. Zuerst Umstellen, dann die Wertepaare (x=0->y=10, x=255->y=80) einsetzen
1 | 256*y = mx+b |
2 | 256*10= m*0+b --> 2560=b |
3 | 256*80= m*255+b --> 20480=m*255+2560 --> 17920 = 255*m --> 70 = m |
Die Rechnung im Controller ist also: Temperatur=(70*ADWert()+2560)/256;
Beitrag #5121338 wurde von einem Moderator gelöscht.
Feldkurat K. schrieb: > So ein blödes Geschwätz! Bloß keine Hilfe leisten -aber grienend Leute > verarschen.... Hmmm... Es gab doch Hinweise wie das Problem zu lösen ist. Und "verarscht" wurde auch niemand. Feldkurat K. schrieb: > Du mußt den Zusammenhang zwischen der Spannung (die in festem > Zusammenhang zur Temperatur steht) und dem Anzeigewert herstellen: > > Anzeigewert=(Spannungswert*14)+10 > > Bei Null Volt: Anzeigewert=(0*14)+10 -> ist 10 > Bei Fünf Volt: Anzeigewert=(5*14)+10 -> ist 80 Von allen Antworten die gegeben wurden ist diese am wenigsten zu gebrauchen weil leider falsch! Richtige Antwort siehe Achim S.
Harald W. schrieb: > Stephan schrieb: > >> Aufpasse ! Teperaturen können auch negativ sein. Bei Frost. > > Ich glaube, das Rechnen mit Zahlen unter Null ist bereits > in der fünften Klasse dran. Andererseits kann man mit einen 8-Bit ADC, bei dem 0 einer Temperatur von 10°C entspricht und 255 einer Temperatur von 80°C, keine negativen Temperaturen messen.
Co E. schrieb: > Von allen Antworten die gegeben wurden ist diese am wenigsten zu > gebrauchen weil leider falsch! Erklärst Du bitte mal, was daran falsch ist? Meine Lösung ist nämlich genau die, die Achim später beschrieb. Achim S. schrieb: > Lineare Skalierungen (aus einem x wird ein y) laufen immer in folgender > Form ab: y = mx+b; mit m=Steigung (Multiplikator) und b=Basis. -Feldkurat-
Feldkurat K. schrieb: > Erklärst Du bitte mal, was daran falsch ist? Meine Lösung ist nämlich > genau die, die Achim später beschrieb. Na klar! ;-) Feldkurat K. schrieb: > Achim S. schrieb: >> Lineare Skalierungen (aus einem x wird ein y) laufen immer in folgender >> Form ab: y = mx+b; mit m=Steigung (Multiplikator) und b=Basis. Soweit richtig. Gesucht sind m und b Lösung Feldkurat (falsch): m=5 b=10 Lösung Achim (richtig): Achim S. schrieb: > 256*y = mx+b > 256*10= m*0+b --> 2560=b > 256*80= m*255+b --> 20480=m*255+2560 --> 17920 = 255*m --> 70 = m > > Die Rechnung im Controller ist also: Temperatur=(70*ADWert()+2560)/256; Einwände ;-)
:
Bearbeitet durch User
Co E. schrieb: > Einwände ;-) Gesucht ist vom TO die Formel, die er direkt benutzen kann. Die habe ich geliefert und sie bringt die gesuchten Resultate. Willst Du mir ein Ohr abkauen -oder wie? -Feldkurat-
Feldkurat K. schrieb: > Co E. schrieb: >> Einwände ;-) > > Gesucht ist vom TO die Formel, die er direkt benutzen kann. Die habe > ich geliefert und sie bringt die gesuchten Resultate. > > Willst Du mir ein Ohr abkauen -oder wie? > Hmmm? Die Formel ist richtig, die Berechnung von m und b ist falsch. Du hast mit dem Spannungswert gerechnet. Den hat der TO in der Form nicht. Richtig wäre es gewesen mit dem AD-Wert zu rechnen. Sonst kommt Murks heraus. Okay?
Wenn ich mir die Bewertungen so ansehe, dann sind Paul, Paul und Paul mal wieder unterwegs.
Co E. schrieb: > Feldkurat K. schrieb: >> Erklärst Du bitte mal, was daran falsch ist? Meine Lösung ist nämlich >> genau die, die Achim später beschrieb. > > Na klar! ;-) > > Feldkurat K. schrieb: >> Achim S. schrieb: >>> Lineare Skalierungen (aus einem x wird ein y) laufen immer in folgender >>> Form ab: y = mx+b; mit m=Steigung (Multiplikator) und b=Basis. > > Soweit richtig. > Gesucht sind m und b > > Lösung Feldkurat (falsch): > m=5 > b=10 m = 5? > Bei Null Volt: Anzeigewert=(0*14)+10 -> ist 10 > Bei Fünf Volt: Anzeigewert=(5*14)+10 -> ist 80 m = 14 > Lösung Achim (richtig): > > Achim S. schrieb: >> 256*y = mx+b >> 256*10= m*0+b --> 2560=b >> 256*80= m*255+b --> 20480=m*255+2560 --> 17920 = 255*m --> 70 = m >> >> Die Rechnung im Controller ist also: Temperatur=(70*ADWert()+2560)/256; Mal 255 für ADWert einsetzen... wenn man's mit Fließkommazahlen rechnet kann man's nachher passend runden, mit reiner Integerrechnung landet man bei 79...
Arc N. schrieb: > Mal 255 für ADWert einsetzen. Ja stimmt. Ich habe leider gerundet, was bei Integer-Rechnung natürlich Quatsch ist. Also Temperatur = (71*ADWert()+2560)/256. Da kommt dann wirklich 80 raus ;-).
Arc N. schrieb: >> Soweit richtig. >> Gesucht sind m und b >> >> Lösung Feldkurat (falsch): >> m=5 >> b=10 > > m = 5? > >> Bei Null Volt: Anzeigewert=(0*14)+10 -> ist 10 >> Bei Fünf Volt: Anzeigewert=(5*14)+10 -> ist 80 > > m = 14 Ärghs! Da hab ich mich vertippselt. Hast natürlich recht. Danke
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.