-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: RP6 mit RS232 verbinden ohne max232/pegelwandler?

  1. #1
    Erfahrener Benutzer Roboter-Spezialist Avatar von -schumi-
    Registriert seit
    30.12.2009
    Ort
    Wasserburg am Inn / Bayern
    Alter
    23
    Beiträge
    449

    RP6 mit RS232 verbinden ohne max232/pegelwandler?

    Anzeige

    Es geht darum: Ich hab eine 200Mhz/32MB Ram/Win98SE-Mühle OHNE USB Anschluss... Jetzt möchte ich gerne da drauf Programme für den RP6 schreiben und vor allem rüberladen

    Für eine Kommunikation brauche ich ja folgende Verbindung:

    RP6:---------------------------------------RS232:

    Tx / Pin 3------>-------->------->----->RxD / Pin 2
    Rx / Pin 2------<--------<-------<------TxD / Pin 3
    MRESET / Pin 1----<-------<--------<--DTR / Pin 4
    GND / Pin 9------------------------------GND / Pin 5

    (--> zeigt auf den Empfänger der Daten)

    ABER:
    Der RP6 hat an seiner Schnittstelle 0-5V TTL-Pegel und die RS232 hat den -+12V Pegel

    RP6:
    0 = +5V
    1 = 0V

    RS232: (Je nach PC weichen die 12V um mehrere Volt ab)
    0 = +12V
    1 = -12V

    (Aus http://www.roboternetz.de/phpBB2/zei...=usb+interface, Zitat von 'Pex': "Beim UART werden 0 und 1 mit +5V und 0V dargestellt, bei der RS232 mit etwa +12V und etwa -12V.
    ")

    Um dieses Problem zu beheben kann man ja den max232 Pegelwandler benutzen, aber Versand- und Nachnamekosten von mehreren € sind für ein einziges kleines Bauteil, das man für 55Cent im Briefumschlag versenden könnte ja nicht gerade unerheblich

    Jetzt weis ich aber nicht, ob die folgende Lösung funktioniert:



    Von Tx nach RxD muss man ja so wandeln:

    +5V ----> +12V
    0V ----> -12V

    Allerdings tut bei mir die RS232 auch bei 0V so als ob es -12 währen und schon bei 4.5V so als ob es 12 währen (mit weniger als 4.5V hab ich es nicht probiert), es ist also völlig überflüssig das zu wandeln.


    Von TxD nach Rx und von DTR nach MRESET muss man so wandeln:
    +12V -----> +5V
    -12V ------> 0V

    die -12V kriegt man ja einfach mit einer Diode auf 0V
    Und die +12V leitet man dann in einen Spannungsteiler um auf +5V zu kommen (siehe Bild)

    Und jetzt meine Fragen:
    1. Funktioniert das ganze überhaupt??
    2.Welche Widerstände?
    R2=R1*(Uaus/(Uein-Uaus))
    R2=R1*0,7143
    Was ist denn gut? - große oder kleine Widerstände, bzw. wie klein/groß?

    MFG
    -schumi-

    PS: ich bin auch für andere Schaltungen dankbar, die man mit Widerständen und logik ICs der SN 74er Reihe zu machen sind (habe immer 4 Gatter: AND, NAND, EXCLUSIVE OR, OR, NOR). Auch noch Transistoreren aus Radio unbekannten Typs vorhanden.
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken st_einfach.png  

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    Hier gibt es ne Scahltung mit Standardbauteilen:
    http://www.klaus-leidinger.de/mp/Mik...910-schalt.jpg
    (alles, was links von den beiden 27pF Kondensatoren ist). Was RX und TX ist, sieht man am AVR.

  3. #3
    Erfahrener Benutzer Roboter-Spezialist Avatar von -schumi-
    Registriert seit
    30.12.2009
    Ort
    Wasserburg am Inn / Bayern
    Alter
    23
    Beiträge
    449
    Vielen Dank für den Link!

    Werd mir das Teil mal ausdrucken und Studieren..


    Hab bei meiner Schaltung mit dem Multimeter mal nachgemessen: bin da wo der RP6 drangesteckt wird immer auf 0V oder ca. 4.5V --> passt also (oder sind 4.5V zu wenig??)
    Zwischen RxD an der RS232 und Tx vom Roboter hab ich noch eine Diode reingeklemmt, damit nur der RP6 Strom an den PC geben kann, aber nicht andersherum (wer weis schon ob der PC bei RxD nicht doch mal Saft draufgibt und dann den Atmega grillt?)
    GND hab ich ohne Irgendetwas dazwischen verbunden..

    RESULTAT (Ich hab übrigens das M32-Board benutzt, das kostet weniger wenn ichs schrotte):
    1. wenn man den "Adapter" am PC, dann am RP6 ansteckt, dann den RP6 einschaltet
    ------> Display tut so als ob der Kontrast nicht richtig eingestellt ist, RP6Loader kann keine Verbindung aufbauen

    2. wenn man den "Adapter" am PC ansteckt, den RP6 einschaltet, dann am RP6 ansteckt
    ------> Erst macht der Roboter gar nichts. *Klick* auf Verbinden im RP6Loader, Display tut wieder so als ob der Kontrast nicht stimmt, Loader kann keine Verbindung aufbauen

    Keine Ahnung warum das nicht Funktioniert, für Hilfe immer dankbar

    Und noch was: Ich hab den unbelasteten Spannungsteiler benutzt, bin also davon ausgegangen dass die Eingänge vom RP6 nicht sonderlich viel Strom verbraten - ist das richtig oder hab ich nur Glück gehabt, dass das raufladen von Programmen mit den USB-Teil noch klapt, also nichts kaputt gegangen ist?

    MFG
    -schumi-

    PS: Wer aus welchem Grund auch immer einen Spannungsteiler an die RS232 basteln will: Innenwiederstände beachten! (bei mir etwa 400 Ohm) Die stellen dann R1 dar
    Ich hab erst mal doof geglozt, wie bei meinem Spannungsteiler nur 0.5V rauskahmen..

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.556
    Es geht auch einfacher, ein Widerstand un eine Diode reichen.
    Mit Der Diode kappt man die Negative RS232 Spannung gegen GND
    ab. Dann sind zwar noch - 0,6 V an RDX vom µC, aber das kann der
    ab. Als Schutz gegen einen zu hohen Eingangsstrom dann noch einen
    Serien R von ca. 1k8 in die Datenleitung. Der PC erkennt auch noch 4,5 V
    als H und 0V als L an. So habe ich das immer früher bei den PIC`s
    gemacht. Aber daran denken das + 12V = Low und -12 V als Hight
    vom PC gewertet werden (Negative Logik)! Bei Bascom kann man das
    sogar einstellen...bei C ? Ansonsten noch nen Inverter benutzen....=
    die Daten mit XOR behandeln.

    Gruß Richard

  5. #5
    Erfahrener Benutzer Roboter-Spezialist Avatar von -schumi-
    Registriert seit
    30.12.2009
    Ort
    Wasserburg am Inn / Bayern
    Alter
    23
    Beiträge
    449
    Aber daran denken das + 12V = Low und -12 V als Hight
    vom PC gewertet werden (Negative Logik)!
    Das ist glaube ich auch der Grund, warum meine 1. Schaltung nicht funktioniert hat.. ich bastel gerade an einer 2., die mithilfe von Transistoren arbeitet (um die ganze Sache umzudrehen, funzt super) und dem Link von uwegw basiert. (hab schon einen Transistor verbruzelt, das hat vieleicht gestunken )

    sobald es funktioniert oder auch nicht und ich ratlos bin melde ich mich wieder

    (dann werd ich mir auch die Mühe machen und einen schönen Plan malen, dann braucht keiner mehr das Risiko der Atmegaverschrottung eingehen - was aber nicht heissen soll, dass die Schaltung nicht auf eigene Gefahr zu benutzen sein wird! )

    MFG
    -schumi-

  6. #6
    Erfahrener Benutzer Roboter-Spezialist Avatar von -schumi-
    Registriert seit
    30.12.2009
    Ort
    Wasserburg am Inn / Bayern
    Alter
    23
    Beiträge
    449
    Es funktioniert noch immer nicht..

    Ich hab das mit den Transistoren so gemacht, dass -12V an RS232 zu +5V am RP6 werden und +12V an RS232 zu 0V am RP6 werden
    Ausserdem wird Tx am RP6 bei 0V zu +5V an RS232 und +5V werden zu 0V
    (Schaltung siehe angehängtes Bild)

    Ich habe auch Festgestellt, das das MRESET-Signal nicht bei DTR sodern bei RTS gesetzt wird
    (hab dann auch DTR durch RTS ersetzt, aber es hat nichts geholfen)

    liegt das daran, dass ich den Treiber auf der CD nicht installiert hab? Das ist doch eigentlich nur ein USB-treiber, also für den COM-Port nicht nötig, oder??
    Auch im Loader langsamere Übertragungsgeschwindigkeit und Resetsignal invertieren einstellen hats nicht besser gemacht
    (Aber es liegt nicht daran, das der Prog/Uart-Port kaputt währe, der funktioniert mit dem USB-Teil immer noch allerbestens)
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken dsc00522.jpg  

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.556
    Versuche es mal so, beide R`s ca 1k8 Diode 1n4148...Dann die
    Empfangenen und zu sendenden Daten mittels xor Verknüpfung
    invertieren. Es kann sein das der R an tx vom µC entfallen kann/muß,
    den habe (ich) dazu geplant die Originalschaltung war glaube ich
    ohne. Das mit den PIC`s wo ich das so gemacht habe ist ca. 20 Jahre
    zurück........

    Daten = Daten xor 0Hff
    Print Daten

    b.z.w.

    Input daten

    daten = daten xor 0Hff

    Print daten

    Gruß Richard
    Angehängte Dateien Angehängte Dateien

  8. #8
    Erfahrener Benutzer Roboter-Spezialist Avatar von -schumi-
    Registriert seit
    30.12.2009
    Ort
    Wasserburg am Inn / Bayern
    Alter
    23
    Beiträge
    449
    b.z.w.

    Input daten

    daten = daten xor 0Hff

    Print daten
    kann ich leider nicht, weil ich 1. den sourcecode vom loader nicht hab und 2. kein java kann

    werd mich heute Abend mit deinem Vorschlag mal befassen.. - DANKE!

    MFG
    -schumi-

    PS:
    Input daten
    Bist wohl auch ein Q(uick)- und/oder FreeBASICer, häh?

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.556
    Früher habe ich nur in Assemler gearbeitet, jetzt nach den Neuanfang
    ist Bascom erst einmal einfacher mit Java hat das nichts zu tun und
    eine xor Verknüpfung kann man auch mit C machen.

    Gruß Richard

  10. #10
    Erfahrener Benutzer Roboter-Spezialist Avatar von -schumi-
    Registriert seit
    30.12.2009
    Ort
    Wasserburg am Inn / Bayern
    Alter
    23
    Beiträge
    449
    So, ich bin ein gutes Stück weiter gekommen, hänge jetzt aber doch wieder...

    In den Plan von Richard wollte ich noch einen XOR-logikIC einbauen, der mir dann das Signal umdreht. Der hat aber nur eine maximale Ausgangsspannung von ca. 2V, also wahrscheinlich zu wenig. Jetzt hab ich noch mal die Schaltung mit den Transistoren aufgebaut.

    Ich kann:
    Im Terminal durch eingeben von "s" oder durch "Start" im Hauptmenü das Programm auf dem RP6 starten

    Ich kann nicht:
    - Verbinden
    - Prog hochladen

    Das MRESET-Signal wird jetzt auch wieder mit DTR gesendet
    Das Problem liegt offensichtlich daran (nach viiiieelen Messungen mit dem Multimeter) daran, dass RxD an der RS232 das Signal vom RP6 nicht aufnimmt..
    Es ändert sich der Status an der Zugangsleitung zu RxD aber!!
    d.h:
    - ich klicke auf "Verbinden"
    - Port wird geöffnet
    - recht kurze wartezeit
    - an der Leitung zu RxD steigen die normalen 0V auf wahrscheinlich +5V an (ich kann das nicht so genau sagen, weil das Signal so schnell wieder weg ist, das die "MAX"-imal -Funktion nur ca. 2V registriert. Das Multimeter ist aber auch nicht gerade ein Profi-teil..)
    - Es dauert noch ca. 2.5 sec., dann eine Meldung dass der Controler nicht antwortet

    Ich habe auch eine anderen Transistor verwendet, so dass das Signal an der Leitung zu RxD an der RS232 von +5V auf 0V sinkt

    RxD funktioniert aber (von wegen Kabelbruch oder so..), denn wenn ich während des Verbindungsvorgangs mit dem Draht ein paar mal gegen Vcc tippe sagt der Loader, dass die Controler-ID falsch ist und desshalb ein Fehler in der Übertragung aufgetreten ist..

    jetzt erschließen sich mir ein paar Fragen:
    1. was ist der Standartzustand and RxD von der RS232, -12V oder +12V??
    2. wie muss meine Schaltung in etwa ausschauen, damit der aktuelle Pegel an der RS232 deutlicher wird?? (also möglichst -9V und +9V, den Saft dafür kann man sich ja einfach aus so nem Blockakku wie in Fernbedienungen holen)

    MFG
    -schumi-

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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