Forum: Projekte & Code RS232 Datenlogger


von tom (Gast)


Angehängte Dateien:

Lesenswert?

Hier ein Projekt von mir, ein RS232 Datenlogger

Zwei Tiny2313 schreiben jeweils von RxD und TxD den Datenstrom mit.
Sie geben Ihre Daten parallel an einen Mega32 weiter, dieser notiert
die Daten jeweils mit einem Zeitstempel im Millisekundenraster und
bereitet sie Mundgerecht auf. Sie werden dann über eine dritte RS232
die fest auf 19200 8N1 steht an ein Terminal gesandt, hier bietet
sich ein PC mit Terminal zum Loggen und Bedienen an.

Es stehen zwei Modi, HEX/ASCII, für die Daten zu Auswahl.
Nicht druckbare Zeichen werden im ASCII-Modus als Hexwerte dargestellt.

Des weiteren kann ein weiterer Mode, Alternate/Single Timestamp, gewählt
werden. Im Single-Mode  siehet es z.B. dann so aus :

<00001:t><00002:e>[00002:s]
oder
<00001:54><00002:45>[00002:53]

Im Alternate-Mode so

<00001> t e s t 0D
[00006] e c h o 0D 0A

hier wird so lange ohne Timestamp ausgegeben bis der andere Kanal 
Signale
zeigt. Dann erscheint eine neue Zeile mit Timestamp.

Die beiden Modi lassen sich kombinieren.
Die letzten gewählten Einstellungen werden im EEPROM gespeichert
und beim nächsten Einschalten wieder geladen.

Hier noch Kurz der Hilfetext der SW sowie die Komandos:
über '?' oder falsches Komando zu erreichen

   T - Altenate Timestamp Mode <00001> t e s t 0D ...

   S - Single Timestamp Mode   <00001:t><00002:e>....


   A - ASCII Mode

   H - HEX Mode


   M - Mode ausgeben        <> = Kanal 1

   C - Clear Timer          [] = Kanal 2


   B - Baudrate Frontend       75 .. 115200 Baud

   W - Zeichenlaenge Frontend   5 .. 8 Bit

   X - Reset Frontend ( Tiny2313 )


Alle Unterlagen im ZIP-Archiv HW und SW.
Viel Spaß an die Bastler

Tom

von Christian (Gast)


Lesenswert?

Das kam gerade passend, ich hab dafür ein Leiterplatte in SMD und 
USB-Abschluss passend für eine kleine Strapu-Box geroutet. Wenn das 
fertig ist ergänze ich das Projekt hier entsprechend.

Christian

von Hmm... (Gast)


Lesenswert?

Coole Sache, etwas in der Art könnte ich auch immer mal gebrauchen. 
Trotzdem ein paar Fragen dazu ;)

- Wenn die UART vom "großen" AVR nur mit 19.200 Bauf läuft, wie
  loggst du dann an RS232s mit Baudraten >4800 Baud? Die geloggten
  Daten von 2 Kanälen plus Timestamp müssen ja auch erstmal seriell
  raus gestrudelt werden...

- Wie werden die beiden kleinen AVRs geflasht? Hab ich da einen ISP
  übersehen?

- Kann man die Baudrate und Parity-Bit der mitzuloggenden Daten zur
  Laufzeit irgendwo einstellen?

- Wieso machst du die RS232 Pegelanpassung per Transistor, wäre ein
  MAX232/MAX3232 nicht einfacher (und spec-konformer)? Oder gleich ein
  FT232 mit einer virtuellen Baudrate >>115.200 Baud ;)

Ich hatte so etwas ähnliches auch schonmal im Sinn aber mangels Zeit 
nicht weiter verfolgt. Da war dann aber ein dicker STM32 mit 2 UARTs und 
Hardware USB eingeplant. Mit dem CDC-Beispiel von ST sollte ein 
virtueller COM-Port nicht so kompliziert zu machen sein. Außerdem 
schwebte mir noch ein Timer-Input vor, um so etwas wie ein Autobauding 
zu realisieren...

von tom (Gast)


Lesenswert?

@Hmm...

 >- Wenn die UART vom "großen" AVR nur mit 19.200 Bauf läuft, wie
 > loggst du dann an RS232s mit Baudraten >4800 Baud? Die geloggten
 > Daten von 2 Kanälen plus Timestamp müssen ja auch erstmal seriell
 > raus gestrudelt werden...

 aus bisherigen praktischen Erfahrungen läuft die RS232 Komunikation
 nicht mit Dauersendung, sondern es kommen 2..20 Zeichen im Burst
 und eine große Pause. Im Mega 32 gibt es einen 450 Einträge großen
 Buffer der das ganze entzerrt. So ist selbst bei 200 Zeichen und
 115K2 noch Luft, es hat für meine Messung immer gereicht.

> - Wie werden die beiden kleinen AVRs geflasht? Hab ich da einen ISP
>  übersehen?

 Die habe ich extern Programmiert....

> - Kann man die Baudrate und Parity-Bit der mitzuloggenden Daten zur
>  Laufzeit irgendwo einstellen?

 Ja es gibt zwei Befehle über die Schnittstelle zum Terminal.

    B - Baudrate Frontend       75 .. 115200 Baud
    W - Zeichenlaenge Frontend   5 .. 8 Bit

> - Wieso machst du die RS232 Pegelanpassung per Transistor, wäre ein
>   MAX232/MAX3232 nicht einfacher (und spec-konformer)? Oder gleich ein
>   FT232 mit einer virtuellen Baudrate >>115.200 Baud ;)

Hat sich als praktisch erwiesen, funtioniert gut, ist billig. MAX232 ist
soweit ich weiß auch nicht (spec-konform) er akzeptiert auch 0V als
Eingangspegel und nicht -3V wie laut Norm. Außerdem würde man zeiw 
MAX232
brauchen, oder einen seltenen mit mit drei Eingängen und einem Ausgang.

Falls ich das ganze nochmal angehen sollte ist mein Favorit ein 
X_MEGA_32
mit fünf USART's und USB, aber da diese Kiste gut läuft, ist das nur 
eine
Idee

Gruß

tom

von tom (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Bastler,

Hier mal der RS232 Logger auf einen X Mega 32A4 portiert,
gibt es bei R für 4,30 €. Die Eingänge sind hier per
Optokoppler isoliert, arbeiten bis 115200 Baud sicher.
Eingangsstrom etwa 1 mA, mit JFET Stromsenke bis 30V.
Der Ausgang geht über einen FT232 mit 57600 Baud als
virtueller COM-Port. Der Zeitstempel ist jetzt intern
mit 23-Bit und ermöglicht 1 ms Raster bis 2,3 Std im
Format a:bb:cc:ddd

  a : Stunden   0..2
 bb : Minuten  00..59
 cc : Sekunden 00..59
ddd : hundertstel Sekunden 000..999

Viel Spaß

tom

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.