Geplant ist eine Schieberegisterkette, bestehend aus:
14 Stück TPIC6B595
und
4 Stück 74HCT165,
also
32 digitale Eingänge
und
112 digitale Ausgänge.
Das "Drumrum" soll bei diser Frage hier keine Rolle spielen. Nur soviel:
Die Ausgänge sind LEDs, die eine separate Spannungsversorgung haben. Die
ICs laufen mit 5V, während der TPIC6B595 die LEDs gegen +12V schaltet.
Den Strom der LEDs kann ich selbst ausrechnen. Interessiert mich hier
erstmal nicht. Mir geht es nur darum, was die Schieberegisterkette in
etwa braucht. CMOS braucht "nichts", schon klar, allerdings ist die
Kette ja in Bewegung, sagen wir mal Rotationsgeschwindigkeit von 30 mal
pro Sekunde.
Die Schieberegisterkette (Daisy chain) soll von einem ATmega angetrieben
werden, ganz simpeles 4-Leiter-Konzept: CLOCK, DATA-IN, DATA-OUT (und
LOAD).
Ich hoffe, ich habe es verständlich beschrieben. Wenn nicht, einfach
nachfragen.
Zur Frage:
Der ATmega läuft mit 5V, und diese 5V will ich für die Kette abzwacken.
Mit welchem Stromverbrauch muss ich bei den 18 ICs in etwa rechnen (wie
gesagt, OHNE den Verbrauch der LEDs)?
Irgendwie lustig. Da wird ein Link zum Datenblatt platziert, dieses aber
offenbar nicht mal gelesen: Figure 2. Supply Current vs Frequency.
Ist das nicht deutlich genug??? Die Kultur des (sorgfältigen) Lesens
(statt "Querlesens") scheint vom Aussterben bedroht.
TorbenK schrieb:> CMOS braucht "nichts", schon klar, allerdings ist die> Kette ja in Bewegung, sagen wir mal Rotationsgeschwindigkeit von 30 mal> pro Sekunde.
Da irrst du. Bei CMOS müssen mit jedem Schaltvorgang Kapazitäten
umgeladen werden. Die Stromaufnahme von CMOS ist daher, neben
irgendwelchen Leckströmen, proportional zur Taktfrequenz.
TorbenK schrieb:> 14 Stück TPIC6B595> und> 4 Stück 74HCT165
Beide IC's haben einen Eigenstromverbrauch zwischen 300 und 350 µA pro
Stück. Also im ungünstigsten Fall 350 µA x 18 = 6,3 mA. Bei hohen
Frequenzen würde er etwas ansteigen. Aber 30 Hz ist nicht viel.
Kalkulieren würde ich mit 10 mA.
Je höher die Taktfequenz der Kette ist, um so mehr Strom zieht sie bei
den Schaltvorgängen. Das kann bei 10 MHz sogar schon mehr sein, als bei
"Steinzeit" TTL! Rechne aber mit vergleichbaren Impulsströmen im ns
Bereich. Also jedem IC unmittelbar über Ub einen 100nF KerKo und ca für
4-5 IC's dann noch einen Elko von ca. 47µF.
Bau das Ganze auf einer Leiterplatte, oder zu mindest auf Lochraster auf
und verkabele KÜRZESTMÖGLICH! Bedenke, das 3 cm von IC zu IC schon 60 cm
Buslänge bei 20 IC bedeuten!
Das ist schon recht grenzwertig. Spendiere den Busleitungen ruhig einen
Leitungstreiber. Rein statisch ist ein Fan in von 20 Pillepalle, aber
dynamisch kann es sein, das da die Flanken verschliffen werden und der
Logikteil sich "wunderlich" verhält. Einfach ein Gatter hinter den µC
Ausgang und gut ist. Entweder 2 Nand's oder 2 Negatoren in Reihe, oder
ein Gatter und im µC dann einfach die 2. Invertierung in Software.
Ralf L. schrieb:> Aber 30 Hz ist nicht viel.
Es sind aber nicht nur 30Hz, sondern 30Hz * Bitanzahl, also etwa 4kHz.
Immer noch sehr niedrig, aber durchaus messbar im Stromverbrauch.
Danke fürs schnelle Antworten. Das Forum ist wirklich klasse, und die
Leute sehr hilfsbereit.
A. B. schrieb:> Irgendwie lustig. Da wird ein Link zum Datenblatt platziert, dieses aber> offenbar nicht mal gelesen: Figure 2. Supply Current vs Frequency.> Ist das nicht deutlich genug??? Die Kultur des (sorgfältigen) Lesens> (statt "Querlesens") scheint vom Aussterben bedroht.
2x über Kopf .
1. habe ich kein Datenblatt verlinkt (das macht Mikrocontroller.net
vermutlich selbst) und das 2. ist, dass du mir trotzdem geholfen hat :)
Ich wollte nicht schon wieder fragen, WO ich WAS im Datenblatt finde.
Danke, wieder was gelernt.
Ralf L. schrieb:> Aber 30 Hz ist nicht viel.
30 Hz ist der Takt der Kette. Der Schiebetakt (CLK-Frequenz) dürfte viel
schneller sein. Aber die CLK-Frequenz unterliegt wiederum den 30Hz, und
das macht dann den Bock auch nicht fett, oder?
> Kalkulieren würde ich mit 10 mA.
Das wäre ok.
Gerald B. schrieb:> Bau das Ganze auf einer Leiterplatte, oder zu mindest auf Lochraster auf> und verkabele KÜRZESTMÖGLICH! Bedenke, das 3 cm von IC zu IC schon 60 cm> Buslänge bei 20 IC bedeuten!
Zwischen µC und dem ersten Schieberegister liegen ca 2 meter geschirmte
Steuerleitung. Ich erwarte da eigentlich keine Probleme. Falls doch,
kann ich den Takt (CLK) immer noch softseitig runtersetzen.
TorbenK schrieb:> Ich erwarte da eigentlich keine Probleme. Falls doch,> kann ich den Takt (CLK) immer noch softseitig runtersetzen.
Durch Reduzieren der Taktfrequenz gewinnst du nichts. Dann müsstest du
schon per SW die Flankensteilheit der Signale reduzieren können. 2m sind
für HC-Technologie schon sehr viel!
TorbenK schrieb:> Zwischen µC und dem ersten Schieberegister liegen ca 2 meter geschirmte> Steuerleitung. Ich erwarte da eigentlich keine Probleme.
Naja, mal schauen..., das ist schon ne lange Leitung.
>Falls doch, kann ich den Takt (CLK) immer noch softseitig runtersetzen.
Das hilft gar nichts. Es kommt darauf an, was an den Eingängen ankommt
und ob das noch im erforderlichen Rahmen liegt (Anstiegs-/Abfallzeiten).
Es gibt Flankenverschleifungen und Überschwinger, dazu Übersprechen und
Masseversatz
Je nachdem, was es werden soll:
-einfach ausprobieren
-genauer betrachten
-anderes Übertragungskonzept wählen
HildeK schrieb:> 2m sind für HC-Technologie schon sehr viel!
Ich verstehe. Hilft es, am entferntesten Punkt der Kette Widerstände
gegen GND zu schalten, und dann eben mit etwas mehr Strom zu schieben?
Das müsste doch die Lage entschärfen.
Oder via LS-TTL schieben.
Gerald hat das mit dem Leitungstreiber geschrieben.
Gerald B. schrieb:> Spendiere den Busleitungen ruhig einen Leitungstreiber.
2 Meter halte ich für sehr ambitioniert.
Kannst du nicht den µC zu den Schieberegistern verfrachten und die
restliche Peripherie entsprechend länger machen?
I2C mit 2 Metern Länge (abgesetztes Display) habe ich schon gemacht, das
hat funktioniert. Aber unter den bereits erörterten Umständen wird's
schwierig.
Wenn es nicht funktioniert, dann kannst du auch probieren, die
Bussignale an Anfang und Ende jeweils mit einem SN75176 zu verwursten,
so das die lange Strecke mit einem differenziellen Signal überbrückt
wird. Eigentlich werden die 75176 für RS485 genommen, aber man kann
damit auch ganz gut Punkt zu Punkt Verbindungen ohne µC realisieren. Ich
habe mal testweise auf einem Breadboard 2 Stck hart verdrahtet
zusammengesteckt, als Leitungstreiber funktioniert das ganz prima. Damit
wären selbst Leitungslängen von 100m kein Problem :-)))
mhh. Zu den Widerständen in der Leitung habt ihr nichts geschrieben.
Leitungstreiber für 2m Kabel? Ist das denn euer ernst? Mir käme eher
noch die Idee - weil ich ja eh 74HCT verwenden will, das erste
Schieberegister nach dem Kabel nicht mit HCT, sondern in LS-TTL zu
realisieren. Aber ich werde es ausprobieren. Eins weiß ich: Wenn es auf
Anhieb funbktioniert, ändere ich gar nichts ;)
"Eins weiß ich: Wenn es auf Anhieb funbktioniert, ändere ich gar nichts
;)"
Diese Einstellung ist sehr schlau und zielführend, denn in diesem Fall
kannst Du alle Ratschlage der vereinten Fachwelt getrost ignorieren und
Dich wundern, warum sie alle so komisch mit dem erhobenen Zeigefinger
warnen. Insbesondere die von mir angeführten Links brauchst Du weder
lesen, noch verstehen oder mit Hilfe von zusätzlicher Literatur Dir zu
erschließen. Somit ersparst Du Dir viel Blindleistung, welche in der
Elektrotechnik immer schon unerwünscht war. Die Weiterführung dieser
Taktik wäre, besser erst gar nicht zu fragen, denn das erspart allen
Beteiligten die Ausführung unnötiger synnaptischer Aktivität.
Wenn dem aber nicht so sein sollte, ist guter Rat plötzlich teuer und es
liegt an Dir, die gut gemeinten Hinweise in die Realität umzusetzen,
wenn das Projekt unbedingt funktionieren soll.
Über die Leitung ist bisher nur deren Leitungscharakter bekannt.
Mit freundlichem Gruß
Nichts ist so wertvoll für den Lerneffekt wie eigenes Erleben :-).
Symmetrische Übertragung brauchst du natürlich nicht.
74HC/HCT kann man etwa bis 50cm (elektrisch kurze Leitung) mit nicht
angepasster Leitung (eine einfache Drahtverbindung ist eine nicht
angepasste Leitung) betreiben. Bei 74LS waren es ca. 150cm, kommt schon
fast hin.
Beschäftige dich mal mit Leitungsimpedanz, Anpassung und Reflexionen.
Das muss erst mal nicht besonders tief gehen. Ein Grundverständnis, was
da prinzipiell auf Sender- und Empfängerseite passiert reicht.
Sehr interessante Effekte ergeben sich auch, wenn FlipFlop-Ausgänge
(dein Rückkanal) längere Leitungen treiben sollen.
TorbenK schrieb:> Aber ich werde es ausprobieren. Eins weiß ich: Wenn es auf> Anhieb funbktioniert, ändere ich gar nichts ;)
Wenn Du an der Grenze zwischen "Funktionieren" und Fehlerhaft bist, kann
es passieren, daß kleine Änderungen der äußeren Umstände (Temperatur,
Luftfeuchtigkeit, kleine Spannungsschwankungen, Alterung der
Bauteile,...) dann irgendwann plötzlich dafür sorgen daß es nicht mehr
funktioniert.
Schau Dir daher, auch wenn es funktioniert, zumindest mal die Signale am
Ende der 2m Kabel auf dem Oszi an.
Dass die Verlinkung automatisch erfolgte, war mit in der Tat entgangen,
Asche auf mein Haupt :-(
Trotzdem bleibt die erste Informationsquelle immer das Datenblatt, und
das ist in diesem Fall in ein paar Sekunden gefunden und fix gelesen.
In der Tat dürften 2m schon ein arges Problem sein. Auch was den
Stromverbrauch angeht: Wenn das Taktsignal nicht "sauber" an den
Schieberegistern ankommt (verschliffene Flanken) steigt deren
Stromaufnahme u. U. beträchtlich, da im Bereich der Schaltschwelle dann
ein größerer Querstrom durch die komplementären Transistoren fließt.
Außerdem: Wenn das Taktsignal bei den einzelnen Schieberegistern nicht
synchron ankommt (bzw. durch langsame Flanken und leicht differierende
Schaltschwellen nicht synchron detektiert wird), dürfte die Kette nicht
mehr korrekt funktionieren. Das könnte man mit einem Zweiphasen-Takt
(für den Schiebe-Takt, eine an 1., 3., 5., ... und die andere an 2., 4.,
6., ... Register) umgehen. Aber die 2m bis zum ersten Register bleiben
...
A. B. schrieb:> Das könnte man mit einem Zweiphasen-Takt> (für den Schiebe-Takt, eine an 1., 3., 5., ... und die andere an 2., 4.,> 6., ... Register) umgehen.
Wie ist das zu verstehen? Versetzt?
also SO
CLOCK ┌─┐ ┌─┐
└─┘ └─┘ └─ ---
DATA -%---%---% ---
% = Zeitpunkt der Pegeländerung
Wenn ja, das habe ich sowieso vor. Das Schieben der paar Register ist ja
nicht zeitkritisch.
Christian S. schrieb:> Wenn dem aber nicht so sein sollte, ist guter Rat plötzlich teuer und es> liegt an Dir,
Ja ja ... ich nin ja schon dabei. Platz zu schaffen auf der fast
fertigen Masterplatine für einen Leitungstreiber. Gebt mir doch mal
Zeit, die Tipps zu verarbeiten. Aber für den Leitungstreiber mache ich
ein eigenes Thema auf. Hier war STROMBEDARF vangesagt. Das wird dann zu
unübersichtlich.
TorbenK schrieb:> Wie ist das zu verstehen? Versetzt?> also SO>> CLOCK ┌─┐ ┌─┐> └─┘ └─┘ └─ ---
Das verstehe ich nicht. Was ich meinte ist, zwei verschiedene
Taktsignale (oder auch invertiert/nichtinvertiert). Bei dem
Schieberegister ist als setup und hold time je mindestens 20ns verlangt
bzw. "empfohlen". Da die Schieberegister kaskadiert werden: Der serielle
Datenausgang wird an den Dateneingang des nächsten gelegt. Wenn alle die
positive Taktflanke gleichzeitig erhalten, sorgt die Durchlaufzeit vom
CLK zum seriellen Ausgang dafür, dass die hold time (wohl) eingehalten
wird. Der serielle Ausgang ändert ja seinen Zustand "als Reaktion" auf
die Flanke des Taktes.
Wenn zwei aufeinanderfolgende Schieberegister jedoch die Taktflanken mit
gewisssen zeitlichen Versatz mitbekommen, wird u. U. setup oder hold
time nicht eingehalten. Dann ist nicht mehr klar, ob das folgende den
alten Zustand (vor der Taktflanke) oder den neuen (nach der Taktflanke)
übernimmt. (Im Extremfall (wenn auch sehr selten) bleibt das folgende in
einem undefiniertem Zustand hängen und kippt irgendwann eher zufällig in
einen der beiden Zustände ("Metastability"). Das wäre in dieser
Anwendung sicher harmlos.) Dummerweise kann das mit Temperatur,
Versorgung etc. schwanken ...
Wenn diese "Gleichzeitigkeit" nicht garantiert werden kann, muss man die
Taktflanken von einer Stufe zur nächsten ein bisschen verzögern. Oder
die Schieberegister triggern abwechselnd auf positive bzw. negative
Flanke bzw. man versorgt sie halt abwechselnd mit phasenverschobenen
Takten.
>> DATA -%---%---% ---
Es geht dabei NICHT um die Beziehung von Takt und erstem seriellen
Dateneingang der Kaskade! Das ist ein ähnliches Problem, klar, aber das
betrifft ja nur das erste Schieberegister und ist ja leicht zu umgehen,
indem man die CLK und DATA Pins nacheinander und nicht "gleichzeitig"
aktualisiert.
> % = Zeitpunkt der Pegeländerung>> Wenn ja, das habe ich sowieso vor. Das Schieben der paar Register ist ja> nicht zeitkritisch.
> Schau Dir daher, auch wenn es funktioniert, zumindest mal die> Signale am Ende der 2m Kabel auf dem Oszi an.
Nicht nur dort, sondern auch in der Mitte und am anderen Ende. Vom Ende
reflektierte Signale kann man an diesem Ende nämlich nicht sehen.