Forum: Mikrocontroller und Digitale Elektronik 2x 4-7-Segmentanzeigen (common Anode) an einen Arduino (2,1V + 8V)


von Florian M. (flo_m92)


Lesenswert?

Hallo liebes Mikrocontroller-Forum,
Ich habe ein Problem!

Der Rahmen des Ganzen:

Für ein Projekt an meiner Hochschule brauche zwei vierstellige Anzeigen.
Eine soll klein sein -> für den Bediener, eine soll groß sein -> für die 
Zuschauer. Beide sollen Zeitgleich das gleiche anzeigen.

Beide sollen aus folgenden 7-Segmentelementen bestehen

http://www.reichelt.de/SA-08-11-RT/3/index.html?ACTION=3&LA=446&ARTICLE=31575&artnr=SA+08-11+RT&SEARCH=7-segment 
die kleinen

http://www.reichelt.de/SA-40-19-RT/3/index.html?ACTION=3&LA=446&ARTICLE=31579&artnr=SA+40-19+RT&SEARCH=7-segment 
die großen

Die Kleine Anzeigen Funktioniert auch Sehr gut.
Ich habe sie Ohne! 8-bit-shift-register aufgebaut, um Platz auf der 
Platine zu sparen, da der Bauraum sehr begrenzt ist.

Die Vorlage habe ich leider nicht gefunden auf die schnelle, Sie 
verwendete aber nur 3-Digits und wir haben sie dann kurzer Hand auf 4 
erweitert. Die 4-Digits werden komplett von einem Arduino MEGA gespeisst 
und geregelt. Die 4 Digits werden über Transistoren ( ich meine BC327 
oderso) multiplexed. Die Anzeigen sind parallel geschaltet, wie halt das 
klassiche Multiplexing funktioniert.

Das Problem was sich mir nun stellt ist, dass ich die 4 großen Anzeigen 
ja nicht über den Arduino speisen kann. Die Brauchen ja jeder ~8V und 
selbst wenn ich die aus dem Arduino rausholen kann, erreiche ich den 
nötigen Strom für die 4-Anzeigen nicht.
Wenn ich sie nun mit einer externen Spannungsquelle verbinde, muss ich 
sie ja irgendwie an meinen GND anschließen, da sonst die Anzeigen nicht 
mit Spannung versorgt werden.
Wenn ich den GND allerdings an den Arduino anschließe funktioniert weder 
das Multiplexing, noch werden alle Segmente passen angesteuert.
(Leuchtet mir auch ein das ich einen anderen GND nicht an den Arduino so 
einfach anschließen kann, das war aber die einzige Möglichkeit wie die 
Dinger überhaupt geleuchtet haben! =D )

Kann ich das Problem lösen, ohne ein Shiftregister einzubauen? Weil 
dafür müsste ich wieder die Programmierung ändern -> Die kleine Anzeige 
müsste auch ein Shiftregister bekommen -> deutlicher Mehraufwand.

Ist alles sehr abstrakt, ich versuche noch die "Grundschaltung" 
zufinden, nach der ich die kleine Anzeige aufgebaut habe.

Ich hoffe mein Problem ist verständlich und ihr könnt mir dabei helfen!

: Verschoben durch Moderator
von MaWin (Gast)


Lesenswert?

Florian M. schrieb:
> Kann ich das Problem lösen, ohne ein Shiftregister einzubauen?

Platz kann ja wohl kein Argument sein, wenn man im gleichen Atemzug 
solche Riesendisplays verbaut, Platz ist also bloss eine Lüge.

Es bieten sich Konstantstromtreiber an, weil dann die 
Segment-Widerstände entfallen können. Und diese Konstantstromtreiber mit 
8 Ausgängen haben normalerweise einen Eingang als Schieberegister, WEIL 
DAS PLATZ SPART.

Deine Aversion gegen Schieberegister ist also Humbug.

Allerdings willst du 2 Anzeigen mit demselben Inhalt versorgen, eine mit 
ca. 8.4V die andere mit ca. 2.1V. Man kann sie nicht ein Reihe schalten, 
weil sie jeweils gemeinsame Anode haben. Also wird man sie parallel 
schalten müssen. Damit sind Konstantstromtreiber nicht so klug, der 
Strom würde komplett durch die mit 2.1V fliessen. Also doch besser 
Treiber und jeweils passende Vorwiderstände für die kleine und andere 
passende Vorwiderstände für die grosse Anzeige. Ein TPIC6B595 wäre ok. 
Bleiben die Transistoren die die Digits schalten. Die müssen 12V 
schalten. Es kann also kein einfacher PNP Transitor gesteuert vom 
Arduino sein. Und er muss ca. 0.6A schalten können. Ein ULN2981 ist 
grenzwertig. Immerhin kein Schieberegister...

von Florian M. (flo_m92)


Lesenswert?

Das Platzproblem besteht auch in der Box, in der alle Platinen 
zusammenlaufen und nicht an den Anzeigen ... sry, hätte ich schreiben 
sollen.
Dachte mir schon das es ohne Register nicht wirklich gehen wird. Da muss 
ich mir dann Platzmäßig was einfallen lassen.
Ich werde es mal mit deinem Vorschlag versuchen.

Lg, Florian

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Florian M. schrieb:
> Das Platzproblem besteht auch in der Box, in der alle Platinen
> zusammenlaufen
Natürlich, wenn du die dritte Dimension für Steckverbinder und eine fast 
leere Platine (=Arduino) vergeudest, denn
Florian M. schrieb:
> Platz auf der Platine zu sparen, da der Bauraum sehr begrenzt ist.
> ...
> Die 4-Digits werden komplett von einem Arduino MEGA gespeisst
Du hast zwar keinen Platz, aber für den Arduino reichts noch? Hast du 
dir mal angesehen, wie leer der ist? Wenn du also diesen Platz 
ausnutzen würdest, dann wäre dein Platzproblem vermutlich gelöst. Ja, 
natürlich müsstest du dann selber eine Platine für diese dritte 
Dimension aufbauen.

Oder den Spieß umdrehen: den Platz, den du durch die fehlenden 
Steckerleisten einsparst wenn du den AVR direkt auf deine Platine setzt, 
kannst du für sinnvolle Schaltungsteile verwenden und brauchst nur 1 
Platine.

von Peter D. (peda)


Lesenswert?

Florian M. schrieb:
> Die kleine Anzeige
> müsste auch ein Shiftregister bekommen

Wer sagt das?
Für die großen Anzeigen würde ich den MM5450 empfehlen, braucht nur 2 
IO-Pins zusätzlich.

http://www.microchip.com/wwwproducts/en/MM5450

von m.n. (Gast)


Lesenswert?

Wie weit liegen denn die große Anzeige und die Ansteuerung voneinander 
entfernt? Sobald auch nur ein Meter Kabel dazwischen liegt, würde ich 
auf keinen Fall mehr im Multiplexbetrieb ansteuern, sondern immer 
statisch. Da kann die Anzeige auch 50 m vom Bedienteil entfernt stehen 
und es können beliebig viele Anzeigen parallel betrieben oder auch 
kaskadiert werden.

Florian M. schrieb:
> Ich habe sie Ohne! 8-bit-shift-register aufgebaut, um Platz auf der
> Platine zu sparen, da der Bauraum sehr begrenzt ist.

Auf der Rückseite der Platine ist genug Platz für Schieberegister und 
Treiber. Hier ein Beispiel für statische Ansteuerung einer 13 mm 
Anzeige: http://mino-elektronik.de/7-Segment-Variationen/LCD.htm#led1

von MaWin (Gast)


Lesenswert?

m.n. schrieb:
> Wie weit liegen denn die große Anzeige und die Ansteuerung voneinander
> entfernt? Sobald auch nur ein Meter Kabel dazwischen liegt, würde ich
> auf keinen Fall mehr im Multiplexbetrieb ansteuern, sondern immer
> statisch. Da kann die Anzeige auch 50 m vom Bedienteil entfernt stehen
> und es können beliebig viele Anzeigen parallel betrieben oder auch
> kaskadiert werden.

Spitzenidee von Grandioso m.n., gerade bei meterlanger Entfernung dann 
30 parallele Leitungen verwenden zu wolken, wo sich andere Gedanken 
machen, wie sie das kostensparend mit 2 hinbekommen können statt der 11 
des Multiplexbetriebs.

von Draco (Gast)


Lesenswert?

m.n. schrieb im Beitrag #4716452:
> MaWin schrieb:
>> 30 parallele Leitungen verwenden zu wolken
>
> Dumm, dümmer, MaWin

Er hat doch Recht, wie sonst will man dann eine statische Anzeige 
realisieren?

Mal ganz ab, warum nicht einfach einen zweiten MC für die externen 7seg, 
diese per RS232 ansteuern. Die Platine Huckepack auf die LEDs packen und 
gut ist. Da spielt dann auch der Platz in der "Haupteinheit" keine Rolle 
mehr.

Aber wenn wir nun schon angekommen sind, in Hochschulen, zu Lehrzwecken, 
einen Arduino einzusetzen statt ein eigenes Design zu gestalten... Na 
Mahlzeit, unsere Ingenieur von morgen... Traurig :-(

von Jörg R. (solar77)


Lesenswert?

m.n. schrieb im Beitrag #4716452:
> Dumm, dümmer, MaWin

Geht es auch ohne Beleidigung?

Abgesehen davon hat MaWin recht.

von Tany (Gast)


Lesenswert?

Draco schrieb:
> m.n. schrieb:
>> MaWin schrieb:
>>> 30 parallele Leitungen verwenden zu wolken
>>
>> Dumm, dümmer, MaWin
>
> Er hat doch Recht, wie sonst will man dann eine statische Anzeige
> realisieren?

man überträgt die Daten per SPI oder I2C zur Anzeigerplatine (ca. 5 
Leiungen)?

von Falk B. (falk)


Lesenswert?

@ Draco (Gast)

>Mal ganz ab, warum nicht einfach einen zweiten MC für die externen 7seg,
>diese per RS232 ansteuern. Die Platine Huckepack auf die LEDs packen und
>gut ist. Da spielt dann auch der Platz in der "Haupteinheit" keine Rolle
>mehr.

Sicher, aber das war dem OP ja zuviel Aufwand.

>Aber wenn wir nun schon angekommen sind, in Hochschulen, zu Lehrzwecken,
>einen Arduino einzusetzen statt ein eigenes Design zu gestalten... Na
>Mahlzeit, unsere Ingenieur von morgen... Traurig :-(

Quark, der Arduino ist schon OK, das Rumgejammer wegen einer Anpassung 
an die serielle Übertragung oder ggf. Schieberegister nicht!

von Draco (Gast)


Lesenswert?

Tany schrieb:
> Draco schrieb:
>> m.n. schrieb:
>>> MaWin schrieb:
>>>> 30 parallele Leitungen verwenden zu wolken
>>>
>>> Dumm, dümmer, MaWin
>> Er hat doch Recht, wie sonst will man dann eine statische Anzeige
>> realisieren?
>
> man überträgt die Daten per SPI oder I2C zur Anzeigerplatine (ca. 5
> Leiungen)?

Wie soll das gehen, was sollen denn die 7seg Anzeigen mit SPI oder I2C 
anfangen können?! ;-)

Davon mal abgesehen, ich weiß es wird ständig gemacht, i2c und SPI sind 
Platinenbusse. Eine Freiluftleitung ist nicht konform.

von Tany (Gast)


Lesenswert?

Draco schrieb:
> Wie soll das gehen,
Es gibt ne Menge Anzeigertreiber mit SPI (z.B TLC5922) oder I2C 
Interface.
Oder wenn jeder 7-Segment Anzeiger mit einem Schieberregister 
angesteuert wird (statisch), kann man Daten per SPI futtern.
Die Treiber müssen natürlich auf Anzeigerplatine sein.

von m.n. (Gast)


Lesenswert?

Draco schrieb:
> Er hat doch Recht, wie sonst will man dann eine statische Anzeige
> realisieren?

Ich habe doch weiter oben einen Link gezeigt. Dort werden 4094 
Schieberegister verwendet. Für größere Anzeigen braucht man noch 
Ausgangstreiber: zum Beispiel ULN2803. Für größere Entfernungen braucht 
man Leitungstreiber (Arduino-Ausgänge reichen für kleinere Entfernungen 
aus) und, wenn man es elegant löst, eingangsseitig auch Optokoppler, die 
ggf. Masse. bzw. Potentialprobleme beseitigen.

Jörg R. schrieb:
> Geht es auch ohne Beleidigung?

MaWin ist DER Pöbelbursche hier im Forum. Ihm mußt Du Deine Frage 
stellen.

von MaWin (Gast)


Lesenswert?

Tany schrieb:
> Es gibt ne Menge Anzeigertreiber mit SPI (z.B TLC5922) oder I2C
> Interface.

m.n. wollte eine statische Ansteuerung einer Anzeige wenn lange 
Leitungen zwischen Elektronik und Anzeige nötig sind.

Das könnte man begründen mit weniger Störungen durch seltener 
geschaltete Leitungen auf den 30 Verbindungsandern (was man als 
erfahrener Elektroniker natürlich mit kontrollierter Flankensteilheit 
problemlos in den Griff bekommt, niederohmig genug sind die Signale 
sowieso).

m.n. redet nun aber von seriell angesprochenen Schieberegistern auf der 
LED Anzeigeplatine und damit Elektronik auf der Anzeigeplatine, gar 
nicht passend zur Ursprungsfrage "was kümmert mich die Ursprungsgfrage 
und Antwort, wenn ich versuchen kann es umzudeuten damit niemand meine 
Fehler bemerkt". Dann gibt es aber kurze Leitungen zwischen Elektronik 
und LEDs bei denen es sowieso völlig egal ist ob die schnell per 
Multplex oder nur gelegentlich per statischer Ansteuerung geschaltet 
werden. Da kann man natürlich genau so gut einen MAX6958 oder ICL7219 
nehmen die das dort per Multiplex machen. Die Zuleitungen sind in beiden 
Fällen wenige und SPI und damit völlig identsich was Störfestigkeit oder 
EMV Abstahlungen anlangt.

von Draco (Gast)


Lesenswert?

Tany schrieb:
> Draco schrieb:
>> Wie soll das gehen,
> Es gibt ne Menge Anzeigertreiber mit SPI (z.B TLC5922) oder I2C
> Interface.
> Oder wenn jeder 7-Segment Anzeiger mit einem Schieberregister
> angesteuert wird (statisch), kann man Daten per SPI futtern.
> Die Treiber müssen natürlich auf Anzeigerplatine sein.

Mir ist völlig bewusst was du meinst. Aber das war nicht die 
Anforderung! Es ging darum, die Anzeigen statisch zu treiben, OHNE 
Treiber an den 7seg Anzeigen. Sondern mit Treibern auf der 
Steuerplatine.

Das das völliger Quark und Quatsch ist, ist richtig, aber so war die 
Diskussion. Deswegen kamen die statischen 30 Leitungen ins Spiel.

Und gerne nochmal, auch wenn ich mich wiederhole und es auch geht, aber 
i2c und SPI sind Platinenbusse und nicht für Freilaufende Leitungen 
gedacht. Wäre ich Dozent und ein Schüler würde mir sein Projekt mit 
Leitungen länger 10cm und I2C anbringen, würde ich ihn abtreten lassen 
und dies in einem dafür passenden Protokoll neu aufsetzen lassen. Und 
wenn jetzt jemand kommt und sagt: "Ja aber SPI geht auch über 50 Meter!" 
Ja geht, aber dafür ist es nicht gedacht! Dafür gibt es RS232, RS484 
oder CAN oder whatever...

von batman (Gast)


Lesenswert?

Wieso fragst du dann.

von Florian M. (flo_m92)


Lesenswert?

>>Mal ganz ab, warum nicht einfach einen zweiten MC für die externen 7seg,
>>diese per RS232 ansteuern. Die Platine Huckepack auf die LEDs packen und
>>gut ist. Da spielt dann auch der Platz in der "Haupteinheit" keine Rolle
>>mehr.
>
> Sicher, aber das war dem OP ja zuviel Aufwand.
>
>>Aber wenn wir nun schon angekommen sind, in Hochschulen, zu Lehrzwecken,
>>einen Arduino einzusetzen statt ein eigenes Design zu gestalten... Na
>>Mahlzeit, unsere Ingenieur von morgen... Traurig :-(
>
> Quark, der Arduino ist schon OK, das Rumgejammer wegen einer Anpassung
> an die serielle Übertragung oder ggf. Schieberegister nicht!

Ich Frage, weil ich mich im bereich Konstruktion spezialisiert hab und 
daher meine Kenntnisse mit MC's und Schaltungen nicht weit über die 
Grundkenntisse hinausgehen. Aber nett, dass ich deswegen direkt ein 
schlechter Ingenieur bin! ;)

Also, ich hab mir hier mal alles durchgelesen. Das ich wahrscheinlich um 
Schieberegister nicht herumkomme war mir klar, ich dachte ich Frage 
einfach ob es auch anders geht. (Hätte mich halt interessiert)

m.n. schrieb:
> Wie weit liegen denn die große Anzeige und die Ansteuerung voneinander
> entfernt? Sobald auch nur ein Meter Kabel dazwischen liegt, würde ich
> auf keinen Fall mehr im Multiplexbetrieb ansteuern, sondern immer
> statisch. Da kann die Anzeige auch 50 m vom Bedienteil entfernt stehen
> und es können beliebig viele Anzeigen parallel betrieben oder auch
> kaskadiert werden.

Die Anzeigen sind nur ca. 30cm entfernt vom Arduino. Sollte also 
trotzdem mit Multiplexing funktionieren.

> Natürlich, wenn du die dritte Dimension für Steckverbinder und eine fast
> leere Platine (=Arduino) vergeudest, denn
> Florian M. schrieb:
>> Platz auf der Platine zu sparen, da der Bauraum sehr begrenzt ist.
...
> Du hast zwar keinen Platz, aber für den Arduino reichts noch? Hast du
> dir mal angesehen, wie leer der ist? Wenn du also diesen Platz
> ausnutzen würdest, dann wäre dein Platzproblem vermutlich gelöst. Ja,
> natürlich müsstest du dann selber eine Platine für diese dritte
> Dimension aufbauen.
...

Also der Arduino steuert ja natürlich NICHT nur die Anzeigen, dazu 
kommen diverse andere Komponenten. Deswegen auch einen Mega. Und der 
"Leere Platz" wird bereits von 2 "Huckepackplatinen" in 
Beschlaggenommen.
Ganz so Blöd bin ich nun auch nicht.

Ich denke ich werd das Ganze einfach mit Schieberegistern aufbauen, ist 
zwar mehraufwand aber ich komme ja scheinbar nicht drum herum.

Aber schön zu wissen das hier alle immer so nett sind! =)

: Bearbeitet durch User
von m.n. (Gast)


Lesenswert?

Florian M. schrieb:
> Die Anzeigen sind nur ca. 30cm entfernt vom Arduino. Sollte also
> trotzdem mit Multiplexing funktionieren.

Gut, bei der kurzen Distanz geht Beides.
Es gibt auch LED-Anzeigen, die sehr klein oder intern so verschaltet 
sind, daß nur Multiplexing möglich ist. Da muß man es dann so machen.
Bei Dir sind aber selbst die kleinen Anzeigen schon 20 mm hoch, sodaß 
auch dort (bei den großen sowieso) genug Platz für statische Ansteuerung 
vorhanden ist. Deshalb würde ich diese Ansteuerung immer bevorzugen.

Einige Vorteile: der µC muß nur bei Änderungen neue Werte schreiben; 
minimale Störfrequenzen; der µC kann 'abstürzen', ohne daß nur noch eine 
Anzeige leuchtet und u.U. überlastet wird.
Die Anzeigen sind kaskadierbar: wird eine weitere Stelle benötigt, wird 
einfach ein Schieberegister angehängt, oder eine komplette Anzeige an 
anderer Stelle im Raum. Die statische Ansteuerung ist damit universeller 
verwendbar.

Wie Du siehst, haben einige Leute ein Problem damit, dies zu verstehen. 
Denk darüber nach und viel Erfolg!

Ein Programm zur Ansteuerung ist kein Hexenwerk: 
http://mino-elektronik.de/progs/avr/Digit_6/Digit_6LED.c Es müßte auf 
einem Arduino direkt laufen.

von Peter D. (peda)


Lesenswert?

Florian M. schrieb:
> Ich denke ich werd das Ganze einfach mit Schieberegistern aufbauen, ist
> zwar mehraufwand aber ich komme ja scheinbar nicht drum herum.

Wenn Du wenig Aufwand willst, warum dann nicht den MM5450 nehmen. Der 
hat 34 Stromausgänge 16mA, also ideal für 4 Digits.

von MaWin (Gast)


Lesenswert?

Peter D. schrieb:
> warum dann nicht den MM5450 nehmen.

Hmm, weil der seit 30 Jahren nicht mehr hergestellt wird, seine 
Herstellerfirma pleite ist und schon Einzelstücke bei eBay um 10 EUR 
kosten ?

Dein Wissen aus Kindertsgen ist heute überholt.

von Peter D. (peda)


Lesenswert?

MaWin schrieb:
> Hmm, weil der seit 30 Jahren nicht mehr hergestellt wird

Komisch, daß dann bei Microchip "In Production" steht.
Und z.B. Mouser will die sogar verkaufen (1.473 auf Lager, 4,81€).

Den PDIP gibst auch als Sample:
"We generally accept sample requests from corporate (e.g., .com / 
.co.uk) accounts and educational email domains such as .edu or .ac"

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

@ Florian Mönkediek (flo_m92)


>Die Anzeigen sind nur ca. 30cm entfernt vom Arduino.

Diese "winzige" Information hätte man auch früher rausrücken können, 
siehe Netiquette!!

>Sollte also trotzdem mit Multiplexing funktionieren.

Sicher.

>Ich denke ich werd das Ganze einfach mit Schieberegistern aufbauen, ist
>zwar mehraufwand aber ich komme ja scheinbar nicht drum herum.

Nö, gerade WEIL es nur 30cm sind, kann man das LOCKER mit Einzeldrähten 
machen. Dazu muss man nur den passenden Treiber für die großen Anzeigen 
dazwischenschalten.

Zeig uns deinen aktuellen Schaltplan und wir zeigen dir, wie man das mit 
den passenden Treibern ohne zusätzliche Softwareanpassung hinkriegt.

von Florian M. (flo_m92)


Angehängte Dateien:

Lesenswert?

Falk B. schrieb:
> @ Florian Mönkediek (flo_m92)
>
>
>>Die Anzeigen sind nur ca. 30cm entfernt vom Arduino.
>
> Diese "winzige" Information hätte man auch früher rausrücken können,
> siehe Netiquette!!

sry, hab ich vergessen.
>>Ich denke ich werd das Ganze einfach mit Schieberegistern aufbauen, ist
>>zwar mehraufwand aber ich komme ja scheinbar nicht drum herum.
>
> Nö, gerade WEIL es nur 30cm sind, kann man das LOCKER mit Einzeldrähten
> machen. Dazu muss man nur den passenden Treiber für die großen Anzeigen
> dazwischenschalten.

ja, kann man, habe ich mir auch gedacht, aber die ganzen Einzeldrähte 
krieg ich glaube ich nicht untergebracht. Aktuell ist es schon mit einem 
10-Adrigen Flachbandkabel sehr knapp vom Platz. Dafür ernte ich gleich 
bestimmt wieder einige kritik, ist aber nunmal so. Der Aufbau ist FIX da 
lässt sich nix dran rütteln.

> Zeig uns deinen aktuellen Schaltplan und wir zeigen dir, wie man das mit
> den passenden Treibern ohne zusätzliche Softwareanpassung hinkriegt.

aktuellen schaltplan hab gerade leider nicht zur verfügung, komme ich 
erst ab morgen dran denke ich ...
Aber ich denke mit Treibern für die großen Anzeigen und Schieberegistern 
für die Anzeigen generell sollte es Funktionieren, dafür gibt es ja auch 
genug Bespiele.

Schaltplan werd ich heute abend oder morgen hochladen aber im prinzip 
ist es nach diesem beispiel - sind nicht genau unsere komponenten aber 
daran haben wir uns ca. gehalten:

: Bearbeitet durch User
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.