Arduino Bus System für 50 Lichtsensoren

Hallo! :slightly_smiling_face:

Ich baue gerade ein Projekt, das aus 50 modularen Panele besteht. Jedes dieser Panele soll einen Lichtsensor haben. Ich möchte einen Arduino verwenden und diese 50 Lichtsensoren über ein Bus System einzulesen. Also jeder Lichtsensor soll eine eigene Adresse haben. Das ganze soll Modular zu einer großen Fläche an Panele zusammensteckbar sein und jedes Modul soll einzelend sein, also es sollen keine Segmente an Panelen sein.

Meine Überlegungen gehen zu einem RS485 Bussystem. Einen Arduino und in jedem Panel ist so eine RS485 Inputplatine verbaut: 8-Channel Digital Input Module RS485 Modbus RTU Switch Acquisition Board DC 12V | eBay

Könnt ihr mir da vielleicht etwas weiterhelfen. Ich weiß nicht ob das so möglich ist?

Danke!

LG Valerian

Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden.
Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.

mfg ein Moderator.

was sind das für sensoren?

Ich habe mich noch auf keine Lichtsensoren entschieden.
Eventuell diese hier: DollaTek 3pcs Digital Light Intensity Sensor Module Photoresistor Photoresistor for Arduino UNO: Amazon.de: Business, Industry & Science

Dann mach an jeden Sensor so ein FREI Dip-Schalter, liegend, 6-polig | Dip-, Kodierschalter günstig kaufen | reichelt elektronik. Damit lasst du 64 Sensoren adressieren.

also wenn du deinem 8 Input Modul 50 verschiedene Adressen zuweisen kannst - dann soll das eigentlich kein Problem sein.

Ich würde einen Controller mit mehreren HW Serial verwenden. Mindestens ein Nano Every oder ein Arduino Mega und als Software Treiber die Modbus Master von Doc Walker.

Willst du den

Das erklär mal.

Die 6 Pins an den Arduino der daraus eine Adresse von 0...63 macht mit der der µC dann über RS485 adressiert werden kann. Der Bus_Chef (aka master) fragt dann die einzelnen Diener (aka slaves) ab.

Ah - Du willst an jedes Sensor-Modul einen Controller hängen und an jeden Controller einen RS485.
Hat nur einen Nachteil: RS485 kennt nur 32 Empfänger.

Die Schnittstelle benutzt in der Regel nur ein Adernpaar und wird halbduplex betrieben, mit zwei Aderpaaren ist Vollduplexbetrieb möglich. Die Verbindung ist multipointfähig, das heißt, es können bis zu 32 Teilnehmer (oder Unit Loads, eine hypothetische Lastgröße) an den EIA-485-Bus angeschlossen werden. Es existieren Transceiverbausteine, die 1⁄2, 1⁄4 oder sogar nur 1⁄8 Unit Load darstellen. Diese Bausteine haben dann gegenüber einem normalen Transceiver einen doppelten, vierfachen oder achtfachen Eingangswiderstand. Damit können Netzwerke mit bis zu 256 Teilnehmern (1⁄8 Unit Load) aufgebaut werden.

1/4 Unit Loading (MAX487/ MAX1487) Allows Up to 128 Devices on a Single Bus

Ich weiss, was es alles gibt.
Ich kann auch eine SPS an jeden analogsensor stecken.

Die Frage ist, ob das notwendig ist.

Ich denke ich nehme den digitalen Schaltausgang. Also 0 und 1.
Ich will nicht für jeden Lichtsensor einen eigenen Arduino verwenden. Dann bräcuht ich 50x lichtsensoren und 50x Arduinos und 50x MAXRS485. Das ist dann doch etwas zu viel. :smiley:

Ja, das geht angeblich. Anscheinend kann ich 275 verrschiedene Adressen vergeben. Was sind HW Serial?

Serielle Schnittstellen in Hardware.
Der Uno hat nur eine.
Der Mega hat 4.

ich versteh nicht ganz was das meinem Projekt hilft. also was mache ich mit der seriellen schnittstelle? kann ich damit auch 50 digitale sensoren einlesen. versteh nicht ganz, wie da der aufbau aussieht.

Du brauchst eine Serielle Schnittstelle für einen RS485-Adapter am Controller, damit Du die (8) anderen abfragen kannst. Wie sonst willst Du die Daten von den DigitalIO-Bridges R4dif08 am Arduino einlesen?

Ja voll, einen MaxRS485 brauch ich dafür. aber dannach will ich einfach die ganzen 8Input boards hintereinander schalten. Ich hoffe, dass das so gehen wird. :sweat_smile:

Geht.
Die R4dif08 erst einzeln an den Controller und mittels Command eine neue Adresse zuweisen, damit Du keine doppelt im System hast, empfiehlt es sich von oben anzufangen, denn die blanken dürften alle die 0 als default haben.

Und für modBusRTU gibts ne Lib mit der Du das ganze Protokolldingens abhandelst und bekommst den Wert aller Pins in einer Variablen zurück, die Du dann bitweise auslesen kannst....

Viel Spaß damit.

1000 Dank dir!!! Ich versuch das ganze Projekt ein wenig zu Dokumentieren.