Forum: Mikrocontroller und Digitale Elektronik RS232 auf zwei 7-Segment-Anzeigen (mech) mit Vorzeichen


von Markus M. (markus76)


Lesenswert?

Hallo zusammen
Ich komme aus der Leichtathletik und habe eine ziemlich alte Windanzeige 
(2 7-Segment-Anzeigen mechanisch mit Vorzeichen) in die Finger bekommen.
Angeschlossen wird ein 25poliger Stecker. Dort sind 10 Pins als "-" 
miteinander verbunden, mit den restlichen Pins kann ich die einzelnen 
Segmente ansteuern, solange ich eine Spannung von min 2 Volt 
anschliesse.
Wie bekomme ich es hin, diese Anzeige am Laptop (RS232) bzw. direkt am 
Windmesser anzuschliessen?

von CC (Gast)


Lesenswert?

Ohne größere Vorkenntnisse würde ich vermutlich einen Arduino und z.B. 
einen I²C-Portexpander nehmen, falls der Arduino an sich nicht genug 
GPIO-Pins hat. Hat die Anzeige Treiberschaltungen? Wie groß ist der 
Strom pro Segment?

von markus76 (Gast)


Lesenswert?

Jetzt bin ich ein wenig überfragt. Die Anzeige hat eine eigene 
Stromversorgung und ich denke, ich brauche nur einen Bausatz oder so 
etwas, um die Signale von der RS232 Schnittstelle auf den 25 poligen 
Stecker zu bekommen, um so die einzelnen Segmente anzusteuern.

von pecon (Gast)


Lesenswert?

Ich vermute, dass du mit RS232 kein Glück haben wirst, da es sich um 
einen Centronics handelt.
https://de.wikipedia.org/wiki/IEEE_1284#Pinbelegungen

Wenn der Laptop einen Parallel-Port hat, ist es nur eine Frage des 
Betriebssystems/Treibers.
Häufiger finden sich USB-Centronics-Adapter, die bei den geringen 
Timing-Anforderungen einer Anzeige auch funktionieren dürften.
z.B. 
https://www.amazon.de/parallel-Drucker-Adapter-Centronics-Printer/dp/B000KH6P48
Vorher klären, wie die Dinger aus deiner Anwendung angesprochen werden 
können.

von holger (Gast)


Lesenswert?

>Häufiger finden sich USB-Centronics-Adapter, die bei den geringen
>Timing-Anforderungen einer Anzeige auch funktionieren dürften.

Tun sie nicht. Die kann man nur mit Druckertreibern nutzen.

von Markus M. (markus76)


Lesenswert?

Pinbelegung ist: 1-5 und 14-18 sind Ground bzw. "-"
Die restlichen Pins dienen zur Ansteuerung der Segmente. Und für diese 
Ansteuerung benötige ich eine Schaltung, die über RS232 ansteuerbar ist.
In der Anzeige sind 2 Platinen verbaut, welche das Eingangssignal der 
Pins verarbeiten und entsprechend an die Segmente leiten.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Markus Mollek schrieb:
> Und für diese
> Ansteuerung benötige ich eine Schaltung, die über RS232 ansteuerbar ist.

Ja, wurde Dir schon genannt: Ein Microcontroller, der das serielle 
Signal über RS232 entgegennimmt und entsprechend aufbereitet über 
entsprechende Port-Pins an Dein Display ausgibt.

Als fertige bastelfreundliche und leicht zu programmierende Lösung 
eignet sich da ein Arduino.

Zu klären ist noch der Strom, der fließt, wenn Du einen Segmenteingang 
Deines Displays mit den genannten "min 2 V" betreibst, denn das 
entscheidet, ob Du Dein Display direkt mit den Port-Pins des µC 
verbinden kannst, oder ob noch ein Leistungstreiber erforderlich wird.

E

von Jobst M. (jobstens-de)


Lesenswert?

holger schrieb:
> Tun sie nicht. Die kann man nur mit Druckertreibern nutzen.

Das ist Blödsinn, habe sie selbst schon anders eingesetzt.

Markus Mollek schrieb:
> Pinbelegung ist: 1-5 und 14-18 sind Ground bzw. "-"

Allerdings scheint die Pinbelegung nicht zur Centronics-Schnittstelle zu 
passen ....


Markus Mollek schrieb:
> In der Anzeige sind 2 Platinen verbaut, welche das Eingangssignal der
> Pins verarbeiten und entsprechend an die Segmente leiten.

Deren Aufbau gilt es nun herauszufinden. Vielleicht erst mal ein paar 
Fotos?


Gruß

Jobst

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Jobst M. schrieb:
> Allerdings scheint die Pinbelegung nicht zur Centronics-Schnittstelle zu
> passen ....

Kein Wunder, hat eine Centronics-Schnittstelle auch keine 15 Ausgänge.

Das ist was anderes; nur weil ein 25poliger Stecker verwendet wird, muss 
das schließlich nicht zwangsweise eine Druckerschnittstelle sein.

von Markus M. (markus76)


Lesenswert?

Also die Funktionsweise der Platine ist folgende.
Die Eingangssignale werden durch verschiedene IC´s verarbeitet. Wird 
eine Eingangsspannung an den Stecker gelegt, wird der gemeinsame "Plus" 
für die Segmente freigeschaltet und die Segmente werden mit 0 Volt 
angesteuert.
Ich brauche nun eine Schaltung, um das RS 232 Signal (z.B. den Wert 
-1,8) so umzuwandeln, das die entsprechenden Pins an meinem 
Eingangsstecker eine positive Spannung erhalten.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Markus Mollek schrieb:
> Ich brauche nun eine Schaltung, um das RS 232 Signal (z.B. den Wert
> -1,8) so umzuwandeln

Ich habe Dir bereits beschrieben, was Du dafür brauchst:

Beitrag "Re: RS232 auf zwei 7-Segment-Anzeigen (mech) mit Vorzeichen"

Liest Du hier überhaupt mit?

von Karl H. (kbuchegg)


Lesenswert?

Markus Mollek schrieb:

> Ich brauche nun eine Schaltung, um das RS 232 Signal (z.B. den Wert
> -1,8) so umzuwandeln, das die entsprechenden Pins an meinem
> Eingangsstecker eine positive Spannung erhalten.

Ja, das haben wir schon gehört.

Du scheinst so zu agieren: ich frag jetzt so lange, bis diese Schweine 
mir eine Artikelnummer bei Conrad sagen. Dann steck ich den einen 
Stecker dort rein und den anderen an meinen PC und alles funktioniert.

Dem ist nicht so. So etwas gibt es nicht von der Stange. Das muss man 
entwickeln. Die einzige Frage, die bleibt, lautet: Wer ist 'man'?
Bist du das, bzw. kannst du das oder muss dir das wer machen.
Und dann bleibt ja auch noch die Frage: Wie gehts dann weiter? Denn von 
alleine kommt ja das, was du angezeigt haben willst, nicht auf diese 
Anzeige.

: Bearbeitet durch User
von Markus M. (markus76)


Lesenswert?

Ja ich lese hier mit.
Ich dachte, mir würde einer sagen, dafür nimmst Du das IC und das IC und 
das IC und damit machst Du dir dann eine Schaltung. Das hätte ich dann 
schon selber gemacht. Jetzt werde ich mich mal über dieses Arduino 
informieren, wird schon das richtige sein, wenn ich das hier gesagt 
bekommen.
MfG

von Harald W. (wilhelms)


Lesenswert?

Markus Mollek schrieb:

> Ja ich lese hier mit.
> Ich dachte, mir würde einer sagen, dafür nimmst Du das IC und das IC und
> das IC und damit machst Du dir dann eine Schaltung.

Ohne die angefragten Zusatzinfos von Dir geht das aber nicht. Du hast
kein Standardgerät, sondern etwas proprietäres. Da muss man etwas völlig
neues für entwickeln. Hast Du denn schon mal ausprobiert, ob Du mit
vierzehn einzelnen Schaltern alle Zahlen darstellen kannst?
Gruss
Harald

: Bearbeitet durch User
von Jobst M. (jobstens-de)


Lesenswert?

Markus Mollek schrieb:
> Ja ich lese hier mit.
> Ich dachte, mir würde einer sagen, dafür nimmst Du das IC und das IC und
> das IC und damit machst Du dir dann eine Schaltung.

Okay, Du scheinst es auf die harte Tour zu wollen. Das ist für uns zwar 
umständlicher, aber auch lustiger, weil wir Dich in jede Sackgasse 
ausführen ...



Gruß

Jobst

von pecon (Gast)


Angehängte Dateien:

Lesenswert?

holger schrieb:
> Tun sie nicht. Die kann man nur mit Druckertreibern nutzen.
Das hängt vom jeweilig verwendeten Chip und Treiber ab. Darum schrub ich 
ja "Vorher klären, wie die Dinger...". Aber egal - ist sowieso keine 
Standardschnittstelle.

Weil es mich selber interessiert, mußte ich gleich die RS232 meines T42 
testen.

DB9-F  DB9-M  jeweils mit 10k nach GND
3  3  TxD * -> Clock ROT
4  4  DTR * -> Data  GELB
5  5  GND **
7  7  RTS * -> Latch (nicht gemessen)

Das sieht meiner Meinung nach gut genug aus, um damit zwei 
Schieberegister (HCF4094B, 74xx595) direkt ansteuern zu können. Also im 
Prinzip http://www.mikrocontroller.net/articles/Porterweiterung_mit_SPI 
plus nötige Pegelanpassung, aber eben ohne µC.

Einfacher BitBang in PureBasic (byte="10101010").
1
Procedure.i sndByte(byte.b)
2
  Shared spNum
3
  Define rc.i=0, i.i, dbit.i
4
5
  For i=0 To 7
6
    dbit=(byte & %1) ! #bb_low ;mask other bits and invert according to selected logic
7
    
8
    SetSerialPortStatus(spNum, #bb_data, dbit)
9
    SetSerialPortStatus(spNum, #bb_clock, #bb_high)
10
    SetSerialPortStatus(spNum, #bb_clock, #bb_low)
11
12
    byte>>1
13
  Next i
14
  SetSerialPortStatus(spNum, #bb_data, #bb_low)
15
  
16
  ProcedureReturn(rc)
17
EndProcedure

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.