Forum: Mikrocontroller und Digitale Elektronik 4 Taster gegenseitig verriegeln


von Eisenbahner (Gast)


Lesenswert?

Hi,

möchte 4 Taster gegenseitig verriegeln, sodass bei drücken eines 
Taster's
der jeweilige Ausgang "High" geht und die anderen "Low".

     A1 A2 A3 A4
S1 = 1  0  0  0
S2 = 0  1  0  0
S3 = 0  0  1  0
S4 = 0  0  0  1

Des weiteren sollte der Zustand so bis zum nächsten Impuls eines anderen 
Tasters gehalten werden.

Gibt es hierfür einen Baustein, oder geht nur prog. Logik?

Gruß Modelleisenbahner

von Gerd V. (gerald)


Lesenswert?

Hallo Eisenbahner,

kodieren kann man die Signale mit einem Baustein 74HC154, 
Haltefunktionen gehen im Prinzip mit dem Baustein 74HC74 und bischen 
Logik drumherum.


Einfacher geht es mit einem AVR-Controller, bischen Programm rein und 
fertig, ergibt EIN Baustein.
Quarz und Krempel nicht notwendig, naja Abblockkondensatoren natürlich 
noch.

Gruss

Gerd

von Micha (Gast)


Lesenswert?

Sowas macht man ganz einfach mit einem SAS580
Ein IC,paar Widerstände und C`s und fertig.

von Sonic (Gast)


Lesenswert?

Das meistert der kleinste AVR mit Bravour, Tiny11 (falls man den noch 
kriegt), oder Tiny12, gibt's im DIP8 oder SOIC8 (SMD)-Gehäuse, ist auch 
nur noch ein 100nF Blockkondensator erforderlich. Kleiner geht's wohl 
kaum!

von Peter D. (peda)


Lesenswert?

Sonic wrote:
> Das meistert der kleinste AVR mit Bravour, Tiny11 (falls man den noch
> kriegt), oder Tiny12, gibt's im DIP8 oder SOIC8

Pins zählen ist wohl nicht Deine Stärke :-)
Der Tiny11 hat max 6 IOs, für 4 Tasten und 4 Ausgänge braucht man aber 
doch 8.
Also muß es schon ein Tiny26 oder 2313 sein.


Peter

P.S.:
Oder man nimmt 2*Tiny11, die über eine Leitung verbunden sind.

von Sonic (Gast)


Lesenswert?

Es war nirgends die Rede von 4 Ausgängen, nur von 4 Tastern. Die Ausgabe 
des Ergebnisses ist was Anderes! Es können die 6 IOs auch gleichzeitig 
als Ein- und Ausgang arbeiten. Die geforderte Funktion kann durchaus 
umgesetzt werden!

von Kliby (Gast)


Lesenswert?

Eisenbahner (Gast)
nim doch einfach ne kleine sps... bei ebay müsstest du was günstiges 
finden, sind einfach zu programmieren, viel weniger aufwand als mit 
einem uP...

von Rolf Magnus (Gast)


Lesenswert?

> Also muß es schon ein Tiny26 oder 2313 sein.

Oder ein Tiny24.

von Camel (Gast)


Lesenswert?

Ich habe so eine Funktion mal in einem CMOS-Logikbaustein gesehen, komme 
aber nicht mehr drauf.
Von dieser Lösung weis niemand?

Camel

von dernixwois (Gast)


Lesenswert?

Wie wäre es mit einem EPM 7032 SLC44 von Altera! Mit dem Baustein lassen 
sich solche Loigik Gatter programmieren wie RS-Flip Flop usw.

Dazu benötigt man lediglich Quartus von Altera Freeware und einen 
Programieradapter.

Allerdings kommt dir µC billiger oder ein paar andere Käfer :-)

dernixwois

von Pöhli (Gast)


Lesenswert?

Sonic hat schon recht, 4 Tasten abfragen brauch man nur 4 Pins. Die 
Software gibts fertig im Netz.

Verriegelung und Taste merken mach ich meist dadurch das Tastatur 
externen Interrupt auslöst in dem die Abfrage abläuft und ich mir in 
einem separaten Statusregister die Taste merke.

Was letztendlich besser ist hängt wohl in dr Realität weniger von der 
Anzahl der Pins ab als den Fähigkeiten und Vorlieben des Umsetzenden.

von Camel (Gast)


Lesenswert?

Hab nochmal drüber nachgedacht!
Es müsste doch eigentlich auch mit einem BCD/DEZ Decoder (7442) gehen, 
oder?

von Manuel (Gast)


Angehängte Dateien:

Lesenswert?

Hallo!

Ich habe mir über ähnliches Problem auchmal den Kopf zerbrochen.
Die angehängte schaltung ist für vier Taster (schlieser), die wie die 
alten bekannten Radiobuttons rausspringen, sobald ein anderer gedrückt 
wird.
Es sind also vier eingänge mit pullup und vier ausgänge für LED´s.
Desweiteren sind noch 2 binärausgänge dabei um damit auf nen MC zu 
gehen.


Ich hoffe es hilft!

Manuel

von Peter D. (peda)


Lesenswert?

Sonic wrote:
> Es war nirgends die Rede von 4 Ausgängen, nur von 4 Tastern.

Komisch, ich sehe da aber S1..4 und A1..4, das macht zusammen 8.
Und das nur ein Ausgang high sein darf steht auch explizit da.

Ist das vielleicht so formatiert, daß es nicht mit jedem Browser 
sichtbar ist ?


Peter


von Sonic (Gast)


Lesenswert?

Nu sieh' das mal nicht so verbissen, Peter!
Dann schiebste mit den übrigen 2 Bit eben das Ergebnis in ein 
Schieberegister, haste halt 'n Bauteil mehr und wenn's brennt 8 Ausgänge 
(je nach Schieberegister).
Nix für ungut, lesen und Zählen kann ich schon.

von Jörn P. (jonnyp)


Lesenswert?

@Camel
Ich weiss auch von dieser Schaltung, ist aber schon lange her. Könnte 
mal im Elektor gewesen sein, aber ich komm nicht drauf, welcher chip es 
gewesen ist, geschweige denn, wo ich die verdammte Schaltung gelassen 
habe. Sorry.

von Andi (Gast)


Angehängte Dateien:

Lesenswert?

Hier eine Lösung mit einem CMOS-Baustein 4017. Zusätzlich wird nur noch 
ein Taktsignal benötigt (so 100Hz bis 10kHz sollte gehen).
Beschreibung: CP0 ist der Takteingang, der Counter zählt aber nur wenn 
/CP1 auf LOW ist. Der Zähler ist ein Decade-Counter es geht also 
nacheinander einer der Ausgänge Q0..Q9 auf HIGH die anderen sind LOW. 
Wird eine Taste mit Ausgang = LOW gedrückt zählt der Counter so lange 
bis da ein HIGH erscheint und stoppt dann. Auch bei losgelassener Taste 
ist CP1=High (PullUp).
Die Schaltung lässt sich auf bis zu 10 Taster erweitern!

Gruss Andi

von Klaus (Gast)


Lesenswert?

Für die Taster-Eingänge bietet sich ein Prioritäts-Encoder 74HC147 bzw. 
74HC148 an.

von Manuel (Gast)


Lesenswert?

@ Andi:

Bei diesem chip sind aber keine ausgänge, die gesetzt oder zurückgesetzt 
werden oder?

von Andi (Gast)


Lesenswert?

@Manuel
Doch nur einer der Ausgänge Q0..Q3 (..Q9) werden durch das Drücken der 
entsprechenden Taste auf HIGH gesetzt, die anderen sind auf LOW. Die 
Umschaltung geschieht allerdings nicht sofort, sondern die 
dazwischenliegenden Ausgange werden nacheinander kurz aktiviert (im Takt 
des Clocks). Wird von Q0 auf Q3 umgeschaltet werden ganz kurz Q1 und 
dann Q2 aktiviert (=HIGH), bei Q3 stoppt dann der Zähler und Q3 bleibt 
auf HIGH bis wieder eine andere Taste gedrückt wird.

Gruss Andi

von Peter D. (peda)


Lesenswert?

mitm ATtiny2313:
1
#include <avr\io.h>
2
3
4
int main( void )
5
{
6
  unsigned char in;
7
8
  PORTD = 0;
9
  DDRD = 0x0F;
10
11
  for(;;){
12
    in = PINB & 0x0F;
13
    switch( in ){
14
      case 1:
15
      case 2:
16
      case 4:
17
      case 8: PORTD = in;
18
    }
19
  }
20
}


Peter

P.S.:
Ist wie im Fernsehquiz (wer zuerst drückt, gewinnt).

von Εrnst B. (ernst)


Lesenswert?

Jup, bau dir nen ATTiny ein... ist billiger als das TTL-Grab für die 
diskrete Lösung mit Flipflops, hat kein "Flackern" auf den Ausgängen wie 
die Counter-Variante, und der Hauptvorteil:

Wenn du erstmal nen µC auf der Platine hast, fallen dir sicher noch 1000 
andere Sachen ein, die der miterledigen könnte.

(z.B Speichern des Tastenzustandes im EEProm, damit wie bei den "realen" 
Radioknöpfen der Zustand auch beim Ausschalten erhalten bleibt...)

/Ernst

von Philipp Sªsse (Gast)


Lesenswert?

Warum der Rückzieher, Sonic? Üblicherweise müssen die Low-Ausgänge ja 
keinen nennenswerten Strom aufnehmen. Also setzt man die als Eingänge 
und zieht sie mit externem Widerstand low. Die Taster ziehen die 
Ein-/Ausgänge dann auf high, was der µC auswerten kann und was den 
Ausgang nicht stört (wird ja anschließend ohnehin auf high geschaltet).

Was man nicht detektieren kann, ist der Taster am aktiven Ein-/Ausgang 
-- spielt aber auch keine Rolle, da laut Aufgabenstellung das Drücken 
vom Taster des bereits aktiven Ausgangs keine Funktion hat (Ausgang 
bleibt aktiv).

Die Lösung geht nur dann nicht, wenn

a) beim passiven Ausgang dauerhaft ein nicht vernachlässigbarer Strom 
fließen soll (es unzumutbar ist, den aktiven µC-Pin permanent gegen den 
kleinen PullDown-Widerstand arbeiten zu lassen).

b) ausgeschlossen werden muß, daß kurzzeitig oder bei Fehlbedienung 
(mehrere Tasten gleichzeitig drücken) mehrere Ausgänge aktiv sind.

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.