Hallo zusammen,
ich war in diesem Forum bisher eher Zaungast, konnte dadurch aber schon einiges lernen. Weiter bin ich RPi-technisch ein blutiger Anfänger und hoffe ihr zerreißt mich für das was jetzt folgt nicht direkt in der Luft...
Das Ziel meines Projekts ist ein Messgerät für 3-Phasen-Wechselstromnetze. Für die Messung habe ich den ADE7758 ausgewählt. Ein Raspberry Pi B+ soll ausgewählte Daten vom ADE7758 per SPI übernehmen und speichern. Da der RPi über SPI nur bis 3,3 V verträgt, der ADE7758 aber auf 5 V operiert, habe ich einen ADUM1401 als "Dolmetscher" eingesetzt.
Den aktuellen Stand könnt ihr den angehängten Bildern entnehmen. Der Schaltplan zeigt die Schaltung für die Spannungsversorgung des ADE7758 und des ADUM1401 (die 5V bzw. 3,3V kommen vom GPIO des RPi), sowie die Anbindung des ADE7758 über den ADUM1401 an den RPi mittels SPI-Bus. Außerdem habe ich ein Foto des aktuellen Aufbaus auf einem Breadboard angehängt.
Ich habe die im Datenblatt geforderten Spannungen am ADE7758 und am ADUM1401. Nun wollte ich die Kommunikation über SPI testen und komme hiermit leider nicht weiter. Mit dem folgenden Python-Programm möchte ich eins der Register des ADE7758 auslesen:
import spidev
import time
spi = spidev.SpiDev()
spi.open(0,1)
spi.max_speed_hz=100000
try:
while True:
get = spi.xfer2([0b00010011])
print get
time.sleep(0.1)
except KeyboardInterrupt:
spi.close()
Alles anzeigen
Laut Datenblatt sollte das gesendete Byte mit einer "0" für "Lesen" beginnen, gefolgt von der Adresse des Registers, welches gelesen werden soll. In meinem Fall wäre dies das Register "OPMODE" (0x13) mit einem Default-Wert (lt. Datenblatt) von 4. Allerdings bekomme ich nur den Wert "0" zurückgegeben und stecke nun bei der Fehlersuche fest.
Am Code habe ich bereits einiges herumgespielt - ohne Erfolg.
Außerdem habe ich MOSI und MISO hinter dem ADUM1401 kurzgeschlossen und empfange dann die gesendeten Werte korrekt zurück, was mich annehmen lässt, dass bis zum ADE7758 alles so funktioniert wie gedacht.
Wie gesagt: Der ADE7758 bekommt die im Datenblatt geforderte Spannung und zieht auch den richtigen Strom. Da ich stark an meinen Lötfähigkeiten zweifel, habe ich Durchgangsmessungen mit dem Multimeter ausgeführt - jeweils zwischen den IC-Beinchen des ADUM1401 und des ADE7758, über welche der SPI-Bus läuft. Auch hier schein alles zu stimmen.
Hat jemand einen Ansatz, was hier falsch laufen könnte?
Ich bin über jeden konstruktiven Input dankbar.
Viele Grüße
Mathias