Forum: Mikrocontroller und Digitale Elektronik Spannung Messen und Auslesen


von Fabio (Gast)


Lesenswert?

Hallo Zusammen,

es geht darum, dass ich Spannungen von Sonnen- und Wind-Wächter 
auswerten kann.

Die Spannung liegen zwischen 0 und 2 Volt. Das ganze muss irgendwie 
ausgewertet werden um es dann unter Linux per USB auszuwerten.

Gibt es hier eine Möglichkeit? Ich konnte nichts dergleichen dazu 
finden..

Wäre dankbar für alle eure Antworten!


-Fabio

von fop (Gast)


Lesenswert?

Da helfen Dir die Firmen National Instruments und Meilhaus gegen Bares 
bestimmt sehr gerne weiter. :-)

von Fabio (Gast)


Lesenswert?

Verstehe ich jetzt nicht..

Hatte da eher an was kleines, feines gedacht..
Kann man das nicht relativ einfach zusammenbasteln bei so geringen 
Spannungen?

Ich muss nur den Output per USB auslesen können...

von S.Siebenhaar (Gast)


Lesenswert?

Schon in der Bibel steht: Suchet, so werdet Ihr finden...

Etwas das Du, mit absoluter Sicherheit, nicht gemacht hast.

Es gibt heute kaum noch einen Mikrokontroller, der keinen A/D-Wandler 
hat.

Im Rahmen der Mikrocontroller.net-Suchservices: Such mal nach "Arduino".

von Fabio (Gast)


Lesenswert?

Also, um das mal noch zu sagen, bin ich ein kompletter Anfänger..

Ich habe gesucht, aber ich habe keine Ahnung nach was eigentlich..

Ich dachte man kann das mit einem Chip relativ einfach auswerten und an 
die USB-Schnittstelle geben.. Das ganze bräuchte ich dann 2mal für Sonne 
und Wind, dann wärs das ja..

Ich habe wirklich keine Ahnung und bin auf Hilfe angewiesen :(

Habe schon etwas mit MCP-3008 gelesen, der Häufig verwendet wird. Aber 
wie ich das dann auf USB bekomme, ist mir ein Rätsel

von Sonnenwind (Gast)


Lesenswert?

Fabio schrieb:
> Das ganze bräuchte ich dann 2mal für Sonne
> und Wind, dann wärs das ja..

Die Leitung zur Sonne wird aber ganz schön lang...
Und wie willst Du den Wind anzapfen?

von Fabio (Gast)


Lesenswert?

Sonnenwind schrieb:
> Fabio schrieb:
>> Das ganze bräuchte ich dann 2mal für Sonne
>> und Wind, dann wärs das ja..
>
> Die Leitung zur Sonne wird aber ganz schön lang...
> Und wie willst Du den Wind anzapfen?

Witzbold :D

von Frank S. (hobbyist)


Lesenswert?

Du könntest dazu einen Arduino (Clone) nehmen und die Spannung auf einen 
analogen Eingang legen. Der Nano oder auch der Uno haben einen USB 
Wandler an Board und können somit direkt an den PC angeschlossen werden.

Das Ergebnis kannst Du im seriellen Monitor anzeigen lassen. Wie man 
diese Ausgabe weiter verarbeitet wirst Du selber am besten wissen.

von Fabio (Gast)


Lesenswert?

Dieser Nano, wäre dass das Teil hier?

https://www.arduino.cc/en/Main/ArduinoBoardNano

Kann ich damit direkt die Spannung messen? Also wenn ich das anklemme 
mit Ground und die zwei Sensoren?

Oder benötige ich noch mehr?

Dann verbinde ich das per USB mit dem Rechner, und wie geht es weiter?

von Frank S. (hobbyist)


Lesenswert?

Uiui und ich dachte, ich wäre der mit wenig Ahnung ;)

Der Link passt schon. Den bekommst Du als Clone für 2-3 Euro beim 
freundlichen Chinesen. Ebenso den Uno.

Die Sensoren kannst Du, sofern GND verbunden ist, direkt an die analogen 
Eingänge anschließen, da Du nur im Bereich 0-2V unterwegs sein wirst. 
Das steht dort im Link auch beschrieben:

"The Nano has 8 analog inputs, each of which provide 10 bits of 
resolution (i.e. 1024 different values). By default they measure from 
ground to 5 volts, though is it possible to change the upper end of 
their range using the analogReference() function. Analog pins 6 and 7 
cannot be used as digital pins. Additionally, some pins have specialized 
functionality:"

Du startest die Arduino IDE, packst damit Deinen Sketch auf den Arduino 
und kannst dann im seriellen Monitor die Ergebnisse Deiner Sensoren 
anschauen. Ob und wie die dann weiter verarbeitet werden können, müssen 
andere erklären.

von Fabio (Gast)


Lesenswert?

Benötige ich jetzt nur dieses NanoBoard, oder auch noch einen richtigen 
Arduino?

Habe das hier gefunden: 
http://www.ebay.de/itm/Nano-V3-0-ATmega328P-Board-Arduino-kompatibel-USB-CH340G-/201494369393


Sieht ja so aus wie das weiter oben.. ? :)

Arduino IDE ist wahrscheinlich dann das Programm für Windows, um den 
Quellcode auf den Nano zu schieben oder?

Und woher bekommt der Nano den Strom? auch über den USB? Und darüber 
schiebt er dann auch die daten?

von S.Siebenhaar (Gast)


Lesenswert?

In den meisten Fällen klappt: "Einfach messen nicht".

Es gibt da ein paar Schimpfworte die da lauten: Potential oder 
Potentialausgleich.

Mit deren Hilfe kannst Du den angeschlossenen Rechner leicht ins Nirwana 
schicken, oft noch verbunden mit einer gehörigen Geruchsbelästigung.

von Fabio (Gast)


Lesenswert?

Ohje, und wie finde ich das heraus?

von Peter F. (peter_f14)


Lesenswert?

Hi,

Bitte schau dir den link an: http://www.arduino-tutorial.de/

Wenn du da etwas schaust, bekommst du die Antworten auf fast alle deine 
Fragen.

LG

: Bearbeitet durch User
von Fabio (Gast)


Lesenswert?

Nur noch kurz zum Verständnis. Ich benötige nur dieses NanoBoard oder?
Keinen richtigen Arduino?

http://www.ebay.de/itm/Nano-V3-0-ATmega328P-Board-Arduino-kompatibel-USB-CH340G-/201494369393

von Klaus R. (klara)


Lesenswert?

Fabio schrieb:
> Die Spannung liegen zwischen 0 und 2 Volt. Das ganze muss irgendwie
> ausgewertet werden um es dann unter Linux per USB auszuwerten.

Linux? Warum nimmst Du denn da nicht gleich einen Raspberry Pi?
mfg Klaus

von Fabio (Gast)


Lesenswert?

Mit Linux meinte ich den RaspberryPI.
Der hat aber keine GPIOs mehr frei. Deshalb muss ich per USB weiter 
machen..

Ist es denn möglich den Nano da zu verbinden und die Spannungswerte 
direkt an den PI senden?

von Frank S. (hobbyist)


Lesenswert?

Dein Link zeigt einen "Nano". Letztlich ist das nichts anderes als ein 
Atmega328P-AU mit ein bisschen drumrum und einem seriell-USB-Wandler auf 
einer Platine. Welches Label da nun drauf steht ist letztlich egal. Bei 
Windows musst Du evtl. noch einen Treiber installieren.

@S. Siebenhaar: Da sehe ich bei der vorgeschlagenen Anwendung im Moment 
kein Problem für den PC.

edit: Ich lese grad, dass Du eh schon einen RasPi hast. Wie wäre es mit 
einem Portexpander und einem A/D Wandler?

: Bearbeitet durch User
von Fabio (Gast)


Lesenswert?

Frank S. schrieb:
> edit: Ich lese grad, dass Du eh schon einen RasPi hast. Wie wäre es mit
> einem Portexpander und einem A/D Wandler?


Das wäre viel zu aufwendig.. Dann müsste ich alles umprogrammieren und 
umklemmen. Dann investiere ich lieber 5 Euro in den Nano, wenn es dann 
so einfach möglich ist, wie beschrieben..

Nano an den PI, Sensoren an den Nano und per USB (habe etwas von 
pyserial gelesen) die Daten übertragen. Auf dem PI kann ich das dann 
weiter auswerten.

Das hört sich ja relativ einfach an. Oder gibt es hier einen Haken?

Generell würde ich für den PI noch mehr brauchen, als nur den Expander..

von Frank (Gast)


Lesenswert?

So aus der Bastelecke fällt mir ein Projekt von VUSB ein:
https://www.obdev.at/products/vusb/easylogger.html

Ansonsten halt einen uC mit USB holen und selber programmieren.

Oder ein uC mit UART und einen FTDI o.ä. dran.
Das wäre ja die Arduino Variante.

Oder etwas fertiges suchen.
Kann der IOWarrior nicht auch USB.
Bzw die Salea Clones, können die nicht auch teilweise Analog? Ist zwar 
von der Datenrate total oversized... aber günstig.

von Frank (Gast)


Lesenswert?

Noch ne  Möglichkeit wäre eine USB to SPI/I2C Bridge und dann einen 
passenden ADC dran.

Dann müsstest Du nur im Raspi die Werte abholen. Aber das musst du ja 
sowieso.

von Strömli (Gast)


Lesenswert?

Das Projekt ist für Leute mit Erfahrung im Mikrocontroller-Bereich 
innerhalb eines Wochenendes erledigt, für einen absoluten Anfänger ist 
es aber ein ganz schöner Brocken.

Ich drösele Dir mal deine Aufgaben auf.

Auf der Hardwareseite benötigst Du:
 - Einen Mikrocontroller
   Dazu bietet sich ein Arduino (-Klon) an. Der hat alles an Bord, was 
Du zum Brennen des Programms, sowie der Kommunikation per USB brauchst 
und hat eine eigene Software-Entwicklungsumgebung, die auf Linux läuft, 
ohne irgendwelche esoterischen Pakete installieren zu müssen
-  Den "Adapter" zwischen deinem zu messenden Signal und deinem 
Mikrocontroller.
   Dieser sorgt dafür, dass das zu messende Signal den Mikrocontroller 
nicht überlastet (z.B bei zu hoher Spannung) und so aufbereitet wird, 
dass der Controller das Signal "möglichst gut" verarbeiten kann. Dazu 
gehört z.B. das volle Ausnutzen der Auflösung des Analog-Digitalwandlers 
des Mikrocontrollers.

Zum Arduino: Den "echten" Arduino gibt es per se nicht, die Produktreihe 
ist ziemlich divers. Wichtig ist, dass auf deinem Development-Board 
(z.B. "Arduino Leonardo") ein sogenannter Bootloader vorhanden ist und 
das Board von der Arduino-Entwicklungsumgebung erkannt wird. Der 
Bootloader sorgt dafür, dass Du keinen speziellen Adapter zwischen 
Deinem PC und deinem Mikrocontroller benötigst, der das Programm auf den 
Chip überträgt. Generell haben alle Arduino-Klone einen solchen 
Bootloader an Bord, außer Du erwischst eine wirkliche Gurke.

Zum Adapter zwischen Signal und Controller: Dieser kann beliebig 
kompliziert ausfallen. Als Beispiel: Um höhere Spannungen 
"herunterzuteilen", reicht im simpelsten Fall ein Spannungsteiler 
(http://www.arduino-tutorial.de/2010/06/analog-in/). Dieser muss aber 
korrekt dimensioniert werden, um das Signal nicht zu verzerren und 
bietet keinerlei Schutz bei kurzzeitigen Spitzenspannungen.

In deinem Fall ist zu überprüfen, ob deine zu messenden Spannungen sich 
immer zwischen 0 und 2 Volt befinden. Wenn dies der Fall ist, kannst 
Du die Spannungen direkt an jeweils einen der Analogeingänge des 
Arduinos legen. Der "Arduino Leonardo" z.B. enthält einen ATmega32U4 
(apropos, Datenblätter sind Deine Freunde!), der eine interne 
Referenzspannung von 2.56V generieren kann (min. 2.4V bis max. 2.8V). 
Damit sparst Du Dir eine fehleranfällige externe Referenzspannung, die 
Du fachgerecht filtern müsstest. Durch eine zu hohe Spannung misst Du im 
besten Fall nur Müll, im schlimmsten Fall killst Du den Mikrocontroller 
oder zumindest den jeweiligen Analogkanal.

Als nächstes kommt die Frage nach der "Belastbarkeit" deiner 
Spannungsquelle. Ist deine Spannungsquelle sehr hochohmig, ist 
möglicherweise ein Operationsverstärker nötig, der das Signal "puffert" 
und als niederohmiges Signal an den Analog-Digitalwandler weiterreicht. 
Hierzu musst du allerdings deine Spannungsquelle kennen und das 
Datenblatt deines verwendeten Mikrocontrollers lesen. Die Entwicklung 
des Verstärkers ist ein Projekt für sich.

Weiterhin musst Du herausfinden, mit welcher Auflösung dein Signal 
gemessen werden soll. Die Analog-Digitalwandler der 8-Bit-Arduino-Reihe 
enthalten Wandler mit 10 Bit Auflösung. Dies entspricht 2^10 = 1024 
diskreten "Schritten". Bei einer Referenzspannung von 2.56V entspricht 
dies einem "Schritt" von 2.56V/1024 = 2.5mV. Wenn Dir diese Auflösung 
nicht ausreicht, kannst Du entweder das Signal "konditionieren", das 
heißt, von 0-2V auf 0-2.56V spreizen, etwa mit einem 
Operationsverstärker, die Referenzspannung extern erzeugen, oder einen 
externen Analog-Digitalwandler verwenden. Jede dieser Lösungen bringt 
jedoch ihre eigenen Tücken ins Spiel.

Ein anderer wichtiger Punkt ist die benötigte zeitliche Auflösung. Der 
Analog-Digitalwandler hat zwar einen recht großen Dynamikbereich, was 
die Wandlungsrate angeht, verliert bei hoher Taktung jedoch an 
Auflösung.
Bei maximaler Auflösung können bis zu 15000 Werte pro Sekunde 
"gesamplet" werden. Bei mehreren Mess-Kanälen reduziert sich die 
Wandlungsrate entsprechend. Die Frage ist jedoch, ob die USB-Verbindung 
Deiner Wahl auch das Messvolumen bewältigen kann.

Je nachdem, wie rauschbehaftet deine zu messende Spannung ist, kann es 
sich auch lohnen, aus mehreren Werten ein wie auch immer zu bestimmendes 
(statistisches) Merkmal zu ziehen - etwa ein gleitendes arithmetisches 
Mittel - oder einen digitalen Tiefpassfilter anzuwenden. Dies 
verkompliziert das Programm erheblich.

Ein Ablaufplan auf dem Mikrocontroller könnte so aussehen:

Initialisierung der USB-Verbindung zum PC
Initialisierung des AD-Wandlers
In einer Schleife:
  Messkanal wählen
  Messung durchführen
  (Messung filtern)
  Messung an PC übermitteln

Auf der Software-Seite des PCs hast Du auch etwas zu tun:

Ein Programm schreiben, das:
  - Den Arduino findet, etwa per "USB Vendor ID / Product ID", da sich 
das tatsächliche Device-File ändern kann, es ist nicht immer z.B. 
/dev/ttyACM0.
  - Die serielle Schnittstelle zum Arduino zum Lesen öffnet
  - Die Messwerte einliest und separiert
  - "Irgendwas" mit den Messwerten macht...

Wenn man weiß, was man tut, ist das flott erledigt. In Deinem Fall 
solltest Du nach ähnlichen Projekten suchen, z.B. "Arduino pyserial" für 
eine Lösung mit Python.

Am Besten, du fütterst deine Lieblingssuchmaschine mit einigen 
Schlüsselwörtern:
ARDUINO, ANALOG, MEASURE VOLTAGE, SERIAL COMMUNICATION etc...

und hier noch zwei Projekte, die praktisch die Mikrocontroller-Seite 
Deines Vorhabens abdecken:
http://www.a-d-k.de/20111119_204347-Strom+und+Spannung+mit+Arduino+UNO+messen.htm
https://startingelectronics.org/articles/arduino/measuring-voltage-with-arduino/


Viel Glück und keine Angst; die Arduino-Klone sind so billig, da kannst 
Du locker ein paar zerstören :-P

von Old P. (Gast)


Lesenswert?

Strömli schrieb:
> Das Projekt ist für Leute mit Erfahrung im Mikrocontroller-Bereich
> innerhalb eines Wochenendes erledigt, für einen absoluten Anfänger ist
> es aber ein ganz schöner Brocken.
>
> Ich drösele Dir mal deine Aufgaben auf.....

Ich glaube nach dem Post wird sich Fabio nicht mehr melden ;-)

Old-Papa

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.