Forum: Mikrocontroller und Digitale Elektronik Problem mit I²C


von T800w (Gast)


Lesenswert?

Hallo,
Ich suche für ein Projekt einen I²C der einen Skript speichern kann, und 
diesen Skript verwendet um Signale zu vergleichen. Dies soll so 
ablaufen, dass am Anfang bei Inbetriebnahme des Systems alle Signale 
einmal abgerufen und mit ihrem Wert gespeichert werden. Danach fängt das 
System von neuem an und vergleicht die gespeicherten Werte mit den neuen 
Werten die gemessen werden. Wenn eine Änderung vorliegt sendet der I²C 
diese Änderung an einen weiteren I²C der auch noch von anderen I²C 
ebenfalls Änderungswerte erhält. Man kann sich das als einen Pyramide 
vorstellen. Unten sind alle Sensoren und Slaves und oben ist der Master 
der alles verwaltet.
Ich denke das ich für die I²C jeweils einen Mikrocontroller benutzen 
muss. Ich bin mir aber nicht sicher.
Danke für jede Antwort.

von K. S. (hagbart06)


Lesenswert?

T800w schrieb:
> Ich suche für ein Projekt einen I²C der einen Skript speichern kann, und
> diesen Skript verwendet um Signale zu vergleichen.

I2C ist ein Bus. Ein Bus kann kein Skript speichern, ausführen oder 
Signale vergleichen. Du suchst vermutlich einen Mikrocontroller der 
einen oder mehrere I2C Buse bereitstellen kann?

Davon ab solltest du mal versuchen die Aufgabenstellung in klare Worte 
zu fassen, ich habe keine Ahnung was das Ziel der ganzen Aktion ist.

von Einer K. (Gast)


Lesenswert?

T800w schrieb:
> Unten sind alle Sensoren und Slaves und oben ist der Master
> der alles verwaltet.
Master und Slave sind fest vergebene Begriffe in der I2C Welt.

Wenn du einen Baum aufbauen möchtest, brauchst du auf jeder 
Zwischenebene einen Master(für seine unterlegene Schicht), welcher dann 
auch Slave spielen kann(Für seine überlegene Schicht.)

von T800w (Gast)


Lesenswert?

@Kevin S
Ich habe Zahlreiche Sensoren. Die werden mithilfe eines MUX an einen 
Chip durchgestellt. Der Chip hat jeweils einen gespeicherten Wert für 
jeden einzelnen Sensor, ein Beispiel: Sensor 001 sendet 1, der Chip 
prüft dann, ob der Sensor vorhin schon der Wert 1 hatte. Stimmt das, so 
wird kein Signal an den Mikrocontroller weitergegeben. Liegt eine 
Änderung vor also von 1 auf 0 dann sendet der Chip, dass sich der Sensor 
001 verändert hat. Der Mikrocontroller wertet das vom Chip gesendete 
Signal aus und verarbeitet dieses weiter.
Ich weiß aber nicht welchen Chip ich benutzten soll.

von AntiMaker (Gast)


Lesenswert?

Was du suchst, lässt sich am einfachsten mit einem µC erledigen.
Da du scheinbar schon einen im System hast: Warum einen extra µC 
davorschalten, kann der das nicht mit übernehmen?

von Einer K. (Gast)


Lesenswert?

T800w schrieb:
> Ich weiß aber nicht welchen Chip ich benutzten soll.

z.B. irgendeinen beliebigen µC mit 2 I2C
Von mir aus auch Soft I2C

von T800w (Gast)


Lesenswert?

AntiMaker schrieb:
> Da du scheinbar schon einen im System hast: Warum einen extra µC
> davorschalten, kann der das nicht mit übernehmen?

Nein leider nicht, weil ich ca. 20'000 Sensoren besitze. Deshalb muss 
ich das ganze Unterteilen

von A. S. (Gast)


Lesenswert?

T800w schrieb:
> Nein leider nicht, weil ich ca. 20'000 Sensoren besitze

Du hast also 20'000 Sensoren.
Weisst Du schon was für welche?
Oder welche Art von Signalen sie liefern?
Oder wieviel Sensoren auf unterster Ebene zusammengeschaltet werden?

Und vielleicht könnte es in diesem Fall wirklich das Veständnis 
erleichtern, wenn Du schreibst, wie Du an diese 20.000 Sensoren gekommen 
bist und wann Dir eingefallen ist, diese zu Skripten.

von Peter D. (peda)


Lesenswert?

Ich vermute mal, Du willst mehere digitale Eingänge einlesen aber nur 
bei Änderung.
Das geht recht einfach mit dem PCF8574/A. Der hat einen open-drain 
Interrupt Ausgang dafür. Je I2C-Bus kannst Du davon 16 Stück 
anschließen.

T800w schrieb:
> Nein leider nicht, weil ich ca. 20'000 Sensoren besitze.

Ich würd mal sagen, dann hast Du ein konzeptionelles Problem.

von Jim M. (turboj)


Lesenswert?

T800w schrieb:
> Nein leider nicht, weil ich ca. 20'000 Sensoren besitze. Deshalb muss
> ich das ganze Unterteilen

Hast Du richtige analoge Sensoren oder nur digitale Inputs?

In letzterem Falle hätte ich einfach kaskadierte SPI Schieberegister 
(Parallel->Seriell) verwendet.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

T800w schrieb:
> Nein leider nicht, weil ich ca. 20'000 Sensoren besitze. Deshalb muss
> ich das ganze Unterteilen

 Du möchtest gerne irgendwann einmal 20000 Sensoren besitzen und dann
 vernetzen, oder ?

T800w schrieb:
> ebenfalls Änderungswerte erhält. Man kann sich das als einen Pyramide
> vorstellen. Unten sind alle Sensoren und Slaves und oben ist der Master
> der alles verwaltet.

 Abgesehen davon, dass das Ganze ziemlich unglaubwürdig erscheint -
 wie peda schon schrieb:
  Du hast ein konzeptionelles Problem.

von T800w (Gast)


Lesenswert?

Ich

Jim M. schrieb:

>
> Hast Du richtige analoge Sensoren oder nur digitale Inputs?
Nein ich habe nur analoge Signale.

von T800w (Gast)


Lesenswert?

Marc V. schrieb:
>   Du hast ein konzeptionelles Problem.

Wie meinst du das?
Ich benötige nuneinma die ganzen analogen Sensoren um Änderungen 
festzustellen.

von Max D. (max_d)


Lesenswert?

Welche Anwendung ausser einem CCD Chip hat 20k analoge Datenpunkte in 
einem einzigen System?

von A. S. (Gast)


Lesenswert?

T800w schrieb:
> Ich benötige nuneinma die ganzen analogen Sensoren um Änderungen
> festzustellen.

Es ist aber für irgendwelche Antorten schon relevant, ob die analogen 
Sensoren
- 1Bit (Komparator),5 oder 16-Bit haben.
- sich maximal 1 mal pro Tag oder einmal pro Sekunde ändern
- dito für durchschnittlich
- wie schnell eine Änderung erfasst werden muss
- wie Timeouts bzw. verlorene Telegramme gehändelt werden.
- wie das in etwa räumlich verteilt ist (10 Stück an einem I2C weil 100m 
auseinander, oder 1000 Stück auf einem Bierdeckel?)

Es ist bei sowas z.B. durchaus üblich, Schieberegister-Quasibusse zu 
verwenden.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

T800w schrieb:
> Wie meinst du das?

 So, wie es geschrieben steht.


> Ich benötige nuneinma die ganzen analogen Sensoren um Änderungen
> festzustellen.

 Wozu und wie und wo sollen die Sensoren angebracht werden ?

 Dir ist klar, dass mehr als 64 I2C-Devices und mehr als 80-100cm
 Länge bei 100KHz nicht mehr zuverlässig funktionieren ?
 Wenn es analoge Sensoren sind und du nimmst ein uC mit z.B. 20 ADC
 Eingängen, brauchst du immer noch 1000 Stück davon.

 Das alles klingt für mich immer noch ziemlich unglaubwürdig...

von J. S. (engineer) Benutzerseite


Lesenswert?

Aufteilen auf mehrere I2C-Busse!

von Paralipse (Gast)


Lesenswert?

Hallo T800w!


Um Deine Fragen beantworten zu können sind leider nicht genügend 
Informationen vorhanden.

20'000 Sensoren... Respekt!

Was sind das für Sensoren?

Achim S. hat ja auch schon einen Fragen-Katalog abgegeben.

Um hier eine sinnvolle Hilfe liefern zu können, werden leider mehr Infos 
gebraucht.


Lass uns mal tiefer in Deine Bastelkiste schauen. :-)

von Christian M. (Gast)


Lesenswert?

Max D. schrieb:
> Welche Anwendung ausser einem CCD Chip hat 20k analoge Datenpunkte in
> einem einzigen System?

CERN!?

Hast Recht, absolut unglaubwürdig! Ein einzelner Mensch könnte ein 
solches System weder finabziell, noch zeitlich, noch softwaremässig 
stemmen! Also doch eine Firma?

Gruss Chregu

von Mmhm (Gast)


Lesenswert?

Analogsignale kann man Muxen. Analoge Muxer kann man kaskadieren.

Nimm den hier zum Beispiel:
http://www.newark.com/texas-instruments/cd74hc4067sm96/analog-multiplexer-demux-1-to/dp/74C8312

Man kann zum Beipiel in zwei Ebenen 1:16 Muxer kaskadieren. Dann 
benötist du noch 78 analoge Eingänge, weil jede Kaskade 256 analoge 
Eingänge kann.
Wenn du 3 Ebenen machst, kannst du das DIREKT auf die ADC des µC muxen.
Für die 3 Ebenen benötigst du nur 5 analoge Eingänge und 12 normale 
GPIOs. Das kann fast jeder µC, drei Muxerebenen sind noch nicht 
kompletter Wahnsinn.

Damit sollte eine Messung von 20000 analogen Signalen innerhalb einer 
Sekunde zu realisieren sein, falls der ADC schnell genug ist.

Jedenfalls wird - meiner bescheidenen Meinung nach - ein System mit 
20000 I2C Nodes niemals zuverlässig funktionieren, egal wie man das 
aufbaut. Mindestsen schwierig wird es.
Es geht ja schon los, dass du viele Busse brauchst, und dann die ganzen 
Slaveadressen...

von Peter D. (peda)


Lesenswert?

Mmhm schrieb:
> Es geht ja schon los, dass du viele Busse brauchst, und dann die ganzen
> Slaveadressen...

In der Praxis würden man dafür Ethernet nehmen.
Und viele k€ wird es wohl kosten.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Mmhm schrieb:
> Man kann zum Beipiel in zwei Ebenen 1:16 Muxer kaskadieren. Dann
> benötist du noch 78 analoge Eingänge, weil jede Kaskade 256 analoge
> Eingänge kann.
> Wenn du 3 Ebenen machst, kannst du das DIREKT auf die ADC des µC muxen.
> Für die 3 Ebenen benötigst du nur 5 analoge Eingänge und 12 normale
> GPIOs. Das kann fast jeder µC, drei Muxerebenen sind noch nicht
> kompletter Wahnsinn.

 Milchmädchenrechnung.
 Für 256 analoge Eingänge braucht man immer noch 17 Mixer-ICs.
 Plus 4 gemeinsame Adresspins, plus 17 separate Steuerpins (die man
 ev. auch muxen könnte), die angesteuert werden wollen.
 Ergibt 8 Steuerpins für 256 analoge Eingänge im besten Fall.

 Ergo:
   20000 / 256 = 78.125 = 79 (aufgerundet).
   79 * 17 = 1343 Mixer-ICs.
   79 *  8 = 632 Steuereingänge.

 Das meinte ich (und peda wahrscheinlich auch) mit
 konzeptionelles Problem.
 So (mit vielen einzelnen ICs und Signalen) wird das nicht gehen.

: Bearbeitet durch User
von T800w (Gast)


Lesenswert?

Achim S. schrieb:
> Es ist aber für irgendwelche Antorten schon relevant, ob die analogen
> Sensoren
> - 1Bit (Komparator),5 oder 16-Bit haben.
Das sind Ldrs die ich mithilfe von Spannungsteilern zu 
funktionstüchtigen Sensoren mache
> - sich maximal 1 mal pro Tag oder einmal pro Sekunde ändern
Die ändrnern sich die ganze Zeit, weil ich aber immer einen Mux für 16 
Sensoren benutze und den Mux wieder an einen weiteren Mux anschließe 
bekomme ich immer den Wert den der Sensor bei einer Durchschaltung 
abgibt. Mit meinem Arduino kann ich pro 10ms einmal den Sensor wechseln, 
was eigentlich relativlangsam ist.  D.h. das ich den selben Sensor erst 
wieder nach einer sek anspreche. Da fehlt mir auch noch der passende 
Mikrocontroller.
> - dito für durchschnittlich
> - wie schnell eine Änderung erfasst werden muss
Der Mux hat eine Änderungswahrnehmung von 10ns, somit wäre es gut wenn 
das komplette System eine Änderung von einem Sensor innerhalb von 10sek 
wahrnimmt
> - wie Timeouts bzw. verlorene Telegramme gehändelt werden.
> - wie das in etwa räumlich verteilt ist (10 Stück an einem I2C weil 100m
> auseinander, oder 1000 Stück auf einem Bierdeckel?)
Das ganze ist auf Platten verteilt, pro Platte (~30cm lang) sitzen 31 
Sensoren und ein Mux der die einzelnen Sensoren durchschaltet
>
> Es ist bei sowas z.B. durchaus üblich, Schieberegister-Quasibusse zu
> verwenden.
Ich benutze einmal den 74hc595 um die Mux anzusprechen, und die Mux 
eben.

von T800w (Gast)


Lesenswert?

Mmhm schrieb:
> Analogsignale kann man Muxen. Analoge Muxer kann man kaskadieren.
>
> Nimm den hier zum Beispiel:
> http://www.newark.com/texas-instruments/cd74hc4067...
>
> Man kann zum Beipiel in zwei Ebenen 1:16 Muxer kaskadieren. Dann
> benötist du noch 78 analoge Eingänge, weil jede Kaskade 256 analoge
> Eingänge kann.
> Wenn du 3 Ebenen machst, kannst du das DIREKT auf die ADC des µC muxen.
> Für die 3 Ebenen benötigst du nur 5 analoge Eingänge und 12 normale
> GPIOs. Das kann fast jeder µC, drei Muxerebenen sind noch nicht
> kompletter Wahnsinn.
Ich habe bereits drei Ebenen und das funktioniert perfekt, ohne 
zwischenfälle
> Damit sollte eine Messung von 20000 analogen Signalen innerhalb einer
> Sekunde zu realisieren sein, falls der ADC schnell genug ist.
Mit welchem Mikrocontroller kann man das so schnell machen? Mein Arduino 
Uno schafft nur 10ms.
> Jedenfalls wird - meiner bescheidenen Meinung nach - ein System mit
> 20000 I2C Nodes niemals zuverlässig funktionieren, egal wie man das
> aufbaut.
Es funktioniert sogar sehr gut ;D
> Mindestsen schwierig wird es.
> Es geht ja schon los, dass du viele Busse brauchst, und dann die ganzen
> Slaveadressen...
Das merke ich auch gerade...

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

T800w schrieb:
> Die ändrnern sich die ganze Zeit, weil ich aber immer einen Mux für 16
> Sensoren benutze und den Mux wieder an einen weiteren Mux anschließe
> bekomme ich immer den Wert den der Sensor bei einer Durchschaltung
> abgibt. Mit meinem Arduino kann ich pro 10ms einmal den Sensor wechseln,

T800w schrieb:
> Das ganze ist auf Platten verteilt, pro Platte (~30cm lang) sitzen 31
> Sensoren und ein Mux der die einzelnen Sensoren durchschaltet

 Was den jetzt - 16 oder 32 ?
 Ich habe es 2 Mal höfflich versucht...

 Du lügst von Dingen von denen du absolut keine Ahnung hast und was
 noch schlimmer ist - du widersprichst dir selbst.
 Erst sind es 16:1 dann sind es 32:1 Multiplexer.


T800w schrieb:
> Mit welchem Mikrocontroller kann man das so schnell machen? Mein Arduino
> Uno schafft nur 10ms.

 Dein Arduino schafft weitaus mehr als nur 10ms - man muss nur wissen
 wie das zu machen ist...


T800w schrieb:
>> Jedenfalls wird - meiner bescheidenen Meinung nach - ein System mit
>> 20000 I2C Nodes niemals zuverlässig funktionieren, egal wie man das
>> aufbaut.
> Es funktioniert sogar sehr gut ;D

 Das mag sein, nur wird das bei dir bestimmt nicht der Fall sein.
 Du hast weniger als Null Ahnung von der ganzen Sache - hör auf hier
 rumzutrollen.


 P.S.
 Mux 32:1 gibt es selbst bei Abnahme von 1000 Stück nicht unter 5E.

: Bearbeitet durch User
von T800w (Gast)


Lesenswert?

>  Was den jetzt - 16 oder 32 ?
>  Ich habe es 2 Mal höfflich versucht...

>  Du lügst von Dingen von denen du absolut keine Ahnung hast und was
>  noch schlimmer ist - du widersprichst dir selbst.
>  Erst sind es 16:1 dann sind es 32:1 Multiplexer.
>  Das mag sein, nur wird das bei dir bestimmt nicht der Fall sein.
>  Du hast weniger als Null Ahnung von der ganzen Sache - hör auf hier
>  rumzutrollen.

>  P.S.
>  Mux 32:1 gibt es selbst bei Abnahme von 1000 Stück nicht unter 5E.

Ich habe mit keinem Wort geschrieben, dass ich einen 32:1 Mux verwende. 
Ich benutze zwei 16:1 Mux für 32 Signale. Falls ich das irgendwo 
geschrieben habe wäre es sehr hilfreich wenn du den Text Zitieren 
könntest.

von Mmhm (Gast)


Lesenswert?

Marc V. schrieb:
> Milchmädchenrechnung.
>  Für 256 analoge Eingänge braucht man immer noch 17 Mixer-ICs.
>  Plus 4 gemeinsame Adresspins, plus 17 separate Steuerpins (die man
>  ev. auch muxen könnte), die angesteuert werden wollen.
>  Ergibt 8 Steuerpins für 256 analoge Eingänge im besten Fall.

Nirgends habe ich behauptet, das sei einfach oder billig ;-)

Unten in meinem Beitrag steht drin, wie das mit 3 Ebenen geht. Für 20k 
Pins benötigt man
- 1250 Muxer in der ersten Ebene
- 79  in der zweiten
- 5 in der dritten
- 12x GPIO
- 5x Analog IN
Sowie geschätzte 200 Buffergates für wegen Fanout (kannst ja 25x 74HC244 
oder so nehmen), und eine Stromversorgung mit vermutlich um die 5A.
Ja, und ein paar tausend Kerkos, und weiteres Vogelfutter. Und Stecker. 
Viele Stecker.

Die ca. 2000 16:1 Muxer kosten nur 600€.

Was dagegen teuer wird, sind Stecker, Platinen und das Zusammenbauen. 
Denn die nötige Qualtät, wenn man 2k IC verlötet, ist von Hand kaum 
hinzubekommen.

T800w schrieb:
> Mit welchem Mikrocontroller kann man das so schnell machen? Mein Arduino
> Uno schafft nur 10ms.

Mit dem ATMEGA328 des Arduino gehen immerhin schon 15kSPS.

Jeder halbwegs brauchbare Controller schafft das mühelos. Zwei 
Beispiele:
PIC24FV32KA301 (100kSPS)
STM32F072 (1MSPS)

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

T800w schrieb:
> Ich habe mit keinem Wort geschrieben, dass ich einen 32:1 Mux verwende.
> Ich benutze zwei 16:1 Mux für 32 Signale. Falls ich das irgendwo
> geschrieben habe wäre es sehr hilfreich wenn du den Text Zitieren
> könntest.

T800w schrieb:
> Das ganze ist auf Platten verteilt, pro Platte (~30cm lang) sitzen 31
> Sensoren und ein Mux der die einzelnen Sensoren durchschaltet
               ^^^^^^^
               |||||||

 Reicht das ?

von T800w (Gast)


Lesenswert?

Marc V. schrieb:
> T800w schrieb:
> Ich habe mit keinem Wort geschrieben, dass ich einen 32:1 Mux verwende.
> Ich benutze zwei 16:1 Mux für 32 Signale. Falls ich das irgendwo
> geschrieben habe wäre es sehr hilfreich wenn du den Text Zitieren
> könntest.
>
> T800w schrieb:
> Das ganze ist auf Platten verteilt, pro Platte (~30cm lang) sitzen 31
> Sensoren und ein Mux der die einzelnen Sensoren durchschaltet
>
>                ^^^^^^^
>                |||||||
>
>  Reicht das ?

Ok, akzeptiert, ich hab mich falsch ausgedrückt, mein Fehler

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

beschreib doch mal was du mit deiner Apparatur machen möchtest

von T800w (Gast)


Lesenswert?

Wegstaben V. schrieb:
> beschreib doch mal was du mit deiner Apparatur machen möchtest

Ich möchte Änderungen von Sensoren wahrnehmen und die dann später 
auswerten, grob gesagt.

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

Bisher lese ich folgende technische Gegebenheiten:

Du hast/planst 20000 Foto-Widerstände, welche irgend was angucken 
sollen.

Und du hast schon eine Platte [*1] mit 31 Sensoren = Foto-Widerständen. 
Es fehlen also nur noch 645 weitere identische Platten. Diese 
Foto-Widerstände bzw. die Platten sollen irgendwie per Mux mit Hilfe 
eines i2c Busses ansteuert werden.

Du möchtest nun mit Hilfe von kaskadiertem Multiplexing die analogen 
Werte dieser Foto-Widerstände zu einem? zentralen A/D Wandler führen, 
der dann Werte wandelt.

Und der analoge Wert wird also initial eingelesen, gespeichert und dann 
von Zeit zu Zeit mit einem neu ermittelten Wert verglichen.

[*1] angenommen, eine Platte hätte eine Größe von 30x2= 60cm², dann 
hätten alle Platten zusammen eine Gesamtgröße von ca sqrt(646 x 60) = 2 
x 2 Meter. Passt diese Größe zu deinem Vorhaben?



--> Was genau möchtest du denn mit der Apparatur angucken? Ist es ein 
geheimes Forschungs-Projekt, oder warum kannst/möchtest du nicht mehr 
Informationen heraus geben?

: Bearbeitet durch User
von T800w (Gast)


Lesenswert?

Wegstaben V. schrieb:
> Bisher lese ich folgende technische Gegebenheiten:
>
> Du hast 20000 Foto-Widerstände, welche irgend was angucken.
> Du möchtest nun mit Hilfe von kaskadiertem Multiplexing die analogen
> Werte dieser Foto-Widerstände zu einem? zentralen A/D Wandler führen,
> der dann Werte wandelt.
> Und du hast schon eine Platte [*1] mit 31 Sensoren (es fehlen also nur
> noch 645 weitere) welche irgendwie per Mux mit Hilfe eines i2c ansteuert
> werden.
> Und der analoge Wert wird also initial eingelesen, gespeichert und dann
> von Zeit zu Zeit mit einem neu ermittelten Wert verglichen.
Genau!
> angenommen, eine Platte hätte eine Größe von 30x2= 60cm², dann hätten
> alle Platten zusammen eine Gesamtgröße von ca sqrt(646 x 60) = 2 x 2
> Meter. Passt diese Größe zu deinem Vorhaben?
 Ja, das haut hin
> --> Was genau möchtest du denn mit der Apparatur angucken? Ist es ein
> geheimes Forschungs-Projekt, oder warum kannst/möchtest du nicht mehr
> Informationen heraus geben?

Die Sensoren sollen einfach gucken ob sie verdunkelt sind, also ob z.B 
ein Gegenstand vor dem Sensor steht oder eben nicht.
Das was ich gerade mache ist nur eine Testversion um zu schauen ob meine 
Idee funktioniert, sollte alles wie geplant klappen könnte das ein 
Verkaufsschlager werden.

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

T800w schrieb:
> Die Sensoren sollen einfach gucken ob sie verdunkelt sind, also ob z.B
> ein Gegenstand vor dem Sensor steht oder eben nicht.

Bei einer seriellen Anordung deiner Platinen könntest du also mit 30 cm 
x 646 Stück = ca. 200 laufende Regalmeter überprüfen, ob (im Abstand von 
ca. 1 cm) das Regal an besagter Stelle befüllt ist ...

Das wird dann bei der Länge aber nicht mehr mit I2C funktionieren, auch 
das Muxen der Signale ....

Ein konzeptioneller Ansatz könnte sein, jeden Streifen mit eigener 
Auswerte-Intelligenz (A/D Wandler, Speicher) auszustatten, und die 
einzelnene Streifen-Segmente über einem verwendbaren Bus mit einem 
zentralen Master sprechen zu lassen.

Dann müßtest du dir noch was einfallen lassen, die einzelnen Segmente zu 
codieren/adressieren: im einfachsten Fall mit einem 10 Bit 
"Mäuseklavier" zur Adresseinstellung.  Oder (eleganter) z.B. zwecks 
"anlernen" mit einem Taster und einer LED ausstatten, und zum 
Anlernvorgang gehts du die Reihe entlang und drückst jede Taste einmal, 
und die LED leuchtet als Quittung kurz auf - der lokale Controller und 
der zentalcontrolller handeln dann die individuelle Platinenadrese aus

: Bearbeitet durch User
von A. S. (Gast)


Lesenswert?

Dein Projekt ist sicher gut und realisierbar. Was ich nur überhaupt 
nicht verstehe:

Was soll der I2C-Bus dabei???

Egal wie Du Dein Design organisierst, also ob Du 31 Sensoren auf einen 
ADC (bzw. einen µC) gibst oder 31*31 Sensoren. Egal wie die µC sich 
untereinander unterhalten und egal welches Timing du hast: Ich kann mir 
kein Szenario vorstellen, wo I2C dafür irgendwie gut ist.

Der Vorteil von I2C liegt in unterschiedlicher Peripherie, Flexibiltät, 
Erweiterbarkeit. Aber ganz sicher nicht in der Massen-Kaskadierung.

Beispiel: Am einfachsten wäre für jede 31-Platte ein kleiner µC, der 
alle 100µs den nächsten Sensor ausliest. Dann gibt es für 32 Platten 
einen Sammler, an den die 32µC z.B. über 485 parallel hängen. Oder Daisy 
Chain. Oder CAN. Für die Nummerierung gibt es auch genug Möglichkeiten, 
zur Not per zusätzlicher Leitung.

Für 32 Sammler gibt es wieder einen Sammler. Und so weiter.

Mit 1MBaud bekommst Du alle Sensoren mehrmals pro Sekunde ausgelesen.

Oder Du gehst aus jedem Brett auch analog raus und SPI/Schieberegister 
rein. So sparst Du Dir den µC (nicht die Kosten von 50Cent, sondern die 
Software).

Wenn Du keinen Aufwand in SW treiben willst, dann hast Du halt pro 
Platte 6 oder 7 Leitungen, statt 4, die auch bei I2C immer sein werden. 
Mit ein wenig Programmiererfahrung reichen auch ohne I2C 4 Leitungen.

von PittyJ (Gast)


Lesenswert?

Warum nimmt man nicht gleich eine Kamera?
Da sind eine Millionen lichtempfindliche Sensoren drauf. Und die Kamera 
gibt es schon ab 20 Euro.

von Einer K. (Gast)


Lesenswert?

T800w schrieb:
> Das sind Ldrs ...

T800w schrieb:
> ... könnte das ein Verkaufsschlager werden.

Da leuchtet ein Problem im Schatten.
Soweit mir bekannt, sind die Cadmium haltigen LDR, bei Neugeräten, nicht 
mehr zulässig.

Das steht einem "Verkaufsschlager" doch arg entgegen.

von Wolfgang (Gast)


Lesenswert?

Ich schlage vor, noch mal eine Schleife in der Konzeptphase zu drehen 
und dabei insbesondere zu klären
 - Was soll eigentlich detektiert werden?
 - Was sind das für analoge Sensoren [2], die entweder 0 oder 1 ausgeben 
[1]?
 - Was wird als eine Änderung bei einem analogen Sensor betrachtet?
 - Wie sieht es dabei mit dem Signal-Störabstand aus?

Vielleicht wäre es nicht ganz ungünstig, mal das ganze Problem auf den 
Tisch zu legen und statt, ohne links und rechts zu gucken, eine 
Umsetzung für einen Brute Force Ansatz zu suchen.

[1] T800w schrieb:
> Sensor 001 sendet 1, der Chip
> prüft dann, ob der Sensor vorhin schon der Wert 1 hatte. Stimmt das, so
> wird kein Signal an den Mikrocontroller weitergegeben. Liegt eine
> Änderung vor also von 1 auf 0 dann sendet der Chip, dass sich der Sensor
> 001 verändert hat.

[2] T800w schrieb:
> Jim M. schrieb:
>> Hast Du richtige analoge Sensoren oder nur digitale Inputs?
> Nein ich habe nur analoge Signale.

von T800w (Gast)


Lesenswert?

Arduino F. schrieb:

> Da leuchtet ein Problem im Schatten.
> Soweit mir bekannt, sind die Cadmium haltigen LDR, bei Neugeräten, nicht
> mehr zulässig.
Echt!? Wo hast du das gelesen?

von Einer K. (Gast)


Lesenswert?


von T800w (Gast)


Lesenswert?

Wolfgang schrieb:
> Ich schlage vor, noch mal eine Schleife in der Konzeptphase zu
> drehen und dabei insbesondere zu klären
>  - Was soll eigentlich detektiert werden?
>  - Was sind das für analoge Sensoren [2], die entweder 0 oder 1 ausgeben
> [1]?
Das war nur ein Beispiel zur Veranschaulichung, ich hätte auch 0,75V und 
3.56V schreiben können.
>  - Was wird als eine Änderung bei einem analogen Sensor betrachtet?
Eine Veränderung von über zwei Volt
>  - Wie sieht es dabei mit dem Signal-Störabstand aus?
Hab ich mir keine Gedanken gemacht, ich denke aber das sich das ganze 
mit genügen Zeit ausgleicht.
> Vielleicht wäre es nicht ganz ungünstig, mal das ganze Problem auf den
> Tisch zu legen und statt, ohne links und rechts zu gucken, eine
> Umsetzung für einen Brute Force Ansatz zu suchen.

Also ich hab ja die ganzen Mux, dabei weiß ich jetzt noch nicht, wie und 
wo ich die ganzen Signale entschlüssle und weiter verarbeite. Ich war 
jetzt mit meinem Gedankengang schon so weit, dass ich pro 4'096 Sensoren 
einen Mikrocontroller mit Ads platziere und der dann eben kontrolliert 
ob sich die Signale verändert haben und bei bedarf ein Signal an einen 
weiteren Mikrocontroller senden. Und der schickt dann wiederrum ein 
Signal an einen höher geordneten Mikrocontroller der dann das Signal an 
den Rechner weiter gibt. Der Wertet dann die ganzen Signale aus und 
speichert alles.

> [1] T800w schrieb:
> Sensor 001 sendet 1, der Chip
> prüft dann, ob der Sensor vorhin schon der Wert 1 hatte. Stimmt das, so
> wird kein Signal an den Mikrocontroller weitergegeben. Liegt eine
> Änderung vor also von 1 auf 0 dann sendet der Chip, dass sich der Sensor
> 001 verändert hat.

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

T800w schrieb:
> dass ich pro 4'096 Sensoren
> einen Mikrocontroller mit Ads platziere und der dann eben kontrolliert
> ob sich die Signale verändert haben und bei bedarf ein Signal an einen
> weiteren Mikrocontroller senden. Und der schickt dann wiederrum ein
> Signal an einen höher geordneten Mikrocontroller der dann das Signal an
> den Rechner weiter gibt

Und wozu sollte dieser hierarchische Ansatz gut sein? Sollen die 
übergeordneten Controller das Signal weiter verdichten, oder geben sie 
de Informationen nur 1:1 an den Rechner weiter? Dann können alle 
Informationen aber auch direkt "linear" weiter gegeben werden.


PS: auf direkte Fragen (das sind Sätze mit diesem Zeichen hintenan: "?") 
magst du anscheinend nicht gerne antworten, stimmts ?

: Bearbeitet durch User
von T800w (Gast)


Lesenswert?

Er sollte das signal eigentlich nur linear weiter geben.

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

T800w schrieb:
> Er sollte das signal eigentlich nur linear weiter geben.

ich vermute, du hast meine Frage nicht richtig verstanden?

Wenn ein "übergeordneter", hierarchisch weiter oben stehender Knoten die 
Daten nur weiter gibt, dann hat er eigentlich keine sinnvolle Funktion. 
Also könnten diese Knoten komplett entfallen, und alle untergeordneten 
Knoten sich direkt "linear" an den Zentral-Rechner wenden, ohne eine 
zwischengeschobene hierarchische Verarbeitungsstelle.

: Bearbeitet durch User
von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

das scheint sich auch erledigt zu haben. Vielleicht lötet T800w garde 
seine 4096 Fotowiderstände zusammen, oder gar alle 650 Einzel-Platinen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.