Forum: Mikrocontroller und Digitale Elektronik Hilfe zu einem Arduino Problem


von Tom B. (cornholio7)


Lesenswert?

Hallo Leute

Ich möchte eine Blackbox mit zwei seriellen Schnittstellen (RS232 mit 
Xon/Xoff Flowcontrol) bauen.

Es müssen Daten mehr oder weniger unverändert vom PC/Mac an das Endgerät 
(Plotter) durchgeschlauft werden.
Es gibt aber auch einige wenige Daten, die vom Plotter an den PC/Mac 
gesandt werden. (Gerätekennung, Papiergrösse... die der steuernde Compi 
abfragen kann)

Diese HPGL Daten bestehen hauptsächlich aus Koordinaten, die den Plotter 
in Bewegung setzen.

Die Befehle sind relativ kurz und mit einem Semicolon terminiert.

Das folgende Beispiel zeigt ein 100mm Quadrat. (Die Auflösung ist meist 
0.025mm, kann aber auch 0.0254mm sein. (1/1000 inch)

IN;IP0,0,1,1;JA0,1;PU4004.01,4.01;PD4004.01,4004.02;PD4.01,4004.02;PD4.0 
1,4.01;PD4004.01,4.01;PU;;JP4404.02;JE;

Diese Ascii-Daten werden so zum Plotter gesandt.

Die meisten Befehle sind standard HPGL, es können aber auch 
Herstellerspezifische darunter sein.


Einige Befehle (Abfragen) möchte ich abfangen und eine vordefinierte 
Antwort an den steuernden Compi senden. (z.B. OI oder OH)
Die Strings müssen also in einen Buffer, (64 oder 128 bytes sollten 
reichen) auf einige wenige Befehle geprüft und meist 1:1 weitergesandt 
werden.


Der Einfachheit halber habe ich gedacht, einen Seeduino Mega zu 
verwenden, weil der 4 UARTs hat. Damit müsste ich die zweite serielle 
Schnittstelle nicht softwaremässig nachbilden.


Kann mich jemand von Euch da etwas anschieben?
Ich bin kein komlpetter Newbie, es ist nur schon lange her, dass ich 
programmiert habe.

Tom

von Marius P. (marius_p)


Lesenswert?

Hallo

Es gibt bei der Arduiono IDE standardmäßig eine software serial library 
dabei, das sollte also kein Problem sein.

Ich würde dir aber eher zu einem Arduino Nano raten.
Der Grund ist das es das selbe kann wie das Uno und billiger ist als das 
Uno oder Mega.

Die Verarbeitung ist eh ziemlich leicht, serial empfangen, durchsuchen, 
serial senden.

Probleme könnts geben wenn beide zugleich senden, aber da weis ich auch 
nicht weiter.

von Tom B. (cornholio7)


Lesenswert?

Ja eben,
wenn da Daten verloren gingen, wäre das schlecht.
Daher favorisiere ich die Hardware-UART Lösung.
Der Preis der Hardware ist sekundär. (10, 30 oder 40 Kröten machen 
keinen Unterschied, wenn es dafür gescheit funktioniert.) Da das 
Endgerät im Bereich von 5-10 kEuros liegt, kann der Seelenfrieden etwas 
teurer erkauft werden. Es kann als teureren Zwischenstecker angeschaut 
werden...
Die Stückzahlen werden auch nicht extrem hoch sein.

von FlorenzW (Gast)


Lesenswert?

Dann einen Arduino Mega 2560 nehmen. Kostet zwar ~50€, hat aber noch 3 
Hardware-Serielle frei. Bei den kleineren Arduinos wird die einzige 
verfügbare Hardware-Serielle an USB durchgereicht.

Grüße, FlorenzW

von FlorenzW (Gast)


Lesenswert?

Dann brauchst du nur noch 2x Pegelwandler, z.B. MAX232, und es kann 
losgehen.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Du redest sicher von einem USB<->seriell Wandler, oder? In deiner Post 
ist davon allerdings erstmal nicht die Rede...
Natürlich kann man eine Software UART auch per Interrupt regeln, da 
würden bei den überschaubaren Baudraten auch keine Zeichen verloren 
gehen. Mein kleines Projekt eines Tektronix Tablets an USB mit ATTiny 
benutzt sowas für die Tablett->USB Daten. http://www.schoeldgen.de/avr/

Aber eine Hardware UART mehr kann ja nicht schaden. Allerdings ist der 
Arduino in allen seinen Spielarten dafür nicht so super, da du ja 
zumindest noch einen MAX232 o.ä. unterbringen musst und dafür einen 
Shield basteln musst. Dann kannst du auch gleich ein kleines komplettes 
Board basteln. Als Wandler nimmst du dann entweder einen FT232 aufm 
Board oder einen fertigen USB-> seriell Wandler, dar auch am Mac läuft, 
das tut ja nun leider nicht jeder. Dann einen der grösseren MAX Chips, 
z.B. der Max 235 mit 5/5 Tranceivern oder den MAX248 mit 8/8 Tranceivern 
und einen Mega nach Wunsch. Wenn du dich für den OnBoard FT232 
entscheidest, reicht natürlich der Klassiker MAX232 für die 
Plotterseite.

von Spess53 (Gast)


Lesenswert?

Hi

Warum kein eigenes Board? Da der Seeduino Mega anscheinend keine 
RS232-Treiber besitzt brauchst du eh zusätzliche Hardware. AVRs mit zwei 
USARTs gibt es noch andere. Angefangen mit dem ATMega162 über 
ATMega164/324/644/1284p/pa bis zum relativ neuen ATTiny1634.

Speicher für deine Anforderungen haben alle ausreichend.

MfG Spess

von Tom B. (cornholio7)


Lesenswert?

Zuerst mal vielen Dank für Eure Posts.

Meine Schwächen liegen eher beim Softwaredesign als bei der Hardware.
Wenn mir da jemand einen kleinen Schubser geben könnte...


(Vor 30 Jahren habe ich einen Intel 8251 USART an eine Z80 CPU gehängt 
und mit 7588 und 7589 die Pegelwandlung von TTL nach RS232 gemacht)
Das ist ja heute viel einfacher. (Mit weniger Wire-Wrap Verbindungen ;-)

Zur Hardware habe ich auch nochmal etwas rumgeschaut.

Etwa hier der uC:
http://www.dealextreme.com/p/arduino-mega-2560-atmega2560-module-green-144185?item=4

oder die Pegelwandlung:
http://www.dealextreme.com/p/rs232-serial-port-to-ttl-converter-module-w-transmitting-and-receiving-indicator-144192?item=62

Ich glaube kaum, dass ich für dieses Geld einen MAX3232 und einen 9Pol 
D-Stecker bekomme. (Der MAX3232 kann nebst 5V auch 3.3V)

Damit kommt ein Arduino Mega mit 2 Pegelwandlern auf Platinen incl. 
Steckern auf 35$.

Die Lieferzeiten sind z.T. etwas lang hier, aber dafür ist die Lieferung 
Kostenlos.

von Karl H. (kbuchegg)


Lesenswert?

Tom Box schrieb:
> Zuerst mal vielen Dank für Eure Posts.
>
> Meine Schwächen liegen eher beim Softwaredesign als bei der Hardware.
> Wenn mir da jemand einen kleinen Schubser geben könnte...

Das Grundkonzept hast du dir ja schon gegeben.

Eingangspuffer in dem Zeichen gesammelt werden bis ein ; kommt.
Wird der ; erkannt, lautet die Annahme: Im Puffer steht ein kompletter 
Befehl.

Den Befehl mit allen vordefinierten vergleichen. Ist er in der Liste, 
dann die vordefinierte Antwort zurücksenden. Ansonsten den Befehl in den 
Ausgangspuffer zum Gerät schicken.

Dinge die vom Gerät kommen, werden direkt an den PC durchgestellt.


Spezialität könnte jetzt höchstens noch sein, dass dein Zwischending 
noch das Handshake berücksichtigen muss. Aber abgesehen davon: so 
schlimm ist das Programm auch wieder nicht. Ein wenig Übung logeslöst 
von der eigentlichen Aufgabenstellung könnte allerdings nicht schaden.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.