Pages: [1]   Go Down
Author Topic: dringender Hilferuf !! I2C - 3 boards - 14 sensore  (Read 1543 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 2
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset



Hallo alle zusammen,

ich bin ein absoluter neuling--- und muss trotzdem schnellst möglich mein kleines projekt fertig bekommen.

Ich habe ein topologisches Objekt gestaltet in dem 14 Photoresistoren eingebaut sind, im inneren des ganzen sind drei arduinos ( 2xfunnel fio und ein mini pro), ein xbee und die Stromversorgung untergebracht.

diese 3 boards habe ich über I2C verbunden, über sda/scl - analog 4/5.
das als master fungierende board (fio) soll dann die gesammelten daten per x bee versenden.

aktuell habe ich aber noch ein Problem mit der I2C verbindung -- wie kann ich mehrere sensorwerte einlesen und verschicken , so das ich sie auf dem master board auch wieder als einzelne werte auslesen kann?!?

habt ihr vll eine idee?!

annalena
Logged

Weinsberg, Germany
Offline Offline
God Member
*****
Karma: 3
Posts: 773
A Coder's Tale
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Öhm, warum hast Du drei Arduinos eingebaut und nicht nur einen der alles macht?

Funktioniert die generelle Kommunikation zwischen den drei Arduinos schon?
« Last Edit: July 08, 2010, 02:00:16 am by Joghurt » Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 2
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Aus Platzgründen -- brauche für die sensoren 14 analog pins + 6 analog pins für die I2C Verbindung- mein bauraum ist nur 8x4x4 cm groß !!

Die generelle Kommunikation scheint in meinen Augen zu funktionieren - jedenfalls konnte ich von jedem Slave auf dem Master einen Wert auslesen - komischer Weise kommt er aber deutlich kleiner an -- sensorWert auf Slave ca 400 - gesendet auf den master nur noch 120 ...

Gesendet und empfangen habe ich mit der Wire(h) lib - allerdings nur für einen sensorWert - einlesen muss ich aber wie schon erwähnt 14 (davon 8 von den slaves)

  
Logged

Weinsberg, Germany
Offline Offline
God Member
*****
Karma: 3
Posts: 773
A Coder's Tale
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Für solche Anwendungen gibts spezielle Portexpandern, z.B. den PCF8574, der arbeitet auch mit I²C. smiley

Hmm... Ist Deine Anwendung Timing-empfindlich?
Würde es auch reichen, wenn Du immer nur 4 Photoresistoren gleichzeitig auslesen würdest...? Also, immer 4 aus ein Mal im Millisekundenabstand, aber eben nicht alle 14 gleichzeitig?
Weil, wenn nämlich nicht, dann wüsste ich vielleicht einen Weg, wie Du das Ganze mit einem FIO alleine und ohne weitere Chips machen könntest... smiley-wink

Was genau soll Dein topologisches Objekt machen?
« Last Edit: July 08, 2010, 02:18:34 am by Joghurt » Logged

Weinsberg, Germany
Offline Offline
God Member
*****
Karma: 3
Posts: 773
A Coder's Tale
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

...und warum brauchst Du 6 analog pins für die I2C Verbindung? Wie hast Du das Ganze verdrahtet?
Logged

Weinsberg, Germany
Offline Offline
God Member
*****
Karma: 3
Posts: 773
A Coder's Tale
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich schon wieder. smiley-wink

Wenn Du Dir z.B. so eine Matrix aufbauen würdest, dann kämst Du mit vier digitalen Ausgängen und vier analogen Eingängen klar. smiley



Du könntest über einen digitalen Ausgang immer vier Photowiderstände unter Strom setzen und die Spannung dann an den vier analogen Eingängen abgreifen.

Was meinst Du?
« Last Edit: July 08, 2010, 03:08:56 am by Joghurt » Logged

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 270
Posts: 21850
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Joghurt

Die I2C Schnittstelle ist auf den pins 4 und 5 analog implementiert. Bei 3 Arduinos sind das dann 6 analog pins in Summe.

Ein Portexpander hilft bei dieser Konfiguration nichts, Du liest Analogwerte. Was helfen würde wäre ein AD-Wandler mit I2C Schnittstelle. Da bräuchte es nur 1 Arduino und zB 2 ADCs.
http://www.arduino.cc/playground/Main/InterfacingWithHardware unter ADC/DAC
http://www.arduino.cc/playground/Code/MCP3208

@annalenak
Hast Du Probeme mit dem Meßwert. Der Analogeingang gibt einen 10 Bit-wert. Überträgst Du nur 8 bit davon? Ist der Unterschied vom gelesenen Wert und Übertragenen wert ein Vielfaches von 256?

Ein weitere Möglichkeit ist daß Du einen analogen Eingang mit einem Analogmultiplexer auf die 14 Meßwerte multiplext. ( das ist das selbe das der Arduino intern mit den Analogeingängen macht.) Das Problem dabei ist, daß Du eine negative Versorgungspannung brauchst (ich habe Keinen Analogmultiplexer gefunden, der nur mit einer positiven Versorgungsspannung auskommt.).  

Grüße Uwe

Nachtrag auf letzten Beitrag von Joghurt

Die Schaltung müßte Funktionieren; der einzige Nachteil ist, daß alle Fotowiderstände gleich sein müssen und keine individuelle Anpassung durch Angleichung der Vorwiderstände möglich ist.

« Last Edit: July 08, 2010, 03:30:45 am by uwefed » Logged

Weinsberg, Germany
Offline Offline
God Member
*****
Karma: 3
Posts: 773
A Coder's Tale
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Ein Portexpander hilft bei dieser Konfiguration nichts, Du liest Analogwerte.
Stimmt. Mist. smiley-wink

Quote
und keine individuelle Anpassung durch Angleichung der Vorwiderstände möglich ist.
...was sich aber softwaremäßig relativ einfach ausgleichen lassen müsste, sofern überhaupt gewünscht. Wäre so auf jeden Fall weniger Zirkus (und auch weniger verbauten Raum) als mit drei Arduinos und I²C etc... smiley
« Last Edit: July 08, 2010, 03:37:22 am by Joghurt » Logged

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 270
Posts: 21850
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
und keine individuelle Anpassung durch Angleichung der Vorwiderstände möglich ist.
In den meisten Fällen schon, aber nicht immer.
Das mit dem verbautem Raum stimmt. Alternative wäre externer AD- Converter mit i2c Schnittstelle.

Grüße Uwe
Logged

Weinsberg, Germany
Offline Offline
God Member
*****
Karma: 3
Posts: 773
A Coder's Tale
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
In den meisten Fällen schon, aber nicht immer.
Ich wage mal zu behaupten, dass es immer möglich ist, es sei denn, die nach der Korrektur resultierende Auflösung wäre geringer als in der Anforderung gefordert.

Außerdem kann man softwaremäßig auch gleich die Messkurve korrigieren, was per Widerstand nicht geht. smiley-wink
« Last Edit: July 08, 2010, 04:01:06 am by Joghurt » Logged

0
Offline Offline
Full Member
***
Karma: 1
Posts: 236
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich glaube man könnte man bei der Joghurtvariante auch noch die Dioden sein lassen. Und die digitalen Ausgänge auf (bis auf den Spannunggebenden) auf Eingang schalten. Dann wären sie ja hochohmig, und es entsteht nicht der Spannungsteiler.
Logged

Weinsberg, Germany
Offline Offline
God Member
*****
Karma: 3
Posts: 773
A Coder's Tale
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hört sich gefährlich an, Du hättest dann die ganzen LDR-Netzwerke parallel auf den analogen Eingängen...

Dann würden die Pegel auf den Ax-Leitungen versuchen, sich über die (in dem Moment eigentlich unbenutzten) LDRs auszugleiche, was jetzt durch die Dioden verhindert wird. Das müsste Dir eigentlich voll die Messung versauen...

Oder hab ich was übersehen...?
« Last Edit: July 08, 2010, 09:51:13 am by Joghurt » Logged

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 270
Posts: 21850
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Nein Joghurt, Hast nichts übersehen.
Bei der Joghurt-Variante  8-) braucht es die Dioden.
Grüße Uwe
Logged

0
Offline Offline
Full Member
***
Karma: 1
Posts: 236
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Joa, diese Problematik habe ich übersehen. Gut dass ich "ich glaube" schrieb. Stehe ich etwas weniger doof da...  ;D
Logged

Pages: [1]   Go Up
Jump to: