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?!?
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)
Für solche Anwendungen gibts spezielle Portexpandern, z.B. den PCF8574, der arbeitet auch mit I²C.
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...
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.
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.
@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.
Ein Portexpander hilft bei dieser Konfiguration nichts, Du liest Analogwerte.
Stimmt. Mist.
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...
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.
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.
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...