Pages: [1]   Go Down
Author Topic: Mehrere Sensoren, Temepraturen, Multiplexen oder I2C- Bus  (Read 1117 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 5
Posts: 128
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Loits,

Ich würde gerne mehrere Sensoren, speziell Temperaturen, in den Arduino einlesen und diese entweder auf SD Karte, oder über einen Rechner sammeln/ auswerten lassen

Es geht im Speziellem um eine Heizung. Die Thermostartventile öffnen als Frostschutz unter einer bestimmten Temperatur, dazu sind Tages und Nacht- Vorlauftemperaturen am Kessel eingestellt. Wenn die Wasserheizleistung nicht ausreicht, regelt ein kleiner E- Lüfter noch nach.

Es müssten also Hallen-, Vorlauf-, Rücklauf-, Heizkörper- und 2x oder 3x Raumtemperatur efasst werden.

Ich bin auf die Adafruit MUX Karte gestoßen, bzw den verwendeten MUX Chip. auf der anderen Seite ist der I2C Bus auf dem Board vorhanden..

Was sagt ihr als Bastler, Freaks und Experten, welcher Denkansatz ist der gunstigste/ stabilste:
Schield mit Mux-ing, von dort aus über LM35/ PTC ca. 2- 5m überbrücken um die Messstellen zu erreichen, oder
dem Bus mit passendem I2C Wandlern bestücken und diese auswerten?

Die Buslösung hätte für mich einen anderen interessanten Aspekt: Mit einem mehrpoligen Stecker, also z.B. einem 4- poligen Klinkenstecker, könnte man VCC, Masse, und die beiden Busleitungen durchschleifen.

Benötigen diese einen Terminator Wiederstand? Welche Leitungslängen/ typen sind in der Praxis verwendbar?

Grazie, Greetz, Linpo
Logged

العشب أخضر، أن الكرة مستديرة،

Chemnitz/Saxony/Germany
Offline Offline
Full Member
***
Karma: 0
Posts: 107
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

I2C über längere Strecken würde ich versuchen zu vermeiden. IMHO zu störanfällig, auch wenn es schön zu nutzen wäre.

Mir erschließt sich auch nicht recht was Du mit LM35 MUX-Karte und I2C willst.

Der LM35 liefert ein Analogsignal, was Du messen musst zum Auswerten. Schaltet das die MUX-Karte ohne Pegelveränderung durch? Und was machst Du dann mit I2C? Der LM35 kann kein I2C.

Bei Deinen Anforderungen dürfte ein DS1820 vom Temperaturbereich her ebenfalls passen. Den kannst Du problemlos via 1-Wire anbinden, direkt auslesen ohne Signalwandlung, und 1-Wire dürfte da auch deutlich robuster gegen Umwelteinflüsse sein, geht also auch besser über längere Kabelstrecken. Vom DS1820 kann man auch mehrere Sensoren an einem Bus betreiben. Einziger Haken: Jeder Sensor hat eine fest vorgegebene Hardware-ID, und die steht nirgendwo drauf. Adressieren wie die üblichen I2C-Chips kann man ihn nicht, wie auch bei 3 Pins im TO92-Gehäuse? Du musst also jeden Sensor einmalig einzeln anbinden, per Software die ID auslesen, und die dann in Deinem Programm verwenden.

Falls Du doch analoge Sensoren einsetzen willst: Wenn Du nicht genügend Ports am Arduino frei hast, kannst Du die Sensoren ja dann multiplexen:
http://playground.arduino.cc/learning/4051
Logged

Austria
Offline Offline
Full Member
***
Karma: 5
Posts: 100
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,

analog ist hier gut, einfach, bewährt und ncht zuletzt billig...

Ich würde aber jedenfalls, um Störeinstreuung zu vermeiden, den Eingang niederohmiger (Widerstand gegen Masse) machen und zusätzlich mit Z-Diode gegen Überspannungsspitzen sowie mit Kondensator gegen Funkeinstreuung etwas schützen...

Christian
 
Logged

Switzerland
Offline Offline
Faraday Member
**
Karma: 108
Posts: 5144
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich würde auch klar für Temperatur-Sensoren der OneWire-Reihe von Dallas Semiconductor votieren (DS18B20). Die sind relativ genau, in vielen Varianten (auch wasserdicht) erhältlich und bei grösseren Entfernungen analogen Lösungen klar vorzuziehen.
Den Nachteil hat "vieledinge" bereits erwähnt, er dürfte bei Deinem Vorhaben aber nicht gross in's Gewicht fallen.
Logged

Chemnitz/Saxony/Germany
Offline Offline
Full Member
***
Karma: 0
Posts: 107
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Den Nachteil hat "vieledinge" bereits erwähnt, er dürfte bei Deinem Vorhaben aber nicht gross in's Gewicht fallen.

Ist ja kein echter Nachteil, sondern lediglich etwas mehr Vorarbeit.

Oder etwas mehr Programmierarbeit. Im Netz hatte ich schon Lösungsansätze gesehen, wo die Sensoren einzeln am Bus abgeklappert werden, man sich dann einen je nach Temperaturwert (Feuerzeug rulez!) raussucht und den dann einem logischen Sensorplatz zuordnet. Intern werden die Sensoradressen und Sensorplätze in EEPROM geschrieben und dann nur noch gelesen.
Logged

AREA COLOGNE
Offline Offline
Edison Member
*
Karma: 21
Posts: 1125
I am 1 of 10 who understands binary
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Welche weg müssten den Überbrückt werden bei Entfernung >10-15m ist vielleicht (auch um des Lernefektes) auch ein RS485 Bus ein Mittel.
An den noralgischen Punken evtl zwei oder drei Punkt. Dann einen Attiny84 als Slave der hat genügend ADCs fpr den LM und noch 3 Ports für RS485.
Gruß
Der Dani
Logged

So ist das Leben:
Manchmal bis du das Denkmal, manchmal die Taube!

Offline Offline
Full Member
***
Karma: 5
Posts: 128
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie,

1-wire/ DS1820 hilft mir schon gut...
mit dem LM35 könnte ich analogwerte erzeugen und die dann muxxen..

als Alternative hatte ich dann den I2C Sensor DS1621 mir angeguckt...

Aber ich komme erst mal weiter..

Greetz, Linpo

@dani: Ushbi, das erscheint mir ne Nummer zu lernhaft... bin 'nebenbei' ja noch weltweit im Service tätig.. smiley-wink
« Last Edit: January 28, 2013, 02:47:58 pm by Linpotec » Logged

العشب أخضر، أن الكرة مستديرة،

AREA COLOGNE
Offline Offline
Edison Member
*
Karma: 21
Posts: 1125
I am 1 of 10 who understands binary
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Na, ich bin auch neben bei ServiceTechniker und Inbetriebnehmer  smiley-grin.
Etwas Zeit hat man ja immer abens im Hotel :-)
Gruß
Der Dani
Logged

So ist das Leben:
Manchmal bis du das Denkmal, manchmal die Taube!

Pages: [1]   Go Up
Jump to: