Archiv verlassen und diese Seite im Standarddesign anzeigen : RS 232 auslesen, Hardware bauen
Hallo, bin neu hier und brauch' eine gute Idee zum Auslesen der Daten aus einer RS232 die ständig Zahlen schickt. Diese möchte ich dann über D/A Wandler analog ausgeben. Sollte vielleicht ein Schieberegister sein oder ähnlich.
BIT: 1_____2 3 4 5 6 7 8 9 10_____11________12 13 14___ 15__16
____+/-______Anzeigewert____Leerzeichen__ unrelavant___CR__LF
1.200 baud, ungerade Parität, 1 Stoppbit, Hardware Handshake nach CTS noch 1 Zeichen
Da in den Zeichen ein Dezimalpunkt enthalten ist, kommt evl. ein zusätzliches Problem hinzu. Ansonsten werden nur Ziffern übertragen. Mich interessiert natürlich das Gesamte, also die "Zahl".
Der D/A Wandler ist bestimmt dann schnell herausgesucht. Gibt es vielleicht etwas Fertiges?
FireBird2002
10.11.2004, 14:01
Kannst dir ja nen Microcontroller mit integriertem D/A-Wandler suchen, mir fällt grad nur die ADuc-Serie von Analog Devices ein. Dazu einen MAX232 o.ä. und das passende Programm...
Hättest Du einen Plan dafür?
Möglicherweise muß´man hier nichts 2x erfinden. Das Problem hatten bestimmt schon viele Leute vor mir.
FireBird2002
11.11.2004, 10:47
Das ist ne Standardapplikation, schau dir mal die Datenblätter zu den gen. Bauteielen an, der Schaltplan ist dann leicht. Den MAX mußt du außer mit VCC ung GND nur noch ein paar Kondensatoren verpassen und den Ausgang mit den entspr. Pins der SUB-D Buchse verbinden die Eingänge kommen an den µC zu den UART-Ausgängen. Den µC nur noch mit nem ext. Oszilator versorgen und den Analog-Ausgang evtl. über nen Treiber in deine SDchaltung einspeisen.
Danke.
Kann man hier auch "Anhänge" als Bilder, Autosketchdateien, S-Plan Dateien u.ä. schicken?
Hab' hier was gefunden: Anhänge (falls es geklappt hat)
FireBird2002
11.11.2004, 12:21
Ja, aber den Schaltplan darfst du selber basteln, sonst mach das keinen Spaß.
Gegen ein (für die Branche) geringes Entgeld könnte ich dir den Schaltplan und Layout natürlich auch liefern. :D
FireBird2002
11.11.2004, 12:28
Für kurze Strecken geht die Schaltung evtl. aber ich würden nen anderen Controler suchen, zwecks DAC.
Hallo XPYDER, danke für die Antwortmails.
Es handelt sich um eine Waage, die auf 0,1mg genau wiegt. Mich interessieren Werte zwischen 0,1g ... 40g. Die Datenausgabe 12 bis 14 ist nur ein "g" für Gramm. Ich hatte angenommen, dass es sich um Bits handelt, also 2 Bytes. In der Beschreibung wird von "Zeichen" gesprochen.
C-Controll von Conrad ?
Anschließend soll das digitale Signal entweder auf 8 Bit parallel ausgegeben werden (incl.Vorzeichen, oder eine Zahlenkombi, die den Wert als negativ erkennt und damit als "unbrauchbar" markiert... Oder analog in 0V bis 10V ausgibt.
FireBird2002
11.11.2004, 15:31
C-Controll von Conrad ?Ne, vergiß die C-Control: zu teuer, dafür dass sie nix kann...
parallel ist einfach und kann leicht realisiert werden, die Spannung von 0-10V kannste nur mit DAC und nem nachgeschalteten OPV realisieren, wobei du diesem dann ca. 12V zuführen solltest.
C-Controll von Conrad ?
Anschließend soll das digitale Signal entweder auf 8 Bit
parallel ausgegeben werden (incl.Vorzeichen, oder eine
Zahlenkombi, die den Wert als negativ erkennt und damit
als "unbrauchbar" markiert...
Oder analog in 0V bis 10V ausgibt.
Erstmal: "Zeichen" sind immer BYTES. (Können auch 7bit
sein, sind aber nie einzelne Bits)...
Also: 8 Bit reichen da nicht, denn wenn du 0,1g
Genauigkeit willst und max. Wert = 40g ist, dann haste ja
400 verschiedene Werte (also 9Bit).
Da könntste die Genauigkeit halt zB auf 0,2g machen.
oder auf 40,0/254 = 0,1574803.. g, also ca. 1,5 Gramm
Genauigkeit. 254 statt 256 deshalb, weil, dann könnteste
gleich $FF für ungültige Werte nehmen. Und $00 wäre dann
=0, (nehm ja mal spontan an, daß 0,0 und 40,0 beide noch
"legal" sein sollen).
Btw: Das mit dem C-Control hatt ich nur erwähnt, für den
Fall, daß man vielleicht dieses eingebaute BASIC nutzen
will (falls einem vor Assembler graust oder so). Und weil
halt RS232 und D/A-Wandler schon drin sind.
Bezweifle allerdings stark, daß der D/A dann 10V ausgibt.
(Könnte man aber mit nem Transistor oder nem Baustein
hoch"transformieren"...)
Wie gesagt: Mir machts auch nix aus, das auf ner 6502 zu
coden (Fast dieselbe ist im C64 (6510) Und genau dieselbe
(6502) im C64-Diskettenlaufwerk oder auch z.B. im Gameboy...).
Allerdings hat die natürlich keinen eigenen ROM oder RAM
und auch kein RS232 und D/A Wandler. Sowas löste man da
mit externen Chips. (Aber ich hab aufm C64 auch RS232
schon "von Hand" gecodet - kann man nämlich auch
selbermachen... 38400 Baud hatt ich damals imo.)
Um den Wert als negativ zu "erkennen", reichts ja schon,
das "-" als "illegal" zu deklarieren bzw die Zahl dann
gleich auf $FF zu setzen. Na, wie gesagt: Zahl ist dann
ungültig, soband bei Vorkomma=0 (siehe Mail) >40 wird.
Außerdem wird bei Nachkomma sobald >2, halt direkt beendet
(weil ja nur 1 Kommastelle) und schon hätte man einen
Wert 0..400. Es gibt hier übrigens auch noch eine andere
Möglichkeit, gleich auf Werte 0..254 zu kommen, ohne daß
man erst diese anschließende Multiplikation braucht - mit
ner Tabelle. Wie gesagt, meiner Phantasie sind da kaum
Grenzen gesetzt...
Zu den Kosten: Weiß grad nicht, was das C-Control
heutzutage kostet. Gibt aber davon schon n Nachfolger,
soweit ich weiß.
Oh, ich merk grad, wird schon wieder etwas lang...
Danke, werde jetzt Werte über Hyperterminal auslesen, um genauere Infos zu bekommen. Melde mich dann.
Marek Swierzy
12.11.2004, 09:10
Sollte das Thema noch Aktuell sein :
µC --> 8051 (8 BIT REICHEN)
AD --> MAX 132 (Oder so
RS232 --> MAX 232 Serielle Schnittstelle
Der MAX 132 ist ein A/D Wandler. Macht der auch D/A?
FireBird2002
12.11.2004, 11:51
[QUOTE=Marek Swierzy
µC --> 8051 (8 BIT REICHEN)
AD --> MAX 132 (Oder so[/QUOTE]
8051+DA+AD=z.B. ADuc812
Marek Swierzy
12.11.2004, 12:37
8051+DA+AD=z.B. ADuc812
Hmmmm.... ADuc812 denn kenne ich nicht... aber kann durchaus sein, dass der IC einen DA-AD wandler drin hat.
Beim Max bin ich mir auch nicht mehr sicher kannst ja bei maxim nachsehen.
Senden an die Waage ist nicht notwendig. Demzufolge auch keine D/A Wandlung.
Senden an die Waage ist nicht notwendig.
Demzufolge auch keine D/A Wandlung.
War sicher nur n Tippfehler, oder?
D/A war doch eigentlich das, was du machen wolltest mit
dem digitalen Wert von der Waage, oder.
Du brauchst nur kein A/D.
Ja, bin auch der Meinung (siehe meine letzten Postings),
daß 8 Bit reichen. (ein 8-bit-Chip!)
Mit "8-bit reichen nicht" meinte ich nur den ZAHLENWERT,
nicht den CHIP. - Weil bei 0,1g Genauigkeit und Werten
von 0,0g bis 40,0g halt eine Genauigkeit von mind.
9bit erforderlich wäre. (Das hat nix mit dem Chip zu tun,
ist ja nicht grad so, als könnte 8Bit-Technik keine 16Bit-
Zahlen verarbeiten - bezieht sich ja nur auf die
Register.)
Und nochmal: Es gibt wie gesagt, bereits 8-Bit-CPUs, die
sowohl D/A- bzw A/D-Wandler, als auch RS232 DRIN HABEN -
was weitere externe Hardware eben nicht erforderlich
macht...
Senden an die Waage ist nicht notwendig.
Demzufolge auch keine D/A Wandlung.
Das war ein Tippfehler - oder?
Weil D/A-Wandlung war doch eigentlich das, was Du machen
wolltest, nachdem Du den digitalen Wert, der Dir übers
RS232 von der Waage geschickt wurde, ausgelesen hast.
Was Du nicht brauchst, wäre demzufolge A/D.
Und: Natürlich reichen 8-BIT! Siehe dazu auch meine
letzten Postings (die von mir genannten 65xx und 68xx-
Chips sind alle 8-Bit!)
Ich bezog mich mit "8-Bit reichen nicht" lediglich auf den
ZAHLENWERT - weil bei 0,1g Genauigkeit und 0,0g bis 40,0g
eben 401 verschiedene Werte rauskommen und 8-Bit dafür
nicht reichen. (Ist ja nicht grade so, als könnten 8-Bit
Chips keine 9-Bit-Werte verarbeiten - bezieht sich ja nur
auf die Registerbreite.)
Und, auf die Gefahr hin, mich zu wiederholen: Gibt eben
MicroController, wo sowohl RS232, als auch D/A- und A/D-
Wandler bereits EINGEBAUT sind und damit keine weitere
externe Hardware dafür erforderlich ist...
Senden an die Waage ist nicht notwendig.
Demzufolge auch keine D/A Wandlung.
Das war ein Tippfehler - oder?
Weil D/A-Wandlung war doch eigentlich das, was Du machen
wolltest, nachdem Du den digitalen Wert, der Dir übers
RS232 von der Waage geschickt wurde, ausgelesen hast.
Was Du nicht brauchst, wäre demzufolge A/D.
Und: Natürlich reichen 8-BIT! Siehe dazu auch meine
letzten Postings (die von mir genannten 65xx und 68xx-
Chips sind alle 8-Bit!)
Ich bezog mich mit "8-Bit reichen nicht" lediglich auf den
ZAHLENWERT - weil bei 0,1g Genauigkeit und 0,0g bis 40,0g
eben 401 verschiedene Werte rauskommen und 8-Bit dafür
nicht reichen. (Ist ja nicht grade so, als könnten 8-Bit
Chips keine 9-Bit-Werte verarbeiten - bezieht sich ja nur
auf die Registerbreite.)
Und, auf die Gefahr hin, mich zu wiederholen: Gibt eben
MicroController, wo sowohl RS232, als auch D/A- und A/D-
Wandler bereits EINGEBAUT sind und damit keine weitere
externe Hardware dafür erforderlich ist...
Marek Swierzy
13.11.2004, 12:32
3-fach Post....
Es kann auch durchaus sein, das es diese µC gibt, ich kanne keinen.
Sag mal bitte einen daß interessiert micht auch.
weil bei 0,1g Genauigkeit und 0,0g bis 40,0g
eben 401 verschiedene Werte rauskommen und 8-Bit dafür
nicht reichen.
WAS ?????????????????????????????
Ich arbeite im Unternehmen mit einer Genauigkeit von 0,01 bis 999,99 Volt.
Und da reichen 8-Bit dicke.
Der AD-Wandler muss halt nur eine Genauigkeit von 12 o. 16 Bit haben
3-fach Post....
Es kann auch durchaus sein, das es diese µC gibt, ich kanne keinen.
Sag mal bitte einen daß interessiert micht auch.
Zum 3x: Ja, das Forum reagierte dann jeweils irgendwie nichtmehr,
da hab ichs dann nochmal versucht. Scheint wohl, als wäre
es gesendet worden, aber das PHP hatte keine Lust, mir das
zu sagen...
Zum µC: Ja, wie gesagt, der 68HC05 (der u.a. auch im C-Control
drin ist, den's aber auch einzeln gibt), hat zB einen Wandler
drin. Außerdem supportet er RS232 (er wird nämlich auch über
RS232 programmiert) - d.h. es ist in diesem Mini-OS eingebaut,
er schon drin hat.
WAS ?????????????????????????????
Ich arbeite im Unternehmen mit einer Genauigkeit von 0,01 bis 999,99 Volt.
Und da reichen 8-Bit dicke.
Der AD-Wandler muss halt nur eine Genauigkeit von 12 o. 16 Bit haben
Das ist genau das, was ich meinte! Daß der WERT (!!!) halt > 8 Bit ist
(weil 401 > 256), aber daß deswegen die CPU natürlich trotzdem eine
8-Bit-CPU sein kann. Es ging DIE GANZE ZEIT nur um den Wert, der zum
Wandler geht! Ich dachte eigentlich, daß ich es nun langsam mal
DEUTLICH GENUG geschrieben hätte...
(0,01..999,99 sind halt zB 100000 verschiedene Werte, würden 17 Bit
erfordern.)
Und wie schonmal gesagt (mehrmals): Es ist ja NICHT so, als könnte eine
8-Bit-CPU keine Werte >8-Bit verarbeiten.
Es ging nur darum, daß gingo gesagt hat, er würde an einen 8-Bit-
Ausgang wollen. Und wenn man 402 verschiedene Zustände (401 Werte + 1x
"illegal") ausgeben will, ist ein 8-Bit-AUSGANG dafür zu wenig
(es sei denn, man will es plexen - was natürlich auch ginge).
Und WEHE, wenn das jetzt irgendwer NOCH NICHT verstanden hat!
Entschuldigung, natürlich D/A.
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.