Hallo wertes mikrocontroller.net-Forum,
ich hab da mal eine klitze kleine Frage nach Erfahrungen:
Ich habe meinen Raspberry pi um derzeit 4 kleine Schieberegister 74HC595
von ti erweitert. Mein Code in Python schiebt die Daten mit 30,3kB/s
raus, per bitbanging.
Die Register funktionieren ohne Probleme, die Qs werden beschaltet wie
gewünscht. Physikalischer Aufbau wie folgt:
RPi - 50cm Leitung - 74HC595 - 25cm Leitung - 74HC595 - 25cm Leitung -
74HC595 - 25cm Leitung - 74HC595
Ich plane später noch schmitt Trigger zu verbauen, aber aktuell würde
mich mal interessieren, ob Jemand schon die CLK und DS Leitung per pull
up auf 3,3V gezogen hat und die LATCH mit pull down auf 0V.
Mir geht es darum zum umschalten der CLK und DS Leitung mehr zu sinken,
als zu sourcen. 30,3kB/s sind in diesem Fall eine Frequenz von ~250kHz.
LG
Blevox (Sebastian)
Was willst du denn jetzt wissen?
Pullups und Pulldowns an Eingängen dienen dazu, definierte Zustände
herzustellen. Ob es wirklich notwendig ist, ist von der Schaltung des
davor liegenden Ausgangs abhängig. Schaden tut es in aller Regel nicht.
Ich möchte nur wissen, ob das schon Jemand getan hat; Ich fragte nach
Erfahrungsberichten, der 74HC595 ist ein sehr geläufiger Chip, vor allem
hier im Forum.
@thomase: Ein kleines Gedankenspiel, ich überlege den Raspberry etwas zu
entlasten.
- Szenario: Sink pro Pin am Pi 16mA, Source pro Pin am Pi bis zu
16mA, jedoch gibt die 3.3V Versorgung nur 50mA her. Bei CLK+DS sind zwei
Pins auf HIGH zu ziehen, da mein Code aktuell vorsieht bis zu 4 Arrays
von 74HC595, von unbekannter Länge zu unterstützen und im Zweifel alle
per Threading parallel rauszushiften.
- Option 1: Optokoppler fast direkt an die GPIO per NPN Transistoren
geschaltet. (Meine EL817 sind zu lahm dafür, bräuchte daher einen neuen
Typen)
- Option 2: 74HC14
- Option 3: Pull up aus einem dedizierten 3.3V (LD1117)
@axelr: Es geht mir um das sinken am GPIO des Raspberry Pi für die
Datenleitungen, nicht am Schieberegister. Sorry war vielleicht etwas
unverständlich ausgedrückt. Die 74HC595 funktionieren tadellos für meine
Anwendung.
PS:
Option 1 gefällt mir am besten, da ich die Pegel dann auch auf 5V ziehen
könnte.
PPS:
LG
Blevox (Sebastian)
PPPS:
Wird Zeit, dass ich mich registriere, dann kann ich meine Beiträge
editieren. :-)
Blevox schrieb:> Ein kleines Gedankenspiel, ich überlege den Raspberry etwas zu> entlasten.
Dann lass die Pullups/-downs weg.
Hast du den Eingangsstrom eines CMOS-IC schon mal gemessen?
Vergiss es, so hochwertiges Equipment hast du nicht.
So, nun bin ich registriert.
Solche Werte wären im Datenblatt ganz toll und wenn es nur μA sind. Die
Summe macht es, dazu Leitungswiderstand.
Ich mach mir manchmal vielleicht einfach nur zuviele Gedanken, dennoch
muss eine dedizierte 3.3v Versorgung ran. 74HC595 Supply current 70mA
und der Pi liefert nur 50mA, aktuell sind meine Ausgänge vom 74HC595
noch mit 1kOhm in Serie und somit bei nur 3.3mA, aber 16 Ausgänge zur
selben Zeit. Es ist noch viel zu tun. :-)
Thomas E. schrieb:> Dann lass die Pullups/-downs weg.
Aber eben diese kämen aus einem LD1117.
Sebastian D. schrieb:
...
> .... dazu Leitungswiderstand.
genau!, den musste UNBEDIGT beachten {/ironieee off}
74HC125 dazwischen und die 595 an ein eigenes NT
den 74HC125 an 3v3 die 595 koennen dann auch an 5V
VlG
Charly
Charly B. schrieb:> 74HC125 dazwischen und die 595 an ein eigenes NT>> den 74HC125 an 3v3 die 595 koennen dann auch an 5V
Die 74HC125 sind leider nicht als DIP verfügbar, aber natürlich gut.
Charly B. schrieb:> genau!, den musste UNBEDIGT beachten {/ironieee off}
Naja, auch Kleinvieh macht Mist, vor allem in Masse.
Habe wie gesagt derzeit knapp 1,25m Leitungslänge, 4 Register und Code
ist erweiterbar auf 4 Stränge.
Sprich es könnten später auch gern überspitzt ausgedrückt 20 am Strang
sein, und dann vier Stränge zu befeuern sein. Natürlich der Line Driver
würde mein theoretisches Problem mit einem Schlag lösen, ich schau mal,
ob ich was im DIP finde.
Sebastian D. schrieb:> Solche Werte wären im Datenblatt ganz toll und wenn es nur μA sind. Die> Summe macht es, dazu Leitungswiderstand.
Bei CMOS-Eingängen, die nicht mit expliziten Pull-Up- oder
Pull-Down-Widerständen ausgestattet sind, musst man schon sehr viele
parallelschalten, um den statischen Eingangsstrom messen zu können. Für
die ersten Versuche empfehle ich tausend oder eine Million Eingänge
parallel. Dann könnte man vielleicht auf ein Mikroampere kommen, sollte
aber aufpassen, die Werte nicht durch z.B. durch Flussmittelreste oder
Fingerabdrücke auf der Leiterplatte zu verfälschen. Ach so, die
Leiterplatten und Kabel sollten sich im Dunkeln befinden, da sie bei
Lichteinfall deutlich leitender als die CMOS-Eingänge werden könnten.
Viel entscheidender ist allerdings die Eingangskapazität, welche zu
erheblich größeren dynamischen Strömen bei Schaltvorgängen führt. Bei
Leitungsleitungen im Bereich von 1m sollte auch die
Anstiegsgeschwindigkeit der Logiksignale nicht zu hoch sein, d.h.
insbesondere der Taktleitungen, da ansonsten das "Klingeln" zu mehrfach
erkannten Taktimpulsen führen kann. Im einfachsten Fall fügt man an den
Ausgängen kleine Serienwiderstände (ca. 20-50 Ohm) ein, ggf. auch mit
z.B. 100pF als Tiefpass erster Ordnung.
Charly B. schrieb:> Sebastian D. schrieb:>> Die 74HC125 sind leider nicht als DIP verfügbar, aber natürlich gut.>> sry, aber SELTEN so ein schwachsinn gelesen.............> > > >> http://k-urz.de/D39C> > >
Kommando zurück, ich hab nur 74HC125 gesucht. Die ersten beiden
Datenblätter gaben kein DIP her. Du hast natürlich recht.
Andreas S. schrieb:> Im einfachsten Fall fügt man an den> Ausgängen kleine Serienwiderstände (ca. 20-50 Ohm) ein, ggf. auch mit> z.B. 100pF als Tiefpass erster Ordnung.
Bloß nicht!
Wenn dein eingefügtes C direkt am quellseitigen Serienwiderstand sitzt,
dann provozierst du erst recht ein Problem!
Der Serienwiderstand ist gut und sorgt für eine quellseitige
Terminierung; an der Empfangsseite ist aber eine Totalrefelxion
vorhanden und gewollt, um den korrekten Logikpegel zu erhalten und die
dann im quellseitigen Serienwiderstand terminiert wird.
Sitzt jetzt quellseitig nach dem Widerstand noch ein C, dann kommt es zu
weiteren Reflexionen, die dann zu mehrfachen Taktflanken führen können.
Ein C hat an einer digitalen Leitung nichts verloren!
Wenn du schon Störungen unterdrücken musst, dann direkt vor dem Eingang,
der aber dann ein Schmitt-Trigger sein muss.
Andreas S. schrieb:> Bei CMOS-Eingängen, die nicht mit expliziten Pull-Up- oder> Pull-Down-Widerständen ausgestattet sind, musst man schon sehr viele> parallelschalten, um den statischen Eingangsstrom messen zu können. Für> die ersten Versuche empfehle ich tausend oder eine Million Eingänge> parallel. Dann könnte man vielleicht auf ein Mikroampere kommen, sollte> aber aufpassen, die Werte nicht durch z.B. durch Flussmittelreste oder> Fingerabdrücke auf der Leiterplatte zu verfälschen. Ach so, die> Leiterplatten und Kabel sollten sich im Dunkeln befinden, da sie bei> Lichteinfall deutlich leitender als die CMOS-Eingänge werden könnten.
!
Ok, bin ich wohl etwas zu paranoid. Ich geh trotzdem mal die Hände
waschen. :-)