-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 17

Thema: 7 Segmentansteuerung mit Atmega

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    27.10.2008
    Beiträge
    50

    7 Segmentansteuerung mit Atmega

    Anzeige

    Hallo zusammen

    ich habe ein kleines Problem und vielleicht kann mri einer Helfen.

    Ich möchte eine Anzeige mit 7 Segementanzeigen aufbauen.

    Die Anzeige besteht aus 12 blöcken a 9 St 7Segmenten
    sowie 3 Blöcken a 6 St 7Segmenten

    jeden block muss ich einzeln ansteuern können.
    Dazu hatte ich mir gedacht, dass ich je Block eine entsprechende Anzahl Schieberegister verwenden.

    Soweit ich das verstanden habe, benötige ich 3 Ausgänge pro Block, ( Data, Clock, Strobe)
    Das würde bedeuten ich benötige eine Atmega der mir 45 Ausgänge bietet.

    Allerdings gibt es ein KO Kriterium, es darf kein Bauteil mit SMD Löttechnik sein !!

    Der einzige Ansatz der mir einfallen würde, ist es die Anzeigen auf 2 AVR aufzuteilen. Das finde ich aber nicht glücklich.

    Hat einer zufällig eine Idee ?

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Hallo mollyman,
    ich weiss nicht, welche Schieberegister du im Auge hast, aber alle sollten einen Enable Eingang haben.
    Dann kannst du alle Gruppen parallel an deine Ausgänge hängen. Die ganzen Enable dann entweder separat auf jeweils einen Pin oder noch einen BCD zu DEC oder Hex Decoder dazwischen. Dann kommst du im besten Fall mit vielleicht 10 Leitungen aus.
    Schreiben kannst du ja sowieso immer nur in eine Schieberegister Reihe.

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von BMS
    Registriert seit
    21.06.2006
    Ort
    TT,KA
    Alter
    26
    Beiträge
    1.192
    Hallo,
    das wird sicher ein größeres Projekt Das sind immerhin 126 Siebensegmentanzeigen
    Um den Aufwand einschätzen zu können : Unter folgendem Link hat jemand 64 alphanumerische Anzeigen realisiert http://www.fritzler-avr.de/HP/ledscreen.php .
    Dort wurden die Anzeigen mit Multiplexing betrieben.
    Der Stromverbrauch ist schon beachtlich.

    Es gibt Treiber, die direkt Siebensegmentanzeigen ansteuern können und über I2C angesprochen werden. Z.B. kann SAA1064 kann 4 Stellen direkt ansteuern (ca. 2€).
    Ist aber auch sicher eine Frage des Aufwands und der Kosten. Schieberegister sind deutlich günstiger als die SAA1064, auch wird es wohl nicht genug I2C-Adressen geben.

    Es kommt auch darauf an, was du genau darstellen möchtest. Falls nur Zahlen nötig sind, kann man evtl mit BCD-Siebensegmentwandlern (7447) oder Zählern mit Siebensegmentausgang etwas erreichen(?).

    Grüße, Bernhard

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    27.10.2008
    Beiträge
    50
    Hi

    ich wollte 74HC4094 nehmen, die haben einen enable´.
    Habe ich das richtig verstanden, dass wenn der enable gesetzt ist, die Ausgänge seine Stellung behalten, solange kenen neuen Daten kommen, selbst wenn es einen neuen Strobe und /oder Clock gibt?

    Das Thema mit dem BCD bringt mich auf die idee die Clock und die Strobe über eigene Schieberegisterblöcke anzusteuern. da könnte ich dann für " beleibig" viele SR das Clock mit 3 Ausgängen steuern und das gleiche mit dem Strobe.
    oder habe ich da einen Denkfehler.

    Danke im voraus

    gruß Martin

    - - - Aktualisiert - - -

    Zitat Zitat von BMS Beitrag anzeigen
    Hallo,
    das wird sicher ein größeres Projekt Das sind immerhin 126 Siebensegmentanzeigen
    Ja definitiv, da jede 7 Segmentanzeige auch 12*8 cm groß ist wird sie rund 2 m hoch und 1 m breit

    Zitat Zitat von BMS Beitrag anzeigen
    Um den Aufwand einschätzen zu können : Unter folgendem Link hat jemand 64 alphanumerische Anzeigen realisiert http://www.fritzler-avr.de/HP/ledscreen.php .
    Dort wurden die Anzeigen mit Multiplexing betrieben.
    Der Stromverbrauch ist schon beachtlich.
    Ich schaue mir das morgen mal an, wobei es beim Multiplexing ein helligkeitsthema gibt , so habe ich es zumindest mehrfach gelesen.
    Da die Anzeige draußen steht, ist so etwas wenn es stimmt ein KO kriterium


    Zitat Zitat von BMS Beitrag anzeigen
    Es gibt Treiber, die direkt Siebensegmentanzeigen ansteuern können und über I2C angesprochen werden. Z.B. kann SAA1064 kann 4 Stellen direkt ansteuern (ca. 2€).
    Ist aber auch sicher eine Frage des Aufwands und der Kosten. Schieberegister sind deutlich günstiger als die SAA1064, auch wird es wohl nicht genug I2C-Adressen geben.

    Es kommt auch darauf an, was du genau darstellen möchtest. Falls nur Zahlen nötig sind, kann man evtl mit BCD-Siebensegmentwandlern (7447) oder Zählern mit Siebensegmentausgang etwas erreichen(?).
    Aufgrund der hohen Anzahl wirken sich schon kleine Preisunterschiede massiv aus.
    ich glaube das Thema BCD muss ich mir mal näher ansehen,da es wirklich nur um Zahlen geht.

    Danke

    Martin
    Grüße, Bernhard[/QUOTE]

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    07.03.2011
    Beiträge
    1.397
    Zitat Zitat von mollyman Beitrag anzeigen
    Ja definitiv, da jede 7 Segmentanzeige auch 12*8 cm groß ist wird sie rund 2 m hoch und 1 m breit
    Erzähl doch mal, wieviel Strom ein solches Segment haben will und bei welcher Spannung. Ich möchte wetten, Schieberegister mit LED-Treiber kommen da nicht infrage. Die können weder den Strom noch die Spannung.

    Ich schaue mir das morgen mal an, wobei es beim Multiplexing ein helligkeitsthema gibt , so habe ich es zumindest mehrfach gelesen. Da die Anzeige draußen steht, ist so etwas wenn es stimmt ein KO kriterium
    Das ist doch logisch. Beim Multiplexen werden Segmente nacheinder angeschaltet, und zwar so schnell, daß man das nicht sieht. Da sie nicht die ganze Zeit leuchten, wirken sie dunkler. Daher müssen sie mit mehr Strom betrieben werden, als im statischen Betrieb. Dabei darf man die Maximalwerte nicht überschreiten, sonst ist die Freude nur kurz. Wie gut man deine LEDs bei hellem Sonnenlicht überhaupt sehen kann, mußt du mal ausprobieren.

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    27.10.2008
    Beiträge
    50
    Ich habe jetzt noch einiges recherchiert

    @ Klebwax
    Das Thema Strom und Spannung für die Segmente ist abhängig von den verwendeten LED.
    Bei Tankstellenanzeigen weden LED mit 3000 MCD verwendet. Daher habe ich mich für folgende Entschieden.
    LED 5 mm rot 1,8-2,1 V 20 mA 4000-5000MCD und 140-160 Grad habe ich bei ebay 1000 Stck für 12 $
    Bei der Recherche habe ich ebenfalls erfahren ich muss etwas größer werden, mindestens 14 cm.

    Somit soll ein Segment aus 6 in Reihe geschalteten LEDs bestehen. Angeschlossen an 15 V Betriebsspannung.
    So ergeben sich pro Segment 15 V und max 140 mA.

    Ursprünglich hatte ich vor Schiebregister (4094)mit einem Darlington Array (ULN 2803A) zu nutzen.

    @for_ro udn BMS
    Die Möglichkeit alle Schiebregister nur über ein enable schalten habe ich entweder nicht richtig verstanden oder geht bei mir nicht.
    die Anzeige besteht aus insgesamt 15 Blöcken jeden Block muss ich separat ansteuern können, da die Daten die angezeigt werden jeweils pro Block über den UART an den ATMEGA angeliefert werden.

    trotzdem war der Hinweis mit dem BCD echt klasse.
    Folgendes habe ich ins Auge gefasst.
    An die Ausgänge des Atmega hänge ich die Schieberegister 4094 jeweils mit Data und Clock. Output enable und Strobe permanent auf High.
    An je ein Schiebregister kommen dann 2 BCD Bausteine (4511) die können bis 15 V und bis 25 mA pro Ausgang somit kann ich meine LED direkt mit einem 120 Ohm Widerstand daran hängen ohne Leistungsstufe Die BCD Treiber wallte ich dann auch dezentral bei den jeweiligen Segmenten setzen, was dann auch einiges an Kabeln einspart. Problematisch könnte werden, das beim Schieberegister das OE immer auf Hi ist und auch das Store am BCD immer auf Hi ist, somit werden bei jedem Clock die Daten ausgegeben, auch wenn sie noch nicht an der richtigen Stellen sind, das könnte dazu führen das während des stellens des Block wirre Zeichen angezeigt werden. Da ein Block aber maximal aus 7 Segmenten besteht würde dieses aber nur die Dauer von 28 Clocks haben. Da ich nicht weiß mit welcher Taktfrequenz der Atmega die Signale ausgibt, hoffe ich, dass er schnell genug ausgibt, um das man es nicht sieht. Bei unerlaubten Zeichen würde dazu der BCD die Segmente ausschalten.
    Allerdings hätte ich gerne somit habe ich einen Eingang und 30 Ausgänge (=15 Blöcke) was ich aber leider dann nicht mehr habe sind Eingänge um über Dipschalter Konfigurationen zu ändern.

    Irgendwie habe ich das Gefühl ich brauch ein BUS-System.

    - - - Aktualisiert - - -

    nur wenn Strobe high ist werden ja die Daten in den Speicher und von dort aus wenn OE high ist an die Ausgänge gegeben.
    Wenn ich alle 15 Schiebregister mit Clock und Data Parallel hänge, OE auf permanent high lege und den Strobe separat für jeden Block mit einem Port am Atmega verbinde, müsste ich mit deutlich weniger auskommen. oder habe ich hier einen Denkfehler ?

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Zitat Zitat von mollyman Beitrag anzeigen
    Wenn ich alle 15 Schiebregister mit Clock und Data Parallel hänge, OE auf permanent high lege und den Strobe separat für jeden Block mit einem Port am Atmega verbinde, müsste ich mit deutlich weniger auskommen. oder habe ich hier einen Denkfehler ?
    Hatte ich das nicht gesagt?

  8. #8
    RN-Premium User Fleißiges Mitglied
    Registriert seit
    19.05.2012
    Ort
    Sigmaringen
    Beiträge
    169
    Öhm.... mal so ein kleiner einwurf...
    Schau dir mal das Datenblatt an vom "MAX7219cng".
    der kann "je" 8Stk 7-Segmentanzeigen ansteuern und ist Kaskadierbar.
    und... die gesamte Kaskade wird nur über 3 Drähte angesteuert (Data IN / Load Data / Clock)
    Für Bascom gabs da glaub ich sogar schon ein vorgefertigtes Komando fürs senden der daten.
    (... müsste aber mal nachschauen in meinen alten projekten)
    JAAAA... Microchips kann man essen... aber der Geschmack ist furchtbar.

  9. #9
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.183
    Zitat Zitat von mollyman Beitrag anzeigen
    Ich habe jetzt noch einiges recherchiert

    Somit soll ein Segment aus 6 in Reihe geschalteten LEDs bestehen. Angeschlossen an 15 V Betriebsspannung.
    So ergeben sich pro Segment 15 V und max 140 mA.
    Wenn man sechs LEDs in Reihe schaltet, sind es pro Segment immer noch 20mA und nicht 140.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  10. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    07.03.2011
    Beiträge
    1.397
    Zitat Zitat von Hubert.G Beitrag anzeigen
    Wenn man sechs LEDs in Reihe schaltet, sind es pro Segment immer noch 20mA und nicht 140.
    Das die 140mA pro Digit gemeint sind, ist doch klar.

    Schau dir mal das Datenblatt an vom "MAX7219cng".
    Das die mit max. 5,5V die 6 LEDs in Reihe nicht schalten können, ist auch ebenso klar.

    Ubd ebenso klar ist, daß man selbstverständlich eine (ziemlich) lange Kette von Schieberegistern bauen kann, die ohne Glitch am Ausgang komplett neu geladen werden können. Insbesondere, wenn es sich um solche
    The 74HC/HCT4094 are 8-stage serial shift registers having a storage latch
    handelt.

    Es geht hier um 126 Digits, wenn man Dezimalpunkte mit einrechnet, um 1008 Segmente. Eine Kette von Schieberegistern mit ca. 1000 Taps kann man bei 1 MHz (und die Schieberegister in HCMos können leicht das fünfzigfache) tausend mal in der Sekunde neu beschreiben.

    Ich würde die Idee mit den BCD Decodern knicken. Ich würde mich auch nicht darauf verlassen, daß ich mit 20mA bei 12V bis 15V auskomme, bevor ich nicht ein Digit als Prototyp aufgebaut und bei vollem Sonnenlicht getestet hätte.

    Mein Vorschlag wäre:

    ein Schieberegister pro Digit (egal ob 4094 oder 595, aber HC an 5V) und einen ULN2803 als Treiber. Da ist sowohl beim Strom (kann in Summe, also pro Digit, 500mA und mehr) als auch bei der Spannung (50V) ausreichend Reserve. So kann man auf jedem Digit-Display nicht nur Zahlen, sondern alles anzeigen, was sich aus den Segmenten darstellen läßt.

    Für die 126 Digits wird im RAM des µC ein Array aus 126 Bytes aufgebaut. Wenn immer sich dort etwas geändert hat, wird es (das Array) komplett per Bitbanging oder per SPI in die Schieberegister übertragen und am Ende gelatched. Dazu braucht man drei Signale: Clock, Daten und CS#/Latch.

    Das ganze ist für kleines Geld zu realisieren. 74HCwas_auch_immer und ULN2803 kosten nicht viel. Der 7-Segment Decoder wird in Software realisiert.

    Was man noch überlegen könnte, wäre die drei Signale wegen der Leitungslänge zu jedem Displayblock über RS422 Treiber zu führen.

    My 2¢,

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. [ERLEDIGT] Atmega 644 & atmega8 parallel am ISP ... Reset beider atmega notwendig ..
    Von Ritchie im Forum AVR Hardwarethemen
    Antworten: 2
    Letzter Beitrag: 29.03.2013, 12:18
  2. ATMEGA 32-16 DIP :: ATMega AVR-RISC-Controller, DIL-40 |ISP-KABEL ?
    Von welt-von-max im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 3
    Letzter Beitrag: 16.05.2011, 12:41
  3. Taktgenerator (mit Atmega) für Atmega644 mit Low-Freq Fuse
    Von C_Classic im Forum AVR Hardwarethemen
    Antworten: 4
    Letzter Beitrag: 09.05.2010, 16:10
  4. LCD Display mit KS0073 will nicht mit ATmega 32
    Von Maverick83 im Forum C - Programmierung (GCC u.a.)
    Antworten: 0
    Letzter Beitrag: 02.10.2006, 20:48
  5. 7 Segmentansteuerung über I2C oder seriell ?
    Von MaikR im Forum Controller- und Roboterboards von Conrad.de
    Antworten: 5
    Letzter Beitrag: 22.08.2006, 22:25

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •