Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit Max232
Hallo!
Also ich habe folgendes Problem. Ich habe ein RFID Lesegerät und will dieses über einen µC ansteuern. Jetzt habe ich mir gedacht ich schließ den Leser erstmal an meinen Pc an und schau mal was denn da rüberkommt. Die Verbindung mit µC und dem Pc geschieht mittels RS232. Da der Leser aber nur TTL Pegel ausgibt verwende ich den MAX232 als Pegelwandler. Das Problem das ich jetzt habe ist, dass mein Terminalprogramm (Hyperterminal) nichts anzeigt. In der Beschreibung des Lesers steht er sollte ein ACK senden sobald die Verbindung besteht. Doch das tut er nicht. Jetzt meine Frage:
Kann sein das der MAX232 hinüber ist? Wobei ich mittlerweile schon einen 2ten MAX232 ausprobiert habe und da ist das gleiche Problem aufgetreten. Und wenn der in Ordnung ist wie könnte ich den Leser sonst testen?
Als Beschaltung des MAX232 verwende ich genauso wie es beim RN-Control dargestellt ist die Schaltung mit dem 100nF Kondensator bei der Versorgung und sonst 4x4,7 µF Kondensatoren.
Ich würde mich über eine rasche Antwort sehr freuen.
lg
Sind Baudrate/Handshaking/etc richtig eingestellt? Verkabelung korrekt? (Rx/Tx wird gern vertauscht)
Jap Baudrate usw. sind richtig eingestellt. Die habe ich schon etliche Male überprüft. Verkabelt ist es auch richtig.
lg
kolisson
07.12.2009, 01:37
hallo manta,
du schreibst merkwürdige dinge.
du willst den leser zunächst an den pc anschliessen und verbindest den uC mit dem pc. da kann doch was nicht stimmen.
1. miss die max hardware durch
-- a) ist die 5 Volt da ?
-- b) sind die ausgangsspannungen der ladungspumpen (+/- 10V oder ähnlich) da ?
2.) mach am pc einen loopback test
3.) mach am pc mit dem max einen loopback test
danach weiss man schonmal mehr
gruss klaus
Also nein das ist so (@kolission):
Da ich nicht genau weiß wie das aussieht was der RDIF Leser überträgt habe ich mir gedacht ich schau mir das zuerst mal am Pc über Hyperterminal an. Dann erst, wenn ich weiß was er überträgt, schließe ich den Pc wieder ab und mache eine Verbindung, und nur diese eine, zwischen µC und RFID Leser. Deshalb auch der Pc. Ich will nur wissen wie das Übertragene aussieht.
zu den 3 Punkten:
1. Hardware durchgemessen.
a) Da sind 5 Volt dran. Die nehm ich einstweilen von einer USB Buchse (Das ist kein Problem oder? Den MAX232 sollte das schon aushalten?)
b) Die Ausgangsspannungen der Ladungspumpen sind: +9.26V und - 8.83V
2. Den Loobback Test am Pc habe ich gemacht und ja es funktioniert.
3. Naja beim Loopback Test mit dem MAX232 kommt gar nichts rüber. (Dumme Frage ich weiß aber nur damit ich gleich alle Fehler ausmerze die ich hier machen kann: Beim Loopback Test mit MAX ist gemeint TX und RX vom Pc normal anschließen an 13 und 14 und die TTL Seite also 11 und 12 zusammenhängen oder?)
Falls es noch hilfreich ist hier die Beschaltung des MAX232:
Vom Pc kommend:
TX an 14
RX an 13
Vom Leser kommend:
TX an 11
RX an 12
An 1,2,3,4,5,6 4x Kondensatoren 4.7µF (Elkos die richtig gepolt sind)
An 15, 16 1x Kondensator 100nF
Das ganze ist einstweilen auf einem Steckbrett aufgebaut.
lg
Hubert.G
07.12.2009, 12:07
Auch schon mal Pin 13,14 getauscht?
kolisson
07.12.2009, 12:24
hallo Manta,
habe gerade mal ins datenblatt geschaut und ich fürchte,
dass hubert.g vollkommen recht hat.
pin 14 ist ja ein rs232-Ausgang. da kann man natürlich nicht
den tx vom pc anschliessen, da das ja auch ein ausgang ist.
du solltest mal huberts tip befolgen.
für den fall, dass du so eien ft232 usb zu seriell auf der pc-seite verwendest, solltest du wissen, dass die einfachen kleinen module
garnicht mit +- pegeln arbeiten, sondern auch mit ttl.
in diesem falle wäre überhaupt kein max nötig.
ein weiterer tipp ist die verwendung eines anderen terminalprogrammes,
da hyperterminal meines erachtens etwas merkwürdig arbeitet.
kannst ja mal dieses hier probieren:
http://www.ga-systemhaus.de/html/terminal_g-a-system.html
gruss klaus
Zu 3.:
Der Loopback Test mit MAX funktioniert jetzt auch. Danke euch allen.
@kolission:
Ich verwende keinen Umsetzer. Ich verwende einen StandPc, welcher die serielle Schnittstelle noch eingebaut hat.
Danke auch für dieses Terminalprogramm. Ich werde mich erstmal ein bisschen damit auseinandersetzen.
Das Problem, das ich jetzt noch habe, ist das der Leser trotzdem nichts sendet, überträgt oder ausgibt. Kann das hier auch sein, dass ich RX und TX vertauscht habe?
lg
Hubert.G
07.12.2009, 15:32
Ja, sicher, lässt sich aber leicht feststellen.
Der Pin vom Leser und der Pin vom Max an denen du Spannung gegen GND misst, gehören nicht zusammen.
Oke also gehören zusammen:
Immer die Pins wo einer der beiden Spannung gegen GND hat und der andere nicht.
Na gut ich werde das mal ausprobieren. Danke.
lg
Also ich hab jetzt mal gemessen @ Hubert.G:
Ich habe fast überall Spannung gegen GND am MAX und zwar sieht das dann so aus:
Pin 7: -8.74V
Pin 8: 0V
Pin 9: 5.1V
Pin 10: 4.01V
Pin 11: 4.01V
Pin 12: 5.1V
Am Leser:
RX: 0V
TX: -9.37V ?? wie geht denn das?
lg
Hubert.G
08.12.2009, 11:13
Wäre es nicht möglich das der Leser bereits einen MAX eingebaut hat? Sieht zumindest so aus, wenn du richtig gemessen hast.
Was sagt das Datenblatt dazu?
TX: -9.37V ?? wie geht denn das?
Leerlaufpegel (logische 1) einer RS232-Schnittstelle.
Ganz normal.
Sieht demnach wirklich so aus, als wäre der MAX232 überflüssig.
Also ja das mit dem Datenblatt ist so eine Sache:
Von diesem Leser gibt es 2 Datenblätter. In einem (in einem Älteren) steht, dass er TTL Pegel besitzt und in dem anderen steht, er habe bereits RS232 Pegel. Da ich jetzt aber nicht gewusst habe, welchen ich hier vor mir habe, habe ich erst einmal angenommen, dass es sich um den mit TTL Pegel handelt.
Auf der Platine selbst ist aber schon ein MAX drauf, aber der hat eine andere Bezeichnung (MAX202).
Kann der Leser kaputt werden wenn ich mit RS232 Pegel auf TTL Pegel gehe? Ja oder?
lg
Hubert.G
08.12.2009, 12:32
Der MAX202 ist gleich dem MAX232.
Wenn der MAX dazwischen war kann der Leser nicht kaputt sein, auch der MAX nicht, da er nie ausserhalb der Spec. war.
Oke eine dumme Frage aber was meinst du mit er war nie außerhalb der Spec.?
Na gut ich werde dann ganz einfach mal versuchen den Leser mit der RS232 ohne MAX anzusprechen.
lg
Hubert.G
08.12.2009, 13:58
Wenn du mit TTL auf die RS232 Seite gehst bist du nicht ausserhalb der Spannungsgrenzen.
Aso das macht wiederrum Sinn @Hubert.G.
Gibt es irgendeine Möglichkeit herauszufinden, ob der Leser TTL oder RS232 Pegel besitzt, ohne dass ich ihn gleich direkt am Pc anstecke?
Einerseits hat der MAX nicht funktioniert und das soll er auch nicht wenn da die falschen Pegel wo falsch anliegen oder? Außerdem hat der Leser auch einen Leerlaufpegel von -9.37V. Noch dazu hat der Leser den MAX202 bereits miteingebaut. Also es spricht alles dafür das der schon RS232 Pegel hat.
Naja ich bin mir da noch nicht so ganz sicher. Ich will den nicht umbedingt kaputt machen, wenn es nicht sein muss.
lg
Hubert.G
08.12.2009, 14:34
Wenn du siehst das ein MAX eingebaut ist, sollte sich doch die Leitung vom Stecker zum MAX verfolgen lassen, oder zumindest durchmessen.
es reicht, wenn du den pegel der TX leitung gegen masse misst, einer negativen spannung (schwarz/COM and GND, rot an den pin) ist es RS232, liegt der pegel bei weit über 5V vermutlich auch RS232 aber dann umgekehrte polarität
Also ich habs mal durchgemessen:
Die Verbindungen zum MAX202 auf dem Leser:
TX (also TX das rausgeht an dem ich was anschließen kann) geht auf Pin 14.
RX (also RX das rausgeht ...) geht auf Pin 13.
Oke also anscheinend sind das wirklich schon RS232 Pegel. Nun ja auch nicht so schlimm, sonst hätte ich nie so viel über den Baustein gelernt. Dankeschön euch allen, dass ihr euch die Zeit genommen habt und mich so toll beraten habt.
lg
kolisson
08.12.2009, 21:25
hallo manta,
nachdem du ja jetzt schon wesentlich weiter gekommen bist,
sind mir aber noch einige dinge im sinn, die ich dir mittteilen möchte.
die ganze verwirrung über rx und tx ist mir wohl bekannt.
sicher ist natürlich, dass der rx des EINEN immer an den tx des ANDEREN gehört. egal ob mit oder ohne pegelwandler.
leider passiert es mir selber oft, wenn ich kurze notitzen über meine projekte mache, dass ich zwar notiere an welchem connectorpin ich rx oder tx habe, aber immer vergesse, auf was das bezogen sein soll.
hier fehlt also die reference.
leider ist das bei den herstellern von modulen auch oft so.
wenn da also irgendwo steht, dass die leitung 1 RX ist, kann das bedeuten, dass das der empfangskanal des modules ist oder es bedeutet , dass er der sendekanal ist, der dann an den empfangskanal der peripherie angeschlossen werden sollte.
also weiss man im allgemeinen nicht wirklich, was die richtige strategie wäre.
wenn man jedoch in seiner schaltung einen schutzwiderstand in serie zu den kanälen einplant, ist dann aber trotzdem etwas abgesichert gegen die zerstörung von komponennten (wie gesagt ETWAS abgesichert).
sagen wir doch einfach mal, wir verwenden auf beiden seiten des verbindungskabels einen 100Ohm widerstand für jeden kanal (also 4 stck. widerstände) , dann kann so schnell nix passieren, falls man mal falsch liegt.
die nachteile der widerstände können dann natürlich bei hohen baudraten oder langen und evt. ungeeigneten kabeln auftreten. da dies in einer testphase aber nie die ausgangskonfiguration sein sollte, spielt es ersteinmal keine rolle.
nachdem dann alles getestet ist und man weiss, was man tut, kann man die wiederstände auch leicht überbrücken.
ein anderer punkt, der dir nicht klar zu sein scheint, ist das lesen von datenblättern.
hubert.g hatte deinen möglichen fehler erwähnt, ich hab es dann nochmal nachgesehen und es hat sich herausgestellt, dass du die ausgänge gegeneinander hast antreten lassen.
warum kamst du da nicht selber drauf ?
im datenblatt des max232 // ich beziehe mich hier mal auf das von TI //javascript:openreq('http://www.datasheetcatalog.org/datasheet/texasinstruments/max232.pdf') kann man ja auf seite 2 gibt es z.B das logic-diagram .
da siehst du dreieckige gebilde.
dieses dreieck wird wirst du oft in schaltplänen wiedersehen.
manchmal sind es treiberstufen und manchmal sind es verstärkerstufen, die damit simbolisiert werden.
wenn du die dreiecke nun als quer aufgeschnittene trichter verstehst, liegt die vermutung nahe, dass damit der folgestufe etwas "eingetrichtert" werden soll.
insofern verbietet es sich förmlich, zwei dreiecke (also zwei trichter) mit den spitzen enden gegeneinander laufen zu lassen.
ich hoffe, dass diese recht bildliche zusatzerklärung für die zukunft hilft.
zusätlich und der vollständigkeit halber hier noch etwas zu den terminalprogrammen:
1. das terminal GA (wie schon verlinkt):
das ist ganz nett und kostenlos.
es funktioniert fast auf anhieb.
es zeigt das, was man sehen will.
--- nachteil ---
-------- es ist sehr sehr schlecht programmiert
-------- wenn man vom uC in schneller folge (also etwa alle 10ms oder so)
-------- daten sendet, hängt sich das biest auf.
-------- dies resultiert dann in einem weissen fenster ohne inhalt
-------- sozusagen verschluckt sich das programm, wenn zu schnell neue daten kommen.
-------- mögliche folge:
der rechner bleibt hängen... das kilen des prozesses im task-man kann helfen.. muss aber nicht.
-------- also sollte man regelmässig seine programmierarbeiten sichern, damit nix aktuelles verloren geht.
2. ein anderes terminalprogramm ist das HTERM
http://www.der-hammer.info/terminal/
dieses befindet sich wohl schon seit jahren im beta stadium.
es ist aber recht gut und verschluckt sich nie.
hier hat wohl jemand wirklich gut programmiert.
es bietet viele einstellmöglichkeiten, was den umgang natürlich erschwert.
leider bleiben die zu letzt gemachten einstellungen nicht erhalten.
um eine ähnliche anzeige wie in terminal-ga zu bekommen, benötigt amn schätzungsweise 15 bis 20 klicks
zudem scheinen kleine baudraten , wie etwa 300bd, nicht zu funktionieren.
-- soweit nun die ergänzenden tipps zu den terminalprogrammen
-- ich benutze beide , in abhängigkeit von den jeweiligen bedürfnissen
-- terminal ga -- für den anfang , wenn ich in bascom vor jedem PRINT noch ein waitms 300 einfüge
-- das hterm später, wenns schneller gehen soll, als ich lesen kann
wenn man seine pappenheimer aber länger kennt, ist es kein problem, die entsprechende auswahl zu treffen.
************************************************
und nun noch ganz ganz ganz am rande:
************************************************
ein ereignis, was mir in den letzten tagen passiert ist, macht mich nachdenklich.
bisher hat mit den seriellen übertragungen alles immer sofort funktioniert.
neulich hatte ich eine schaltug mit einem atmega 8, dessen serielle übertragung an den pc nur noch "komische zeichen" ausgab.
die schaltung hatte, über schottkydioden entkoppelt, zwei mögliche spannungsquellen.
einmal 12 volt input und einen 7805 5 volt regler (also 5,02 volt)
zum zweiten eine versorgung über usb meines pc (also etwa 4,8Volt)
bei 5,02 klappt sie serielle übertragung
bei 4,8 Volt gab es nur noch Müll.
ein anderer M8 uC in gleicher schaltung funktionierte perfekt
Fazit:
Die frequenz des internen RC Oscillators ist sehr stark von UB abhängig und damit auch die generierte baudrate.
man soll nicht wirklich wundern, dass bei einem ab werk schlecht calibrierten (stichwort OSCCAL) rc generato unter umständen einige 100mV zwischen erfolg und dem gegenteil entscheiden.
gruss klaus
Hallo Klaus,
Ich habe mir jetzt deine Zusammenstellung nützlicher Tipps durchgelesen und muss sagen ich bin begeistert. Besonders, da ich einigermaßen neu auf diesem Gebiet bin habe ich nun wertvolle Informationen erhalten. Danke!
--
Zum Schluss noch eine kleine Anmerkung:
Ich hab mich letzten Endes doch noch getraut den Leser an den Pc anzustecken um zu sehen was passiert. Er funktioniert nun einwandfrei (!) und ich kann damit beginnen ihn über einen µC anzusteuern.
lg
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.