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
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...
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".
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
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?
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
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.
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?
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.
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?
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.
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
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?
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?
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..
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.
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.
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.htmhttps://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
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