Hallo zusammen
ich versuche gerad das Datenblatt des Latch 74HC573 zu verstehen.
Mit ihm möchte ich eine Porterweiterung realisieren.
Ich möchte drei 74HC573 "laden" und die Daten dann gleichzeitig
am Ausgang bereitstellen.
Transparent Modus habe ich verstanden, aber mir ist nicht
klar, ob es möglich ist, das Register auch im hochohmigen Zustand, als
OE = H und LE = H zu laden.
Die Latches machen nichts weiter als den Zustand der Datenleitungen
durch ein Steuersignal zu übernehmen und dieses zwischenzuspeichern wenn
das Steuersignal inaktiv wird. Wenn dieses Steuersignal immer aktiviert
ist übernehmen sie auch die neuen Daten immer. Aus dem Ding wird dann
quasi nichts anderes als ein Bustreiber.
Wenn die Ausgänge der Latches inaktiv sind kannst Du sie natürlich auch
mit Daten beschicken.
Peter schrieb:> Darf eigentlich in den Ausgang dieses Latches ein (kleiner) Strom> fließen, oder zerstöre ich es dann??
Wenn Du dich an die im Datenblatt angegebenen Grenzen hältst, darfst Du
das.
Gruß Dietrich
Peter schrieb:> Ist das der input clamping current (+-20mA)???
Wenn das so im Datenblatt steht, kann das schon so sein.
Aber beachte: Es gibt mehrere Hersteller diese Typs. Die müssen nicht
alle gleich sein mit ihren Spezifikationen.
Beachte 2: Wenn das bei "absolute maximum ratings" steht, heißt das,
dass das IC das überlebt (Zerstörgrenze). Ob er bei diesen Strom aber
noch richtig arbeitet, ist damit nicht gesagt.
Gruß Dietrich
Der "clamping current" ist der maximale Strom, den die Schutzdioden
vertragen, wenn Du an einem der Aus- und Eingänge eine Spannung
außerhalb der maximal zulässigen Spannungen -0.5V bis Vcc + 0.5V
anlegst.
Innerhalb der erlaubten Spannungen:
IO DC Output Source Sink Current Per Output Pin ± 35 mA
Die Summe aller Ouputs darf aber
ICC or IGND DC VCC or Ground Current ± 70 mA
nicht überschreiten
Du verbrennst den Strom aus R1 und R2 über Q0(sink). Ob das geht, kann
man nur sagen, wenn die Widerstandwerte bekannt sind. Eine Schaltung mit
2 Transistoren, um den Ausgang von Q0 phasengleich auf 7V hochzusetzen,
wäre in jedem Fall besser.
Peter schrieb:> Ich habe mir das in etwa so vorgestellt, da ich eine Pegelwandler> mit dem Latch ansteuern möchte, und mir nicht sicher> was ob es so funktioniert.
Im Prinzip geht die Schaltung. Aber wo siehst Du ein Problem: bei "high"
fließt doch kein (nennenswerter) Strom, dann ist die Basis-Emitter-Diode
gesperrt. Nur bei "low" muss der Ausgang Strom ziehen - aber das sollte
er doch können ;-).
Einschränkungen siehe Klaus2m5.
Gruß Dietrich
Hallo, mein Problem bestand darin, dass bei Low ja ein Strom über
den Emitter in meinen Ausgang fließt und ich mir nicht sicher war,
ob das "erlaubt" ist, bzw wie groß der Strom sein darf.
Aber ich finde den Vorschlag von Klaus2m5 interessant. Den da kann ich
an der Basis des zweiten Transistors die Ausgänge Q anschließen und dann
stellt sich das Problem mit einem Stromfluss in den Ausgang des Latches
nicht.
Allerdings benötige ich dann 24 zusätzliche Transistoren, was ein wenig
knifflig wird die auf der Platine unterzubekommen.
Peter schrieb:> Hallo, mein Problem bestand darin, dass bei Low ja ein Strom über> den Emitter in meinen Ausgang fließt und ich mir nicht sicher war,> ob das "erlaubt" ist, bzw wie groß der Strom sein darf.
Ist natürlich erlaubt und steht im Datenblatt.
In meinem alten Datenbuch von National Semiconductor steht das unter
"Maximum Low Level Output Voltage" (Vol=Voltage Output Low).
Da steht z.B. für Vcc=4,5V, Iout<=6,0mA: Vol<=0,33V im gesamten
Temperaturbereich. Das sollte für die Dimensionierung von R1 doch
ausreichen.
Gruß Dietrich
Übrigens: welche Daten brauchst Du denn am Ausgang?
Low-/High-Spannungspegel, Strom, Geschwindigkeit?
Dann gibt es ggf. einfachere (integrierte) Lösungen.
Gruß Dietrich
Ich möchte mir einen LED-Globus bauen. Habe im 1. Lehrjahr im Betrieb
einen mit weißen LEDs gebaut und fand es eine nette spielerei und nun
möchte ich einen für mich zuhause.
Meinen möchte ich jedoch mit 80 rgb-Leds (10 achter Blöcke)realisieren.
Später sollen die Bilder dann über Bluetooth übertragen und dargestellt
werden.
Gedacht habe ich mir das so, dass ich 8 Pins von mC mit 3 74HC573 (je
eins für jede Farbe) verbinde. Jeder Ausgang steuert also eine Farbe
einer Led.
D.h. alle Latche auf Highimoedanz, erstes laden dann zweites laden und
drittes laden. Wenn alle geladen sind, ausgänge freigeben. Diese
High/Low-Pegel, schalten dann je einen Transistor, der dann die Led zum
leuchten bring.
Ich möchte die Schaltung so planen, dass sie auch PWM fähig ist.
Wenn ich meinen Schaltpla vertig hab, lad ich ihn mal hoch, weil ich
nicht weiß ob es so verständlich genung ist.
Somit sollte Pegelwandler als relativ schnell sein, insbesondere, da die
Schaltung auch PWM fähig sein soll.
Peter schrieb:> Ich möchte die Schaltung so planen, dass sie auch PWM fähig ist.
PWM auf einem LED-Globus wird, vorsichtig ausgedrueckt, sehr schwierig
werden!
Peter schrieb:> Meinen möchte ich jedoch mit 80 rgb-Leds (10 achter Blöcke)realisieren.
1. Wieso brauchst Du dafür 7V?
2. Bei Deiner Schaltung fließt der LED-Strom direkt in den Ausgang des
HC573; je nachdem wieviel Strom Du treiben willst, ist der HC573 dafür
eventuell zu schwach.
3. wenn Du wegen des Stromes einen Treiber brauchst, wäre eine
Emitterschaltung besser; Du musst nur das Ansteuersignal invertieren.
4. Du kannst auch fertige (integrierte) Treiber verwenden, z.B. ULN2803.
Gruß Dietrich
So hier mal meinen vorläufigen Schaltplan.
Die 10 PNP-Transistorn (hinten) steuern welcher 8er-Block gerade
leuchtet. Dies geschieht über das durchtakten der Schieberegister.
Über die jeweils 8 PNP-Transistoren pro Farbe werden die einzelnen LEDs
angsteuert (Transistoren werden mit den daten der Latche geschalten).
Der unterste Transistor (NPN) soll zur Feineinstellung der Helligkeit
für jede Farbe dienen.
Ok 7V sind wohl ein wenig hochgegriffen :-), habe mich noch nicht über
passende Festspannungsregler informiert. Aber laut Datenblatt hat die
blaue und grüne LED Umax = 3,5V. Und wenn ich mich nicht verrechnet
habe, komme ich so auf Umaxled + 3* Uce = 5,6V.
Das heißt doch, dass ich mit meinen 5V vom uC (bzw. Latch,
Schieberegister) die PNP Transistoren nicht mehr vollständig sperren
kann.
Der HC573 ist zu schwach, weil im worst case 8*20mA fließen :-(. Deshalb
möchte ich den Spannungsumsetzer mit zwei Transistoren NPN und PNP
realsieren.
An den ULN habe ich auch schon gedacht, aber den gibts soweit ich weiß
nur als NPN-Variante und da ich an meinem "Dimm-Transistor" hänge, muss
ich mir wohl mit einzelnen PNP aushelfen.
Ich hoffe man kann etwas auf dem Schaltplan erkennen.
Für Vorschläge bzw. Verbesserungen bin ich sehr Dankbar.
Peter schrieb:> An den ULN habe ich auch schon gedacht, aber den gibts soweit ich weiß> nur als NPN-Variante
Nein, es gibt auch die UDNxxxx. Die schalten "+".
Allerdings ist bei diesen Typen zu berücksichtigen, dass sie relativ
hohe Sättigungsspannungen haben (Darlington). Wenn die
Versorgungsspannung hoch genug ist, ist das natürlich kein Problem.
Gruß Dietrich
Stimmt vielen dank.
Aber die könnten in Bezug auf PWM ein langsammes Schaltverhalten haben
(Turn on 1us, Turn off 5us). Einzelne Transistoren sind doch schneller
oder?
Und wie Thomas schrieb sollte ich glaub auf jede us achten.
Peter schrieb:> Ich habe mir das in etwa so vorgestellt, da ich eine Pegelwandler> mit dem Latch ansteuern möchte, und mir nicht sicher> was ob es so funktioniert.
Das ist OK. Ein bekannter Pegelwandler in Basisschaltung des
Transistors. Sie hat nur Spannungsverstärkung, die Stromverstärkung ist
geringfügig kleiner als 1.
Hallo Peter,
> Und wie Thomas schrieb sollte ich glaub auf jede us achten.
so in etwa. Man kann sich die Sektorzeit recht einfach ausrechnen. Sagen
wir mal du willst 80x200 pixel auf dem Globus, also 200 Sektoren, und
eine Frequenz von vielleicht 10Hz. Dann dauert ein Sektor 500
mikrosekunden.
In dieser Zeit musst/willst du PWM machen. Oder anders gesagt, du teilst
einen Sektor in weitere Unterabschnitte. Rein rechnerisch kommt wohl auf
fast 8bit pro Farbe, wenn ich jetzt an SPI mit 4 MHz denke.
Aber:
1. Aufgabe: Diese Daten musst du schnell genug schicken und auch
vorhalten koennen ... musst du wissen.
2. Aufgabe: Die PWM musst du dir wohl selber schreiben. Ziel dabei waere
es, die Farbstufen gleichmaessig ueber den 'Untersektor' zu verteilen.
D.h. zum Beispiel sollte die niedrigste Farbstufe (nur 1x high) in der
Mitte des Untersektor sein usw..
3. Aufgabe: Ob dieses langsame PWM, denn mehr als einen Zyklus wirst du
wohl nicht schaffen, ueberhaupt vernuenftig aussieht bei einer bewegten
LED!
Und selbst wenn: vom Gefuehl her wuerde ich sagen, mit einem normalen MC
kaum zu schaffen. Und dann noch 'Luft' fuer Bluetooth ... puh.
Hey, ich will dir aber nicht den Spass verderben!
Viel Erfolg, Thomas
Haha ja wird wohl nicht einfach :) aber einen Versuch ist es Wert und
wenns nicht klappt, hab ich wenigsten einen Globus mit 6 Farben.
Kannst du mir evtl. einen Tipp geben, welchen Mc du verwenden würdest??
ICh dachte ich versuchs mal mit einem ATmega644 (20MHz). Allerdings kann
ich auch noch nicht abschätzen, ob der Speicherplatz reicht, denn für
eine PWM kommt ja zusätzlich noch einiges an Daten hinzu.
PS. Vielen Dank für die Unterstützung hier, ist echt Top.
Peter
Du solltest Dein Transistorgrab mal etwas aufräumen:
1. Die low side Transistoren können von den 573 direkt getrieben werden.
Die Daten müssen dann vor dem Laden der 573 invertiert werden, aber
immer noch besser als ein Transistorgrab...
2. Die high side Transistoren sollten pnp sein und ein npn Transistor
als Treiber würde reichen. Dann kannst Du wahrscheinlich alles mit 5V
versorgen. Eine Kollektorschaltung verliert 0,7V, eine Emitterschaltung
deutlich weniger.
3. Vor dem ersten Aufbau würde ich alles erst mal nur mit jeweils einer
Komponente testen, also ein 595, ein 573, ein Treiber auf jeder Seite,
das schont auf jeden Fall den Geldbeutel. Damit siehst Du sofort, ob die
angestrebte Helligkeit flimmerfrei erreicht wird.
Eine RGB-Matrix mit PWM auf einem ATMega644 ist in C oder Assembler
machbar, aber anspruchsvoll. Bevor das funktioniert, solltest Du Dich
erstmal mit kleineren Projekten an die Aufgabenstellung herantasten,
also Teilaufgaben wie PWM, Matrix und Farbsteuerung erstmal getrennt
programmieren.
Und nochmal meine Frage:
Klaus 2m5 schrieb:> Du meinst so was hier?:> http://www.mikrocontroller.net/articles/POV-Display
Wenn Du sowas machen willst, kann nicht schon die LED-Ansteuerung als
Matrix erfolgen, denn dann bleibt wirklich zu wenig Leuchtzeit auf einer
Position der LED übrig, quasi eine dreidimensionale Matrix: Spalte,
Reihe und Rotationsposition. Dann noch PWM als 4. Dimension.
Ach und eine Bitte noch. Das nächste Mal bei einer Frage wie "wieviel
Strom kann ein 74HC573 am Ausgang vertragen" bitte gleich alle
Hintergrundinformationen liefern, wie z.B. "Ich will LEDs in einer
Matrix ansteuern"
@Klaus
Du hast recht, was ich da mit den Transistoren angestellt habe ist Unfug
und wurde schon geändert, vielen Dank für den Hinweis.
Zur Ansteuerung, ich muss die Leds doch mit einer Matrix ansteuern, denn
meine Pinzahl am uC ist ja begrenzt, oder habe ich etwas falsch
verstanden??
Gruß Peter
Ich glaube, ich weiss was Klaus meint, denn das habe ich in deinem
Schaltplan auch nicht verstanden.
Die Frage ist: Werden alle 80 LEDs (*3 Farben) in einem Sektor zur
gleichen Zeit angesteuert oder willst du die auch noch 'durchtakten' ->
erst die ersten acht usw.? Wenn ja, dann wird das mit PWM noch eine
Stufe schwieriger (wenn nein, dann ist das immer noch schwierig).
Ok verstehe, ich möchte die 80 LEDs auch durchtakten, also 10 8er
Blöcke. Dafür sind die 10 Transistoren am Schieberegister gedacht.
Würde am liebsten alle 80 gleichzeitig anschalten, aber dann hätte ich
einen Strom von 80*3*20mA = 4,8 A und das scheint mir ein wenig viel zu
sein.
Aber wenn das durchtakten der Sektoren eurer Meinung nach die PWM
unmöglich macht, muss ich wohl in den sauren Apfel beißen.
Peter schrieb:> Zur Ansteuerung, ich muss die Leds doch mit einer Matrix ansteuern, denn> meine Pinzahl am uC ist ja begrenzt, oder habe ich etwas falsch> verstanden??
Grundsätzlich ja, aber wenn diese Matrix rotiert, gibt es ein paar
Probleme.
1. Bei der Rotation entsteh ein Versatz. im Prinzip siehst Du
- - - -
- - - -
- - - -
- - - -
2. Die Helligkeit nimmt mit der veringerten Aktivierungsdauer einer LED
ab, wie bei PWM auch. Also nur 1/10 der eigentlichen Helligkeit. Das
kann man begrenzt durch den maximalen Strom der LED bei Pulsbetrieb
wieder ausgleichen, also mit 100mA für 1/10 der Zeit und die LED
leuchtet, als ob sie mit 10mA betrieben würde.
3. Durch die Rotation befindet sich eine LED nur für begrenzte Zeit an
einer Stelle des Globus. Wenn Du 80 LEDs vertikal hast, dann würde ich
horizontal 160 Pixel ansetzen (die Hälfte sichtbar, also 80 x 80). Das
heist, 1 Pixel leuchtet nur mit 1/160 der Helligkeit einer einzelnen
LED, die ja schon durch die Matrix nur halb so stark leuchtet.
4. Damit es als zusammenhängendes Bild erkennbar ist, brauchst Du
mindestens 15 Hz Bildwiederholrate, was 900 UpM entspricht. Pro Pixel
müssen die Register 10 mal neu geladen und die Transistoren umgesteuert
werden. Also 160 Pixel x 10 Spalten x 15 Hz = 24000 Hz oder 41,6 µs pro
Pixel. Pro Umschaltung muss eine Pause von einigen µs eingehalten
werden, damit die Transistoren aus der Sättigung kommen, also weiterer
Helligkeitsverlust. Andernfalls kommt es zum Geisterleuchten
benachbarter LEDs.
Die Synchronisation mit dem Rotor ist auch nicht gerade trivial. Die
Veränderung der Rotation muss auf die Zykluszeit jedes Pixels
umgerechnet werden, am Besten durch eine Software PLL.
Die 160 Pixel x 10 Bytes (a 8 LEDs) x 3 Farben sind übrigens für einen 8
Bit µC schon eine beachtlliche Datenmenge von 4800 Bytes, die Du für den
Refresh im RAM vorhalten musst. Und da ist noch keine
Helligkeitsinformation (PWM) enthalten. Für ein übergangsloses
Umschalten brauchst Du nochmal die gleiche Menge RAM.
Der µC muss also 4800 Bytes x 15 = 72000 Bytes/s auf die Register
übertragen und gleichzeitig alle weiteren Aufgaben erledigen können.
Richtig, das mit den 10 Achter-Bloecken hattest du erwaehnt, hatte es
nur nicht so richtig verstanden.
Mhh, bin mir grad nicht sicher, ob das dann gut aussieht. Denn die LEDs
in einem Sektor (einer Spalte) leuchten dann leicht versetzt. Evtl.
faellt das aber nicht so sehr auf.
Zu PWM: Du muesstest dann in einem Achtel der Sektorzeit mindestens
einen Zyklus schaffen. Nach obiger Rechnung hast du dazu dann weniger
als 100 Mikrosekunden. Ich behaupte jetzt einfach mal, dass das nix
wird. (Lass mich aber auch gern von was Anderem ueberzeugen)
Nochwas anders, da du die 4.8 A erwaehnst (OK, nur im Extremfall). Bei
so einem Globus ist die Stromversorgung nicht zu unterschaetzen!
Ok das hört sich alles nciht gut an, muss zugeben, so ausführlich
habe ich da noch nicht durchdacht :-(.
Aber wo Probleme sind gibt es Lösungen, dauert bei mir nur manchmal
etwas länger.
Wäre ein zweiter uC der nur die PWM macht, eine Lösung?
Ja zu dem Schluss bin ich auch gekommen :-). Habe mir gedacht, ich
reduzier die Anzahl der LEDs auf die Hälfte (40). Tut zwar ein wenig
weh, aber ich bin auf dem Gebiet (3. Lehrjahr) nun auch nicht soo fitt,
dass ich mich
gleich mit solchen Problemen rumschlagen kann. Darum backe ich jetzt
erst mal kleine Brötchen, sammel Erfahrung und wer weiß vielleicht wird
ja irgendwann mal was aus nem größeren Globus.
Ich möchte mich nochmals für eure Hilfe bedanken.
Aber nur mal aus reiner Neugierde, wäre es prinzipiell möglich, zwei uC
so zu synchronisieren, dass einer die ersten 40 Leds ansteuert und der
andere die zweiten 40???
Peter schrieb:> Aber nur mal aus reiner Neugierde, wäre es prinzipiell möglich, zwei uC> so zu synchronisieren, dass einer die ersten 40 Leds ansteuert und der> andere die zweiten 40???
Prinzipiell möglich bestimmt, aber ob sinnvoll, ist eine andere Sache.
Denn das Synchronisieren braucht ja auch Prozessorleistung (HW+SW).
Da wäre zuerst wohl ein größerer und schnellerer µC zu empfehlen.
Gruß Dietrich