![]() |
CMOS 4056 7-Segment Driver Problem
Moin, ich habe, wie der Titel verät, ein Problem mit dem CMOS 4056.
Ich möchte ihn benutzen, um ein Signal vom STK-500 (low-0V. high-5V) zu übersetzen. Habe nach Datenblatt a-g von Display und Driver verbunden, die Common GND-Pins des Displays auf eine gemeinsame Schiene und die dann mit 450Ohm geerdet (ergibt an den Segmenten dann 2V), 2°, 2, 2² und 2³ entsprechend mit den Pins vom STK. Dann VDD an die 5V des STK und VSS sowie VEE an GND. Die Disp. Freq auf GND, damit die outputs zum Display entsprechend auch High-Level sind. Strobe habe ich erstmal auch auf GND gezogen. Das Program auf dem ATmega im STK läuft, mit den onboard-leds zählt es wunderbar hoch und runter (leds auf Port C, 7-segm. auf Port C, identische outputs, kann die stecker auch vertauschen). Nur meine 7-Segment Anzeige tut seltsame Dinge: so steht erstmal ne ganze weile eine 0 da, dann kommt eine 7 die auf dem Kopf steht, dann eine 9 dann eine "kleine 0" (nur die oberen 4 Segmente), dann ein Strich, dann Blank, dann die 3 etc. Das ganze hat aber auch nicht wirklich ein System. Ich habe schon 3 verschiedene Cmos-Controller probiert, alle Patchkabel durchgemessen (0,04 ohm) und das ganze auch mit 3 7-Segmentern versucht (direkt an 0 und 2 V angeschlossen funktionieren alle Segmente). Danach habe ich mal verscuht, was passiert wenn ich die 2° auf den Strobe-Eingang lege, und alle Pins eins weiter setze, also 2² auf 2³ etc. Dann scheint die Anzeige sich zwar zuverlässiger zu verändern, aber vernünftige Werte bekomme ich immernoch nicht. Was mache ich da falsch? |
Hi Philharmony,
der 4056 ist ein LCD-Treiber, schau Dir bitte mal das Datenblatt an (findest Du z.B. bei www.ti.com. Warum willst Du einen BCD-zu-7-Segment-Treiber nehmen? Du kannst auch mit den Segment-Anschluessen der Anzeige ueber je Segment einen 220-Ohm Widerstand auf die Portausgaenge des Controllers gehen und die BCD-zu-7-segment-Decodierung im Controller vornehmen. Wenn Du unbedingt einen externen Decoder verwenden willst, schau Dir mal den CD4511 an. Jeden Ausgang ueber einen Widerstand auf je ein Segment legen, LE auf o legen und Bi und LT auf 1 legen. Das sollte dann funktionieren. Fuer jedes Segment benoetigst Du je einen Widerstand, einen gemeinsamen Widerstand in der Backplane-Zufuehrung ergibt unterschiedliche Helligkeiten je nach Anzahl der leuchtnden Segmente. :-( Viel Erfolg und Gruss, Holger |
Moin Holger.
Da das ganze einmal Nav/Com/ADF...-Panels werden sollen, habe ich mit dem Controller das Problem, dass mir die Pins knapp werden, von meiner ganzen Planung wollte ich recht gerne erstmal bei BCD-7-segm bleiben. Der 4056B (SGS-Thomson) ist doch ein BCD zu 7-Segment decoder der AUCH LCD kann (laut Datenblatt von Conrad), oder haben die LCD-7-Segmente eine andere Codierung als LED-7-segm.? Gut, später je ein Widerstand pro Segment ist klar, ich wollte das erstmal in Gang bringen. Datenblatt 1 und Datenblatt 2 |
Hi Philharmony!
Der 4056 ist in erster Linie fuer LCDs ausgelegt, das siehst Du an den Ausgangsstroemen pro Segment, die sind sehr niedrig. Ca. 3...5 mA. Die LEDs der 7Segmentanzeigen ziehen 10...20 mA pro Segment. Versuch´s einfach mal mit dem 4511, der 4056 ist sicherlich nicht die beste Wahl und hat LCD-features, die Du nicht brauchst. Der 4511 ist total easy in der Ansteuerung. BCD-code anlegen und es funktioniert. Viel Erfolg und Gruss, Holger |
Problem ist, wie ich grade nochmal gecheckt habe:
Die Driver geben mir einfach nicht die Logischen Zustände aus, die sie laut Datenblatt haben sollten. Beispiel: 1010 is 5, stimmt, aber 0111 ergibt dieses "kleine 0" anstatt 7. was stimmt denn da nicht? |
@ Holger, oohps, deinen zweiten Post hatte ich ganz übersehen.
Werd ich mir mal anschauen, danke. Gruss Phil |
Verdammte Axt, kann doch nicht wahr sein,
Jetzt das selbe Spiel mit dem 4511er. Alles schön laut Datenblatt angeschlossen. Sicherheitshalber alles nur auf 2V, VDD noch schön mit 100nF gegen Gnd gestützt. Und wieder: nur Müll! Wenn ich jetzt A B C oder D auf 2V hänge um eine 1 zu erzeugen, den rest schön auf GND, dann passiert gar nüscht. Auf 5V leuchten ranomized verschiedene Segmente bedrohlich hell. Wenn ich dann auch noch LT (lamp Test) auf gnd Hänge, dann geht die LED der Stromversorgung aus, ergo Kurzschluss...??? HÄ? Kann doch nicht so schwer sein, bin ich blöd? Was läuft denn da so schief? |
Hi Philharmony,
wie zählst Du denn deine Eingänge??: A - B - C - D oder D - C - B - A ? In einem Deiner vorangegangenen Beiträge schreibst Du: Die Driver geben mir einfach nicht die Logischen Zustände aus, die sie laut Datenblatt haben sollten. Beispiel: 1010 is 5, stimmt, aber 0111 ergibt dieses "kleine 0" anstatt 7. Nach erster Zählweise ist : 1010 = 5; 0111 = D = dez. 14 (Blank) Nach zweiter Zählweise(wie normal üblich) : 1010 = A oder dez. 10 (= Blank, da der 4511 nur von = bis 9 darstellen kann) 0111 = 7 (richtig) Ist Dein Powersupply stabil?? Welchen Vorwiderstand verwendest Du für die 7 Segmentanzeige?? (4511 = max Ausg.Strom = 25mA) Bei ca 3,5 V am Ausgang solltest Du aber schon 150 bis 180 Ohm verwenden). Hoffe das hilft Dir etwas. gruß Peter |
habe noch etwas vergessen:
sind die Eingänge LT / BI auf +5V gelegt? Ist LE auf VDD level? Ist sichergestellt, dass die Logicpegel an A;B;C und D vor dem LE (+5V) stabil anliegen? ( Sonst macht das Latch u.U. Blödsinn) Was passiert falls Du LT auf Masse legst? Da müssen alle Segmente leuchten. Bei BI auf Masse ist alles dunkel. Ansonsten fällt mir dazu eigentlich nichts mehr ein. Gruß Peter |
Habe mir gerade nochmal Deinen Beitrag durchgelesen und komme zu dem Schluss, dass Du sehr wahrscheinlich ohne Vorwiderstand Stombegrenzung)an der 7segment Anzeige arbeitest. Da geht natürlich beim Lampentest der 4511 in die Knie auf Grund seiner internen Schutzschaltung.
Ausserdem bei 2V kannst Du kein IC richtigtesten. Minimum sind mindestens 3,5 Volt. Durch Dioden / Transistoren gehen intern nochmal ca. 0,8 V und mehr verloren und da spielt jede Logik verrückt. Nimm´mal einen 180 Ohm Widerstand in Reihe zu der Kathode und versorge das IC mit 5V, dann läuft das (vorausgesetzt der 4511 hat sich noch nicht in die ewigen Jagdgründe verabschiedet). Gruß Peter |
Ich habe die Kathode der 7 Seg. mit 260Ohm abgesichert.
Den Rest werde ich nochmal in Ruhe Probieren, habe mir jetzt auch ein Voltcraft Labornetzteil besorgt und verscuhe es damit nochmal. Danke schonmal für die Hilfe |
Also wenn ich LE auf Masse lege wird das Ding sofort heiss wie Sau, und als ich einen der Logikeingänge auf 5V legen wollte gavs sofort nen kurzen???
BI und LI sind auf 5V. Der Ganze Controller läuft auch auf 5V (also VDD=5V), VSS dementsprechend auf GND. Zwischen die Common Kathode des 7Segm. und GND habe ich 270Ohm gelegt und die 7 Eingänge entsprechend mit den 7 Ausgängen des 4511 verbunden. Kaputt? |
Hi,
also wenn das IC heiss wird ,hat das bei Diner Beschaltung (270 Ohm)vermutlich einen Defekt. Die Eingänge LT / BI / LE sollte man eigentlich mit einem Vorwiderstand von etwa 10k Ohm an + bzw. Masse legen. Da dies ein C-Mos IC ist dürfte sich das kaum erwärmen (max. Ausgangsleistung lt. DB 50 mW) Ich fürchte das IC is defekt. GRuß Peter |
Ich habe es testweise auch nochmal mit einem der noch nie benutzten 4056er versucht, auch hier tut sich nur kurz was, aber wieder Zeichen, die gar nicht vorgesehen sind (die Oberen 4 Segmente zb, oder ein "Unterstrich").
Kurz danach roch es wieder verbrannt und diesmal wurde die VDD-Leitung extrem heiss. Habe alles Durchgemessen an der Schaltung, nichts gefunden, keine Brücken, keine Wackler. Saubere stabile 5V aus dem Voltcraft. Ich gebe auf. Habe den ganzen sch*** in die Ecke gefeuert und mich grade noch beherrscht nicht auch noch drauf rumzutrampeln. Ich dachte ich wäre halbwegs intelligent, aber warum das da alles nicht tut verstehe ich einfach nicht. So wird das mit dem Sim jedenfalls nichts... |
Hallo ,
aber aber,wer wird denn gleich aufgeben. Zunächst mal ist festzustellen, dass hier eine ganz grobe Sache vorliegt. Vermutlich sind alle ICs zerschossen. Anders lässt sich bei korrekter Beschaltung (richtige Puíns etc)die hohe Stromaufnahme (vermutlich Kurzschluß) nicht erklären. Auch wenn Du den 4056 nie vorher in Betrieb hattest kannst Du nicht 100% davon ausgehen, dass das IC in Ordnung ist. Beides (4056 + 4511)sind C-Mos Typen und daher äusserst empfindlich gegen statische Entladung. Warum baust Du nicht einfach FSBus nach, das ist erprobt und läuft eigentlich auf Anhieb sofern die Platinen saubergeätzt und gelötet sind. Richtige Bestückung natürlich vorausgesetzt. Egal, falls Du möchtest schicke mir das Zeug zu und ich bringe es für Dich zum Laufen. Ferndiagnosen sind halt immer schwierig. Einfach PN schicken. Gruß Peter |
Hab mich wieder beruhigt.
Werde mir am Wochenende nochmal ne Handvoll 4511er besorgen (gibt es noch alternativen die nicht so empfindlich sind? TTL? 78xx oder 74xx?). FSbus schied bei uns aus, weil wir eigene Software entwickeln. Danke für dein Angebot, ich werde es aber erst nochmal versuchen. Muss doch wohl gehn, ich hab in der Schulzeit ganz andere Schaltungen zum laufen gebracht *grml* |
Hi,
in TTL gibt es z.B. 7448 oder 74248 in LS oder Normalausführung. Gruß Peter |
Hm, und ausgerechnet die finde ich bei Conrad nicht.
Ich seh so langsam schwarz, ich kann nämlich über die Hochschule nuir bei Conrad bestellen... |
Hallo,
warum auf TTL ausweichen, die machen ein Cockpit mit vielen Anzeigen zum Eierkocher. Ausserdem ist C... eine Apotheke. Bei R.......t ist alles einen schönen Tick billiger. Bleib´bei C-Mos. Das muss funktionieren. Schliesse jedes Segment der Anzeige über je einen 180 Ohm Widerstand (7x)(jedes Segment ist j eine einzelne Diode) an. Bei nur einem Widerstand in der gemeinsamen Kathodenleitung passiert zwar auch nichts, aber je nachdem wie viele Segmente leuchten wird die Helligkeit stark schwanken. Die Eingänge mit 10kOhm beschalten (nach + bzw. -, je nachdem auf welchen Logikpegel sie zu setzen sind). 5 Volt DC (VCC und VDD bzw. VSS nicht verwechseln) die PIN belegung richtig zählen: bei Draufsicht rechts von der Kerbe bzw. Punkt liegt immer PIN1 und gezählt wird gegen den Uhrzeigersinn. Aber das weisst Du ja sicher ;-)) Dann muss es laufen ohne Deine Stromrechnung und Zimmertemperatur in die Höhe zu treiben. Da ist nichts geheimnisvolles an C-Mos. Immer schön eine Hand an der Wasserleitung, sprich Schutzleiter o.ä. beim Berühren der ICs und dann sollte alles funktionieren. Gruß Peter |
Jetzt bin ich verwirrt.Laut Dadenblatt is Pin 1 LINKS oben, VDD rechts oben???
Also ich kann logische Null endweder an die Masse legen oder über 10KOhm gegen 5V? Wie mache ich das denn wenn ich Ausgangspins vom ATmega direkt auf die Eingänge schalte, da ist bei einer 0 ja gar keine Spannung dran. Ist das für den Cmos dann undefiniert? In der Schule haben wir nur mit TTL gearbeitet und das lief immer, seitdem hab ich damit nichts mehr zu tun gehabt und muss grade alles neu lernen, darum sorry für meine blöden Fragen ;) |
Hallo Philharmony,
das mit dem Bestimmen des Pin 1 ist schon richtig. Je nachdem, wo die Kerbe hinzeigt - oben (Pin1 links davon) - unten (Pin1 rechts davon) (Draufsicht). Halte Dich einfach akribisch ans Datenblatt. Also hier ein paar Grundsätze beim Umgang mit C-Mos: Beim Löten auf geerdete Lötspitze achten bzw. besser IC sockeln. 1.) Alle Eingänge mit 10kOhm - können bis etwa 100k Ohm sein - je nach benötigtem Logikpegel mit + oder Masse der Versorgungsspannung verbinden, denn unbeschaltet gibt es u.U. wilde Zustände bzw. kann das IC auch zu Schwingungen neigen. 2.)Falls Du verschiedene C-Mos Bausteine miteinander verbindest entfallen natürlich die sogenannten "Pull-ups (+) bzw. Pull-downs (-)" da die Bausteine i.d.R. interne Pull-ups besitzen. Es sei denn sie haben einen so genannten Open Collector Ausgang. Pull-downs hingegen sind eher unwahrscheinlich, daher offene Eingänge (also nicht direkt an ein anderes IC führende) immer mit min. 10k bis max.100k gegen Masse oder + (abhängig vom Lokigpegel!) abschliessen. C-Mos sind hochohmige Bauteile (Meg Ohm Bereich). Also der ATMEGA entspr. Ausgang kann natürlich direkt mit dem Eingang des z.B. 4056 / 4511 verbunden werden, da im Atmega der entspr. Abschluß gegeben ist. Hoffe das bringt ein wenig Licht ins C-Mos Dunkel. Gruß Peter |
Zitat:
Ein paar Fragen hätte ich noch, den Schaltungsaufbau betreffend: 1.) Die 5V des Netzteils können direkt an VDD oder sollte da noch ein Widerstand oder sonst ein Bauteil dazwischen? Mir wurde gesagt, ich soll VDD immer noch über einen Kondensator mit Masse verbinden um die Spannung zu stabilisieren. Einer meinte 100nF, ein anderer meinte das sei viel zu wenig. Frage also: Stützen: ja oder nein und wenn ja, welche Cap.? 2.) Zum Schaltungsaufbau: Der Atmega soll auf einem Port (8bit) mit der einen Hälfte den BCD-Code der Segmente ausgeben (also 0-9) und mit der anderen dann die 0-9 für den Multiplexer um nach einander alle 10 Displays anzusteuern. Also die Daten direkt vom Atmega auf ALLE Displays? Also wirklich "10 Drähte" an den Pin und zu jedem 4511er an einen BCD-Eingang? Die 4 Multiplexer-Pins dann mit einem Demux-Baustein verbinden. Die 10 Ausgänge dann negiert mit je einem LE-Eingang der 10 4511er verbinden. Denn wenn ich das richtig verstanden habe, nimmt der nur BCD an, wenn LE auf 0 steht, bei 1 speichert er den letzten Wert. Die 7 Ausgänge des 4511 dann mit 180Ohm dazwischen auf die Display-Pins, und die gemeinsame Kathode direkt auf GND, da wo auch VSS und evtl VEE dranhängt sowie die GND-Pins des ATmega. LT soll bei bedarf gebraucht werden, und hängt über einen Schalter an 5V, BI hängt einfach immer an 5V weil ich den nicht brauche. Ist das so richtig und machbar? |
Hallo,
zu 1.) Beide haben recht. Die 100nF sind am besten und kürzestmöglich zwischen die Pins der Stromversorgung jedes einzelnen ICs zu legen: also von VCC nach VSS. Dies dient zur Spike- und Schwingungsunterdrückung. Falls das Netzteil nicht längsstabilisiert ist (wie die meisten Stechernetzteile mit Trafo (Billigversion)) dann hilft ein zusätzlicher Elko von mehreren 100 uF der Glättung der Restwelligkeit. Zu 2.) zum Atmega und dessen Programmöglichkeiten kann ich nicht viel sagen. Aber er sollte schon 10 C-Mos Eingänge treiben können. Notfalls mal im DB nach dem Fanout suchen. Soweit ich Deine Schaltungsbeschreibung verstanden habe sollte es so funktionieren. Der LE Eingang wird aber gepulst und zwar immer dann auf high gelegt wenn gültige BCD Daten anstehen. Dann geht der Eingang wieder auf Low. usw. Gruß Peter |
Wo müsste ich den Elko dann noch anschliessen? Zwischen 5V und Masse des Netzteils?
Also LE=1 ist "lesend", LE=0 "sperrt" die Eingänge, es kann also ein beliebiger BCD-Code anliegen, es wird das angezeigt, was bei LE=1 eingegeben wurde? Heisst ich muss die Ausgänge des Multiplexers nicht negieren? Dann werde ich mal wieder eine Bestellung aufgeben und hoffen dass es dann so tut wie ich mir das vorstelle ;) Danke nochmal. |
Hi,
den Elko schliesst Du am besten auf der zu versogenden Platine zwischen Masse (-) und + Versorgungsspannung an. Ok, der LE Eingang ist pos. Logik und daher bei Pegel =1 aktiv. Dieser dient dazu, dass nur gültige Daten übernommen werden. Die Steuerung oder clock, wann gültige, stabile Daten zur Anzeige vorliegen, muss vom Kontroller kommen. Mit dem BI (Blank Input, neg Logik, erkennbar an dem Strich über dem B und I) kannst Du das Display durch ein Rechtecksignal (pegel = 0 = aus, 1 = an) kurzzeitig aus- und anschalten und somit in der Helligkeit variieren. Der Eingangsstrom ist übrigens bei ca 1 uA und damit auch bei 10 Stück für den Atmel kein Problem diese zu treiben. Also dann mal frisch ans Werk. Viel Erfolg Gruß Peter |
Ich könnte die Helligkeit aber auch durch variieren von VDD variieren oder?
|
Hi,
nur bedingt, denn dabei veränderst Du auch die Versorgungsspannung des 4056 oder 4511. Dieser braucht aber zur fehlerfreien Arbeit seine 5V. Mit der LED Versorgungsspannung die Helligkeit verändert zu wollen geht allenfalls mit einem IC das open Collector Ausgänge anbietet. Dann brauchst Du aber Common Anode Displays. Da ist es einfacher einen kleinen Rechteckgenerator mit einem timer IC zu bauen (z.B. NE555)bei dem man über die Pulsfrequenz bzw Breite den Treiber strobed. Ausserdem muss man keine Leistung verbraten mit Vorwiderständen bzw. Längsreglern. Als Beispiel kann ich halt immer nur FSBus ranziehen. Dort ist das sehr schön gelöst. (Rel. wenige Bauteile und sehr flexibel) Aber ich verstehe Deine Beweggründe gut: unabhängig selbst etwas auf die Beine zu stellen. Nur weiter so! Ich helfe Dir gerne soweit ich kann. Gruß Peter |
nie vergessen
LEDs funzen net wie Glühlampen,
sondern Helligkeit ist von eingeprägtem Strom abhängig. Strom einprägen wird vom Vorwiderstand gemacht. Immer einen Widerstand in Serie (in Reihe) zur LED schalten. Pulsweitenmodulation ist zu teuer und man muss trotzdem den Strom begrenzen! -----[_____]------|>|----- -----Widerstand----LED---- kefali |
@ Kefali?
Was ist der eingeprägte Strom? LEDs kann man doch sehr wohl zwischen Vmin und Vmax betreiben wobei doe Helligkeit variiert. Das Widerstand in Reihe dazu ist schon klar. |
Hi,
das mit dem eingeprägten Strom bezeichnet eine Konstantstromquelle, die unabhängig vom Lastwiderstand (in gewissen Grenzen) immer den gleichen Strom fließen lässt. Wird am einfachsten mit 1 Transistor 1 Zenerdiode und einen Widerstand realisiert. Wieso soll Pulsweitenmod. zu teuer sein? Die lässt sich doch im Atmel programmieren. Ausserdem ist dies der eleganteste Weg um die Helligkeit quasi verlustlos zu steuern. Begrenzt muss der max. Stom durch die LED immer mit einem Widerstand werden. Wie in meiner vorigen Antwort dargelegt geht das mit Vmin und Vmax nur innerhalb kleiner Grenzen, ausser mit open Collector ICs. Gruß Peter |
Im Gesamtsystem 737-Flightdeck wird es nachher wohl so aussehen, dass man die Helligkeit der Displays ja regeln kann, einmal oder die Panel-Light-Regler und dann über den Annunciator-DIM-Switch.
Die Panelbeleuchtung sollte nicht auch noch "Flackern", sonst hat man beim herumschauen diesen "Stroboskop-Effekt". Daher wird die über eine Variable Spannung gesteuert. Der Atmega hat ja mehrere AD-Wandler, an die kann ich ja die Steuerspannung anlegen (klar, innerhalb der Belastungsgrenzen) und für die 7Segm. in einen Pulse umrechnen. Da muss ja quasi ein "An bis Zähler abgelaufen, dann aus bis Zähler abgelaufen" einfach nur verschiedene Zielwerte bekommen und fertig is das ganze. Aber das kommt später, jetzt muss ich erstmal langsam anfangen, mal wieder was fürs Studium zu tun...;) |
Hi,
bei allen mir bekannten Displays die kommerziell in Geräten eingesetzt werden wird die Helligkeit über den Strobe Eingang geregelt. Natürlich muss die Wiederholrate entspr. groß sein, sonst hast Du eine Disco Beleuchtung. Gruß Peter |
Klar, die Displays gehen über den Takt, aber die normalen LEDs für das Backlighting der Panels, die wollte ich Spannungsgeregelt machen.
Oder würdest du die auch über den Takt steuern? |
Hi,
die LEDs regelt man vorzugsweise über den Strom (evtl. variable Konstantstromquelle). Ausserdem haben die verschiedenen LEDs (Farben)unterschiedliche Schwellspannungen. Da wird es ohnehin schwierig gleichmäßige Leuchtstärke regelbar zu gestalten. An den Leds würde ich nichts regeln. Die sind an oder aus. Ggf. kannst Du auf superhelle LEDs zurückgreifen, falls die max. Helligkeit nicht passt. Im echten Cockpit wird mit Lampen gearbeitet. Das ist wesentlich einfacher zu beherrschen. Gruß Peter |
Alle Zeitangaben in WEZ +2. Es ist jetzt 17:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag