Forum: Mikrocontroller und Digitale Elektronik Parallele Schalter hinter Shift-Register


von Sebastian L. (arakis)


Lesenswert?

Hallo,
ich habe einen 74HC595 Serial-To-Parallel-Shift-Register ( 
http://www.ti.com/lit/ds/symlink/sn74hc595.pdf ) und möchte diesen 
nutzen, um eine 8x8 Schalter-Matrix zu lesen (natürlich kommt auch ein 
Parallel-To-Serial schift register zum Einsatz, aber um mein Problem 
nachzuvollziehen nicht notwendig).

Einfache Situation (bedarf kein Schaltbild):

595 Chip, an zwei Ausgängen hängt je ein Schalter (um "Saft" auf die 
Spalten zu geben, um dann die "Zeilen mit dem pararlel to seriel chip 
auszulesen).

Ist je ein Schalter betätigt, auf dem der Ausgang ein HIGH hat, kommt 
ganz normal die Versorungsspannung an - logisch, gell?
Ist ein Ausgang auf HIGH (macht ja auch nur Sinn, ist ja eine 
Spalten/Zeilen-Abtastung), aber beide Schalter betätigt, kommt nur 
Versorungsspannung/2 an.

Oder noch einfacher ausgedrückt: Schaltet man Ausgang 1 auf HIGH(3.3V) 
und Ausgang 2 auf LOW(=0V), schließt beide kurz(= beide Schalter 
betätigt) und misst die Spannung(in der Mitte oder wo auch immer), 
kommen nur 1.6V an. Es scheint so, als fließe der Strom über Ausgang 2 
"weg". Aber laut Schaltbild des 595'ers sind doch hinter jedem Ausgang 
Dioden (=Einbahnstraßen) ?

Muss ich einen andere Chip verwenden?

Lieben Gruß,
Sebastian

von Treiber (Gast)


Lesenswert?

Sebastian Loncar schrieb:
> Aber laut Schaltbild des 595'ers sind doch hinter jedem Ausgang
> Dioden (=Einbahnstraßen)

Nach welchem Schaltbild? Ich hoffe, du interpretierst die Dreiecke im 
Logikdiagramm nicht als Dioden?

von Sebastian L. (arakis)


Lesenswert?

Hallo Treiber,
mir scheint, ich habe sie versehentlich als Dioden interpretiert. Ok, 
dann ist mir klar, wo der Strom "bleibt", er fließt scheinbar über GND 
zu 50% ab, weil es halt "keine" Diode ist.

Was kann ich tun, um mein Problem zu lösen? Als kleine Anmerkung: Bei 
meiner 8x8 Matrix muss ich multiple Schalterzustände auslesen können. 
Daher die "parallelen" Schalter.

Lieben Gruß,
Sebastian

von Treiber (Gast)


Lesenswert?

Sebastian Loncar schrieb:
> Was kann ich tun, um mein Problem zu lösen?

Doch mal ein Schaltplan posten mit Hinweis, daß er ja noch nicht fertig 
ist. Kannst ja auch selbst die Dioden an die Ausgänge des 595er 
schalten.

von Sebastian L. (arakis)


Angehängte Dateien:

Lesenswert?

Gerne. Wie gesagt, ich brauch "vollen Saft" von 3.3V, wenn einer oder 
beide Schalter betätigt sind. Wird der Strom zwischem dem rotem Kabel 
und GND gemessen, ist dieser halt 1.6V, wenn beide gedrückt sind.

Lieben Gruß,
Sebastian

von Treiber (Gast)


Lesenswert?

Ist zwar nicht das, was ich mir unter Schalplan vorgestellt habe, aber 
zumindest kann man erkennen, daß du mit Schalter wirklich Schalter und 
keine zB Transistoren gemeint hast.

Mal unabhängig von der Folgeschaltung (die wir auch nicht kennen), 
brauchst du doch nur jeweils eine Diode vom 595er Ausgang zum jeweiligen 
Schalter einzubauen. Um den Spannungsverlust gering zu halten, benutze 
Schottky Dioden. Dann kann der Strom nicht mehr über den 595er 
abfließen.

von Jens (Gast)


Lesenswert?

...du kannst auch einen ULN2803 nachschalten. Also auf der Ausgabeseite 
diese Kombi:


hc595

uln2803


tastenmatrix (8x8)


pullups

eingangsregister


JJ

von Manni (Gast)


Lesenswert?

Sebastian Loncar schrieb:

>
> Einfache Situation (bedarf kein Schaltbild):
>

Da irrst Du. Denk mal an die die Dir helfen wollen, die können im 
Schaltplan viel schneller erfassen was du möchtest, auch wenn der noch 
so einfach ist.
 Sprich du hast mehr die dein Anliegen bis zu ende lesen und auch 
verstehen, das bedeutet für dich mehr mögliche antworten.
 z.B. der 595 , nicht jeder hat gerade gestern damit gearbeitet, erkennt 
ihn jedoch, wenn er den Schaltplan sieht.

Zu deinem Problem Open Collector ist Dein Freund. Such einen chip der so 
einen hat. oder ich glaub den PCF8574. Du legst pins auf Masse oder 
schaltest sie auf input mit Pullup (falls der keinen intern hat mußt du 
extern pullups anlegen)
 + und - dzu haben führt sonst zum kurzschluß der ausgänge.
 Du willst mehrere Tastendrücke gleichzeitig erkennen? Oft reicht es ein 
paar wenigen tasten Sonderrechte zu geben das sie immer einwandfrei 
erkannt werden. z.B. shift,alt,ctrl taste auf der tastatur wird immer 
erkannt, während normale Buchstaben auf 2-3 stück begrenzt sind.
 Ansonsten gibt es auch fertige ics für tastaturabfrage

von Sebastian L. (arakis)


Lesenswert?

Hallo,
also ich habe mir mal ein paar ULN2803's bestellt. Ich denke, dass die 
Sache damit erledigt ist.

Was mich jedoch stutzig macht: Wenn ich zwischen Ausgang und Schalter 
jeweils eine LED zwischenschalte, müsste ich mein Ziel doch eigentlich 
auch erreichen, weil eine LED ja auch eine Diode ist, nur leider klappt 
das irgendwie nicht. (die anderen Enden sind ja per 8x8 Matrix an einem 
Parallel2Seriel-Converter). 10K Widerstände sind natürlich dran.

@Manni:
Ich werde deinen Rat mit dem Schaltbild beherzigen. Im übrigen muss ich 
sämtliche Schalterkombinationen abfragen, da es Reedschalter unter einem 
Spielfeld sind - also nix mit Tastatur ;) Und mit dem I2C-Bus habe ich 
bisher noch nicht gearbeitet.

Lieben Gruß,
Sebastian

von Route_66 H. (route_66)


Lesenswert?

Hallo!
Ich glaube, du brauchst für jeden Schalter eine Diode!?

von Dietrich L. (dietrichl)


Lesenswert?

Sebastian Loncar schrieb:
> jeweils eine LED zwischenschalte, müsste ich mein Ziel doch eigentlich
> auch erreichen, weil eine LED ja auch eine Diode ist, nur leider klappt
> das irgendwie nicht.

Vielleicht ist die Flussspannung der LED zu hoch und der Pegel reicht 
dann nicht mehr?

Gruß Dietrich

von Sebastian L. (arakis)


Angehängte Dateien:

Lesenswert?

Also ich habe es zuerst mit einem ULN2803 probiert, aber sobald ich ein 
zweites Leitungspaar anschließe, geht es nicht mehr. Nutze ich haber für 
jedes Leitungspaar(=Spalte) einen eigenen ULN2803, klappt es (ist 
natürlich eine Verschwendung). Aber immer noch nicht so recht.

Wie ich feststellte, musste ich "jeden" Schalter mit zwei Dioden 
versehen, ansonsten gab es immer noch Phantom-Keys. Das Problem war 
jedoch, ab einer bestimmten Anzahl an Dioden klappte nichts mehr, als ob 
die Dioden einen zu großen Widerstand hätten.

Ich habe es mit 3 verschiedenen Arten probiert:
http://de.farnell.com/jsp/search/productdetail.jsp?SKU=9843680
http://de.farnell.com/jsp/search/productdetail.jsp?SKU=1612341
http://de.farnell.com/jsp/search/productdetail.jsp?SKU=9843744

Als Spannung nutze ich 3.3V

Vielleicht habe ich die völlig falschen Dioden genommen, aber ich wüsste 
jetzt auch nicht, welche die richtigen wären (es gibt ja Unmengen an 
Dioden).

Ich nutze nun keine Matrix-Schaltung mehr, sondern lese jeden einzelnen 
Schalter mit PISO-Registern aus (Parallel-To-Serial), bei 64 Schaltern 
also 8 Stück. Dennoch frage ich mich, was ich bei der Matrixschaltung 
falsch gemacht habe.

PS: Das Bild ist mein derzeitiger Fortschritt (mit dem PISO-Registern). 
Ich habs nur hochgeladen, weil's so witzig aussieht ;)

Lieben Gruß,
Sebastian

von Treiber (Gast)


Lesenswert?

immer noch nicht begriffen, was du dem Forum geben müsstest, damit man 
dir helfen kann. Auf jeden Fall keine Riesenbilder von funktioniert 
nicht ohne Informationsgehalt.

von Sebastian L. (arakis)


Lesenswert?

Treiber, ich muss dir Recht geben, es ist für Aussenstehende wirklich 
umständlich überbracht. Nächste Mal werde ich es besser machen.

Da ich nun eh PISO-Register verwende, darf das Thema eigentlich als 
abgehakt gesehen werden.

Lieben Gruß,
Sebastian

(Mod.: Grafikauflösung im Beitrag 26.11.2012 06:22 reduziert)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.