INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Daten Übertragung RS232
03.02.2021, 22:15 (Dieser Beitrag wurde zuletzt bearbeitet: 04.02.2021 12:48 von Bitklopfer.)
Beitrag #1
Daten Übertragung RS232
Hi @all

zu meiner Konfiguration:

2 Arduino Mega
1 Modem Kabel 1,80m
2 TTL RS232
Converter

Ziel ist es letztendlich Daten vom Master zum Slave zu übertragen über eine Strecke von ca. 50m.
Ok ist viel. ambitioniert aber nicht unmöglich. Möglicherweise mit Abschlusswiderstand?
Nun soll jedoch erstmal eine grundsätzliche Funktion vorhanden sein. Daher ein ein kurzes Modemkabel zum testen.
Daten kommen auch an jedoch noch nicht wie gewünscht.
Wenn ich `a` eingebe in der console (Master) dann leuchtet die Led13 am Slave nicht. Wenn ich jedoch `aa`eingebe dann leuchtet die Led13. Das gleiche wenn ich `x`eingebe. Dann leuchtet die Led13 am Slave weiterhin nachdem ich sie zuvor eingeschaltet hatte. Erst mit der Eingabe von `xx`bei console (master) kann ich die Led13 beim Slave wieder ausschalten. Also einfache Eingabe eines einzelnen Buchstaben bringt kein Erfolg! Warum ist mir nicht ganz klar. Hatte delay vorher bei bei (100). Da musste ich sogar 3x `a` senden. Also `aaa`um die Led13 am Slave ein zu schalten. Viel. kann mir jemand erklären warum dies so ist u. wie ich das verbessern kann.

Vielen Dank



Code Master:

Code:
#define LED 13

void setup()
{
  Serial.begin(9600);
  Serial1.begin(9600);
  
  pinMode(LED,OUTPUT);
}

void loop() {
  
  char c;

  if (Serial.available() > 0)
  {
    delay(10);
    c = Serial.read();
    Serial.print(c);
    digitalWrite (LED, HIGH);
    Serial1.write(Serial.read());
    
  }
}



Code Slave:

Code:
#define LED 13

void setup() {
  Serial.begin(9600);
  Serial2.begin(9600);

  pinMode(LED,OUTPUT);
}


void loop() {

  char c;

  if (Serial2.available() > 0)
  {
    c = Serial2.read();
    Serial2.print(c);
    if (c == 'a')
      digitalWrite(LED, HIGH);
  }
  if (c == 'x')
  {
    digitalWrite(LED, LOW);
  }  
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.02.2021, 08:58 (Dieser Beitrag wurde zuletzt bearbeitet: 04.02.2021 08:58 von MicroBahner.)
Beitrag #2
RE: Daten Übertragung Rs232
Code:
if (Serial.available() > 0)
  {
    delay(10);                     // Wozu soll das gut sein?
    c = Serial.read();             // Du liest ein Zeichen von der seriellen Schnittstelle ...
    Serial.print(c);               // ... und gibst es wieder aus ( Echo )
    digitalWrite (LED, HIGH);
    Serial1.write(Serial.read());  // Du liest ein 2. Zeichen von der seriellen Schnittstelle und überträgst es zum Slave
      }

Gruß, Franz-Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.02.2021, 12:53
Beitrag #3
RE: Daten Übertragung RS232
Also ein Projekt ist das wohl keines...daher zum Programmieren verschoben.

Und also Abschlußwiderstände sind mir bei RS232 Verbindungen in den letzten 40 Jahren nicht untergekommen. PullUp's oder Down's bei den Handshakeleitungen gibt es eher sofern die heute überhaupt noch einer nutzt.
lgbk Moderator


An alle Neuankömmlinge hier, wenn ihr Code(Sketch) hier posten wollte dann liest euch bitte diese Anleitung durch.

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.02.2021, 15:44
Beitrag #4
RE: Daten Übertragung RS232
Code:
if (Serial.available() > 0)
  {
    delay(10);                     // Wozu soll das gut sein? >> hab die delay komplett rausgenommen. Dann kann die LED13 am Slave nicht mehr eingschaltet. Auch nicht mit `aa` . Also was tun ? blink without delay ?

    Serial.print(c);               // ... und gibst es wieder aus ( Echo ) >>>> das habe ich gemacht zur Visualisierung was ich eigentlich eingegeben habe.

    digitalWrite (LED, HIGH);
    Serial1.write(Serial.read());  // Du liest ein 2. Zeichen von der seriellen Schnittstelle und überträgst es zum Slave >> ist hier der Fehler ? Weil 2x ausgelesen wird ?
Also eher Serial1.write(c);  // oder so ähnlich?
      }

Danke
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.02.2021, 18:13
Beitrag #5
RE: Daten Übertragung RS232
Hallo,

50 m und RS232, das wird höchstens mit sehr niedriger Datenrate gehen. In dem Tutorial

https://www.maximintegrated.com/en/desig...7/723.html

ist 2500 pF als maximale Kapazität angegeben. Bei 50 m ist die Kapazität (abhängig vom Kabel) etwa doppelt so groß. Besser also gleich RS485-Treiber und Busabschlüsse. Am Programm ändert das praktisch nichts evtl. brauchst Du bei RS485 noch einen Steuerbefehl für den Umsetzer. Zum Testen kannst Du also gut mit den RS232 arbeiten.

Gruß
GuaAck
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.02.2021, 10:02
Beitrag #6
RE: Daten Übertragung RS232
Code:
#define LED 13

void setup()
{
  Serial.begin(9600);
  Serial1.begin(9600);
  
  pinMode(LED,OUTPUT);
}

void loop() {
  
  char c;

  if (Serial.available() > 0)
  {
    c = Serial.read();
    Serial.print(c);
    digitalWrite (LED, HIGH);
    Serial1.write(c);
   }
}

Sketch habe ich geändert. Nun funktioniert es auch mit nur einem `a` bzw. `x`.
Es wird auch keine delay mehr benötigt.

Danke an alle die einem hier immer wieder versuchen auf die Sprünge zu helfen.
Rs485 Converter sind bestellt um die 50m sicher zu realisieren. Falls beim handshake etc. noch Fragen auftauchen sollten hoffe ich auf Eure Unterstützung.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
Question Daten auf SD verschlüsseln LK2567 2 354 29.01.2021 12:29
Letzter Beitrag: LK2567
  Daten in Datei löschen Karl Stanger 2 411 13.01.2021 19:54
Letzter Beitrag: Karl Stanger
  Daten zeilenweise von SD-Karte lesen Karl Stanger 3 496 06.01.2021 13:00
Letzter Beitrag: Tommy56
  HM-10 iOS keine Daten Fred0 26 1.655 17.12.2020 18:23
Letzter Beitrag: Fred0
  Daten auf Nextion abfragen Lampe 24 3.878 30.04.2020 15:37
Letzter Beitrag: hotsystems
Sad Frage zu Daten die vom Nextion kommen Lampe 2 1.005 26.04.2020 12:53
Letzter Beitrag: Lampe
  SPI(?)-Schnittstelle Daten empfangen und auswerten RivaDynamite 8 2.225 27.01.2020 14:04
Letzter Beitrag: RivaDynamite
  Problem mit den Daten aus dem CAN BUS Gary 10 2.542 19.10.2019 10:21
Letzter Beitrag: Gary
  Steuerprogramm aus Matlab und Daten von Joystick miteinander verbinden Vithushan 2 1.117 27.09.2019 16:28
Letzter Beitrag: ardu_arne
  RS232 Druckerschnittstelle Luis90 2 1.271 28.08.2019 19:19
Letzter Beitrag: Luis90

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste