- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 37

Thema: Kabelfernbedienung mit Arduino?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.669
    Ich glaube aber, ich hatte einen Denkfehler. Jeder Sender benötigt nur eine RS485. Das sollte machbar sein. Anscheinend kann man mehrere RS485 sternförmig zusammenschalten: https://www.mikrocontroller.net/topic/372367
    Bloß das Handling ist dann wohl nicht so einfach. Allerdings kann ich mich nicht erinnern, so etwas schon angewendet zu haben. Ich kenne RS485 nur als Verbindung zwischen zwei Geräten.
    Unmöglich scheint es jedenfalls nicht zu sein:
    Klicke auf die Grafik für eine größere Ansicht

Name:	262917.jpg
Hits:	6
Größe:	8,2 KB
ID:	34502

    Hier gibt es z.b. die RS485 Boards für Arduino.

    Wer sucht, der findet ... irgendwann. Im RN-Wissen steht es auch noch mal: https://rn-wissen.de/wiki/index.php/RS485

    Muss sich jemand finden, der sich damit auskennt.



    MfG
    Geändert von Moppi (19.11.2019 um 22:08 Uhr)

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    37
    Beiträge
    5.095
    RS485 ist ein Bussystem. Alle Teilnehmer sind an 2 differenziellen Adern angeschlossen (Ader A und B). Dadurch kann immer nur 1 Teilnehmer senden.

    Ich würde das mit einem Master-Slave System an einem RS485 Bus lösen. Da du nur einen Empfänger hast, würde ich den als Master nehmen. DMX basiert auf dem RS485 System und ist ein spezielles Protokoll. Profibus (Bussystem in der Industrie zur Kommunikation in Anlagen) basiert ebenfalls auf RS485.

    Ich würde es so lösen:
    Master (es wird eingestellt wieviele Slaves es maximal gibt) => Empfänger, Slave => Terminal mit eindeutiger Adresse (einmal einstellen z.B. über Dipschalter oder fix programmiert)
    Wichtig ist das nur ein Teilnehmer auf Senden geschalten ist.

    Master sendet an Adresse 1 ein Komanndo um zu prüfen ob es ihn gibt (z.B. Startbyte, Adresse, Stoppbyte)
    Slave vorhanden (z.B. Slave sendet Startbyte, Adresse, Status der Tasten, Stoppbyte zurück) => Master sendet Status der Relais an Slave, nächste Adresse wählen
    Slave nicht vorhanden (keine Antwort für eine gewisse Zeit) => nächste Adresse wählen
    Gleich wie oben mit Adresse 1, den Ablauf wiederholen bis die letzte Adresse erreicht ist und dann wieder bei Adresse 1 starten

    MfG Hannes

  3. #3
    HaWe
    Gast
    mit allem nötigen Vorbehalt:
    ich habe von RS485 oder evtl. auch UART Protokollen gehört, bei denen mehrere Teilnehmer an RX/TX aufgereiht sind.
    Alle Nachrichten per TX erreichen daher alle RX.

    Man kann unterscheiden, welcher RX Slave Nachrichten beachtet, indem man einen"Adress-ID-Header" mit verschickt, und nur derjenige RX Slave beachtet die msg, dessen Adress-ID damit identisch ist.

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.259
    RS 485!
    Wenn man das so machen will müsste dann wohl der Empfänger der Master sein.
    ( Nur ein Controller im System kann Master sein ! )
    Der verschickt dann einen Token mit der Adresse der jeweiligen Tasteneinheit.
    Diese und nur diese darf dann seinen Sender einschalten und Steuernachrichten verschicken.
    Kommt nicht innerhalb einer bestimmten Zeit eine Antwort wird der Token an die nächste Steuereiheit weitergegeben.
    Um das Ganze flexibel zu Halten wären wohl 16 Adressen sinnvoll.
    Eventuell kann der Master auch nur bei jedem x-sten Durchlauf alle möglichen Adressen abfragen.
    Ansonsten nur die bereits aktiven, das beschleunigt das System.
    Noch mehr mögliche Adressen verlangsamen aber zunehmend das ganze System.
    Auf der Tastenseite könnte man die Adresse per DIP Fix Schalter, oder Lötbrücken einstellbar machen.
    Dann kann für alle Tastenteile die gleiche Software verwendet werden.
    Es darf immer nur ein Sender aktiv sein. Dann würde das Ganze auch mit nur 2 Drähten funktionieren.
    Als Treiberbausteine könnten hier die "üblichen Verdächtigen" verwendet werden ( MAX 485, SN75176 ).
    Als Ansteuerung für die Bausteine wäre der ganz normale USART + 1 bis 2 Steuerleitungen möglich.
    Das Bussystem muss an beiden Enden mit Abschlusswiderständen abgeschlossen werden.
    Bei DMX verwendet man hierzu Terminatoren ( Einfach in einen Stecker eingelöteter Widerstand. ).

    Das System entspricht in etwa dem, was auch HaWe und 021aet04 vorgeschlagen haben.

    Ich würde hier noch mal ein anderes Bussystem in den Ring werfen.
    Wäre das nicht eine klassische Anwendung für einen CAN Bus?
    Hier sendet jeder Teilnehmer seine Nachrichten in einem festgelegten Frame, die Kollisionserkennung passiert hier ja auf dem Bus ( Der Teilnehmer der eine Buskollision feststellt schatet seinen Sender ab ! ).
    Der Bus arbeitet Nachrichtenbezogen.
    Das bedeutet ein Sender gibt nur eine Nachricht auf den Bus und nur die Teilnehmer die diese Nachricht "interessiert" werten diese aus.
    Damit liesse sich so ein System auch problemlos mit mehreren Sendern und Empfängern erweitern.
    Die Geschwindigkeit auf dem Bus bestimmt hier die Reichweite.
    Ich kenn jetzt die Lösung mit 2 Chips. Einer für den Protokollstack ( MCP 2515 ) ein weiterer als Bustreiber ( MCP 2551 ).
    Librarys sollten sich für den Arduino finden lassen.
    Es gibt auch Controller mit integrierter CAN Schnittstelle, aber es soll ja ein Arduino verwendet werden!
    Wobei das CAN Protokoll doch relativ komplex ist.

    Meines Wissens ist RS485 ist eine Punkt zu Punkt Verbindung. Stern geht damit nicht.
    Stern geht nicht, das stimmt.
    Aber die Leitung darf ohne weiteres von einem Teilnehmer zum nächsten, ohne Abzweigungen, gelegt werden.
    Die Bustreiber sind dabei für max. 32 Teilnehmer ausgelegt.
    Geändert von wkrug (21.11.2019 um 22:35 Uhr)

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.669
    Wir haben das aus dem RN-Wissen:

    Klicke auf die Grafik für eine größere Ansicht

Name:	rs485-2leiter.jpg
Hits:	8
Größe:	30,5 KB
ID:	34523

    Da ist doch das, was gebraucht wird. Es waren doch 3 Bedienungen und ein Empfänger, nicht?

    Dann haben wir diese MAX485-Module für Arduino (ATmega328P bspw.).

    Müssen diese 120Ohm-Widerstände etxra angeschlossen werden?

    Hier habe ich ein Anschlusschema gefunden. Verbunden werden R0 mit Rx, DI mit Tx, DE+RE gebrückt und mit einem beliebigen anderen Pin (damit wird wohl das Modul enabled/disabled, nehme ich an).

    Dann müssten die Geräte (Arduinos) nur noch programmiert werden. Fehlt noch was?





    MfG

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.259
    Dann haben wir diese MAX485-Module für Arduino (ATmega328P bspw.).

    Müssen diese 120Ohm-Widerstände etxra angeschlossen werden?
    Der Bus ist recht stabil, es wird bei 18m sicher auch ohne diese Widerstände funktionieren.
    Von der reinen Lehre her müssen aber die Widerstände an beiden Enden der Leitung eingebaut werden.
    Wie man das technisch löst ist auch vom verwendeten Stecksystem abhängig.
    Jeder Busteilnehmer bekommt 2 Stecker. Ob man da 1*männlich 1* weiblich oder gleiche Stecker verwendet ist erstmal egal.
    Natürlich geht auch fixe Verdrahtung mit Schraubklemmen.
    Die Abschlusswiderstände kann man ja auch in jeden Busteilnehmer einbauen und über einen Jumper zuschaltbar machen.
    Oder man macht das eben in einen Stecker rein ( wie bei DMX 512 ) .

    Hier habe ich ein Anschlusschema gefunden. Verbunden werden R0 mit Rx, DI mit Tx, DE+RE gebrückt und mit einem beliebigen anderen Pin (damit wird wohl das Modul enabled/disabled, nehme ich an).
    Das mit den Enable Leitungen hast Du richtig erkannt.
    Alle Empfänger können aber trotzdem fix aktiv geschaltet werden.
    Das ist eventuell sogar ein Vorteil, weil der aktive Sender sein eigenes Signal wieder empfängt und man somit auch gleich eine Busüberwachung mit integrieren kann.
    Die Sender müssen aber auf jeden Fall abschaltbar sein, weil das Protokoll differentielle Signale verwendet und damit 2 Sender gleichzeitig mit unterschiedlichen Signalzuständen einen Quasi Kurzschluss produzieren könnten.

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.669
    Danke wkrug!


    Der Vollständigkeit halber:


    Zitat Zitat von Moppi Beitrag anzeigen
    Wir haben das aus dem RN-Wissen:

    Klicke auf die Grafik für eine größere Ansicht

Name:	rs485-2leiter.jpg
Hits:	8
Größe:	30,5 KB
ID:	34523

    Da ist doch das, was gebraucht wird. Es waren doch 3 Bedienungen und ein Empfänger, nicht?

    Dann haben wir diese MAX485-Module für Arduino (ATmega328P bspw.).

    Müssen diese 120Ohm-Widerstände etxra angeschlossen werden?

    Hier habe ich ein Anschlusschema gefunden. Verbunden werden R0 mit Rx, DI mit Tx, DE+RE gebrückt und mit einem beliebigen anderen Pin (damit wird wohl das Modul enabled/disabled, nehme ich an).

    Gearbeitet wird im Halbduplexverfahren, weil nur 2 Leitungen da sind. Angeschlossen werden alle MAX485 auf dem Bus parallel. Widerstände an den Kabelenden gehören offenbar rein (bei kurzen Leitungslängen kann drauf verzichtet werden - Definition "kurz" fehlt).


    5x Arduino Nano-Platinen, Leisten zum Einlöten: 15,-EUR
    5x MAX485-Levelkonverter-Boards: 8,- bis 10,-EUR

    Dann bleibt nur noch die Frage, ob Andi#87 genügend Platz in jeder Sendeeinheit und Empfangseinheit hat, für Arduino Nano + MAX485 Board. Zusätzlich ist auch ein wenig Elektronik drumrum notwendig, um Relais und Dioden zu steuern. Dafür fehlt hier aber der interne Schaltplan aller Geräte, so dass dazu nichts weiter gesagt werden kann. Außerdem müssten die vorhandenen Geräte umgebaut werden, wie ich das sehe.

    Damit war es das erst einmal so weit, denke ich.



    MfG

    - - - Aktualisiert - - -

    Habe mir gerade ein paar Gedanken zur Abwicklung gemacht, auch das ist nicht ganz unproblematisch. Pauschal würde ich ca. 150 EUR Entwicklungskosten ansetzen. Dann wird die Hardware gekauft und alles aufgebaut. Dann programmiert. Sollte es trotz aller Bemühungen nicht funktionieren, ist das Geld für Andi#87 futsch. Ich denke, eine Garantie mag hier, im Hobbybereich, keiner geben. Nachdem das dann funktioniert und sie Sachen verschickt wurden, müssen die Teile verbaut werden, in die Geräte. Das am besten vor Ort, wo auch gleich alles in Betrieb genommen werden kann. Wenn der Verbund der Geräte funktioniert, heißt das noch lange nicht, dass es vor Ort eingebaut auch funktioniert. Versendet man die Elektronik und die wird falsch angeschlossen, könnte sie im schlimmsten Fall zerstört werden.
    Ich sehe das eher als Selbstbauprojekt für Andi#87.
    Geändert von Moppi (23.11.2019 um 06:01 Uhr)

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.259
    Ich sehe das eher als Selbstbauprojekt für Andi#87.
    Das seh Ich genauso.
    Da es sich prinzipiell alles aus vorhandenen Librarys zusammenbasteln lässt, sollte das auch nicht so schwierig werden.
    Ein Problem seh ich eventuell noch bei der Abschaltung der Sender der RS 485 Treiber.
    Die muss ja relativ zeitnah nach versendung des letzten Bytes erfolgen, aber das könnte man per Polling lösen ( Interrupts wären da natürlich eleganter ).

    Widerstände an den Kabelenden gehören offenbar rein (bei kurzen Leitungslängen kann drauf verzichtet werden - Definition "kurz" fehlt)
    Wir haben bei DMX schon Leitungslängen mit 30m und Kabel mit falschem Wellenwiderstand gehabt und auch das hat, mit Abschlusswiderstand auf einer Seite, funktioniert.
    Da wir hier von einem finanziellen Aufwand von 20 Cent ( 2* Widerstand + 2* Jumper ) reden würd Ich auf die Abschlusswiderstände nicht verzichten.
    Nötigenfalls kann man die Widerstaände auch direkt in die Kabelklemmen der RS 485 Platine mit reinquetschen.

    Dann bleibt nur noch die Frage, ob Andi#87 genügend Platz in jeder Sendeeinheit und Empfangseinheit hat, für Arduino Nano + MAX485 Board. Zusätzlich ist auch ein wenig Elektronik drumrum notwendig, um Relais und Dioden zu steuern.
    Ich wär da auch gleich wieder auf dem Trip ein kleines OLED Display mit SPI, oder I²C Schnittstelle in die Tasteneinheiten mit einzubauen.
    https://www.ebay.de/itm/0-96-I2C-IIC...4AAOSwDwhdo9yu
    Wenn die Relaisplatine den Token veschickt könnte er doch gleich in einem 2ten Byte den aktuellen Zustand der Relais verschicken.
    Damit hätten dann alle Tastenmodule die Information über den aktuellen Zustand der Relais und könnten diesen auf den Displays anzeigen.
    Geändert von wkrug (23.11.2019 um 12:12 Uhr)

Ähnliche Themen

  1. Arduino: Die IoT Cloud richtet Arduino-Boards aus der Ferne ein
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 8
    Letzter Beitrag: 08.02.2019, 09:56
  2. STM32 contra ARM Cortex M3 (Arduino Due, Teensy): Performance per Arduino vs. nativ C
    Von HaWe im Forum ARM - 32-bit-Mikrocontroller-Architektur
    Antworten: 14
    Letzter Beitrag: 22.11.2017, 11:53
  3. Arduino vs. Arduino: Marke und Produktion wieder unter Kontrolle der Gründer
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 29.07.2017, 10:00
  4. Antworten: 13
    Letzter Beitrag: 07.11.2015, 01:21
  5. Rosenkrieg: Arduino zahlt Arduino keine Lizenzgebühren
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 20.03.2015, 08:00

Berechtigungen

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

LiFePO4 Speicher Test