Forum: Mikrocontroller und Digitale Elektronik MCP3208,Raspberry PI3, Prinzip


von Ben B. (sbmiles21)


Lesenswert?

Hallo zusammen,

ich habe eine prinzipielle Frage bezüglich MCP3208.

Ich habe einen Thermosensor (K-Type), einen Verstärker AD595 und einen 
AD-Wandler MCP3208 zusammen verschaltet. Mein Ziel ist es natürlich die 
Temp. später in einem Python Script einzulesen.

Dies habe ich mit einem "Fertig-Skript" aus dem Netz auch schon gemacht, 
jedoch wird bei Raumtemperatur immer der Wert ~60 ausgegeben(Bei 
Körpertemp. ~100). Frage:Warum 60 und 100?

Ich habe vom AD595 die Ausgangsspannung gemessen und mit dem Datenblatt 
verglichen, alles ok soweit.

Ich vermute ich muss dem MCP3208 noch sagen, welche Analog Spannung, 
welche Temp. ist. Kann das sein? Falls ja sicher im Python Script?Aber 
wo finde ich dann die "Umrechnungsformel"?


Gruss

: Bearbeitet durch User
von Solocan Z. (solocan)


Lesenswert?

Ich@pszczola.eu B. schrieb:
> Ich vermute ich muss dem MCP3208 noch sagen, welche Analog Spannung,
> welche Temp. ist.

Erst mal überprüfen, ob MCP3208 richtig konvertiert und du richtige 
Daten bekommst. Teste das mit einem Multimeter / Netzteil etc.

Wenn alles i.o. ist, teste ob deine Schaltung, von der du uns nicht 
verraten hast, überhaupt richtige Spannungen an MCP3208 anlegt, d.h. 
deine analoge Schaltung richtig funktioniert. z.B. mit einem Multimeter.

Wenn da auch alles i.o, ist wirst du natürlich dem uC sagen müssen, 
welche Spannung welche Temp. ist.

Ich@pszczola.eu B. schrieb:
> Aber
> wo finde ich dann die "Umrechnungsformel"?

Das impliziert, dass du das Datenblatt deines Tempsensors nicht gelesen 
hast. Da stellt sich die Frage, wonach du überhaupt deine Schaltung 
gebastelt hast und wie das dann funktionieren soll. Da steht nämlich 
üblicherweise eine Tabelle von Temperatur zu Widerstand. Danach ist 
eigentlich alles straight forward

von Ben B. (sbmiles21)


Lesenswert?

Solocan Z. schrieb:
> Das impliziert, dass du das Datenblatt deines Tempsensors nicht gelesen
> hast. Da stellt sich die Frage, wonach du überhaupt deine Schaltung
> gebastelt hast und wie das dann funktionieren soll. Da steht nämlich
> üblicherweise eine Tabelle von Temperatur zu Widerstand. Danach ist
> eigentlich alles straight forward

Hallo Solocan,

danke für dein Feedback. Der TempSensor ist ein K-Type. Heisst dazu 
brauche ich einen Verstärker (AD595). Beim AD 595 steht im Datenblatt 
welche Spannung bei Welche Temp. ausgegeben wird. Diese kenne ich und 
diese ist auch nach Datenblatt korrekt (mit Multimeter nachgemessen)

Deine Check Items werde ich durchführen. Mir ging es jedoch prinzipiell 
um die Frage: Von wo weiss der A/D Wandler, welche Spannung am  Analog 
Input, welchen Wert am Digitalausgang ausgeben soll.

Oder habe ich einen Denkfehler? :D

Gruss

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Ben B. schrieb:
> Von wo weiss der A/D Wandler, welche Spannung am  Analog
> Input, welchen Wert am Digitalausgang ausgeben soll.

Das ist im Chip hart verdrahtet. Er vergleicht den analogen Eingang mit 
einer Referenz (am Pin Vref) und liefert dementsprechend Zahlenwerte von 
0 bis 1023.

0 entspricht 0 Volt
512 entspricht der Hälfte der Referenz-Spannung
1023 entspricht der Referenz-Spannung

von bingo (Gast)


Lesenswert?

wie hoch ist Vref am MCP3208 ???

von Ben B. (sbmiles21)


Lesenswert?

Danke für die Meldungen.

-Vref, ist auf den 3V Versorgungsausgang vom PI angeschlossen.
-Wenn es hart kodiert ist, dann muss ich es mir selber 
herleiten/empirisch,wie viel Grad es sind?Gibt es dazu keine Formel 
o.ä.?

von Solocan Z. (solocan)


Lesenswert?

Ben B. schrieb:
> Von wo weiss der A/D Wandler, welche Spannung am  Analog
> Input, welchen Wert am Digitalausgang ausgeben soll.

Ein AD-Wandler ist ein "Vergleicher". Du legst eine Spannung an 
Referenzinput (sagen wir 5V) und legst z.B. an den Messkanal 2,5V an. 
Dann vergleicht das AD-Wandler und sagt ok, das ist die Hälfte der 
Referenzspannung und kodiert das in Bits. Dein MCP3208 ist 12bit 
Wandler. Das heißt in Dezimalwerten

0V ist 0
2,5V ist 2048
5V ist 4095

usw.

Das kommuniziert er dann an seinem Digitalausgang als Bits (in deinem 
Fall SPI Protokoll, dazu kannst du in Wiki darüber lesen.)

Wenn am analogen Messkanal die richtige Spannung anliegt und du an 
deinem Mikrocontroller unvernünftige Werte liest, liegt es 
höchstwahrscheinlich an deiner Datenverarbeitung. Du musst ggf. den 
Sensor per SPI richtig konfigurieren und dein Programm dementsprechend 
schreiben. Was und wie du es konfigurieren musst, steht im Datenblatt 
von MCP3208. Dazu musst du ggf. grundlegendes zum SPI Protokoll 
verstehen. Aber trau dich. So schwer ist es nicht, wie es im ersten 
Blick scheint ;)

: Bearbeitet durch User
von Solocan Z. (solocan)


Lesenswert?

Ben B. schrieb:
> dann muss ich es mir selber
> herleiten/empirisch,wie viel Grad es sind?Gibt es dazu keine Formel
> o.ä.?


Ben B. schrieb:
> Beim AD 595 steht im Datenblatt
> welche Spannung bei Welche Temp. ausgegeben wird. Diese kenne ich und
> diese ist auch nach Datenblatt korrekt (mit Multimeter nachgemessen)

Also die Konversion von Temperatur zu Spannung hast du angeblich 
verstanden. Die Konversion von Spannung zu digitalen Werten hast du 
jetzt auch erklärt bekommen. Was für eine Formel brauchst du noch?

von Stefan F. (Gast)


Lesenswert?

Huch, 12 bit. Dann sind die von mir genannten Zahlen (512 für die 
Hälfte, 1023 für die volle Spannung) falsch.

von Ben B. (sbmiles21)


Lesenswert?

Hallo zusammen,

vielen Dank für die Erklärungen. Ich denke ich habe es verstanden. Werde 
nochmal meine Schaltung und mein Verständnis dabei überprüfen :)

Danke

Gruss
ben

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.