Arduino Datenlogger, Wegaufnehmer

Hallo,

ich möchte gerne einen Datenlogger bauen, der den Weg loggt. Um einen oder mehrere Risse in der Wand den weg zu messen und darzustellen. Um Das ganze darzustellen gibts ja zieg möglichkeiten, Excel, Sensor Cloud, was weiss ich ;). Aber Logging ist das Problem. Da ich noch keine erfahrungen mit einem Arduiono habe möchte ich hier ein wenig Hilfe fordern.

Also was brauche ich? Einen Wegsensor habe ich mir schon ausgedacht, kleiner Sensor der 15mm weg messen kann, 10k Ohm Potentiometrisch.

Abtastung ca alle 5sek. Nun möchte ich gerne das diese daten Lokal gespeichert werden auf dem Arduino z.B auf SD Karte und dann alle Stunde ca über Lan(mit Ethernet Shield wohl) auf einen FTP Hochgeladen werden um diese dann zu verarbeiten.

Ist das da eventuell sinvoller das direkt einfach mit TimeStample? in eine sql datenbank zu schreiben ? Ich möchte eigentlich auch dieses erweitern können, um z.B 5 dieser ganzen dinger auf meine Risse im Haus zu verteilen. Vielleicht auch mehrere Sensoren an einen "Logger" klemmen.

Ich habe schon ziemlich viel gegoogelt aber keine änlichen Projekte gefunden.
Ich bin auch in Thema Programmierung jetzt nicht erfahren. Ich kann mit quelltexten von Visual bascic was anfangen aber mehr eigentlich auch nicht. Esm ist wohl an der Zeit in der richtung etwas mehr zu lernen, aber dafür ist diese Idee ja ganz gut geeignet denke ich. Aber Hilfe bräuchte ich schon :slight_smile:

Und bevor ich mich jetzt für einen Arduino entscheide um auszuprobieren (weil ja learning by doing) ziemlich gut hilft. Wollte ich mal bei Erfahrenen fragen was man da nehmen sollte. Ob jetzt Uno, Mega, ethernet shield, RTC usw.

Erstmal danke.

Gruß

Hallo Gruß :wink: ,

programmiertechnisch und hardwaremässig ist das kein Problem, inkl. SD Logging und Upload via LAN/WLAN/Internet (wie auch immer).
Ich würde die Daten RAW erfassen (in z.B. .csv-Format) und abspeichern, dann uploaden und mit einem SQL-Script in die SQL-DB einlesen.

Den TimeStamp würde ich unbedingt vom ARDUINO schreiben lassen, weil wenn Fehler bei Upload usw. haben die RAW-Daten keinen Zeitstempel und sind evtl. nicht mehr zuzuordnen.

WELCHES Board Du nun nimmst hängt (auch) von der Anzahl und der Art der Anschlüsse für Sensoren, Übertragung usw. ab.
Und so ein UNO oder auch MEGA kost ja nicht die Welt 8)

Doei
ARTy

qwe900:
Also was brauche ich? Einen Wegsensor habe ich mir schon ausgedacht, kleiner Sensor der 15mm weg messen kann, 10k Ohm Potentiometrisch.

Abtastung ca alle 5sek. Nun möchte ich gerne das diese daten Lokal gespeichert werden auf dem Arduino z.B auf SD Karte und dann alle Stunde ca über Lan(mit Ethernet Shield wohl) auf einen FTP Hochgeladen werden um diese dann zu verarbeiten.

Ist das da eventuell sinvoller das direkt einfach mit TimeStample? in eine sql datenbank zu schreiben ? Ich möchte eigentlich auch dieses erweitern können, um z.B 5 dieser ganzen dinger auf meine Risse im Haus zu verteilen. Vielleicht auch mehrere Sensoren an einen “Logger” klemmen.

Also Du bekommst ein Signal von einem analogen Linearpoti?
Kann man mit Arduino machen, ein UNO hat 6 Analog-Digitalwandler mit 10-Bit Auflösung, d.h. über den gesamten Stellbereich des Potis verteilen sich Messwerte zwischen 0 und 210-1= 1023. Wenn keine Störungen auftreten, beträgt die Messauflösung bei 15mm Gesamtweg von 0 auf 1023 also ca. 0,15 mm. Oft schwanken die Messwerte allerdings von Messung zu Messung leicht.

Ein Ethernet-Shield ermöglicht gleichzeitig das Anschließen ans Netzwerk und und bietet einen SD-Kartenschacht zum Loggen von Daten auf SD-Karte.

FTP ist aber auch mit der Kombination “Arduino + Ethernet-Shield” extrem schwierig zu realisieren. Einfacher wäre es, den Arduino als Webserver laufen zu lassen, so dass man die geloggten Daten von extern per HTTP abrufen könnte.

Man könnte natürlich die Daten auch gleich beim Erfassen per HTTP an einen externen Server senden (den Arduino dann als Web-Client betreiben), aber das setzt natürlich voraus, dass das LAN und das Internet und der Ziel-Webserver jederzeit funktioniert, ansonsten gehen Messungen verloren.

Für einen Datenlogger mit Internetanschluß würde ich als preiswerte Hardware vorschlagen:

  • UNO kompatibles Board
  • preiswertes China-made Ethernet-Shield
  • Echtzeituhr DS3231 Modul

Die Kombination “UNO + China-mode Ethernet-Shield” ist nach meiner Erfahrung nämlich viel leichter zum gleichzeitigen Funktionieren von Netzwerk und SD-Karte zu bringen als z.B. in Kombination mit einem MEGA.

Wenn Du das größere MEGA-Board einplanst, würde ich eher das Arduino Original-Ethernet-Shield der neuesten Bauart verwenden, das ein mehrfaches kostet, sonst könnte es größe Probleme geben, im selben Sketch sowohl das Netzwerk als auch die SD-Karte ans Laufen zu bekommen. Natürlich hätte ein MEGA viel mehr RAM und anderes zur Verfügung, wenn Du noch andere Dinge machen möchtest.

Hey,

danke schonmal für eure mühen. Gibt es auch board mit höhren auflösungen um noch genauere Messwerte zu erfassen ?
Ja an eine Echtzeituhr hab ich auch schon gedacht.

Gruß

Hmmm 15mm, 5 min ...

hört sich nach Bodensenkung an. :wink:

Was denkst Du über einen Messchieber und dessen serieller Schnittstelle?

Damit hättest Du eine höhere Auflösung, evtl. auch bessere Widerholungsgenauigkeit als mit einem Poti...

Ich betriebe einen Logger mit dem Loggershield, dort ist ein SD- Card Schacht und eine RTC drauf, für evtl. Daten vor Obrigkeiten (wie gesagt, Bodensenkung..) bestimmt interessant.

An einigen Stellen, z.B. hier am Lago Maggiore an einer Kirche, habe ich schon Epoxy verklebte Glasplatten gesehen, als digitaler Anzeige, je crack desto move, und auch verbohrte Glasmessstäbe, welche das Mauerwerk ständig überwachen. Die Auswertetechnik war aber den Normalsterblichen nicht zugänglich...

Regards, Greetz, Saluti, Linpo..

qwe900:
Gibt es auch board mit höhren auflösungen um noch genauere Messwerte zu erfassen ?

Ähem, erstmal habe ich mich oben um den Faktor 10 verrechnet, denn 15 mm durch 1023 = ca. 0,015 mm Auflösung.

Ansonsten gibt es nur den 32-Bit Arduino DUE, bei dem eine 12-Bit Auflösung für die ADCs direkt auf dem Board aktiviert werden kann. Ich weiß aber nicht, wie kompatibel die Ethernet-Shields zum DUE inzwischen sind.

Für die normalen Arduinos kannst Du eine höhere ADC-Auflösung nur mit externen ADC-Wandlern erreichen, z.B. diesem hier für 12-Bit Auflösung über I2C:
http://www.seeedstudio.com/wiki/Grove_-_I2C_ADC
Dann wäre die Auflösung 15mm / 4096 = ca. 0,004 mm Auflösung.
Aber nur, wenn Dein Poti auch so genau auflöst.

Ah toll !, also kann ich auch mehrere vond en Grove_-_I2C_ADC, an z.B einen Uno anschließen ?, oder gibts da sogar noch kleinere ?

qwe900:
Ah toll !, also kann ich auch mehrere vond en Grove_-_I2C_ADC, an z.B einen Uno anschließen ?

Ja, bei I2C handelt es sich um einen Bus, an den parallel verschiedene Geräte angeschlossen werden können.

Jedes Gerät muss aber eine andere I2C-Adresse erhalten, wenn die Gerät am selben Mikrocontroller angeschlossen sein sollen. Das Grove ADC-Board bietet dazu ein Patch-Feld, auf dem Steckbrücken in verschiedener Kombination eingelötet werden können. Du siehst das Patch-Feld auf diesem Bild:
http://www.seeedstudio.com/wiki/File:I2C_ADC_01.jpg
unten in der Mitte, beschriftet mit ADDR0 und ADDR1. Dort sind drei Bits durch Setzen verschiedener Lötbrücken einstellbar.
Die Angabe im Beschreibungs-Wiki auf der Herstellerseite " you can use up to 9 I2C ADC at the same time at most" ist offenbar falsch, es sind tatsächlich ja nur 8 verschiedene Adressen einsetzbar, also können maximal 8 solcher Boards am Arduino angeschlossen werden.

Du darfst Dir aber nicht vorstellen, dass Du I2C Signalleitungen durch ein ganzes Haus legen darfst und die Schaltung funktioniert dann noch. Ich würde mal sagen: So 3-4 Meter Bus-Länge sind bei I2C machbar, das ist also die Gesamtlänge für den Bus für alle an I2C angeschlossen Geräte.

Um ein ganzes Haus mit verschiedenen Messstellen auszustatten, die etliche Meter auseinander liegen, wirst Du wohl einen Arduino pro Messstelle vorsehen müssen:

  1. Pro Messstelle einen Arduino (für 10-Bit Auflösung) oder "Arduino plus Grove ADC" (für 12-Bit Auflösung)
  2. Und die diversen Messstellen-Arduinos senden ihre Messwerte dann an eine "Zentraleinheit" zur Auswertung, entweder kabelgebunden, z.B. über RS232, oder per Kurzstreckenfunk.

Entschuldige Jurs. Bei 2 Adressleitungen komme ich nur auf 4 verschiedene Adressen und nicht auf 8. Für 8 bräuchte es 3 AdressBits.

Das Datenblatt http://www.ti.com/lit/ds/symlink/adc121c021.pdf sagt:

Up to Nine Pin-Selectable Chip Addresses (VSSOP Only)

Geheimnis gelüftet: Die Adresseingänge sind Tristate (findet man äußerst selten) und können darum H, L oder offen sein. Die Tabelle Tabel1 auf Seite 25 gibt Auskunft über die Adressen in funktion der Logiklevel der Adresseingänge. Also kann er wirklich 9 verschiedene Adressen haben.

Die max Länge dess I2C Busses (ohne I2C Extender, I2C Accelerator oder ähnlichen ICs) würde ich auf 1m beziffern. Die max Länge ist vom Kabel und der Anzahl der angeschlossenen Geräte abhängig.

Grüße Uwe

Gut, ich werde wohl mir erstmal den Uno besorgen und das mit 10bit Testen, und mich da einarbeiten. Dann werde ich weitersehen. Um Bis an die sensoren zu kommen kann ich ja einfach die Messleitung verlängern und nicht den Bus. Das sollte ja kein Problem sein. Bei den 10kOhm wird sich die Störung aufgrund des Kabelwegs ja in Grenzen halten.

Also besorge ich mir jetzt nen Uno und nen Network Shield. :slight_smile:

Danke erstmal

Jepp, mach das erstmal :slight_smile:

-deleted wegen falschem Zusammenhang- 8)

So wie auf dem Bild funktioniert das sicher nicht. Der I2C Bus braucht 2 Signalleitungen ( Daten und Clock).
In dieser Diskussion wird von OneWire gesprochen nicht von I2C.
Grüße Uwe

Hoi Uwe,

jau, Du hast (hattest) Recht - war im falschen Film auf die Schnelle.
Habe den "zusammenhanglosen" Text daher gelöscht 8)

passiert in den besten Familien :wink: :wink: :wink:

Hey, hab das Board bekommen und schon ein wenig damit rumgespielt. Allerdings such ich momentan nach diesen Schwarzen steckbrücken um das Ethernet shield etwas höher zu stecken. bei ebay finde ich zwar ein passendes set aber nur aus den usa, deutsche händler haben keine zurechtgeschnittenen, hat da jemand einen tipp ? Danke

Such mal nach DUPONT - Kabel.

Ich kaufe meine nur noch beim Chinesigen "en gros" 8) - dauert zwar, bin aber nicht bereit das 5- bis x-fache zu bezahlen nur um die aus DE zu bekommen.

P.S.: was ist das denn für eine 180-Sekunden-Sperre bis zum nächsten Posting ? :fearful:

Ich glaube er meint das:

http://www.exp-tech.de/Zubehoer/Steckverbinder/Arduino-Stackable-Header-Kit.html

Ja die 180s Sperre nervt. Hatte ich heute mittag schon. Hört sich hier aber nach den "Stackable Headern" an. Bei ebay gibts die scheinbar aber nur aus Spanien, Hongkong o.ä.

Brauchste du 10polige Header auch? Da habe ich die Erfahrung gemacht, das exp-tech die noch nicht gelistet bzw im Bestand hat.

http://www.watterott.com/de/Stapelbare-Buchsenleisten

Ich glaub ich muss mal an meinem Leseverhalten arbeiten :smiley:

Ich benutze die nicht - weil ich für meine Aufbauten (mostly Modelleisenbahn) platzmässig nichts stapeln brauche -
sondern nur die lustig-bunten Strippen 8)

Hallo, habe jetzt die gewünschten brücken gefunden danke.

Auch mein erster einstieg mit Wegaufnehmer und Temperatur DHT11 und ablesung mittels NEtwork shield und LCD klappt soweit. Nun Möchte ich aber doch eine höhere auflösung bei dem Wegaufnehmer erzielen. Nun suche ich möglichs ein einfaches schield oder erweitung um 12 oder 16-18bit zu haben. Schon bisschen gesucht aber finde nur shield die über 20€ kosten. Hat da vlt jemand noch einen Tipp ?