"Wer wird Millionär"-Schaltung / Schieberegister

Hallo,

gleich mal vorneweg: Ich hab zwar von Programmierung Ahnung, aber nicht von Elektronik. Also gleich mal Entschuldigung für dumme Fragen...

Folgende Situation: Ich will den Zustand von etwa 120 Tastern an meinem PC abfragen (ähnlich dem Studiopublikum bei "Wer wird Millionär"). Meine Idee war, die Tastenzustände über 15 kaskadierte 8bit-Schieberegister (4021) abzufragen und über die serielle Schnittstelle an den PC auszugeben.

- Macht das so Sinn?

- Gibt es Schieberegister mit mehr Eingängen als 8 (habe keine gefunden)?

- Kann man so viele Schieberegister kaskadieren?

- Sehe ich das richtig, dass die Kaskade von PIN 11 (serieller Eingang ?) an PIN 3 (serieller Ausgang) geschaltet wird?

Vielen Dank für Eure Hilfe! Jeder Gedanke ist willkommen.

Seb

Reply to
Sebastian Schöps
Loading thread data ...

Sebastian Schöps schrieb im Beitrag ...

Ja, parallele statt serielle ist einfacher zu programmieren.

Ja, aber preislich loht das nicht. Der 74HC165 ist je nach Laden vielleicht etwas billiger weil nur fuer 5V, ansonsten identisch mit dem 4021.

Ja

Ja (wenn mir auch deine Reihenfolge etwas ungewohnt erscheint, aber Kabel sind gluecklicherweise bidirektional...)

Den Takteingang von allen natuerlich auch verbinden, und den Takt erzeugt dein Rechner.

Die Taster schalten an +, also muss ein Widerstand von z.B: 10kOhm den Eingang auf Masse ziehen damit der Eingang bei offenem Taster mit irgendwas verbunden ist.

+5V | Taster +-------4021Eingang 10k | Masse

Zwischen + und Masse des 4021 sollte ein 100nF Vielschicht-Keramik-Kondensator um Stoerungen zu verhindern, zumindest bei jedem 5ten IC.

Das einzige Problem: Du musst immer wieder deine Schieberegister in den Rechner einlesen, um kurze Tastendruecke erkennen zu koennen. Bist du langsamer, koennte ein Tastendruck verloren gehen. Und es wird unmoeglich festzustellen, wer als 'erster' gedrueckt hat, weil einige beim Einlesen gleichzeitig umgeschaltet haben koennen. Aber das wird dir bekannt sein.

--
Manfred Winterhoff, reply-to invalid, use mawin at despammed.com
homepage: http://www.geocities.com/mwinterhoff/
de.sci.electronics FAQ: http://dse-faq.elektronik-kompendium.de/
Read 'Art of Electronics' Horowitz/Hill before you ask.
Lese 'Hohe Schule der Elektronik 1+2' bevor du fragst.
Reply to
MaWin

"MaWin" wrote in news:01c3ab74$2b3a4160$88e3b8d9@amdk6-300:

Nichts "macht" Sinn! Es hat einen Sinn oder es hat keinen...

Reply to
Gunther Mannigel

In article , Gunther Mannigel writes: |> "MaWin" wrote in |> news:01c3ab74$2b3a4160$88e3b8d9@amdk6-300: |> |> >> - Macht das so Sinn? |> > |> > Ja, parallele statt serielle ist einfacher zu programmieren. |> |> Nichts "macht" Sinn! Es hat einen Sinn oder es hat keinen...

Tja... Mal wieder ein Zwiebelfisch.

Rainer

Reply to
Rainer Buchty

Hmmm was meinst Du zu Latches? Du machst sie "auf" und nach der Zeit die das Publikum hatte um sich zu entscheiden, schliesst Du sie wieder und die Infos bleiben bestehen. Dann kann man sich sogar zwischendrin noch umentscheiden.

Gruß Tobi

Reply to
Tobias Aurand

(Tobias Aurand) 15.11.03 in /de/sci/electronics:

Typischer weise kann man das so mit jeden Schiebregister machen. "Halten Sie ihre Taste gedrückt bis das Lämpchen ausgeht".

Man kann so aber nicht feststellen, wer erster war. Ich glaube das war bei dem Spiel nötig (Hab mir den Kommerz-Muell nicht angetan).

Reply to
Rainer Zocholl

(Sebastian Schöps) 15.11.03 in /de/sci/electronics:

Üblicherweise macht man so etwas in dem man die Taster in einer Matrix anordnet. (Hier die Entkopplungsdioden nicht vergessen, da ja mehr als 1 Taste zugleich gedrückt sein darf.

Also 8*8= 16 Pins auf 2 ICs für 64 Taster.

"Einfach so" ein serielles Signal durch die Welt zu schicken klappt nicht sonderlich gut. Wenn irgendwo ein Takt verloren geht, fehlt nicht nur diese "Stimme", sondern alle anderen sind um eine Postion falsch, ohne das man es bemerken kann.

Du nimmst einen uC mit einer Echtzeituhr. Dafür besorgst du dir einen "IP stack" und klatsch einen Ethernet-Baustein ran.(Leider haben die wenigsten uC Hersteller die antiquierte serielle Schnittselle inzwischen langsam mal gegen eine Ethernet getauscht ;-( Das "Beste" was es gibt ist wohl CAN-Bus, aber der ist wohl zu zuverlässig wie man ja bei den Autos lernen musste.)

Wenn jmd. eine Taste drückt wird die Uhrzeit gespeichert und als (z.B. UDP-)Paket an einen Server gesendet.

Vorteil:

- Es "skaliert" auch bei 300 oder 30000(*) Leute noch. Mittels Routing könnten auch 50 Mio Leute abstimmen...

- Der Ausfall eines Taster-Moduls blockiert nicht alle 299 davor liegenden.

- Ein Fehler in einem Modul verfälscht nicht alle anderen.

- Du hast auch die genauen Zeitpunkte wann gedrückt worden ist. (Man kann Uhren der Tastenmodule bei der Auswertung nochmals zeitlich definiert zurücklesen um jede 2deutig zu vermeiden.)

- Es ist wurscht ob jeder Teilnehmer einen Schalter oder 10 bekommt.

- Man könnte anonym abstimmen, da irgendwer irgendwo sein Gerät anschliessen könnte, aber auf Grund der ggf. gewählten Busstruktur dieser Punkt nicht bestimmt werden kann/muss. (Man könnte auch fest zuordnen wenn man will, aber das hat man heute ja generell)

Ok, der Aufwand ist "etwas" grösser, aber...

(*) das kann natürlich "etwas" dauern (20 byte @ 1MByte/s * 30000 = 600ms), aber da die Uhrzeit gespeichert wird macht es nix.

Reply to
Rainer Zocholl

Danke erstmal. Aber du hast vergessen: du hast es mit einem absoluten Anfänger zu tun... ;-)

Zu der Geschichte mit dem uC:

- Ich habe mal geguckt und finde uCs mit bis zu 53 I/O Pins. Heisst das, ich brauche für 120 Tastzustände drei so Dinger? Wie synchronisiere ich dann deren Uhren?

- Oder brauche ich pro Tastermodul ein so uC und wenn ja wo senden die ihre Daten hin?

- Ist das für einen Anfänger realisierbar (Programmierung des uCs sollte nicht das Problem sein) oder sollte ich doch lieber die Lösung mit den Schieberegistern nehmen, die ich immerhin schon verstanden habe?

I blicks no net so ganz, sorry. Danke für eure Hilfe!

Reply to
Sebastian Schöps

(Sebastian Schöps) 15.11.03 in /de/sci/electronics:

Ja, habe ich. sorry. Aber es lesen hier ja noch andere mit die keine sind udn die sollen auch unterhalten werden ;-)

Könnte man machen...

Du könntest aber auch an jedem der IO Pins 3 Tasten legen und deren 5V jeweils nur kurzzeitig nacheinander anlegen. (Dioden zur Entkopplung sind nötig)

Du misst die Zeit die Du zum Abfragen brauchst und fragtst dann die andere wie spät es ist, subtrahierst die Zeit die die Abfrage brauchte und stellst Deine Uhr passend. Das machst Du solange bis die Differenz ausreichend klein ist. Dazu gibt es einen RfC "NTP network tiem protocol", der aber wohl "etwas" overpowered wäre.

So war das gedacht. Idealerweise ein uC mit nur 6 Pins...

An einen Server, die die Pakete einsammelt.

Du hast quasi ein "Netz" mit 120 PCs die einen "ping" machen wenn wer die Taste drückt. Der Server zählt diese "pings".

Das dürfte aber so ziemlich die maximal teuerste Lösung sein, wenn auch die flexibelste.

(Ist aber nicht ungewöhnlich: Die Lichtbitzer auf Flughäfen werden auch nicht durch ein Schieberegister aneinander angesteuert, wie man ja vermuten könnte, sondern jeder Blitzer ist ein eigener Rechner mit Netzwerkanschluss...)

Vermutlich nicht.

Naja, stell es Dir nicht soo einfach vor, das Taktsignal der Schieberegister über zig meter vernüftig und ungestört weiterzuleiten. Du willst ja nicht von jeder Taste ein extra Kabel zur Auswertebox ziehen? Wenn doch, macht das Schieberegistern keinen Sinn: da kannst Du auch multiplexen.

Auch wären evtl. Schieberegister mit einem Einganglatch sinnvoll, da Du so den Tastenzustand auch mehrfach abfragen kannst, falls etwas mit der Übertragung schief gegangen ist. (Man sollte das SR "von hinten" mit einem Muster auffüllen, das ja nach 120 Takten wieder bei der CPU angekommen sein müsste. So hätte man eine kleine Chance Übertragungsfehler zu erkennen.)

Reply to
Rainer Zocholl

Hi!

Blick mal auf Deine Tastatur: 102 Tasten, vermutlich. Blick mal _in_ Deine Tastatur, wenn Du Dich traust: Irgendwo in der Ecke ein kleiner IC mit deutlich weniger als 102 Anschlüssen.

Das Zauberwort heißt Tastaturmatrix. Nimm mal ein Blatt Papier und male Dir 4 senkrechte und 4 waagerechte Linien (die senkrechten kreuzen die waagerechten). Stell Dir vor, die senkrechten sind 4 Ausgänge Deines Controllers und die waagerechten sind 4 Eingänge. Und jetzt stell Dir vor, auf jedem Kreuzungspunkt sitzt ein Taster, der die einen mit den anderen verbindet. Dein Controller legt jetzt nacheinander Spannung auf die Ausgänge (immer nur auf einen gleichzeitig), und schaut, auf welchen Eingängen sie wieder zurückkommt. So findest Du nacheinander raus, welche der 16 Taster gedrückt sind. Da mehrere Taster gleichzeitig gedrückt sein dürfen, brauchst Du noch je eine simple Dioden in Reihe mit jedem Taster, damit der Strom nur von den Ausgängen zu den Eingängen fließen kann, sonst gibts Signalsalat.

Auf diese Weise kannst Du zB mit 16 Ausgängen und 16 Eingängen ganze

16*16=256 Taster abfragen. Genaugenommen reichen sogar 4 Ausgänge und 16 Eingänge, denn von Deinen 16 Senkrechten ist ja immer nur einer aktiv, macht 16 Möglichkeiten = 4 Bit. Das "übersetzen" macht ein 4-to-16-Multiplexer (auch line decoder genannt), zB 74154 für wenige cent.
formatting link

Das ganze geht sehr schnell, immerhin musst Du nur 16 mal einen 16-Bit Wert lesen, um alle Taster abgefragt zu haben. Schneller jedenfalls, als 256 mal 1 Bit zu lesen (Schieberegister). Nun kenne ich nicht das Verhalten von 256 drückenden Menschen, aber wenn denn die Frage schwierig genug ist, findest Du sicher heraus, wer als erster gedrückt hat :-)

Die eigentliche Schwierigkeit - egal ob Schieberegister oder Matrix oder was ganz anderes - sehe ich allerdings in den Unmengen an Drahtverhau, den Störungen, die Du Dir einfangen willst, den Kapazitäten der Leitungen,.... Und am Ende hast Du einen Lottozahlengenerator gebaut, ohne Gewähr, versteht sich. :-)

Gruß, Michael.

Reply to
Michael Eggert

(Michael Eggert) 16.11.03 in /de/sci/electronics:

Guter Hinweis.

Bei einer PC Tastatur dürfen aber i.d.R. nur spezielle Tasten gleichzeitig mit andern gedrückt werden.

Sonst könnte man ja einfach 2 Tastaturen schlachten und mit

60 Kabel jedden Matrixpunkt verlängern... (Was dem Controler bei mehr als 20cm wohl nicht gefallen wird. Aber: Versuch macht kluch)

ACK.

Reply to
Rainer Zocholl

(Andreas Wenzel) 16.11.03 in /de/sci/electronics:

Keines bei dem ich alle 102 Tasten drücken musste ;-)

Hast Du Dir mal angesehen wie die Matrix auf der Tastatur verteilt ist?

Die geht nicht einfach 9*8 gerade durch, sondern Tasten die evtl. doch zusammen mit anderen gedrück werden können liegen anders. Z.B beim Tippen mit 10 Fingern wäre es sehr unpraktisch wenn rechts und links auf derselben Matrix lägen.

Reply to
Rainer Zocholl

Wenn pro Bedienteil je 4 Tasten verwendet werden würde ich zwei 16X4 Matrixen aufbauen.

Das ergibt 16 Spaltentreiber und 8 Eingänge.

ich stelle mir das so vor:

Box 0 Spaltentreiber0----+--Taster---Diode--Eingang0 +--Taster---Diode--Eingang1 +--Taster---Diode--Eingang2 +--Taster---Diode--Eingang3

Box 1 Spaltentreiber0----+--Taster---Diode--Eingang4 +--Taster---Diode--Eingang5 +--Taster---Diode--Eingang6 +--Taster---Diode--Eingang7

....

Box 5 Spaltentreiber2----+--Taster---Diode--Eingang4 +--Taster---Diode--Eingang5 +--Taster---Diode--Eingang6 +--Taster---Diode--Eingang7

Die Spaltentreiber sollten mindestens mit 12 Volt arbeiten und auch etwas Strom liefern können, damit bei den Empfängern ordentlich entstört werden kann. Ich würde mindestens 10 mA fließen lassen weil der Aufbau vermutlich großräumig wird. Abgeschirmte Leitungen währen auch gut damit die Scanimpulse in der Leitung bleiben. Um Störimpulse auf Nachbarleitungen gering zu halten sollten die Scanimpulse nicht zu steilflankig sein.

--
MFG Gernot
Reply to
Gernot Fink

Hi!

Da Sebastian schrieb:

wird er sich um das...

...wohl schon Gedanken gemacht haben.

Gerade um viele Scanvorgänge mit niedrigem Takt zu schaffen, bietet sich die bereits vorgeschlagene Tastaturmatrix an. Evtl würde ich Optokoppler vorsehen, um Störungen zu vermeiden. Also von den Tastern über die langen Kabel zu den Optokopplern in der Matrix. 4er gibts für

0,24 - da werden die Taster im ansprechenden Gehäuse vielfach teurer sein. Zugegeben, das wird ne hübsch volle Platine, und 100x 10mA sind auch nicht wenig - aber ich wüsste nicht, wie man sonst die möglichen Störungen in den Griff bekommen sollte.

Gruß, Michael.

Reply to
Michael Eggert

Es ist natürlich ersteinmal die Frage ob bei WwM die Taster auch wirklich ausgewertet werden... kann ja auch sein, daß da ein Zufallsgenerator ant- wortet oder eine vom Frage-Erfinder vorgegebene Verteilung angezeigt wird - schließlich ist ja nicht alles echt beim Fernsehen...

Es ist wirklich schwer, Dir einen passenden Rat zu geben wenn man die Rahmenbedingungen nicht kennt. Z.B. ob da 120 Taster in der Pampa ver- teilt werden oder ob diese wie bei WwM zu Gruppen a 4 Taster zusammen- gefasst werden? Bei letzterem könnte ein BCD-2-Binary-Encoder die Anzahl der auszuwertenden Signale schon mal halbieren und auch das Problem der gleichzeitig zu drückenden Tasten reduzieren...

*Ich* würde es wohl so machen: In jedes der 30 Kästchen mit 4 Tastern kommt ein kleiner uC, z.Zt. nehme ich für so etwas gerne den PIC 12F629. Daran die 4 Tasten. Dieser PIC sendet dann auf 1 Leitung die zuerst ge- drückte Taste zusammen mit einer Gerätenummer. Dabei kann man dieses Protokoll nehmen - Name ist mir leider entfallen - wo der PIC die Über- tragung abbricht wenn auf dem Bus ein anderes Bit anliegt als er senden will und es nach einer zufälligen Wartezeit nochmal versucht. Ein 31. PIC sammelt diese Übertragungen und leitet sie an Deinen PC weiter.

cu,

Aguja

::Update::

formatting link
==> Free AVR-, PIC- & 8051-Programmers, Apps & Tips

Reply to
Aguja

Es sollen 24 Taster a 5 Tasten werden (WwM war nur ein Anwendungsbeispiel, will mir auch andere Möglichkeiten offen halten, ist ja dann nur noch eine Frage der Programmierung). Und mit der 5. Taste kommt leider ein drittes Bit ins Spiel... Naja gibt Schlimmeres. Verpackt der 12F629 auch 5 Tasten? Danke!

Gruss Seb

"Aguja" schrieb im Newsbeitrag news:UOXu/ snipped-for-privacy@despammed.com...

von

dem

Tastenzustände

Tips

Reply to
Sebastian Schöps

Immer wieder wird hier die Störanfälligkeit genannt. Nun ist aber ist doch die Situation so, dass der Normalzustand einer Taste "nicht gedrückt" ist (ich schätze in 98% aller Abfragen), d.h. das Signal läuft über den "kurzen Weg":

+5V | |

von

dem

Tastenzustände

an

Reply to
Sebastian Schöps

Du hast es nicht richtig verstanden. Die Probleme kommen nicht vom Weg zwischen Taster und IC (gesetzt der Fall, das IC ist mit im Handgehäuse) sondern über die Kabelverbindung zwischen den Handgehäusen.

Nunja, es ist Dein Geld :-)

Es gibt fertige Gehäuse mit eingebauten Tastern für Fernsteuerungen (bei fast allen Versendern): Loch reinbohren, Kabel durch und fertig.

Ach ja: Der PIC 12F629 kann auch mehr als 4 Taster, man kann auch hier eine Diodenmatrix einsetzen. Einen (komfortabler 2) der 6 I/O-Pins brauchst Du ja noch für das Bus-System.

cu,

Aguja

::Update::

formatting link
==> Free AVR-, PIC- & 8051-Programmers, Apps & Tips

Reply to
Aguja

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.