Forum: Projekte & Code AVR-ATmega: Multiplex von 8 Digits 7-Segment und 8 Tasten


von Ralph S. (jjflash)


Angehängte Dateien:

Lesenswert?

natürlich gabs das Thema gefühlt schon 1000-fach. Vielleicht hilft diese 
Version einem Anfänger oder Einsteiger besser ins Thema.

Enstanden aus einem Auszubildendenprojekt zum Thema "multiplexen", hier 
jetzt eine Version, die an einem 28 pol. ATmega48 bis ATmega328 eine 
8-stellige 7-Segmentanzeige sowie 8 Tasten anbindet. Grundsätzlich müßte 
das auch mit einem ATmega8 funktionieren, wenn man die Register für die 
Timer1 ändert (konnte ich nicht machen, weil ich momentan doch 
tatsächlich keinen ATmega8 zur Verfügung mehr habe).

Das ganze funktioniert ausschließlich ohne externen Quarz, weil bis auf 
die RxD und TxD Anschlüsse des UART wirklich alle GPIO Leitungen 
benötigt werden.

Prinzipiell wäre es deshalb auch möglich, eine Art "Monitor" zu machen, 
der über eine Kommunikationsschnittstelle (potentiell die des UART) die 
Anzeige beschreibt oder die Tasten ausliest.

Natürlich könnte man mittels diesen beiden Portpins über Software I2C 
andere Bausteine anbinden (oder man ändert die Anschlußbelegung, 
verwendet RxD und TxD für das Multiplexen und macht dann Hardware I2C).

Grundsätzlich existieren bestimmt einige Möglichkeiten für die 
Schaltung, hier ging es um das Verständlichmachen.

Das Ausgangsprojekt war eine Schaltung, bei der vier 2-stellige, 
voneinander getrennte 7-Segmentanzeigen vorhanden sein sollten und für 
jedes dieser Anzeige 2 Tasten vorhanden sein sollten (Plus- und 
Minustaste), die einen Zählerstand einstellen konnten.

Für denjenigen, der es brauchen kann: Viel Spaß beim Experimentieren

von m.n. (Gast)


Lesenswert?

Wie hoch ist die Stromaufnahme, wenn alle Segmente eingeschaltet sind 
und wie warm wird der Controller?
Sofern man sich an die max. Stromwerte des Datenblattes halten will, 
müßte man die Segmentströme auf < 1 mA begrenzen.

von Ralph S. (jjflash)


Lesenswert?

... irgendwie wußte ich, dass diese Frage kommt (schlicht weil es keine 
Vorwiderstände für die LED-Segmente gibt).

Der Controller erwärmt sich gar nicht.

Eine Schaltung dieser "Art" des  Multiplexens habe ich zu Hause seit 
über 10 Jahren 24/7 laufen. Wie hoch die Stromaufnahme in diesem Fall 
mit 8 Digits ist weiß ich nicht, weil ich es nicht gemessen habe.

Die Schaltung zu Hause (mit 4 Digits) begnügt sich mit 35 mA (wobei hier 
aber noch weitere Bausteine in der Schaltung sind).

Wem das zu "suspekt" ist, kann ja gerne Widerstände 2,7k / 3,3k in die 
Segmentleitungen schalten (das begrenzt dann den max. Strom auf 1 mA). 
Allerdings mag ich hier jetzt nicht ausführen, warum ich das jetzt NICHT 
mache.

Natürlich weiß ich, dass man "normalerweise" eine LED nicht ohne 
Vorwiderstand (oder besser eine Konstantstromquelle) betreibt.

Allerdings war da auch etwas in der Art, wie heftig man eine LED (oder 
auch einen Drain-Ausgangstreiber) überlasten darf, wenn man ihr eine 
noch viel größere Zeit zum inneren Abkühlen gibt !

Abgesehen davon hat jede Leitung auch einen induktiven Anteil, der beim 
Einschalten den maximalen Strom begrenzt. Auch das "hilft" beim 
Multiplexen, den Strom nicht zu groß werden zu lassen...

Und ja: ich kenne das Datenblatt (und habe das bestimmt auch schon 
mehrfach gelesen).

Als nächsten Punkt müßtest du meinen Breadboardaufbau kritisieren, denn 
hier gibt es auch einen "groben" Kritikpunkt:

Ich betreibe mit dem ATMmega168 einen inneren RC-Takt von 8 MHz, und das 
gleichzeitig in Verbindung mit einem modifizierten OPTIBOOT Bootloader 
und einer Baudrate von 38400... (links zu sehen an meinem Eigenbau 
Steckbrettadapter, auf der Unterseite ist ein CH340 verbaut). Auch hier 
weiß ich sehr genau, dass, wenn es ungünstig läuft, oder es in meiner 
Wohnung mehr als 40 Grad hat, die Verbindung zum ATmega gestört sein 
kann.

Sei es drum...

von m.n. (Gast)


Lesenswert?

Ralph S. schrieb:
> Der Controller erwärmt sich gar nicht.

Gut, dann haben die Anzeigen wohl eine "weiche" Kennlinie. Was mich 
stören würde, wäre die übermäßige Helligkeit einer "1" gegenüber einer 
"8". Aber vielleicht ist das bei diesen Anzeigen auch nicht so 
ausgeprägt.

> Als nächsten Punkt müßtest du meinen Breadboardaufbau kritisieren,

Nee, für diesbezügliche Pöbeleien sind hier MaWin und F. Brunner 
zuständig.

Was ich anders gemacht hätte, wäre die Port-Segementzuodnung und das 
Einlesen der Taster. Da ja schon acht zyklisch geschaltete Ausgänge zu 
den Digits vorhanden sind, hätte ich damit auch die Taster dekodiert.
Aber egal, es gibt wie immer viele Möglichkeiten.

von Fauler Modulbenutzer (Gast)


Lesenswert?


von Ralph S. (jjflash)


Lesenswert?

Fauler Modulbenutzer schrieb:
> Wenn man was mit 7segment aufbauen will, kann ich module mit TM1637
> empfehlen. Das diskret aufzubauen ist immer etwas aufwändig und man
> braucht massig pins vom uC. Da ist es einfacher per I2C anzusteuern.

so:
- TM1637 kann nur 6 stellige Anzeige, und nicht 8
- TM1637 kann kein I2C (es hat zwar eine ähnliche Datenkommunikation, 
aber es gibt keine Bauteileadresse und kann somit nicht an einen I2C Bus 
gehängt werden, wenn andere I2C Bausteine vorhanden sind
- TM1637 habe ich gemacht in:
Beitrag "Siebensegment und Tasten ansteuern mit TM1651 \ TM1637"

(aber hier ging es darum, selbst das Funktionieren des multiplexens zu 
erfassen anstelle einfach ein Modul zu verwenden, abgesehen davon, dass 
zusätzliche Bausteine auch immer Geld kosten, egal wieviel)

@m.n

m.n. schrieb:
> Gut, dann haben die Anzeigen wohl eine "weiche" Kennlinie. Was mich
> stören würde, wäre die übermäßige Helligkeit einer "1" gegenüber einer
> "8". Aber vielleicht ist das bei diesen Anzeigen auch nicht so
> ausgeprägt.

das stimmt was du schreibst, eine "1" ist tatsächlich etwas heller als 
eine "8", aber nicht in diesem Ausmaß wie du das erwartest. Die Segmente 
der Anzeigen haben in der Tat eine "weiche", nicht so steil ansteigende 
Kennlinie.

m.n. schrieb:
> Was ich anders gemacht hätte, wäre die Port-Segementzuodnung und das
> Einlesen der Taster. Da ja schon acht zyklisch geschaltete Ausgänge zu
> den Digits vorhanden sind, hätte ich damit auch die Taster dekodiert.
> Aber egal, es gibt wie immer viele Möglichkeiten.

Der Timerinterrupt schaltet insgesamt 8 Multiplexzyklen ( 0 bis 7 ). Im 
MPX-Zyklus 0 wird zuerst (wie bei allen  Zyklen auch) die Anzeige dunkel 
geschaltet, danach die Tasten von Bank 4 gelesen, key_stat erneuert, und 
im selben Zyklus das Segmentmuster für Digit 0 ausgegeben.
Gleiches Verhalten für Zyklus 1 und Tastenbank 2.

Somit werden die Taster bei Zyklus 0 und 1, bei dem auch die Muster für 
Digit 0 und Digit 1 gesetzt werden, gelesen.

Das hat den Vorteil, für eine spätere Erweiterung auf bis zu 16 Tasten 
(4 Bänke zu je 4 Tasten).

von Apollo M. (Firma: @home) (majortom)


Lesenswert?

Ralph S. schrieb:
> das stimmt was du schreibst, eine "1" ist tatsächlich etwas heller als
> eine "8", aber nicht in diesem Ausmaß wie du das erwartest. Die Segmente
> der Anzeigen haben in der Tat eine "weiche", nicht so steil ansteigende
> Kennlinie.

Das kann leicht geändert werden, durch z.b. eine variable 
Multiplex-Frequenz in Abhängigkeit von der Anzahl der aktiven Segmente.
Dazu gibt es einige Beispiele im Netz ...

von Fauler Modulbenutzer (Gast)


Lesenswert?

Ralph S. schrieb:
> so:
> - TM1637 kann nur 6 stellige Anzeige, und nicht 8
> - TM1637 kann kein I2C (es hat zwar eine ähnliche Datenkommunikation,
> aber es gibt keine Bauteileadresse und kann somit nicht an einen I2C Bus
> gehängt werden, wenn andere I2C Bausteine vorhanden sind
> - TM1637 habe ich gemacht in:
> Beitrag "Siebensegment und Tasten ansteuern mit TM1651 \ TM1637"
>
> (aber hier ging es darum, selbst das Funktionieren des multiplexens zu
> erfassen anstelle einfach ein Modul zu verwenden, abgesehen davon, dass
> zusätzliche Bausteine auch immer Geld kosten, egal wieviel)
>
> @m.n

Asche auf mein Haupt. Das Lustige ist, dass ich genau durch dein 
Codebeispiel auf die Module aufmerksam geworden bin und deinen Code 
sogar verwendet habe. Das du das warst habe ich aber offenbar gar nicht 
gemerkt als ich meinen Beitrag geschrieben habe :-O

Ein dickes Danke an dich, für die Mühe und die Codebeispiele. Hat mir 
damals echt geholfen :))

Zu den Argumenten: Stimmen alle!

Cheers,
Fauler Modulbenutzer

von Klaus (Gast)


Lesenswert?

Zur Ansteuerung von LEDs oder Matrix oder ähnliches benutze ich sehr 
gern den HT16K33. Der hat den I2C Bus drin und kann universell genutzt 
werden. Für 8 Anzeigen braucht man halt ein paar mehr.

von D. J. (basteldag)


Lesenswert?

Bitte mal auf meine PN antworten. Danke

von m.n. (Gast)


Lesenswert?

D. J. schrieb:
> Bitte mal auf meine PN antworten.

Vielleicht gelingt es Dir noch, das etwas freundlicher zu formulieren.

von Ralph S. (jjflash)


Lesenswert?

D. J. schrieb:
> Bitte mal auf meine PN antworten. Danke

:-) ich kann nicht gemeint sein, denn ich habe keine PN !

von D. J. (basteldag)


Lesenswert?

sorry ich war in Eile, Ich hatte nach der Platine gefragt, die auf dem 
Board steckt. Wo hast du deinen mail-Provider ? habe gerade nochmal was 
geschickt. Bitte schick mir mal was , zum Testen was los ist. Danke.

: Bearbeitet durch User
von MaWin (Gast)


Lesenswert?

Ralph S. schrieb:
> Grundsätzlich existieren bestimmt einige Möglichkeiten für die
> Schaltung, hier ging es um das Verständlichmachen.

Vor allen Dingen sollte man

Ralph S. schrieb:
> aus einem Auszubildendenprojekt

zumindest mal die Ströme machrechnen:

Ein PortPin eines AVR ist maximal für 20mA gut, die an COM hängenfen 
m8ssen dabei 7 Segmente und den Dezimalpunkt mit Strom versorgen  macht 
1.25mA auf den man den Vorwiderstand der LEDs der Anzeige dimensionieren 
muss, also (5V - 2.1V) / 0.00125 = 2k2.

Vorwiderstände, wovon redet der, auf so einen Scheiss verzichten wir, 
wir sind ja schliesslich Lehrkraft. So leicht ist ein uC nicht kaputt zu 
kriegen, ab 40mA begrenzt er schliesslich von alleine. Dass eine 1 dann 
drastisch heller als eine 8 ist, egal, kein Lehrling hat sich beklagt.

Nun, erstens könnte auffallen, dass 1.25mA nicht viel sind und sie sich 
zudem noch auf 1/8 der Zeit beziehen  denn in 7/8 sind die Segmente der 
anderen Digits an, so eine Anzeige leuchtet also wie mit 0.156mA = 156uA 
mittlerem Strom.

Recht wenig, recht dunkel  zumindest für die COM würden sich also 
externe Transistoren zur Verstärkung lohnen, auf zumindest 160mA. Eenn 
man aber dieselbe Helligkeit wie bei 10mA Dauerstrom haben will für den 
die Displays spezifiziert sind, muss man 1/8 der Zeit 80mA durch die 
Segmente schicken mit nur noch 33 Ohm Vorwiderstand, 640mA Strom durch 
COM und auch die Segmentleitungen mit extern verstärkenden Transistoren 
versehen.

Also: lehre nächstes Jahr lieber die ganze Wahrheit.

Die ist nicht geheim, steht schon lange hier: 
https://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.8.1

von Ralph S. (jjflash)


Lesenswert?

Früher.... so gefühlt vor 1000 Jahren (also in den 90ern des letzten 
Jahrtausend) war ich auch in den Newsgroups unterwegs.... und da gabs 
dann auch einen MaWin der als absolute Koriphäe und Instanz galt.

Sollte das  hier tatsächlich dieser MaWin sein (wobei es schon sehr gut 
sein kann, dass hier genügend Fake-MaWins durch die Gegend streunen), 
muß ich sagen: Was ist aus ihm geworden?

Egal in welchem Thread ich lese: er ist zu 90% am stänkern.

So, zum Thema:

1. Es geht um die Software, und nicht um Hardware
2. Das Leuchtdioden nicht ohne Vorwiderstände statisch betrieben werden 
dürfen, dürfte jedem bekannt sein (und mir ist es das auch)
3. Wie ganz richtig erkannt wird, sind die Digits nur zu einem 1/8 der 
Zeit an
4. Die Digits haben einen relativ weichen Übergang.
5. Wie ganz richtig bemerkt wurde reduziert sich der Strom per Digit 
sehr deutlich
6. Natürlich knickt ein High-Pegel ein, aber es werden keine weiteren 
digitale Bausteine an die am Multiplexing beteiligten Anschlüsse 
angeschlossen
7. Es läuft hier ein "Uhrenthermometer" das permanent die Uhrzeit und 
die Temperatur im Wechsel anzeigt seit Jahren ohne Vorwiderstände, der 
Controller erwärmt sich nicht.
8. In "wichtigen" Schaltungen werden Widerstände verbaut
9. Die Wirklichkeit zeigt, dass die Anzeige so wie sie ist nicht dunkel 
ist
10. Irgendwo gibt es auch eine Berechnung, innerhalb welcher Zeit wie 
stark Leuchtdioden und Halbleiter überlastet werden dürfen, wenn sie 
eine entsprechend lange Zeit haben, sich abzukühlen, ohne zerstört zu 
werden.
11. Es bleibt jedem selbst überlassen, Common-Treiber (ob nun diskret, 
bipolar oder unipolar, oder auch per Transistorarray) zu verbauen. Der 
Software tut das keinen Abbruch, sie wird dennoch funktionieren.
12. Ich wußte, dass hier jemand aufschlagen wird mit der Frage nach den 
Vorwiderständen und ich habe sie dennoch weg gelassen, schlicht weil das 
deutlich einfacher zu stecken ist und die Software schneller ausprobiert 
werden kann.
13. Wie ich "lehre" kann nur ein Beobachter beurteilen oder eben ein 
Auszubildender. Die Prüfungsergebnisse geben aber auch einen 
Anhaltspunkt darüber wie gut oder schlecht jemand ein Verständnis hat. 
In den letzten 15 Jahren war keiner schlechter als Note 2

Ich könnte ewig weiterschreiben (weil ich mich aufrege), aber unterm 
Strich bringt das so gar nichts.

MaWin schrieb:
> Also: lehre nächstes Jahr lieber die ganze Wahrheit.

Die ganze Wahrheit ist, dass zu Übungszwecken, wenn es um Leuchtdioden 
geht, die Kennlinien nach guter alter Väter sitte händisch aufgenommen 
werden (mit selbstgebauter Konstantstromquelle) und mittels Excel eine 
Kennlinie erstellt wird. Anhand dieser Kennlinie und dem entsprechenden 
Datenblatt müssen R_min und R_max für unterschiedliche 
Betriebsspannungen ermittelt werden.

Im gegebene Fall des Multiplexens kommt alleine schon von Seiten der 
Auszubildenden die Frage nach den Vorwiderständen und die Antwort ist: 
Ihr könnt sie einbauen wenn ihr wollt. Wenn ihr sie weglasst wird der 
Controller aber dennoch nicht zerstört.

Der Hinweis, dass im kommerziellen Design die Widerstände nicht fehlen 
dürfen wurde gegeben (aber das hast du wohl bei der Unterweisung 
überhört, oder warst du vllt. gar nicht anwesend ?)

Früher hat man für Noname LED einen Strom von 10 bis 20 mA angenommen, 
heute sind LEDs schon bei einem I_f von weniger als 2 mA knallhell.

MaWin, geh nicht davon aus, dass alle ausser dir dumm sind. Die 
Erfahrung zeigt, wann etwas ausserhalb der Spezifikation funktioniert 
und wann nicht.

Beispiel gefällig?

Vor Jahren meine ein Auszubildender, er müsse seinen Autohimmel mit 
einem LED-Sternenhimmel versehen, zudem meinte er Vorwiderstände würden 
reichen. Auf den Hinweis, dass die Bordspannung in einem KFZ höchst übel 
ist, zudem verschiedene Werte bei bspw. laufendem Motor annehmen kann 
und dass hier evtl. die LEDs in einem nicht zulässigen Bereich betrieben 
werden wurde ignoriert. Die Aussage, mehrere LED in Reihe zu schalten 
und diese mit einer Konstantstromquelle zu versorgen wurde erst dann 
realisiert, nachdem sich die ersten LEDs verabschiedet haben.

Wenn also der "echte MaWin" aus der Newsgroup aus den 90ern hier 
schreibt: Du warst mal ein heller Stern und eine echte Instanz, aber 
dieses verbitterte und verbiesterte Genöle ist nicht schön.

Mit deinem Wissen hast du es doch gar nicht nötig, Oberlehrerhaft 
aufzutreten und jedem (ungefragt) die Richtlinien vorzugeben, nach der 
jemand vorzugehen hat.

Nur mal so: vor 20 Jahren wäre ich niemals auf die Idee gekommen, eine 
Anzeige ohne Widerstände betreiben zu wollen.

Ich hatte auch schon mal überlegt gehabt, Oszillogramme der Ströme !!! 
beim Multiplexen (über niederohmige Meßwiderstände) zu veröffentlichen 
um zu zeigen, dass die Stromimpulse weit weniger hoch sind als immer 
wieder vermutet wird. Dass die Begrenzung natürlich von seitens des 
Controllers kommt ist klar. Wenn der Controller aber den Strom begrenzt, 
ohne dabei auch nur näherungsweise zerstört zu werden, stellt sich mir 
die Frage, wo das Problem ist.

Gesetzt den Fall es wird ein billiges Spielzeug produziert, sagen wir 
einen Paschwürfel mit LEDs, dann werden für einen solchigen Doppelwürfel 
insgesamt 14 LEDs benötigt von denen max. 12 brennen. Sind I/O Pins 
knapp, wird dafür wohl eine 4x4 Matrix oder gar ein Charlieplexing mit 5 
Leitungen verwendet. Bei einem solchigen Produkt, welches keinen 
wirklichen Anspruch auf Langlebigkeit hat (leider muß man sagen), wird 
auf jeden Cent genau geschaut und die Dioden werden weggelassen.

Solch ein Produkt ist mir schon untergekommen und natürlich kam das aus 
dem Land der billigen Produkte: China.

Anderes Beispiel gefällig für einen Betrieb ausserhalb der 
Spezifikation? Ich weiß nicht wie oft über den ISP-Programmer USBasp 
schon gelästert wurde. Die grundsätzliche Realisation über "virtuellen 
USB, VUSB" ist hinlänglich bekannt, ein Begrenzen der Signalspannungen 
mittels Zenerdioden ist auch nicht so tolle .... und dennoch 
funktioniert dieses Billigteil, was vor der Pandemie und vor den 
geänderten Zoll- und Portobestimmungen letztes Jahr für ca. 1,20 € zu 
haben war, seit Jahren an jedem von mir getestetem Rechner. Es 
funktioniert halt. Nach MaWins Ansicht, dürften diese Dinger nicht 
verkauft werden, weil sie eben der Spezifikation nicht entsprechen.

Wichtig ist bei alle dem nur eines: Der Hinweis darauf, dass etwas 
ausserhalb der Spezifikation betrieben wird. Das nächste mal, wenn ich 
ganz bewußt einen Verstoß begehe, werde ich in dem entsprechenden Text 
darauf hinweisen, aber ich glaube, dass in diesem Fall dennoch genörgelt 
werden wird.

In diesem Sinnne, wenn du der echte Mawin bist: Zerstöre dein Ansehen 
nicht selbst. Den älteren, die die Newsgroup noch kannten als sie noch 
lebte, bist du ein Begriff und eine Instanz. Das, was man hier von dir 
bisweilen lesen kann, ist deiner nicht würdig !

von Apollo M. (Firma: @home) (majortom)


Lesenswert?

Ralph S. schrieb:
> Ich könnte ewig weiterschreiben (weil ich mich aufrege), aber unterm
> Strich bringt das so gar nichts.

Warum leidest du hier öffentlich und investierst viel Lebenszeit für 
diese ultralange Rechtfertigung?
Lass andere ruhig doof sein, dann gehts dir u. dem Doofen bestimmt 
besser!

von Ralph S. (jjflash)


Lesenswert?

Apollo M. schrieb:
> Warum leidest du hier öffentlich und investierst viel Lebenszeit für
> diese ultralange Rechtfertigung?

... weil ich doof bin ?

von MaWin (Gast)


Lesenswert?

Ralph S. schrieb:
> Ich könnte ewig weiterschreiben

Davon wird es nicht besser.

Du verwendest Millionen Worte weil DU WEISST dass man LEDs nicht ohne 
Strombegrenzung - in Form eines Widerstandes oder luxuriös mit 
Konstantstromquelle - verwendet, auch '1/8 der Zeit' nicht

Du WEISST dass deine Schaltung den uC weit jenseits der 
Datenblattgrenzwerte betreibt und das nicht in Ordnung ist, er damit 
jedes Recht der Welt hätte, kaputt zu gehen.

Du WEISST dass ein Einbrechen der Helligkeit der 8 die Folge einer 
fehlerhaft schlechten Schaltungsauslegung ist.

Nur du willst dir nicht eingestehen, dass du derjenige bist der den 
Fehler macht, und versuchst die Missgunst auf den Überbringer der 
schlechten Nachricht abzuwälzen.

Schlechter Stil. Mach's lieber in Zukunft richtig.

von MWS (Gast)


Lesenswert?

Ralph S. schrieb:
> Vielleicht hilft diese
> Version einem Anfänger oder Einsteiger besser ins Thema.

Du propagierst Dein Projekt für Anfänger oder Einsteiger und 
gleichzeitig bringst Du es falsch bei.

> Enstanden aus einem Auszubildendenprojekt zum Thema "multiplexen", hier

Warst Du Ausbilder, warst Du Dein Geld nicht wert, warst Du 
Auszubildender, dann hast Du's bis heute nicht gelernt.

Ralph S. schrieb:
> 2. Das Leuchtdioden nicht ohne Vorwiderstände statisch betrieben werden
> dürfen, dürfte jedem bekannt sein (und mir ist es das auch)

Die dürfen auch dynamisch nicht ohne Vorwiderstand betrieben werden.

> Den älteren, die die Newsgroup noch kannten als sie noch
> lebte, bist du ein Begriff und eine Instanz.

Wedle nicht oberlehrerhaft mit dem Zeigefinger herum, wenn Du wider 
besseres Wissen einen solchen Müll als Hardware ablieferst.

Ralph S. schrieb:
> ... weil ich doof bin ?

Dem kann man in Anbetracht Deines weinerlichen Ergusses nur zustimmen.

von nippes (Gast)


Lesenswert?

Ach Leute,

chillt mal. Warum seid ihr nur immer so grantig zueinander? :-)
Es geht um ein Hobby und nicht um die Rettung der Welt.

Einfach mal höflich sein. Ein Lächeln ist die kürzeste Verbindung 
zwischen zwei Potenzialen.

von MWS (Gast)


Lesenswert?

nippes schrieb:
> Ein Lächeln ist die kürzeste Verbindung
> zwischen zwei Potenzialen.

Das musst Du im "Brigitte"-Forum schreiben, für einen Techniker ist ein 
ionisierter Kanal mit nachfolgender Plasmaentladung viel kürzer.

von Christoph M. (mchris)


Angehängte Dateien:

Lesenswert?

von Ralph S. (jjflash)
04.02.2022 10:28
>... irgendwie wußte ich, dass diese Frage kommt (schlicht weil es keine
>Vorwiderstände für die LED-Segmente gibt).

>Der Controller erwärmt sich gar nicht.

>Eine Schaltung dieser "Art" des  Multiplexens habe ich zu Hause seit
>über 10 Jahren 24/7 laufen. Wie hoch die Stromaufnahme in diesem Fall
>mit 8 Digits ist weiß ich nicht, weil ich es nicht gemessen habe.

Die Treiberleistung der Pins des Atmega328 begrenzt den Strom, was der 
Anwendung etwas entgegen kommt. Besser wäre vielleicht, wenn man die 
Schaltung mit 3.3V betreibt, dann werden die Ausgänge nicht ganz so 
stark belastet. Ein grüne Anzeige mit höherer Diodenspannung könnte der 
Sache auch noch etwas entgegen kommen.

von MaWin (Gast)


Lesenswert?

Christoph M. schrieb:
> Ein grüne Anzeige mit höherer Diodenspannung könnte der Sache auch noch
> etwas entgegen kommen.

VORWIDERSTÄNDE wären die ultimative Lösung.

Aber wenn man zu arm für 0.001ct ist...

Klar, bei Abermillionenstückzahl könnte man mit der Einsparung seinen 
Arbeitsplatz finanzieren, zumindest bis im nächsten Jahr die Firma wegen 
der ganzen Rückläufer pleite ist.

von Christoph M. (mchris)


Lesenswert?

MaWin (Gast)
11.02.2022 10:17

>Christoph M. schrieb:
>> Ein grüne Anzeige mit höherer Diodenspannung könnte der Sache auch noch
>> etwas entgegen kommen.

>VORWIDERSTÄNDE wären die ultimative Lösung.

>Aber wenn man zu arm für 0.001ct ist...

1. Es scheint ein Bastelprojekt zu sein, aber:
2. In der Massenproduktion spart man jeden Cent
3. Der Kunde bezahlt nicht für "overengineerte" Spielereien
4. Du verlierst Marktanteil, wenn du teurer als die Konkurrenz bist
5. Deine Kostenkalkulation ist falsch, du hast folgendes vergessen
- Bestückungskosten
- Materialhandling
- Materialbestellung
- Lagerhaltung
- erhöhte Ausfallwahrscheinlichkeit durch zu viele Bauteile
- erhöhte Produktionsverzögerung falls Bauteile verzögert geliefert 
werden

von Christoph M. (mchris)


Lesenswert?

>Klar, bei Abermillionenstückzahl könnte man mit der Einsparung seinen
>Arbeitsplatz finanzieren, zumindest bis im nächsten Jahr die Firma wegen
>der ganzen Rückläufer pleite ist.

Ich glaube nicht, dass es vermehrt Rückläufer geben wird. Ohne eine 
genauere Untersuchung des Sachverhalts sind das konservative 
"Angstwiderstande", die einer Nachteil gegenüber der Konkurrenz 
darstellen können.

von MaWin (Gast)


Lesenswert?

Christoph M. schrieb:
> Deine Kostenkalkulation ist falsch, du hast folgendes vergessen

Ach, ewig Gestriger.

Der Chinamann ist fähiger, der verwendet einen uC mit 
Konstantstromquellen und internen Leistungstransistoren, Typennummern 
habe ich oben genannt.

von Peter D. (peda)


Lesenswert?

Ralph S. schrieb:
> Abgesehen davon hat jede Leitung auch einen induktiven Anteil, der beim
> Einschalten den maximalen Strom begrenzt.

Prust.
Da mußt Du aber mit 100MHz multiplexen, damit die wenigen nH auch 
wirksam werden.
Aber sei froh, daß die Induktivität bei wenigen Hz quasi nicht vorhanden 
ist, sonst würden Dir die Induktionsspannungen beim Abschalten die LEDs 
in Sperrichtung zerstören.

von kai (Gast)


Lesenswert?

m.n. schrieb:
> Wie hoch ist die Stromaufnahme, wenn alle Segmente eingeschaltet sind
> und wie warm wird der Controller?
> Sofern man sich an die max. Stromwerte des Datenblattes halten will,
> müßte man die Segmentströme auf < 1 mA begrenzen.

https://thumb.mikrocontroller.net/bpA8RndVu7MdYADqsUylsfhTtxLAsrcOffew9qg_X6s/plain/https://www.mikrocontroller.net/attachment/545316/mpx8_digit_b.gif@jpg

Wo müssten diese Widerstände im Schaltbild (theoretisch) eingefügt 
werden?

von MaWin (Gast)


Lesenswert?

kai schrieb:
> Wo müssten diese Widerstände im Schaltbild (theoretisch) eingefügt
> werden?

In die Segmentleitungen.

Die Leitungen  die zyklisch Stellen, Spalten oder Reihen wechseln, also 
COM, bekommen keine Widerstände.

von Peter D. (peda)


Lesenswert?

Ich verstehe nicht, warum man das nicht ordentlich machen kann.
8 Widerstände in die Segmente und 8 Transistoren als Emitterfolger für 
die Digits und die Sache ist erledigt.

Die Helligkeit scheint auch nicht berauschend zu sein, die LED auf dem 
Programmierboard ist ja deutlich heller.

von Ralph S. (jjflash)


Angehängte Dateien:

Lesenswert?

Für alle die, die sich an der mangelhaften Schaltung aufhängen, hier ist 
nun die Schaltung, wie sie sich "richtig gehört" (meine Güte).

Und damit auch die zufrieden sind, die die Commonleitung überlastet 
sehen auch hier einen Common-Transistortreiber.

Ich kann darauf warten, dass nun geäußert wird, dass die Belastung des 
Controllers per Segment dennoch grenzwertig ist, weil der Strom per 
Segment bei einer angezeigten "8" ca. 7 mA beträgt.

Außerdem hat somit jedes einzelne Segment im Mittel 7/8 mA (also nicht 
mal 1mA im Mittel, was ja viel zu wenig ist). Die Helligkeit ist mir 
jedoch hiermit schon so hoch, dass ich das nicht "ungedimmt" laufen 
lassen möchte weil es für meinen Geschmack (und meine Augen) zu hell 
ist.

Gemessen wurde das mit einem Oszilloskop der an einem Trenntrafo hängt, 
damit ich den Spannungsfall über den Segmentwiderständen messen konnte. 
Signalform ist "relativ" einem Recheck ähnlich, was er nicht ist, wenn 
man die Segmentwiderstände bis auf 1 Ohm reduziert um annähernd die 
Bedingung zu haben, als wenn gar keine Segmentwiderstände enthalten 
sind.

Für alle diejenigen, die noch nicht zufrieden sind, kann man auch in die 
Segmentleitungen einen Transistor schalten, dieses mal dann jedoch einen 
NPN in Kollektorschaltung, damit die Ausgabe der Segmente nicht 
invertiert werden muß. Ein PNP wäre hier dann besser, aber dann müßte 
die Ausgabe invertiert werden.

So, nachdem die Hardware nun so komplett (hoffentlich) zerrissen ist, 
könnt ihr Euch über die Software hermachen und dort ebenfalls alles 
sagen, was man so nicht macht.

Unabhängig davon läuft hier in meinem Wohnzimmer seit 10 Jahren eine 
solche Schaltung (mit nur 4 Digits... Temperatur und Uhrzeit werden im 
Wechsel angezeigt) ohne Störung.

Peter D. schrieb:
> Die Helligkeit scheint auch nicht berauschend zu sein, die LED auf dem
> Programmierboard ist ja deutlich heller.

Die Helligkeit ist und war mir hell genug, die LED auf dem 
"Programmierboard" (das ist lediglich ein Eigenbau-Breadboardadapter mit 
steckbarem Spannungsregler und einr CH340 USB2UART Bridge) ist mir um 
einiges zu hell, ich hatte nur keine Lust bisher darauf, den 
Vorwiderstand dieser SMD-LED (er ist 820 Ohm) zu vergrößern.

kai schrieb:
> Wo müssten diese Widerstände im Schaltbild (theoretisch) eingefügt
> werden?

Siehst du hier angehängten Schaltplan!

---------------------------------------------------------

So, was habe ich nun gewonnen?

Die goldene Himbeere der Elektroniker

- für die schlechteste Schaltung des Monats Februar 2022
- den schlechtesten Elektroniker
- den unnützesten Beitrag auf www.mikrocontroller.net

Die Abstimmung für den schlechtesten Schaltplan steht noch aus.

Peter D. schrieb:
> Da mußt Du aber mit 100MHz multiplexen, damit die wenigen nH auch
> wirksam werden.
> Aber sei froh, daß die Induktivität bei wenigen Hz quasi nicht vorhanden
> ist, sonst würden Dir die Induktionsspannungen beim Abschalten die LEDs
> in Sperrichtung zerstören.

Geb ich dir uneingeschränkt Recht, da habe ich Müll geschrieben.

MWS schrieb:
> Das musst Du im "Brigitte"-Forum schreiben, für einen Techniker ist ein
> ionisierter Kanal mit nachfolgender Plasmaentladung viel kürzer.

Die nächste Plasmaentladung steht sicherlich an!

MWS schrieb:
> Warst Du Ausbilder, warst Du Dein Geld nicht wert, warst Du
> Auszubildender, dann hast Du's bis heute nicht gelernt.

Das da ... ist ein typischer Beitrag hier im Forum: Wo es nur geht 
persönlich und beleidigend werden ! Natürlich sind solche Leute immer 
nur als Gäste unterwegs...

Sei es drum, an Tagen wie diesen (hat nichts mit dem Lied zu tun), die 
leider immer häufiger vorkommen, hätte ich es gerne, dass alle Beiträge 
von mir von mikrocontroller.net entfernt werden. Natürlich wird man hier 
dann auch sagen, dass das kein Verlust sei.

Irgendwann wird man (ich) es schaffen und dem "Ding" hier komplett fern 
bleiben oder auch nur als "Gast" aufzutreten.

By the way: Warum sieht man von den permanent Nörglern hier nicht mal 
brauchbare Dinge (sieht man mal von Peda und MaWin ab)?

von MaWin (Gast)


Lesenswert?

Ralph S. schrieb:
> hier ist nun die Schaltung, wie sie sich "richtig gehört" (meine Güte).

Die 5k6 Widerstände könntest du weglassen (0 Ohm), die 
Kollektorschaltung braucht die nicht.

Ralph S. schrieb:
> für die schlechteste Schaltung des Monats Februar 2022

Was https://www.mikrocontroller.net/attachment/545316/mpx8_digit_b.gif 
betrifft sicherlich.

von Ralph S. (jjflash)


Lesenswert?

MaWin schrieb:
> Die 5k6 Widerstände könntest du weglassen (0 Ohm), die
> Kollektorschaltung braucht die nicht.

... ich brauche auch die Com-Treibertransistoren nicht. Ich könnte aber 
auch Com-Treibertransistoren in NPN wählen, das ganze dann in 
Emitterschaltung realisieren und die Ansteuerlogik der Com-Leitungen 
invertieren, dann braucht es die Basiswiderstände dann zwingend ...

... allerdings habe ich dann, bei geänderter Ansteuerlogig der 
Com-Leitungen das Problem, dass ich die Auswertung der Tasten im 
Multiplex anderst realisieren muß.

Ich werde es sicherlich noch hinbekommen, dass mir die Anzeige nichts 
mehr anzeigt !

von Ralph S. (jjflash)


Lesenswert?

By the way:

Was ist mit der Goldenen Himbeere für die schlechteste Software? 
Irgendwie hätte ich die schon noch gerne in meiner Sammlung !

von michael_ (Gast)


Lesenswert?

Warum immer das Rad neu erfinden?
Atmel hat das schon mit AVR242 gemacht.
Anpassung um weitere Digit oder Tasten ist da harmlos.

https://ww1.microchip.com/downloads/en/Appnotes/doc1231.pdf

Zu beachten ist die Anbindung der Tasten.

von Peter D. (peda)


Lesenswert?

Ralph S. schrieb:
> Ich könnte aber
> auch Com-Treibertransistoren in NPN wählen, das ganze dann in
> Emitterschaltung realisieren und die Ansteuerlogik der Com-Leitungen
> invertieren, dann braucht es die Basiswiderstände dann zwingend ...

Dann dauert aber das Ausräumen der Basisladung länger und es kann zum 
Ghosting kommen.

von Ralph S. (jjflash)


Lesenswert?

Peter D. schrieb:
> Dann dauert aber das Ausräumen der Basisladung länger und es kann zum
> Ghosting kommen.

... und deshalb Kollektorschaltung

von jjflash (Gast)


Angehängte Dateien:

Lesenswert?

Obwohl ich hier satt "verrissen" worden bin habe ich 3 Mails erhalten, 
deren Inhalt in der Art war, was getan werden muß, damit die Software 
auch auf einem ATmega8 läuft.

Nachdem ich in meiner Bastelkiste dann doch noch einen Mega8 gefunden 
hatte, habe ich das ausprobiert und das einzige was getan werden muß, 
ist im Header dem Programm mittels Präprozessor vorzugaukeln, dass er 
ein TIMSK1 Register hat (das "Timer/Counter Interrupt Mask Register" 
heißt hier TIMSK und nicht TIMSK1) und natürlich im Makefile den ATmega8 
eintragen.

In mpx8_digit.h (irgendwo einfügen):
1
#if defined __AVR_ATmega8__
2
  #define TIMSK1   TIMSK
3
#endif

im Makefile muß es dann heißen:
1
# fuer Compiler / Linker
2
FREQ       = 8000000ul
3
#MCU       = atmega328p
4
#MCU       = atmega168
5
MCU        = atmega8

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.