Forum

Einloggen | Registrieren | RSS  

hubert

09.02.2018,
11:46
 

Problem mit MCP3208 (Bauelemente)

Hallo,

ich habe einen MCP3208 am Raspberry 3 angeschlossen
es handelt sich eigentlich um einen 12 Bit Wandler
bei mir verhält er sich aber wie ein 10-Bit Wandler
d.h. die höchste Zahl ist genau bei Uref erreicht
das kann eigentlich nur an der Software liegen
Kennt da jemand die Lösung?
Software anbei

#!/usr/bin/python

import spidev
import time

spi = spidev.SpiDev()
spi.open(0,1)

while True:
antwort = spi.xfer([1,128,0])
time.sleep(0.01) # Wandlung abwarten
wert = ((antwort[1] * 256) + antwort[2]) * m
print wert ," V"
time.sleep(1)
# end while

Offroad GTI(R)

09.02.2018,
12:23

@ hubert

Problem mit MCP3208

» bei mir verhält er sich aber wie ein 10-Bit Wandler
» d.h. die höchste Zahl ist genau bei Uref erreicht
Wo hast du diese Weisheit her?

P.S.: Du brauchst nicht so sparsam mit Satzzeichen umgehen.

hubert

09.02.2018,
13:38

@ Offroad GTI

Problem mit MCP3208

Kennst du die Lösung wenn ich die Satzzeichen hinzufüge?

» » bei mir verhält er sich aber wie ein 10-Bit Wandler
» » d.h. die höchste Zahl ist genau bei Uref erreicht
» Wo hast du diese Weisheit her?
»
» P.S.: Du brauchst nicht so sparsam mit Satzzeichen umgehen.

Hartwig(R)

09.02.2018,
14:54

@ hubert

Problem mit MCP3208

» Hallo,
Hallo,
»
» ich habe einen MCP3208 am Raspberry 3 angeschlossen
» es handelt sich eigentlich um einen 12 Bit Wandler
» bei mir verhält er sich aber wie ein 10-Bit Wandler
das erkennst Du wie?
» d.h. die höchste Zahl ist genau bei Uref erreicht
was hättest Du denn erwartet?
» das kann eigentlich nur an der Software liegen
» Kennt da jemand die Lösung?
» Software anbei
»
» #!/usr/bin/python
»
» import spidev
» import time
»
» spi = spidev.SpiDev()
» spi.open(0,1)
»
» while True:
» antwort = spi.xfer([1,128,0])
» time.sleep(0.01) # Wandlung abwarten
» wert = ((antwort[1] * 256) + antwort[2]) * m
» print wert ," V"
» time.sleep(1)
» # end while

hubert

09.02.2018,
15:48

@ Hartwig

Problem mit MCP3208

Ich habe eine Referenzspannung von 5V
wenn ich die zu messende Spannung am analogen Eingang von 0 bis 5 V steigere steigt mein Messwert stetig von 0 auf 1023
das sind 10 Bit
ich hätte erwartet, dass der ausgelesene Messwert von 0 auf 4095 steigt
das wären dann 12 Bit
der Baustein heißt MCP3208 und hat laut Datenblatt 12 Bit

» » Hallo,
» Hallo,
» »
» » ich habe einen MCP3208 am Raspberry 3 angeschlossen
» » es handelt sich eigentlich um einen 12 Bit Wandler
» » bei mir verhält er sich aber wie ein 10-Bit Wandler
» das erkennst Du wie?
» » d.h. die höchste Zahl ist genau bei Uref erreicht
» was hättest Du denn erwartet?
» » das kann eigentlich nur an der Software liegen
» » Kennt da jemand die Lösung?
» » Software anbei
» »
» » #!/usr/bin/python
» »
» » import spidev
» » import time
» »
» » spi = spidev.SpiDev()
» » spi.open(0,1)
» »
» » while True:
» » antwort = spi.xfer([1,128,0])
» » time.sleep(0.01) # Wandlung abwarten
» » wert = ((antwort[1] * 256) + antwort[2]) * m
» » print wert ," V"
» » time.sleep(1)
» » # end while

bastelix(R)

09.02.2018,
20:58

@ hubert

Problem mit MCP3208

» Ich habe eine Referenzspannung von 5V
» wenn ich die zu messende Spannung am analogen Eingang von 0 bis 5 V
» steigere steigt mein Messwert stetig von 0 auf 1023
» das sind 10 Bit
» ich hätte erwartet, dass der ausgelesene Messwert von 0 auf 4095 steigt
» das wären dann 12 Bit
» der Baustein heißt MCP3208 und hat laut Datenblatt 12 Bit
1. Dein Code wird so nicht compilieren, weil m nicht definiert ist (Zeile wert = ((antwort[1] * 256) + antwort[2]) * m )

2. Wenn man etwas nach deinem Code google findet man extrem ähnlichen Code unter http://www.netzmafia.de/skripten/hardware/RasPi/RasPi_SPI.html
Da steht aber auch dabei, dass der Code für den MCP3008 ist. Vergleicht man nun das Datenblatt vom MCP3204/3208 Seite 18 Fig. 6-1 mit dem Datenblatt vom MCP3004/3008 Seite 21 Fig. 6-1 dann sieht man, dass die beiden ICs unterschiedliche Bitfolgen erwarten.

Was mich etwas irritiert ist, dass dein 3208 überhaupt Antwortet und dass du auch noch auf Werte kommst die zu der Eingangsspannung korrelieren. Sicher dass du einen 3208 hast und keinen falsch gelabelten 3008?

Versuch mal spi.xfer([6,0,0]) was für den 3208 das gleiche bedeuten sollte wie für den 3008 das [1,128,0]. Die Konvertierung des Rückgabewertes ist, soweit ich das sehe, für beide Typen gleich.

Hartwig(R)

09.02.2018,
22:15

@ hubert

Problem mit MCP3208

» Ich habe eine Referenzspannung von 5V
» wenn ich die zu messende Spannung am analogen Eingang von 0 bis 5 V
» steigere steigt mein Messwert stetig von 0 auf 1023
» das sind 10 Bit

Ok, das war aber Deinem Ausgangsposting wirlich nicht zu entnehmen, da fehlten nicht nur die Satzzeichen..., aber Bastelix hat ja jetzt auch geantwortet....
Grüße
Hartwig

hubert

10.02.2018,
14:12

@ bastelix

Problem mit MCP3208

Hallo Bastelix,
herzlichen DANK für deine Hilfe
das hat auf Anhieb geholfen
DANKE!

» » Ich habe eine Referenzspannung von 5V
» » wenn ich die zu messende Spannung am analogen Eingang von 0 bis 5 V
» » steigere steigt mein Messwert stetig von 0 auf 1023
» » das sind 10 Bit
» » ich hätte erwartet, dass der ausgelesene Messwert von 0 auf 4095 steigt
» » das wären dann 12 Bit
» » der Baustein heißt MCP3208 und hat laut Datenblatt 12 Bit
» 1. Dein Code wird so nicht compilieren, weil m nicht definiert ist (Zeile
» wert = ((antwort[1] * 256) + antwort[2]) * m )
»
» 2. Wenn man etwas nach deinem Code google findet man extrem ähnlichen Code
» unter http://www.netzmafia.de/skripten/hardware/RasPi/RasPi_SPI.html
» Da steht aber auch dabei, dass der Code für den MCP3008 ist. Vergleicht man
» nun das Datenblatt vom MCP3204/3208 Seite 18 Fig. 6-1 mit dem Datenblatt
» vom MCP3004/3008 Seite 21 Fig. 6-1 dann sieht man, dass die beiden ICs
» unterschiedliche Bitfolgen erwarten.
»
» Was mich etwas irritiert ist, dass dein 3208 überhaupt Antwortet und dass
» du auch noch auf Werte kommst die zu der Eingangsspannung korrelieren.
» Sicher dass du einen 3208 hast und keinen falsch gelabelten 3008?
»
» Versuch mal spi.xfer([6,0,0]) was für den 3208 das gleiche bedeuten sollte
» wie für den 3008 das [1,128,0]. Die Konvertierung des Rückgabewertes ist,
» soweit ich das sehe, für beide Typen gleich.