Hallo Jungs (und Mädels), ich zerbreche mir gerade den Kopf darüber, wie ich eine 10x Bargraph-Anzeige mit möglichst wenig Pins an einem ATTiny angeschlossen bekomme. 6 Pins könnte ich maximal opfern, aber als Dilettant gehe ich davon aus, dass eigentlich 4 Pins (2^4 = 16) reichen müssten, um eine linear ansteigende Anzeige zu realisieren. Die Bargraphanzeige hat die Anoden und Kathoden der LEDs einzeln herausgeführt. Besteuert werden soll sie immer additiv, d.h. von einer Richtung sollen entweder 0 Segmente, 1 Segment, 2 Segmente ... aufleuchten. Individuelle Segmente müssen nicht ansteuerbar sein. Ich habe hier auch eine Schachtel 74HC164 und 74HC595 rumfliegen, aber die will ich nicht benutzen, wäre ja auch irgendwie Betrug, und obendrein ganz schön viele ICs nur für ein bisschen Disco. Mit 5 Pins (2 x 3 x 2) und Tri-State-Logik könnte ich den Bargraph multiplexen, und dann sogar jedes Segment individuell steuern, aber eigentlich hat der ATTiny44 mit 3 PWMs und 3 Frequenzmessungen, Temperaturmessung plus mehrere PID-Regler schon genug zu tun. Ich hatte an irgendwas zwischen R2R und der Mehrfachbelegung der Pins mit Tri-State an Anode und Kathode gedacht. Beispiel: PIN0 angeschlossen an Anode Segment 1 und 2 GND angeschlossen an Kathode Segment 1 PIN1 angeschlossen an Kathode Segment 2 PIN0 High-Z, PIN1 High-Z = Kein Segment leuchtet PIN0 High, PIN1 High-Z = Segment 1 leuchtet PIN0 High, PIN1 Low = Segment 1+2 leuchtet Allerdings laufe ich da immer wieder in eine Sackgasse. Irgendwie muss ich Gruppen von LEDs zusammenfassen, und dann trotzdem Schritt-für-Schritt einzelne LEDs zuschalten können. Ein Wegweiser in die richtige Richtung würde mir hier schon reichen. Danke für jegliche Art von Kommentaren. Grüße, Alex
Hallo, Suchwörter hierzu "avr charlieplexing" heißen. http://makezine.com/projects/charlieplexing-leds-with-an-avr-atmega328-or-arduino/ Mit freundlichen Grüßen Guido
Mit Charlieplexing kommst du auf 4 Pins... Sonst kannst du das auch über einen Pin machen: Den steuerst du über PWM an. Mit nem Kondensator (~100nF) machst du daraus halbwegs vernünftigen DC. Dann kannst du über einen Schmitt-Trigger pro LED mit einstellbarer Schaltschwelle die LEDs nacheinander einschalten(Indem du die PWM "hochfährst").
Alexander Gräf schrieb: > Die Bargraphanzeige hat die Anoden und Kathoden der LEDs einzeln > herausgeführt. Besteuert werden soll sie immer additiv, d.h. von einer Ich muss irgendetwas falsch verstanden haben. Wie einzeln herausgeführt ? Wo ?
Guido C. schrieb: > Suchwörter hierzu "avr charlieplexing" heißen. Danke, soweit war ich ja (teilweise) schon: "Mit 5 Pins (2 x 3 x 2) und Tri-State-Logik könnte ich den Bargraph multiplexen". 12 LEDs mit 4 Pins hatte ich zwar bis dato noch nicht gesehen, aber ändert nichts daran, dass der uC dann am Ende doch multiplexen muss. Ich suche etwas eleganteres. :-D Danke+Gruß, Alex
Marc Vesely schrieb: > Ich muss irgendetwas falsch verstanden haben. > Wie einzeln herausgeführt ? > Wo ? Gemeint ist: die Anode und Kathode jedes einzelnen Segments sind jeweils einzeln als Pin aus dem Gehäuse herausgeführt, also keine gemeinsame Kathode oder so ein Blödsinn. ArtNr 160143 beim C fürs Datenblatt.
Ist dir ein 10er Bargraph über einen Pin nicht elegant genug? :P Die PWM braucht auch nur zehn Stufen. Dann kannst du direkt die Variable auf die PWM schieben. Nur den Schmitt-Trigger musst du von "Hand" mit nem Komparator und drei Widerständen aufbauen. Die "fertigen" haben keine einstellbare Schaltschwelle.
jz schrieb: > Mit Charlieplexing kommst du auf 4 Pins... Das wird wohl das Mittel der Wahl sein, wenn es nicht anders geht. > Sonst kannst du das auch über einen Pin machen: Den steuerst du über PWM > an. Mit nem Kondensator (~100nF) machst du daraus halbwegs vernünftigen > DC. Dann kannst du über einen Schmitt-Trigger pro LED mit einstellbarer > Schaltschwelle die LEDs nacheinander einschalten(Indem du die PWM > "hochfährst"). Das ist kompliziert, und wenn man schon zusätzliche Bausteine nehmen muss, käme ich mit einem 74HC164 auf nur drei Pins am uC: 74HC164: LED 1 ... 8 PIN0: 74HC164 CLK PIN1: 74HC164 DATA + LED 9 PIN2: LED 10 Danke+Gruß, Alex
:
Bearbeitet durch User
jz schrieb: > Ist dir ein 10er Bargraph über einen Pin nicht elegant genug? :P Die PWM > braucht auch nur zehn Stufen. Dann kannst du direkt die Variable auf die > PWM schieben. Nur den Schmitt-Trigger musst du von "Hand" mit nem > Komparator und drei Widerständen aufbauen. Die "fertigen" haben keine > einstellbare Schaltschwelle. Es geht ja nicht nur um die Zahl der Pins, sondern auch die Zahl der externen Bauseine. Beim Charlieplexing wären wir bei 4 Vorwiderständen und 4 Pins, plus Softwareaufwand. Einen Schmitt-Trigger für jedes Segment, das wird ein echtes Bauteilgrab.
10 Komparatoren (2 4-fache und ein 2-facher z.B.) + 30 Widerstände + 10 Kondensatoren. Hält sich aber noch in Grenzen. Falls man nur einen Pin frei hat...
Daniel F. schrieb: > wäre ein d/a-wandler mit einem LM3914 eine alternative? Naja, dann entweder per PWM mit Filter, oder doch wieder R2R mit 4 Pins, plus den LM3914. Nicht minimalistisch genug, obwohl der LM3914 schon das richtige Werkzeug ist, wenn man direkt mit analogen Signalen arbeiten will. Vielleicht ein bisschen Hintergrundinfo: der Tiny hat 3 PWM Ausgänge, die über einen LM324 auf 10V verstärkt (0...10V Steuersignal) werden. Dann 3 Open Collector Anschlüsse mit einem Temposignal, das wieder eingelesen wird. Das steuert dann in Summe 3 Querstromlüfter, die über einen Temperatursensor (intern oder extern) in ihrer Leistung bzw. Drehzahl geregelt werden. Mich ärgert schon der LM324, weil ich anders die 10V nicht sauber hinbekomme (3 FETs gingen natürlich auch, aber dann braucht es auch wieder einen Pull-Down). Der Bargraph wäre ein schönes optisches Gimmick, war aber so gar nicht vorgesehen. Ich könnte natürlich auch einen ATMega nehmen mit größerem Gehäuse, dann hätte ich die 10 Pins locker über.
Hallo, es gibt sogenannte "LED Display Drivers" wie z.B. den "MM5450N" von National Semiconductor (mittlerweile Texas Instruments). Mit diesem Treiber kannst Du über 3 Ansteuerleitungen bis zu 34 LEDs ansteuern. Über ein Potentiometer kannst Du sogar die Helligkeit der LEDs steuern. Vielleicht findest Du dergleichen auch "in klein". Mit freundlichen Grüßen Guido
Guido C. schrieb: > es gibt sogenannte "LED Display Drivers" wie z.B. den "MM5450N" von > National Semiconductor (mittlerweile Texas Instruments). Ich weiß, da gibt es einige Decoder-Chips, und im einfachsten Falle nimmt man eben einen fertigen LED-Treiber mit I2C o.ä. und eingebauter Konstantstromquelle. Ich habe hier sogar RGB-LEDs mit 8-Bit PWM pro Farbkanal, einzeln ansteuerbar per Eindraht mit 800 kBit/s per Daisy Chaining, Konstantstromquelle eingebaut, davon kosten 10 Stück weniger als der einzelne Bargraph von C. Aber eigentlich wollte ich jetzt keine hochkomplexe Lichtorgel bauen, sondern einfach nur den Bargraph mit dranklemmen - ohne viel Hardware, ohne viel Software. Ich habe mich jetzt für das Charlieplexing mit 4 Pins entschieden. Ich suche nur gerade die optimale Anordnung der Segmente, damit ich möglichst keine Kreuzungen habe. Da Anode und Kathode regelmäßig am gleichen Netz hängen, ist das gar nicht so einfach.
Hallo, Alexander Gräf schrieb: > Aber eigentlich wollte ich jetzt keine > hochkomplexe Lichtorgel bauen, sondern einfach nur den Bargraph mit > dranklemmen - ohne viel Hardware, ohne viel Software. Naja, der "MM5450N" ist alles andere als "hochkomplex". Alexander Gräf schrieb: > Ich habe mich jetzt für das Charlieplexing mit 4 Pins entschieden. Alexander Gräf schrieb: > aber > eigentlich hat der ATTiny44 mit 3 PWMs und 3 Frequenzmessungen, > Temperaturmessung plus mehrere PID-Regler schon genug zu tun. Ist ja schön, dass Du jetzt doch noch Ressourcen gefunden hast. SCNR Mit freundlichen Grüßen Guido
Guido C. schrieb: > Ist ja schön, dass Du jetzt doch noch Ressourcen gefunden hast. SCNR Der Compiler wird mir schon sagen, wenn die 4K voll sind. Etwas statisches wäre mir lieber gewesen, wo ich nicht alle Millisekunde etwas tun muss, damit mir die Anzeige nicht einfriert. Trotzdem denke ich, dass man durch eine geschickte Verdrahtung der 4 Pins an den Bargraphen zurecht käme, ohne Multiplexing. Aber ich habe keine gute Idee, und dann ist Charlieplexing halt noch das kleinste Übel, weil nur vier Widerstände, keine exotischen ICs, und wenn man etwas herumknobelt auch keine Kreuzungen.
Ich hätte deshalb ja auch ein Schieberegister genommen... Aber jedem das Seine...
jz schrieb: > Ich hätte deshalb ja auch ein Schieberegister genommen... Aber jedem das > Seine... Ich prinzipiell auch, das wäre ein 74HC164 gewesen, und in Summe drei Pins. Ist aber wieder ein Extrabauteil. Und achja, 10 Vorwiderstände.
Alexander Gräf schrieb: > aber ändert nichts daran, > dass der uC dann am Ende doch multiplexen muss. Ich suche etwas > eleganteres. Es geht halt nur so. Entweder die Pins direkt ansteuern was viele Pins kostet oder irgendie auf wenige Pins codieren. Letzteres geht per Software oder über ein Hardwareinterface mit wenigen Pins. - Direktanschluß mit hoher Pinzahl willst du nicht. - "Codierung" auf ein analoges Signal nebst Decodierung am anderen Ende willst du nicht. - Multiplexing in Software, Beispiel Charlieplexing, willst du nicht. Softwarelast. -Hardwaremultiplexing, Beispiel Porterweiterung über seriells Interface mit 74HC164 und 74HC595, willst du nicht. Irgendetwas muß man aber nehmen wenn man etwas bauen will. Man braucht Hardware oder Software um Informationen von vielen Pins auf wenige Pins umzukodieren. Wenn die Daten ohnehin digital von der CPU kommen ist eine Porterweiterung eine der sinnvollsten Alternativen, besonders da 74HC164 und 74HC595 schon vorhanden sind. http://www.mikrocontroller.net/articles/Porterweiterung_mit_SPI
Alexander Gräf schrieb: > Trotzdem denke ich, dass man durch eine geschickte Verdrahtung der 4 > Pins an den Bargraphen zurecht käme, ohne Multiplexing. Aber ich habe Da denkst du mit Sicherheit falsch.
Marc Vesely schrieb: > Da denkst du mit Sicherheit falsch. Genau, ohne jegliche Codierung / Decodierung geht es nicht! Und die erfolgt nicht von selbst. Nur "geschickt verdrahten" reicht nicht!
Man kann auch zwischen jeweils 2 Pins (mit R davor) 2 LED antiparallel schalten. 2 Pins -> 2 LEDs 3 Pins -> 6 LEDs 4 Pins -> 12 LEDs Das richtige Gewackel der Pins ist aber etwas kompliziert. Am besten per Tabelle und alle 1ms eine andere schalten oder es sein lassen. Damit hat man auch gleichmäßige Helligkeit auf allen.
Danke Jungs für den Input. Am Ende wird es halt dann doch das Charlieplexing werden, die paar Byte Flash und CPU-Zyklen muss man eben freiräumen. Hier für alle Interessierten die meiner Meinung nach kompakteste Weise, den 10x Bargraph auf Protoboard/Einseitig ohne Überkreuzung für Charlieplexing anzuschließen. Über Gelb/Rot kann man streiten, lässt sich auch anders gruppieren.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.