Forum: Analoge Elektronik und Schaltungstechnik Anfänger: Spannungen potentialfrei an Arduino messen


von Stefan (Gast)


Lesenswert?

Hallo,

ich bin absoluter Anfänger. In meinem ersten Projekt möchte ich gerne an 
einem Microcontroller (Arduino) Spannungen messen.

Umfeld:
Ich habe einen kleinen Solarregler der ein paar Akkus (12V) lädt. Hier 
würde ich gerne die Spannung der Zellen (Leerlauf ca. 22V) und die der 
Akkus messen. Das klappt einzeln mit einem Spannungsteiler schon relativ 
gut. Das Problem auf das ich jetzt gestoßen bin ist das der Regler 
Minus-gesteuert ist. Damit habe ich das Problem das bei zwei Messstellen 
ich die Minus-Leitung zusammenlegen muss (der Arduino hat nur eine 
gemeinsame Minus Leitung).

Jetzt habe ich hier im Forum schon viel gelesen. Doch so ganz schlau bin 
ich nicht geworden.

Was ich herausgefunden habe:
1. Ich könnte mit einem Spannungsteiler den Optokoppler "IL300" 
versorgen und dann wieder am Analogen Eingang messen (dies scheint aber 
relativ ungenau zu sein wenn ich's richtig verstanden habe).

2. Die vermutlich bessere Variante scheint zu sein mit einem U/F-Wandler 
"AD654" die Spannung in eine Frequenz zu Wandeln und dann über einen 
Optokoppler an einem Digitalen Eingang die Frequenz messen und  daraus 
die Spannung zurückrechnen.

Jetzt meine Anfänger Probleme:
- Ich habe mir das Datenblatt vom "AD654". Dort sind noch etliche 
Widerstände und Kondensatoren angegeben. Aber ich habe keine Ahnung wie 
ich diese Auslegen muss (Werte)?
- Welcher Optokoppler würde dazu passen und wie muss ich den schalten?

Wäre vielleicht jemand so nett und würde mir ein kurzes Schaltbild (zur 
Variante 2) zeichnen (inkl. Werte) und in kurzen (einfachen) Worten 
erklären für was das jeweilige Bauteil da ist. Denn ich würde es gerne 
Verstehen.

Das wäre SEHR NETT...

Falls es noch andere bessere/einfachere Varianten gibt bin ich sehr 
Interessiert. Es sollte nur nicht zu teuer werden da das ganze ein 
Lern/Bastelprojekt ist.

Vielen Dank

Stefan

von Frank K. (fchk)


Lesenswert?

Du hast die Spannungsmessung mit Spannungsteiler also schon hinbekommen.
Fein.

Es gibt externe ADC(AD-Wandler) als einzelne Chips. ZB.

http://ww1.microchip.com/downloads/en/DeviceDoc/21293C.pdf (ein Kanal)
http://ww1.microchip.com/downloads/en/DeviceDoc/21294E.pdf (zwei Kanäle)

Und für die Optokoppler gibt es inzwischen auch schon Ersatz:
http://www.analog.com/en/interface-isolation/digital-isolators/adum1401/products/product.html

Die Idee ist folgende: Digitale Signale sind einfacher zu handhaben als 
analoge. Du nimmst also einen externen ADC, misst damit die Spannung 
einer einzelnen Batterie und überträgst das digitale Ergebnis über den 
digitalen Isolator zu Deinem Controller.
Für die zweite Batterie machst Du das gleiche, d.h. zweiter ADC, zweiter 
digitaler Isolator.
Für die dritte bis n-te Batterie bzw Spannungsquelle machst Du wieder 
das gleiche.

Wenn Du an einer Batterie mehrere Messpunkte hast, nimmst Du 
praktischerweise einen ADC mit mehreren Eingängen (1, 2, 4, 8 Eingänge 
pro Chip möglich)

Da jeder ADC seinen eigenen Isolator hat, sind die 
Ground(Minus)-Potentiale voneinander getrennt und kommen sich nicht in 
die Quere.

Die ADCs selber und die ADC-Seite des digitalen Isolators kannst Du von 
der jeweiligen Batterie versorgen lassen (7805 Spannungsregler), die 
Controller-Seite der Isolatoren werden vom Arduino gespeist.

Realisierungsstufen:
1. einen externen ADC am Arduino zum Laufen bringen
2. mehrere externe ADCs am Arduino an einer SPI-Schnittstelle zum Laufen 
bringen (getrennte !CS-Signale)
3. digitalen Isolator in Betrieb nehmen
4. alles zusammen zum Laufen bringen.

Schaltplan überlasse ich erstmal Dir.
Denke daran:
1. keine offenen Eingänge
2. 100n an JEDEM VCC-GND Paar, so dicht dran wie möglich

Der Weg über U/F-Wandler ist insbesondere bei nur einer Spannungsmessung 
pro Batterie kostengünstiger realisierbar, aber vielleicht weniger 
"straight forward".

fchk

von Stefan (Gast)


Lesenswert?

Vielen Dank für die schnelle Antwort...

ich werde mir über den Feiertag mal Zeit nehmen und die Datenblätter 
studieren.

Ich melde mich nochmal falls ich nicht zu recht kommen.

DANKE :-)

von Stefan (Gast)


Lesenswert?

Hallo,

eine Frage... gibt es auch eine einfache Variante ohne SPI?

Was ich oben leider verschwiegen habe ist, dass ich auf meinem Arduino 
ein Ethernet-Shield drauf habe der meine Daten über das Netzwerk 
weiterreicht.

Dieses Shield belegt schon den SPI-Bus. Wenn ich es richtig verstanden 
habe lässt sich der auch nicht mit SS deaktivieren.

von Max H. (hartl192)


Lesenswert?

Wenn's nicht schnell sein muss kannst du auch Software SPI machen.

von Possetitjel (Gast)


Lesenswert?

Stefan schrieb:

> In meinem ersten Projekt möchte ich gerne an
> einem Microcontroller (Arduino) Spannungen messen.

Okay.

> Das Problem auf das ich jetzt gestoßen bin ist das
> der Regler Minus-gesteuert ist. Damit habe ich das
> Problem das bei zwei Messstellen ich die Minus-Leitung
> zusammenlegen muss (der Arduino hat nur eine gemeinsame
> Minus Leitung).

???

> Wäre vielleicht jemand so nett und würde mir ein kurzes
> Schaltbild (zur Variante 2) zeichnen (inkl. Werte) und
> in kurzen (einfachen) Worten erklären

Gegenvorschlag: DU zeichnest erstmal ein Schaltbild, aus
dem Dein Problem klar hervorgeht.

> Das wäre SEHR NETT...

Ja, wäre es.

Wahrscheinlich gibt es eine sehr einfache Lösung für Dein
Problem, aber es hätte gewisse Vorteile, wenn Dein Problem
zunächst klar und allgemeinverständlich formuliert wäre.

von Sebastian W. (wangnick)


Lesenswert?

Stefan schrieb:
> Was ich oben leider verschwiegen habe ist, dass ich auf meinem Arduino
> ein Ethernet-Shield drauf habe der meine Daten über das Netzwerk
> weiterreicht.
>
> Dieses Shield belegt schon den SPI-Bus. Wenn ich es richtig verstanden
> habe lässt sich der auch nicht mit SS deaktivieren.

Das ist so nicht richtig. Auf dem Ethernet-Shield ist zum Beispiel auch 
noch ein SD-Kartenslot, und Ethernet und SD-Karte lassen sich 
"gemeinsam" benutzen.

Lies mal im Atmega-Datenblatt das Kapitel über den SPI Master Mode, den 
du benutzt. In diesem Modus hat der SS-Pin (Arduino-Pin-10) nur im 
Input-Modus die spezielle Bedeutung, einem anderen SPI-Master zu 
ermöglichen, den Arduino in den SPI Slave Mode zu zwingen, indem er den 
SS-Pin auf LOW zieht. Das wird aber beim Arduino gar nicht benutzt. 
Stattdessen wird der SS-Pin, als Output, als Slave Select für den 
W5100-Ethernet-Transceiver benutzt, und der Arduino-Pin-4 wird als Slave 
Select für die SD-Karte benutzt.  Siehe 
http://arduino.cc/en/uploads/Main/arduino-ethernet-shield-06-schematic.pdf.

Die Arduino-Bibliothek ist auch so geschrieben, dass die Slave Selects 
am Ende immer wieder auf HIGH zurückgeschaltet werden. Auf diese Weise 
kann man dann, nacheinander, sowohl Ethernet als auch SD-Karte 
ansprechen.

Du kannst also beliebige andere freie Pins als Output konfigurieren und 
dann als Slave Selects für die ADCs verwenden.

LG, Sebastian

PS: Die ADUMs sind wirklich genial.

: Bearbeitet durch User
von Stefan L. (stefan1981)


Lesenswert?

lange hat es gedauert - aber ich habe es dann doch geschafft.

Es funktioniert.

Ich hatte noch ein Problem wenn ich mehr als einen ADUM am SPI-Bus 
hatte.

Da wurde mir hier:
Beitrag "SPI -> ADUM140x -> A/D-Wandler"
weiter geholfen. (Für alle die vielleicht ein ähnliches Problem haben)

Ich wollte mich nochmal bei allen die weiter geholfen haben bedanken.
Ohne die Tipps hätte ich es nicht hin bekommen.

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.