Forum: Analoge Elektronik und Schaltungstechnik Raspberry Pi GPIO (oder anders) zu analoges Signal 4-20mA


von F.H. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

Ich würde gerne ein Kälte-Umwälzthermostat mittels dem Raspberry Pi 
ansteuern. Der Schaltplan befindet sich im Anhang.

Ich habe z.B. folgendes Tutorial gefunden:
http://www.adafruit.com/blog/2012/08/17/tutorial-mcp4725-12-bit-dac-with-raspberry-pi-piday-raspberrypi-raspberry_pi/

Jedoch bekommt man damit nur eine Spannung als Ausgang und nicht wie ich 
benötige einen Strom.

1. Gibt es günstige DAC, welche einen Strom von 4-20mA erzeugen (10 bit 
wäre wohl ok)?
2. Welche Anschlüsse des Kälte-Umwälzthermostats muss ich alle 
verwenden, wenn ich nur den Soll-Wert (=Temperatur) regeln möchte?

Viele Grüße

von Martin B. (statler)


Lesenswert?


von F.H. (Gast)


Lesenswert?

Hallo,

Danke. Ich nehme jedoch an, dass du Elektrotechniker oder Ähnliches 
bist. Mir hilft dein Link zumindest nicht weiter.

von Martin B. (statler)


Lesenswert?

Nimm die Operationsverstärkerschaltung nach Abb. 8.13 mit 4 gleichen 
Widerständen.

R = 10V/20mA = 500 Ohm

500 Ohm kann man nicht kaufen, also je 2 Stk. 1000 Ohm Parallel.
Genauigkeit 1% oder besser

Der OP sollte mit +- 12V besser +- 15V versorgt werden.

Und den µP programmierst du statt 0-10V auf 2-10V.

An Uo kannst du dann dein 4-20mA Signal abgreifen.

von F.H. (Gast)


Lesenswert?

Hallo,

>R = 10V/20mA = 500 Ohm

Woher kommen die 10 Volt?

>Und den µP programmierst du statt 0-10V auf 2-10V.

Ich wollte eigentlich keinen Microcontroller programmieren. Mein 
Programm (Python) sollte letztendlich nur ein digitales Signal an die 
GPIO Schnittstelle (oder ggf. RS232) senden und dieses sollte 
hardwaremäßig ohne Programmierung in ein analoges Signal (4-20mA) 
umgewandelt werden.

Frage: So wie im Schaltplan angegeben, ist meine Annahme doch richtig, 
das nur dieses Signal zum Steuern des Gerätes nötig ist, oder?

Ist es vielleicht einfacher mit soetwas meinen Plan umzusetzen:

http://www.analog.com/en/digital-to-analog-converters/da-converters/ad5410/products/product.html

Viele Grüße.

von Achim M. (minifloat)


Lesenswert?

Das ist genau das richtige IC für deinen Zweck (und Kenntnisstand). 
Allerdings wird das über SPI bedient, was sich aber auch mit GPIO 
emulieren lässt(nCS runterziehen, Daten raustickern mit einer 
Bitmasken-Schiebe-Entscheidungs-Forschleife, nCS wieder loslassen). 
Leider musst du dich wohl ein wenig mit Hardware auseinandersetzen, wenn 
du ebendiese auch bedienen willst. Fragt sich nur, wie teuer diese ICs 
da sind. mf

von Nullchecker (Gast)


Lesenswert?

LTC1661 + AD694JN

Gruß
Nullchecker

von FH (Gast)


Lesenswert?

Hallo,

Ich habe hier nun einen AD5410. Wenn ich diesen zum Laufen gebracht 
habe, wie kann ich dann einen Digitalen Wert an den DAC schicken?

Wie müssen folgende 4 Pins des DAC an den Raspberry Pi angeschlossen 
werden?

Latch => ?
SCLK => GPIO11(SPI SCLK)
SDIN => GPIO10 (SPI0_MOSI) oder GPIO8 (SPI CE0_N) ?
GND => Pin 25 (GND)

z.B. möchte ich ein Ausgangssignal von 5 mA habe. Ich habe gesehen, dass 
es für viele Chips libraries für Python gibt, die man importtieren kann, 
um Zugriff zu erlangen. Gibt es auch so`etwas für den AD5410?

Viele Grüße,
Frederik

von Jörg B. (joerg-sh)


Lesenswert?


von F.H. (Gast)


Lesenswert?

Hallo,

@Jörg B.
>"warum nicht über PWM ?"

Weil ich gefragt hatte und mir auf meine Frage:

>"Ist es vielleicht einfacher mit soetwas meinen Plan umzusetzen:
>http://www.analog.com/en/digital-to-analog-convert...";

So geantwortet wurde:

>"Das ist genau das richtige IC für deinen Zweck (und Kenntnisstand)."

Ich habe den nun zumindest hier und möchte ihn auch verwenden.

Im Manual steht:

"The flexible serial interface is SPI, MICROWIRE™, QSPI™, andDSP 
compatible
and can be operated in 3-wire mode tominimize the digital isolation 
required in isolated applications."

SPI wird doch von Raspberry Pi unterstützt und ich habe diesen bereits 
so weit eingerichtet, dass zwei SPI devices (ohne Anschluss des AD5410) 
erscheinen.
Jetzt müsste ich wissen, wie die Kommunikation funktioniert. Kann ich 
für Python fertige Treiber-Module imlementieren?

VG

von Matthias H. (hallamen)


Lesenswert?

Hallo!

Ich habe mich witzigerweise erst heute mit SPI am Raspberry 
auseinandergesetzt. Die Hardware scheint ja schon zu laufen (wenn unter 
/dev die beiden SPI-Schnittstellen zu sehen sind). Was du jetzt noch 
brauchst, ist eine Python-Bibliothek zum Ansprechen dieser.

Ich hab diese hier verwendet:
https://github.com/lthiery/SPI-Py
Einfach runterladen (direkt oder mit git), im Verzeichnis dann
sudo python setup.py install
ausführen, voilá!

Ein (sehr einfaches) Beispielprogramm ist auch dabei:
https://github.com/lthiery/SPI-Py/blob/master/test-nRF.py

Anmerkung:
Die Funktion spi.transfer() verlangt die zu übertragenden Daten als 
Tupel, im Beispielprogramm sind es 2 Byte:
spi.transfer((x, 0))
Bei nur einem Byte muss der Aufruf so aussehen (etwas eigenartig)
spi.transfer((x,))
Damit wird ein 1-Tupel übergeben.

lg

von F.H. (Gast)


Lesenswert?

Hallo,
Danke.
Ich kann mir das jetzt leider nicht anschauen. Aber ich habe bereits 
MOSI und MISO kurzgeschlossen und mittels Testprogramm (eventuell sogar 
das gleiche?) Daten gesendet und gleich wieder empfangen.

Es geht mir im Speziellen aber um das ansprechen des AD5410 selbst.

von Matthias H. (hallamen)


Lesenswert?

War das Testprogramm in Python oder C geschrieben?
Falls C, dann brauchst du wahrscheinlich noch das obige Modul.

Zum AD5410 hab ich nur irgendeinen C-Code gefunden, sieht so aus, dass 
er die Daten in 24-Blöcken erwartet, mit einem Wechsel des LATCH-Pins 
wird dann so ein Block übernommen/interpretiert/abgearbeitet. LATCH 
kannst du dabei auf irgendeinen GPIO des Raspberry legen und mit dem 
RPi.GPIO Modul ansteuern.

https://github.com/PX4/Firmware/blob/master/nuttx/drivers/analog/ad5410.c

Zusammen mit dem Datenblatt sollte eine Routine zum Initialisieren des 
Chips relativ simpel sein.

http://www.analog.com/static/imported-files/data_sheets/AD5410_5420.pdf

lg

von F.H. (Gast)


Lesenswert?

Vielen Dank,

Ich werde das die Tage ausprobieren. Also:

Ich möchte nur Daten an den AD5410 senden und brauche keine empfangen. 
Ist dies so demnach richtig?


Latch => irgend ein GPIO Pin der noch frei ist
SCLK => GPIO11(SPI SCLK)
SDIN => GPIO10 (SPI0_MOSI) ... Master out Slave in
GND => Pin 25 (GND) ... Masse

Doch nun frage ich mich, wofür die beiden SPI Channel sind? Was muss ich 
daran anschließen?

VG

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.