USB->TTL auf RS485 Adapter eigenbau

Habe hier so ein schönes Breakout gefunden.

Da ich Zuhause MAX485 habe, wollte ich mal so ein RS485 Adapter bauen. Habe folgende USB->TTL Adapter hier: Einmal so ein, dann so ein ,und noch so ein ,und sowas

Man müsste ja nur 5V, GND, TX, RX und RTS(?) verbinden, richtig? RTS wäre dann mit dem RE/DE verbunden. Die RX und TX müssten vertauscht werden oder RX->RX und TX->TX?

Hat jemand sowas schon mal gemacht? Ach und ein USB auf Com Port Adapter hab ich auch noch. Leider keine Ahnung welcher Chip sich darin befindet.

Mit den ersten beiden Links die du genannt hast, sollte das klappen.

Eigentlich werden im RX mit TX usw. verbunden. Es gibt seltene außnahmen, aber ich glaub nicht dran, außer ich werd vom besseren überzeugt. Oft sind die RX / TX Pins als Tristate Anschlüsse ausgeführt und werden bei einer Verpolung nicht direkt vernichtet.

Bei USB auf Com muss du aufpassen ob RX / TX mit 12 V Betrieben werden, falls du den letzten Adapter verwendest.

Hmm... hab auf dem Arduino den Modbus Sketch drauf und mit openHAB durch diesen Adapter verbunden. Bekomme aber ständig diese Ausgabe von openHAB:

13:54:07.576 INFO o.o.b.m.internal.ModbusSlave[:285] - ModbusSlave error getting responce from slave Last request: 01 03 00 00 00 01 84 0a CRC Error in received frame: 0 bytes: execute try 1 error: I/O exception - failed to read Last request: 01 03 00 00 00 01 84 0a Error reading response execute try 2 error: I/O exception - failed to read Last request: 01 03 00 00 00 01 84 0a Error reading response

Habs mal mit diesem Sketch auf dem Mega getestet:

/*
  AnalogReadSerial
  Reads an analog input on pin 0, prints the result to the serial monitor.
  Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground.

 This example code is in the public domain.
 */

const byte ENABLE_PIN = 2;// the setup routine runs once when you press reset:
void setup() {
  
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
    pinMode (ENABLE_PIN, OUTPUT);  // driver output enable

}

// the loop routine runs over and over again forever:
void loop() {
  // read the input on analog pin 0:
  int sensorValue = analogRead(A0);
  // print out the value you read:

  
    // send to slave  
  digitalWrite (ENABLE_PIN, HIGH);  // enable sending
    Serial.println(sensorValue);
  Serial.flush();
  digitalWrite (ENABLE_PIN, LOW);  // disable sending
  delay(1);        // delay in between reads for stability
}

Mit dem PL2303HX Converter USB to TTL hab ich mir dann die Werte anzeigen lassen. Verbunden wurde RX->RX TX->TX RTS (auch mit DTR getestet) mit DE/RE.

Frage ist nur, kann ich mit dem Adapter auch senden? Wird der DE/RE auch auf HIGH geschaltet?

PS: Hab mal die Läden wie Telepoint, E+P durchgesucht, kein RS485 Adapter zu finden. Bestellt bei Voelkner ist der aber schon, zusammen mit dem neuen Raspberry :) und natürlich ohne Versandkosten :) also doppelt freu

Hab mal mit diesem Sketch getestet ob ich auch durch den Serial Monitor mit dem Adapter senden kann.

#define TRUE !0
#define FALSE 0
const byte ENABLE_PIN = 2;// the setup routine runs once when you press reset:

void flush_buffer(void);
int is_num(char ch);

void setup()
{      pinMode (ENABLE_PIN, OUTPUT);  // driver output enable


  Serial.begin(9600);
  delay(100); 
 
  // Serial.read();
}

void loop()
{
 
  char ch;
  
 
     ch = Serial.read();
     // Serial.print(ch); // used for debugging
     if (is_num(ch))
     {
        
      
         {
           
             digitalWrite (ENABLE_PIN, HIGH);  // enable sending
      Serial.print(ch); // print num dots
  Serial.flush();
  digitalWrite (ENABLE_PIN, LOW);  // disable sending
          
         }
         Serial.print("\n");   // followed by a newline            
     }       
  
}

int is_num(char ch)
{
   if ((ch >= '0') && (ch <= '9'))
   {
       return(TRUE);
   }
   else
   {
       return(FALSE);
   }
}

Wenn ich den DE/RE Manuell auf 5V lege, dann kann ich per Serial Monitor auf den Mega senden.
Alles andere wie RTS oder DTR hat nicht funktioniert.

Ich denke der PL2303 muss umprogrammiert werden, mit PL-2303HXD EEPROM writer.
Finde allerdings keine passende App dafür. Die Version 2.0.0.0 hat diese Funktion.
http://prolificusa.com/files/PL-2303HXD%20Migration%20Guide_v1.6.pdf

Lat diesem Schaltplan sollte es fast richtig sein wie ichs mach, nur hab ich kein LM555N
http://www.siongboon.com/projects/2006-03-06_serial_communication/rs485.gif

Ich hab aber kein FTDI sondern Prolific.