Forum: Analoge Elektronik und Schaltungstechnik Analog Digital Wandler


von mitti (Gast)


Lesenswert?

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

von Axel S. (a-za-z0-9)


Lesenswert?

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.

von Route_66 H. (route_66)


Lesenswert?

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
von Mitti (Gast)


Lesenswert?

Ah ok, dann muss ich die werte mit einem uc umschreiben damit ich diese 
am lcd ausgeben kann!?

von Axel S. (a-za-z0-9)


Lesenswert?

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.

von Axel S. (a-za-z0-9)


Lesenswert?

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.

von Stephan (Gast)


Lesenswert?

Aufpasse ! Teperaturen können auch negativ sein. Bei Frost.

von Harald W. (wilhelms)


Lesenswert?

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.

von Peter D. (peda)


Lesenswert?

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.

von Feldkurat K. (feldkurat)


Lesenswert?

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-

von A. S. (Gast)


Lesenswert?

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.
von Co E. (Firma: keine) (emco)


Lesenswert?

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.

von Axel S. (a-za-z0-9)


Lesenswert?

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.

von Feldkurat K. (feldkurat)


Lesenswert?

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-

von Co E. (Firma: keine) (emco)


Lesenswert?

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
von Feldkurat K. (feldkurat)


Lesenswert?

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-

von Co E. (Firma: keine) (emco)


Lesenswert?

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?

von Axel S. (a-za-z0-9)


Lesenswert?

Wenn ich mir die Bewertungen so ansehe, dann sind Paul, Paul und Paul 
mal wieder unterwegs.

von Arc N. (arc)


Lesenswert?

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...

von A. S. (Gast)


Lesenswert?

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 
;-).

von Co E. (Firma: keine) (emco)


Lesenswert?

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
Noch kein Account? Hier anmelden.