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.
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 https://www.roboternetz.de/phpBB2/ze...=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.
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.
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..
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
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 )Aber daran denken das + 12V = Low und -12 V als Hight
vom PC gewertet werden (Negative Logik)!
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-
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)
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
kann ich leider nicht, weil ich 1. den sourcecode vom loader nicht hab und 2. kein java kannb.z.w.
Input daten
daten = daten xor 0Hff
Print daten
werd mich heute Abend mit deinem Vorschlag mal befassen.. - DANKE!
MFG
-schumi-
PS:Bist wohl auch ein Q(uick)- und/oder FreeBASICer, häh?Input daten
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
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-
Lesezeichen