Forum: Mikrocontroller und Digitale Elektronik Tri-State Schieberegister - High-Z


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von neuling (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich lese aktuell eine sich ständig verändernde Widerstandsmatrix mit 
einem Arduino aus. Leider reichen die Pins nicht aus, weshalb ich 
Schieberegister benutzen möchte.

Die Schieberegister müssen jedoch gegen GND und VCC schalten können, 
aber auch einen "High-Z" Modus haben, also so als ob gar nichts damit 
verbunden wäre. Beim Atmega hab ich dazu die Pins einfach auf Eingang 
geschaltet.

Ich habe nun etwas recherchiert, konnte aber kein Bauteil finden bzw. 
verstehen wie es funktioniert. Könnt ihr mir ein Bauteil empfehlen, das 
quasi ein Schieberegister ist aber die oben gennanten drei Zustände 
(High, Low, High-Z) annehmen kann?

Vielen Dank!

Viele Grüße
neuling

von (prx) A. K. (prx)


Bewertung
0 lesenswert
nicht lesenswert

von tux (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hi,

analoge Schieberegister sind eher exotisch

z.bsp DRS4

https://www.psi.ch/ltp/cdct-projects#DRS4_chip:_allows_for_affordable_34high_speed_oscilloscopes_34

LG tux

von hp-freund (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Noch ein Atmega als SPI Slave?

von neuling (Gast)


Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:
> 74HC595

Danke für den Vorschlag, soweit ich den Typen aber verstanden habe kann 
ich doch immer nur alle Ausgänge auf High-Z schalten oder keinen, 
korrekt? Laut Datenblat hat er ja auch nur einen 8Bit Puffer, womit man 
ja nur einen Zustand pro Ausgang speichern kann oder versteh ich was 
falsch?

In meinem Anwendungsfall wären alle Ausgänge High-Z, bis auf einen der 
gegen GND bzw. VCC und dieser wandert dann quasi durch.

von Sebastian S. (amateur)


Bewertung
0 lesenswert
nicht lesenswert
Ein 8-Bit Schieberegister mit 8 Enable/Z-State Eingängen wirst Du Dir 
wohl selber bauen müssen.
Am besten dem Rat des HP-Freundes folgen.

von (prx) A. K. (prx)


Bewertung
0 lesenswert
nicht lesenswert
neuling schrieb:
> In meinem Anwendungsfall wären alle Ausgänge High-Z, bis auf einen der
> gegen GND bzw. VCC und dieser wandert dann quasi durch.

Schon an 74HC4051 gedacht? Der schiebt zwar nicht, tut aber genau das, 
was du willst. Weil der AVR-Pin mit seinen 3 Zuständen durchgereicht 
wird.

Analogschalter wie diesen gibts bestimmt in Hülle und Fülle, auch 
niederohmiger falls nötig.

: Bearbeitet durch User
von neuling (Gast)


Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:
> Schon an 74HC4051 gedacht?

Also würde ich dann im Grunde einen Multiplexer nutzen, dessen Ausgänge 
immer High-Z sind bis auf den einen, der an einen Pin durchgereicht 
wird. Diesen Pin kann ich dann auf GND oder VCC legen.

Der Widerstand ist aber doch bei ~100 Ohm und damit recht hoch für meine 
Anwendung... einen Innenwiderstand konnte ich auch nicht finden aber der 
Leak wird mit 0,1 µA angegeben was passen sollte.

von (prx) A. K. (prx)


Bewertung
0 lesenswert
nicht lesenswert
neuling schrieb:
> Der Widerstand ist aber doch bei ~100 Ohm und damit recht hoch für meine
> Anwendung...

Da gibts garantiert bessere als diesen Oldie. Analogschalter sind kein 
seltenes Gut. Bloss kenne ich keinen auswendig.

Übrigens haben 74HC Logikbausteine auch einen Innenwiderstand. Sogar AVR 
Ausgänge: Da sind es bei 5V um die 30 Ohm, bei kleinerer Spannung mehr.

: Bearbeitet durch User
von (prx) A. K. (prx)


Bewertung
0 lesenswert
nicht lesenswert
NB: Den Innenwiderstand des AVR-Ausgangs kann man rausrechnen, indem man 
dafür einen als I/O-Pin genutzten ADC-Pin verwendet und nebenbei misst, 
was am Ausgang tatsächlich rauskommt. Der Trick ist beispielsweise bei 
resistiven Touchscreens nötig, da die recht niederohmig sind.

Bei einem Schieberegister, wie du dir das vorstellst, geht das nicht. 
Geht auch nicht mit jedem µC, die PICs beispielsweise können an den Pins 
nicht gleichzeitig I/O und ADC, sondern nur entweder oder.

: Bearbeitet durch User
von holger (Gast)


Bewertung
0 lesenswert
nicht lesenswert

von (prx) A. K. (prx)


Bewertung
0 lesenswert
nicht lesenswert
holger schrieb:
> MCP23S17

Pullup-Transistor bei 4,5V: 0,7V/3mA => 233 Ohm. Real sicherlich weit 
darunter, aber viel besser als der 74HC4051 sieht das nicht aus.

von michael_ (Gast)


Bewertung
0 lesenswert
nicht lesenswert
neuling schrieb:
> ich lese aktuell eine sich ständig verändernde Widerstandsmatrix mit
> einem Arduino aus. Leider reichen die Pins nicht aus, weshalb ich
> Schieberegister benutzen möchte.
>
> Die Schieberegister müssen jedoch gegen GND und VCC schalten können,
> aber auch einen "High-Z" Modus haben, also so als ob gar nichts damit
> verbunden wäre. Beim Atmega hab ich dazu die Pins einfach auf Eingang
> geschaltet.

Ich verstehe nicht recht, du hast Eingänge und willst die gegen GND und 
VCC schalten?
Benutzt du die gleichzeitig als Ausgänge?
Kannst du mal eine Grundschaltung darstellen?

von Jens G. (jensig)


Bewertung
0 lesenswert
nicht lesenswert
Wenn es CMOS wie diesen http://www.cmos4000.de/cmos/5025.html noch 
irgendwo gäbe, könnte man zwei Schieberegister hernehmen - das eine 
steuert dessen Eingänge an, das andere dessen Enable-Eingänge

von Mike J. (linuxmint_user)


Bewertung
0 lesenswert
nicht lesenswert
> Tri-State Schieberegister - High-Z

TC4094, 74HC4094 oder ähnliche sind Tristate-Schieberegister.

"MOS 4094" (31Cent) oder "SMD 4094" (27Cent) bei Reichelt.

von neuling (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ich habe mal unten einen Schaltplan angehängt. Es handelt sich um eine 
Matrix aus Widerständen (die sich permanent ändern können) welche ich 
auslesen will. Dazu schalte ich jeweils einen Anschluss links (A, B, C, 
...) gegen GND und einen Anschluss von unten (1, 2, 3, ...) wie in der 
Skizze unten gezeigt, also mit einem Widerstand gegen VCC und davor eine 
Leitung an den ADC. Durch die abfallende Spannung kann ich dann den Wert 
eines Widerstandes ermitteln. Alle anderen Anschlüsse müssen während der 
Messung unbelastet sein, da ansonsten das Ergebnis stark verfälscht 
wird.

        +---------+      +---------+     +---------+
A +-----+ Resistor+--+---+ Resistor+--+--+ Resistor+---+
        +---------+  |   +---------+  |  +---------+   |
                     |                |                |
        +---------+  |   +---------+  |  +---------+   |
B +-----+ Resistor+--+---+ Resistor+--+--+ Resistor+---+
        +---------+  |   +---------+  |  +---------+   |
                     |                |                |
        +---------+  |   +---------+  |  +---------+   |
C +-----+ Resistor+--+---+ Resistor+--+--+ Resistor+---+
        +---------+  |   +---------+  |  +---------+   |
                     |                |                |
                     +                +                +
                     1                2                3

 ADC (vorher OpAmp als Spannungsfolger)
  |     +---------+
--+-----+ Resistor+--- VCC
        +---------+

Die Matrix ist jedoch sehr groß, weshalb ich sehr viele Pins benötige. 
Ich werde nun zunächst einmal die Variante mit dem Multiplexer testen, 
auf jeden Fall schon mal vielen Dank für die vielen Tipps! :)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.