- Akku Tests und Balkonkraftwerk Speicher         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 20 von 20

Thema: Datenbus ~70 Meter entfernung

  1. #11
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    17.01.2007
    Ort
    Bodenseeregion
    Alter
    34
    Beiträge
    135
    Anzeige

    E-Bike
    Also erstmal danke für die vielen Antworten. So wies aussieht eignet sich wohl der RS485. Werd mich mal über die Links die ihr gepostet habt schlau machen. Doch wie wende ich den Bus jetzt konkret mit meinem Atmega an? Gibts RS485 Befehle? Oder muss ich das selbst coden mit High und low? Oder wie läuft das ab?

    und was ist mit RS232 ? Funktioniert das nicht mehr auf die Entfernung? Wäre ja fast am einfachsten mit den Bascom Befehlen... ?

    Robin

  2. #12
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.08.2006
    Ort
    Budapest
    Alter
    37
    Beiträge
    563
    Den Atmega progammierst Du ganz normal so, wie Du es für RS232 tun würdest, nur statt einem MAX232 als Pegelwandler nimmst Du den MAX485.

  3. #13
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    17.01.2007
    Ort
    Bodenseeregion
    Alter
    34
    Beiträge
    135
    Ach das is ja cool ^^
    Danke

  4. #14
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.08.2007
    Ort
    Oberhofen im Inntal (Tirol)
    Alter
    50
    Beiträge
    377
    Hallo Robin1508!

    Vorsicht! Der MAX485 kann nur Halbduplex. Das heißt: Während du etwas von einem Baustein aus zu den anderen Bausteinen sendest, kannst du nichts Empfangen. Und umgekehrt. Dafür brauchst du aber auch nur zwei Leitungen. Wenn du vier Leitungen zur Verfügung hast, dann kannst du mit MAX488 (und höher) gleichzeitig empfangen, während du etwas sendest. Nur wenn du solch einen Baustein und vier Leitungen einsetzt -- nur dann fühlt sich RS-485 in Bascom wie RS-232 an.

    Wenn du nur zwei Leitungen verwendest und den MAX485 einsetzt, dann musst du zuerst über einen Pin des µC den MAX485 in den Sendemodus schalten. Dann sendest du deine Daten und dann setzt du den MAX485 in den Empfangsmodus. Dann kann dir der Client oder die Clients etwas zurück senden.

    Wenn du kein Problem mit dieser Synchronisation hast, dann fährst du mit dem MAX485 nicht schlecht. Ansonsten würde ich zu einem höheren MAX48x-Baustein und vier Leitungen raten.

    Außerdem musst du noch wissen, dass jeder Client die gleichen Daten empfängt. Du musst dich im Protokoll also selber darum kümmern, dass der richtige Client die Daten verarbeitet und du auch nur Antwort von dem Client bekommst, der vorher gefragt wurde. Dafür gibt es mehrere Protokolle. Aber das Einfachste ist wahrscheinlich, wenn du alle Clients die Kommunikation abhören lässt und im Übertragungsprotokoll zuerst übermittelst, für wen die Daten sind. Z.B. so:

    Code:
    Master an Client 1 --> "01-00:sende Status"
    Client 1 an Master --> "00-01:OK"
    
    Master an Client 2 --> "02-00:sende Temperatur"
    Client 2 an Master --> "00-02:36.89"
    
    Master an Client 3 --> "03-00:sende Luftdruck"
    ... Timeout
    Master an Client 3 --> "03-00:ABBRUCH"
    ...
    Diese Kommunikation bekommen zwar alle Clients mit und müssen sie auch komplett auswerten, aber alle hören auf das Kommando des Masters und stören sich somit nicht. Das ist zwar nicht ideal, aber in den meisten Fällen ausreichend. Dann gibt es noch Protokolle, die das Ganze ein wenig intelligenter machen. So, dass nicht jeder Client die ganze Kommunikation auswerten muss. Es gibt auch noch mehrere Möglichkeiten, die übertragenen Daten auf Übertragungsfehler hin zu überprüfen. Aber auch das ist eine Frage der Anwendung, ob das notwendig ist.

    mfg
    Gerold
    :-)

  5. #15
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    17.01.2007
    Ort
    Bodenseeregion
    Alter
    34
    Beiträge
    135
    Hm dann bleibt wohl die Frage ob mir 2 Leitungen reichen. Ich denke wenn ich es geschickt anstelle geht es. Also was ich damit vorhabe ist Folgendes: Ich möchte eine Hausklingel bauen. Da wir in unserem Haus massive Probleme damit haben. Wir haben eine Klingel unten an der Straße und eine direkt an der Haustüre. Im Haus haben wir zwei Hörer. Und bei uns ist es so, wenn jemand oben an der Haustüre klingelt, können alle mithören. Sprich auch die Fußgänger auf der Straße. Was dazukommt ist, dass wenn jemand im 1. Stock zuerst mit dem, der Klingelt redet, kann der im 2. Stock ebenfalls zum Hörer greifen, da er ja nicht weis dass unten schon jemand abgenommen hat.
    Ich möchte es so machen, dass an jeder Klingel und an jedem Hörer eine Schaltung mit AtMega hängt und dass alle untereinander über einen Bus kommunizieren können. Also sendet z.B. die Klingel an der Straße dass hier geklingelt wurde und die Klingel an der Haustüre stellt automatisch ab und umgekehrt. Dazu kommt dass der, der im Haus als erstes den Hörer abnimmt auch nur der einzige ist der mit dem klingelnden Redet (alle anderen hören dan z.B. einen Besetzt Ton).

    Ich stell mir das so vor. Es gibt 4 kabel (je nach dem ob 4 leitungen oder 2 für den Bus vorgesehen sind. Plus die Kabel die für die Tonübertragung zuständig sind. Ich will also unsere Haustürklingel so lassen wie sie ist, nur Relais zwischenschalten, die von dem Atmega gesteuert werden, dass die Leitung für alle unterbrochen ist bis auf den der klingelt und der im Haus als erstes abnimmt. Mit der Theorie kann auch ein Gespräch zwischen beiden, im Haus befindlichen Hörer aufgebaut werden ohne dass die Straße mithört.


    Ich hoffe ich hab das alles verständlich erklärt... ^^

    Die Frage ist nun ob eine Leitung mit 2 Drähten ausreicht oder nicht.

    Gruß Robin

  6. #16
    Erfahrener Benutzer Robotik Einstein Avatar von Hessibaby
    Registriert seit
    20.11.2003
    Ort
    Gelsenkirchen
    Alter
    72
    Beiträge
    1.601
    Das ist eine Exclusiv Oder Funktion

    Gruß Hartmut

    Planung ersetzt Zufall durch Irrtum

    Gruß aus dem Ruhrgebiet Hartmut

  7. #17
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    17.01.2007
    Ort
    Bodenseeregion
    Alter
    34
    Beiträge
    135
    Ok, aber was ich nich ganz versteh ist, das RS232 auf meinem RN-Control board ist dreipolig? Wie soll ich das mit 2 oder 4 Drähten anfahren?

    Gruß Robin

  8. #18
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.12.2007
    Beiträge
    180
    Der mittlere Pin ist GND
    Gruß

  9. #19
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    17.01.2007
    Ort
    Bodenseeregion
    Alter
    34
    Beiträge
    135
    und wie mach ich dass dan mit 4 leitungen ?

  10. #20
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.08.2007
    Ort
    Oberhofen im Inntal (Tirol)
    Alter
    50
    Beiträge
    377
    Zitat Zitat von Robin1508
    und wie mach ich dass dan mit 4 leitungen ?
    Hallo Robin1508!

    In meinem ersten Beitrag zu diesem Thema https://www.roboternetz.de/phpBB2/ze...=346125#346125 hatte ich dir zwei Links zu RS-485 gepostet.

    Einer der Links führt dich zu einem Wiki-Eintrag, der RS-485 erklärt. https://www.roboternetz.de/wissen/index.php/RS485

    Der andere Link führt dich direkt zum Datenblatt des MAX485. In diesem Datenblatt wird nochmal erklärt, wie man die Geräte zusammenschließt, mit welchen Spannungen gearbeitet wird und welche Widerstände als Abschluss dienen.

    Weiters findest du im Datenblatt Anschluss- und Logikpläne der MAX-ICs.

    Wenn du nur mit zwei Leitungen fährst, dann musst du beim Senden an die PINS ^RE und DE des MAX485 HIGH anlegen. Wenn du Empfangen willst, dann musst du an die Pins ^RE und DE des MAX485 ein LOW anlegen.

    Das fällt weg, wenn du mit vier Leitungen überträgst. Vier Leitungen haben den Vorteil, dass du Statusmeldungen an ALLE schicken kannst und diese auch von ALLEN empfangen werden. Das ist bei zwei Leitungen nicht garantiert. Mit zwei Leitungen kommst du aus, wenn du die Kommunikation von einem MASTER aus kontrollierst und niemand ohne Aufforderung des MASTERs etwas "sagen" darf.

    Wenn die Datenverbindung über zwei Leitungen stattfindet, dann musst du drei Leitungen vom µC zum MAX485 führen. TX, RX und einen Pin, über den du dem MAX485 mitteilst, ob du senden oder empfangen möchtest. Wenn du senden möchtest, dann legst du diesen zusätzlichen Pin auf HIGH. Und wenn du empfangen möchtest, dann legst du diesen Pin auf LOW.

    Wenn die Datenverbindung über vier Leitungen stattfindet, dann musst du nur zwei Leitungen vom µC zum MAX führen. TX und RX. Es wird nicht zwischen Senden und Empfangen unterschieden.

    In beiden Fällen arbeitest du über die in den µC eingebaute UART und kannst mit dem Bascom-Befehl PRINT die Daten versenden. Und zum Empfangen von Daten kannst du mit INPUT und den anderen üblichen Befehlen arbeiten. Da ich aber nicht weiß, welchen µC und welche Programmiersprache du einsetzt, werde ich nicht weiter darauf eingehen.

    Inzwischen habe ich noch ein paar Links zu diesem Thema gesammelt: http://halvar.at/elektronik/rs485/

    mfg
    Gerold
    :-)

    PS: Diesen Text werde ich wahrscheinlich in meine Website übernehmen. ;-)

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress