-         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 20 von 20

Thema: Microcontroller dynamisch vernetzen

  1. #11
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.036
    Anzeige

    Bei der Aussage mit der einmaligen Seriennummer beim Slave war der 1 wire Bus gemeint.
    CAN wäre für mich die erste Wahl, wenn alle Controller im prinzip Master sind die Ihre gewonnenen Daten auf den Bus legen, ohne den eigentlichen Empfänger zu kennen.
    Kollisionserkennung ist bei CAN automatisch mit eingebaut. Priorisiert wird hierbei über die Nachrichten ID.
    Die Daten werden im Prinzip vom Knoten der die Daten verarbeitet rausgefiltert.
    Beispiel GPS: Ein GPS Empfänger legt seine Positionsdaten auf den Bus, wer diese Daten auswertet interessiert diesen Knoten erstmal nicht.

    Es gibt zwar auch bei CAN call Aufrufe, bei denen Daten abgefordert werden können - Ist aber eigentlich nicht der übliche Standard.

    Die Verkabelung sieht bei CAN und RS 485 ähnlich aus, das Protokoll ist aber ein gänzlich anderes.

    Das DMX Protokoll ist eigentlich ein schlechtes Beispiel, da es hier nur einen Master gibt, der Daten sendet, aber keine empfängt ( simplex Betrieb ).
    Das geht nur, wenn man von den Slaves keine Rückantwort braucht.

    Bei Elektor haben die Leutz auch mal ein Hausbus System entwickelt.
    Auf welcher Basis das läuft hab ich gerade nicht auf dem Schirm, dafür gäbe es aber fertige Librarys auch für AVR Controller - Kannst ja mal gucken.

    Essenz:
    Wenn es um ein Protokoll mit mehreren Mastern und mehreren auswertenden Knoten geht würde ich CAN verwenden.
    Wenn es um ein reines Single Master Protokoll mit weniger als 32 Teilnehmern geht würde ich RS 485 vorziehen, oder wenn die Buslänge gering ist I²C.
    SPI geht nur mit einem Master bei kurzen Verbindungen und relativ wenigen Slaves, ist dafür aber schnell.
    1 wire halte ich für problematisch, weil das Timing beim Slave nicht ganz ohne ist, es fixe einmalige Adressen gibt und eigentlich keine mir bekannte Library für Slaves.
    Geändert von wkrug (14.08.2018 um 06:52 Uhr)

  2. #12
    Neuer Benutzer Öfters hier
    Registriert seit
    05.12.2015
    Beiträge
    14
    Zitat Zitat von HaWe Beitrag anzeigen
    @Skorpio:
    I2C halte ich auch grundsätzlich für kein Problem.
    Aber wie lang darf oder muss denn die Verbindung zwishen den Masters und Slaves sein können?
    Also da liegt ein Problem der Überlegung. Es können theoretisch je nach zu beleuchtenden Teil mehrere Meter sein.
    CAN kenne ich persönlich nur aus dem S7 Datenblatt aber keine genauen Spezifikationen.
    Dem RS485 schaue ich mir mal genauer.
    Da ich aktuell mehr im Urlaub als am Rechner bin beschränken sich viel Überlegungen noch im Kopf.

    Eine dieser Ideen läuft darauf hinaus das der Master nur die Anzahl kennt der angeschlossenen Module und dann über eine Leitung alle Daten seriel herausschießt. Und die einzelnen Module holen sich nur die Farbe ab.

    Vielen Dank für die großartige Hilfe jetzt schon

  3. #13
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    34
    Beiträge
    3.111
    Eine dieser Ideen läuft darauf hinaus das der Master nur die Anzahl kennt der angeschlossenen Module und dann über eine Leitung alle Daten seriel herausschießt. Und die einzelnen Module holen sich nur die Farbe ab.
    Das deckt aber keine Verzweigungen ab oder man müsste eine Rückleitung mit einbauen und die Stecker so bauen, dass wenn kein Modul angeschlossen ist, der Rückpfad mit dem Sende Pfad kurzgeschlossen wird ... so hätte man quasi alle Module in Reihe, trotz das sie wie ein Baum verzweigt sind (als Algo ausgedrückt Tiefensuche mit fester Entscheindungsrichtung)

    Wenn am 1ten LED Modul Port 1 keiner angeschlossen ist, geht der Sendepin auf den Empfangspin und der geht zum Sendepin von Port2 usw. (evtl. könnte man hier noch ein Logik Gate mit Schmitttriggereingängen als Signalkonditionierer dazwischenschalten ... da wir nur senden und nicht empfangen geht das auch wunderbar für I2C ... mit einem Open Drain Ausgang am Gate ... und man muss sich nicht die Bohne um Reichweite kümmern)

    Also wenns möglichst einfach und billig sein soll wäre das der Weg der Wahl, mit Richtungserkennung braucht man dann schon einen Controller pro LED Modul ... dann könnte man auch einzelne Kacheln unabhängig voneinander und Lastfrei für den Master Blinken lassen

    dennoch würde ich schon alleine wegen der Aktualisierungsgeschwindigkeit und flüssiger komplexer ansteuerung auf ein schnelles serielles protokoll wie SPI (wegen synchroner clock) oder UART mit clock setzen (RS485 ist nichts weiter als differentielle signalübertragung um gleichtaktstörungen zu filtern) aber CAN halte ich schon allein wegen des Overhead für übertrieben
    Geändert von Ceos (16.08.2018 um 06:04 Uhr)
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  4. #14
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.036
    Eine dieser Ideen läuft darauf hinaus das der Master nur die Anzahl kennt der angeschlossenen Module und dann über eine Leitung alle Daten seriel herausschießt. Und die einzelnen Module holen sich nur die Farbe ab.
    Da man dafür keinen Rückkanal braucht und es sich um eine Beleuchtungsanwendung handelt ist das eindeutig eine Aufgabe für DMX 512, das hardwaremässig auf dem RS 485 Protokoll beruht.
    Das ist der Quasi Standard für Theater Beleuchtungsanwendungen.
    Das System kann ohne Repeater 32 Knoten ansprechen und 512 Kanäle verwalten.
    Maximale Buslänge bis zu 1000m.
    Im Standard sind 5polige XLR Stecker definiert, die aber fast niemand verwendet.
    Üblicherweise werden 3polige XLR Stecker und Buchsen verwendet.
    Die Adressierung der 512 Kanäle findet im Master statt, die angeschlossenen Geräte werden im einfachsten Fall per DIL Schalter auf eine Startadresse adressiert und können im Prinzip beliebig viele Kanäle haben.
    Bei RGB Anwendungen sid das üblicherweise 6= Master Dim, Rot, Grün, Blau, Effekt, Speed ( Anordnung nach Hersteller unterschiedlich ) .
    Es gibt für diesen Standard fast alles, was man Beleuchtungstechnisch so braucht ( Dimmerpacks, PAR Stahler, LED Bars, Profilscheinwerfer, ... ).
    Das Protokoll ist einfach und im Prinzip mit jedem Microcontroller USART realisierbar.
    PC Interfaces und PC Software sind auch verfügbar - Google mal nach DMX Control, das es kostenlos gibt und bei dem man auch Eigenbau Beleuchtungsgeräte definieren kann.
    Interfaces gibt's sehr viele, wir verwenden das von Digital Enlightment ( Bausatz oder fertig ) sowie das von EURO Lite ( Fertiggerät ).
    Früher hatten wir auch mal das von DMX4All.
    Geändert von wkrug (16.08.2018 um 06:53 Uhr)

  5. #15
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    34
    Beiträge
    3.111
    Die Adressierung der 512 Kanäle findet im Master statt, die angeschlossenen Geräte werden im einfachsten Fall per DIL Schalter auf eine Startadresse adressiert und können im Prinzip beliebig viele Kanäle haben.
    die eleganz der nano leafs ist aber dass man deren adressen nicht einstellen muss sondern ihre struktur selber erkennen, deswegen fände ich eine "einfache lösung" OHNE controller / leaf als eine große serielle kette (mit "repeatern") sinnvoll oder eine "intelligente lösung" MIT controller pro leaf aber dann als eine art "daisy chain" kommunikation und rekursives polling besser
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  6. #16
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.036
    OHNE controller / leaf als eine große serielle kette (mit "repeatern") sinnvoll oder eine "intelligente lösung" MIT controller pro leaf aber dann als eine art "daisy chain" kommunikation und rekursives polling besser
    Dazu braucht man natürlich einen Rückkanal und DMX scheidet somit aus.
    Da sich die Module über ihre Struktur ja "absprechen" müssen und diese Struktur auf den Steuerrechner rückübertragen müssen.
    Ist das Protokoll bei den Nanoleafes bekannt?
    Ein Problem seh ich noch bei der Lagen Erkennung.
    Allein über die angeschlossenen Schnittstellen kanns im Prinzip nicht funktionieren, weil es dann ja auch Spiegelbildlich aufgebaut sein kann - Oder das Ganze wird dann in der Steuersoftware gedreht.
    Geändert von wkrug (16.08.2018 um 07:45 Uhr)

  7. #17
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.09.2011
    Ort
    Hessen
    Beiträge
    657
    Zitat Zitat von wkrug Beitrag anzeigen
    Dazu braucht man natürlich einen Rückkanal und DMX scheidet somit aus.
    Da bin ich mir nicht sicher, laut Wikipedia sieht DMX-512-A schon Rückantworten vor. Allerdings ignorieren viele ältere Geräte das. Wenn man aber nur eigene Hardware am Bus hat, sollte das aber kein Problem sein.
    https://de.wikipedia.org/wiki/DMX_(Lichttechnik)

    In der Doku meiner Bastelboards sind auch Libs verlinkt, die über DMX lesen können.
    https://www.pjrc.com/teensy/td_libs_DmxSimple.html

  8. #18
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.10.2014
    Beiträge
    4.227
    das klningt aber alles nicht sehr anfängertauglich mit CAN und DMX.
    Anfänger können kein Eclipse und kein AVRStudio sondern eher nur Arduino IDE/API mit Wire() (i2c), Serial() (UART) und maximal (!) WiFi mit ESP8266 und html (WiFiServer-Libs) mit vorgerfertigten Beispielcodes zum copy+pasten, aber das ist bereits das höchste der Gefühle.
    ·±≠≡≈³αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmäher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

  9. #19
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    34
    Beiträge
    3.111
    Ist das Protokoll bei den Nanoleafes bekannt?
    Ein Problem seh ich noch bei der Lagen Erkennung.
    Nein und ich denke auch nicht dass es eine zu große Aufgabe ist.

    SPOILER: TEXTWAND VORAUS, das ist mir gerade so durch den Kopf gelaufen und kann auch üble Denkfehler beinhalten, Verwendung und lesen auf eigene Gefahr

    Wenn ich jetzt über ein beliebiges Protokoll und am wichtigstens kontrolliert zu einzelnen ports reden kann, kann ich zumindest schonmal für mich selber herausfinden an welcher seite jemand hängt.

    ACHTUNG: Sollte jemand das so oder in der Art umsetzen würde ich mich um eine Nennung mit meinem Synonym "mindforger" als Idee Urheber sehr freuen :P

    Was ich mir z.B. vorstelle ist eine Art SPI oder Synchrones UART mit kombiniertem Chipselect und multiplen Sense Leitungen ... alle Leafs haben einen Controller mit 2 SPI/UART Schnittstellen und intern für alle Ports eine gemeinsame Chipselect Leitung und zusätzlich pro Port einen Pin der zur Identifikation des eingehenden Signals dient.

    Nur der ESP-Master darf die CS leitung initial auf GND ziehen und macht das ganze auch nur einzeln pro Port (damit umgehen wir direkt die Problematik des Zirkelbezuges)

    Findest er keinen Partner wechselt er zum nächsten Port.

    Das erste Leaf das sich angesprochen fühlt, reagiert und wechselt von reinem Empfang auf den Daisy Chain Betrieb. Er schaltete also alle anderen Ports auf ausgang und fragt genau wieder Master seinerseits die Ports nach Nachbarn ab, die dann ihrereseits wieder den die Nachbarn abfragen.

    Ich würde die CLK Leitung durch alle Leafs durchschleifen und nur der Master darf diese Leitung bedienen um eine perfekte Synchronisatuion zu haben (da bietet sich eigentlich synchrones UART besser dafür an und wegen Vollduplex gibt es auch keinen Kurzschluss)

    Wenn jetzt ein Zeikelbezug entsteht, also 2 Leafs sich berühren die über die Kette auch shcon vom Master angesprochen werden, teilen sie sich gegenseitig mit, dass sie bereites "entdeckt" worden sind

    Melden jetzt alle Leafs zurück, dass sie alle Nachbarn und deren Nachfolger identifiziert haben, sendet der Master einen Befehl der zunächst von jedem leaf ignoriert wird, das mindestens 1 weitern nachbarn hat und den Befehl einfach weitergibt (einmal pro port! und nicht gleichzeitig).

    Das erste Leaf das also keine weiteren Nachbarn hat Antwortet dann mit etwas wie "(RGB_LEAF_P3" (P3 für Master hängt an Port 3 und die Klammer ist wichtig)

    Das Leaf davor nimmt diese Nachricht und fügt seine eigene Identifikation hinzu und darauf wird dann "((RGB_LEAF_P3,P5),RGB_LEAF_P2" es fügt also vor den String eine Klammer hinzu und an den String des Nachbars die zugehörige Portnummer an und schließt die innere offene Klammer mit ",P5)" um zu zeigen von wo diese Identifikation her kam ... sollten weitere Leafs an anderen Ports sein, verbindet er die Strings die er mit Portnummer geschlossen hat und hängt dann ganz am Ende seine eigenen Identifikation an.

    Der Master bekommt dann so etwas in der Art zurück

    Port 1 - (leer)
    Port 2 "(((RGB_LEAF_A_P3@P5), RGB_LEAF_B_P2@P3),(RGB_LEAF_C_P4@P4),RGB_LEAF_D_P1"

    Der String wird also rekursiv erstellt.
    Und daraus lesen kann man von Rechts nach Links:
    - an Port 2 vom Master hängt ein RGB_LEAF_D das seinerseits an seinem Port1 vom Master angesprochen wird.
    - an RGB_LEAF_D hängen 2 weitere Leafs, das RGB_LEAF_C an Port 4 und RGB_LEAF_B an seinem Port 3
    - an RGB_LEAF_C hängt sonst kein weiteres
    - an RGB_LEAF_B hängt allerdings noch an Port 5 das RGB_LEAF_A

    Damit ist die gesamte Struktur auslesbar und dank der Klammern kann man das easy mit Regulären Ausdrücken verarbeiten und in eine gelinkte Liste verwalten

    Da man von jedem Leaf den Ein und Ausgangsport kennt kann man auch anhand der geometrischen Struktur alle Leafs räumlich orten und mit der Bezeichnung RGB_LEAF kann man auch den Typ erkennen ... man könnte auch sagen RGB_HEX_LEAF um ein Hexagonales Leaf zu beschreiben oder ein WHITE_TRI_LEAF für ein sinples Helligkeit gesteuertes Dreieeck und unterschiedliche geometrische Strukturen verwenden.
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  10. #20
    Neuer Benutzer Öfters hier
    Registriert seit
    05.12.2015
    Beiträge
    14
    So kleines Update.

    in ca. einer Woche kommen alle nötigen Teile an dann kann ich endlich loslegen.

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. DAC und ADC dynamisch zusammenschalten
    Von hansgeorg im Forum Elektronik
    Antworten: 5
    Letzter Beitrag: 01.02.2017, 17:20
  2. schneller, dynamisch laufender Hexapod
    Von theRobby im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 3
    Letzter Beitrag: 29.05.2012, 16:43
  3. Stromquelle dynamisch belasten
    Von CowZ im Forum Elektronik
    Antworten: 3
    Letzter Beitrag: 04.02.2009, 15:57
  4. Ports dynamisch in FOR Schleife ansprechen
    Von mottobug im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 20.07.2007, 12:41
  5. Mikrokontroller vernetzen
    Von ttauch im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 10
    Letzter Beitrag: 13.02.2007, 15:35

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •