Forum: Mikrocontroller und Digitale Elektronik Abfrage von ca. 130 Tasten


von Daniel A. (acki1985)


Lesenswert?

Hallo alle zusammen,

ich möchte über einen Mikrocontroller gerne ca. 130 Taster einlesen.

Welche Möglichkeiten gibt es da ausser einer Tastermatrix?

Mit freundlichen Gruß

Daniel

von Peter D. (peda)


Lesenswert?

17 * 74HC165

von hingucker (Gast)


Lesenswert?

Videokamera?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Du kannst, einen geeigneten Controller vorausgesetzt, natürlich auch 
jeden Taster an einen eigenen I/O-Pin hängen. Oder mit Portexpandern à 
la PCF8574 hantieren, oder viele Schieberegister verwenden, um die 
Taster abzufragen.

Welchen Vorteil aber würdest Du damit gegenüber einer Tastenmatrix 
gewinnen?

Geht es um die Umsetzung einer Tastatur mit "n-key rollover"?

von Daniel A. (acki1985)


Lesenswert?

Das Problem ist, das es Doppeltastschalter sind mit Mittelstellung.
Die Mittelanschlüsse sind alle mit einander verbunden. Es kommen quasi 
von jedem Tastschalter 2 Leitungen.

Ich hoffe ich konnte etwas Licht ins dunkle bringen... :-)

von Pandur S. (jetztnicht)


Lesenswert?

Das waeren dann also 130/8 = 17  8bit-Schieberegister des Typs 74HC597 
oder so.

von A. S. (Gast)


Lesenswert?

Wenn Du beliebige Tastenkombinationen zulassen möchtest, und kein 
Diodengrab, dann einen µC mit 130 IOs. Vorteil z.b. bei lowest 
Current-Anwendungen: Einfacher Interrupt bei Tastendruck möglich, damit 
bis zu 99% der Zeit 0 Strom.

von Joe F. (easylife)


Lesenswert?

Sind es dann 130 (Doppel-)Taster mit je 2 Zuständen, oder 65 davon?
Betr. Schieberegister: 74HC597 ist eigentlich zuviel des Guten. 74HC165 
reicht völlig aus, bei 65 Doppel-Taster bräuchtest du die genannten 17 
Stück davon, wenn es 130 solcher Taster sind, benötigst du 33.
17 oder 33 Clock Inputs würde ich nicht mehr parallel an ein uC Output 
hängen. Hier sind zusätzliche Treiber nötig.

von Daniel A. (acki1985)


Lesenswert?

Es wird eigentlich immer nur eine Taste abgefragt.
Zumindest ist so der Plan.

von christoph1024 (Gast)


Lesenswert?

Dachte grade an den LM8330, aber der kann nur 104. Den Rest mit einem 
zusätzlichen TCA8418?

von Daniel A. (acki1985)


Lesenswert?

Achso habe ich vergessen zu erwähnen. Programmiert soll das ganze in 
Bascom.

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

Oder ein paar geschickt gewählte Widerstände und die Tasten dann per ADC 
einlesen. Bei 130 Tasten und 8 AD-Eingängen bräuchte man noch ein 
bisschen externes gemuxe.

Matthias

von Thomas E. (picalic)


Lesenswert?

Vielleicht jedem Schaltkontakt einen kleinen FET spendieren (Kontakt 
schaltet dessen Gate auf high oder low) und die FETs dann als normale 
Matrix, z.B. 12x12, verschalten. Dann reicht ein Controller mit 24 IOs 
für die Tasten ohne weitere Zusatzhardware, oder man baut noch ein 
Latch/Multiplexer/Schieberegister/was auch immer dazwischen, dann kommt 
man auch mit weniger Port-Pins aus.

von Jobst M. (jobstens-de)


Lesenswert?

Wenn WIRKLICH IMMER nur eine der 130 Tasten betätigt wird, dann reichen 
133 Widerstände und ein ADC >=10Bit.

132 gleiche Widerstände in Reihe. Oberseite an +, Unterseite an GND.
Der Abgriff in der Mitte (zwischen R66 und R67) wird mit einem 
Widerstand 1000x größer als die anderen Widerstände, mit dem gemeinsamen 
Anschluss der Taster und dem ADC verbunden.
Die noch freien Abgriffe in der Reihenschaltung werden mit jeweils einem 
Taster verbunden.
Bei U/2 ist keine Taste gedrückt.

Besser ist es, vor den ADC noch einen (R2R)-OP zu setzen.

Die SW muss durch eine Art Entprellung filtern, ob eine Taste wirklich 
gedrückt wurde.


Gruß

Jobst

von Daniel A. (acki1985)


Lesenswert?

Ich glaube die Abfrage über Schieberegister gefällt mir ganz gut.

Ich danke euch trotz all dem für eure Ideen.

von Daniel A. (acki1985)


Lesenswert?


von Daniel A. (acki1985)


Lesenswert?

Joe F. schrieb:
> 17 oder 33 Clock Inputs würde ich nicht mehr parallel an ein uC Output
> hängen. Hier sind zusätzliche Treiber nötig.

Was ist mit dieser Aussage gemeint? Oder besser gesagt wie soll ich das 
Verstehen?

von Jobst M. (jobstens-de)


Lesenswert?

c-hater schrieb im Beitrag #4878227:
> Was zum Teufel sollen Doppeltastschalter sein?

Du führst Dich mal wieder klasse auf!
Ich kann mir darunter zumindest etwas vorstellen.
Kann ja auch nicht jeder die korrekten Begriffe für jedes Teil kennen - 
außer Du natürlich.

c-hater schrieb im Beitrag #4878227:
> Wenn's eine Mittelstellung gibt, dann sind's wohl doch eher Schalter.

Offensichtlich kennst Du aber nicht jedes Bauteil.

Reichelt nennt dieses Teil z,B. Hebelschalter - Los, fass!
Auf beiden Seiten tastend.
http://www.reichelt.de/?ARTICLE=105662


c-hater schrieb im Beitrag #4878227:
> auch solche
> Wechsler könnte man natürlich problemlos in einer Matrix abfragen. Man
> muss einfach nur alle Mittelkontakte an Zeilenleitungen hängen

Und aufgepasst hast Du auch nicht: Wird nur eine Zeile:

Daniel A. schrieb:
> Die Mittelanschlüsse sind alle mit einander verbunden.


Gruß

Jobst

von Jobst M. (jobstens-de)


Lesenswert?

Daniel A. schrieb:
> Entschuldigung es handelt sich um solche Schalter:

Okay - wieso sind dort ALLE Mittelkontakte miteinander verbunden?


Gruß

Jobst

von Jobst M. (jobstens-de)


Lesenswert?

Daniel A. schrieb:
> Joe F. schrieb:
>> 17 oder 33 Clock Inputs würde ich nicht mehr parallel an ein uC Output
>> hängen. Hier sind zusätzliche Treiber nötig.
>
> Was ist mit dieser Aussage gemeint? Oder besser gesagt wie soll ich das
> Verstehen?

Das bedeutet einfach, dass die Ausgänge eines µC evtl. nicht stark genug 
sind, um die ganzen Eingänge schnell genug zu schalten.


Gruß

Jobst

von Daniel A. (acki1985)


Lesenswert?

Der Mittelanschluss jedes Schalters sind schon fest mit dem + der 
Spannungsquelle verbunden. Die lässt sich auch nicht mehr so einfach 
lösen. Ich könnte die Gesamt Plusleitung (wo alle Mittelanschlüsse 
zusammengefasst sind) wo anders anschließen das ginge noch.

von c-hater (Gast)


Lesenswert?

Daniel A. schrieb:

> Entschuldigung es handelt sich um solche Schalter:
>
> 
http://www.pollin.de/shop/dt/OTU1OTc1OTk-/Bauelemente_Bauteile/Mechanische_Bauelemente/Schalter_Taster/Kipptaster_MTS_223.html

OMG. Schon mit dem Zählen hast du es wohl nicht so wirklich. Das sollte 
die zu denken geben. Normalerweise beherrscht jeder homo sapiens mit 
einem Alter ab drei Jahren das Zählen zumindest bis zur Zahl Drei...

Der MTS223 hat lt. Datenblatt nicht zwei, auch nicht drei, sondern ganze 
SECHS Anschlüsse. Leider ist das DB alles andere als erschöpfend, 
Pollin halt...

Die wahrscheinlichste Deutung der gelieferten unvollständigen 
Informationen dürfte sein:

1) Es gibt zwei Schaltebenen, die exakt dasselbe machen, allerdings 
elektrisch unabhängig voneinander. Das heißt für dich: von den sechs 
verfügbaren Kontakten musst du nur drei benutzen.

2) Es handelt sich beim MTS223 um einen Doppel*taster*. Also zwei Taster 
mit einem gemeinsamem Anschluß. Bedienungshebel in die eine Richtung 
betätigt den einen Taster, Bedienungshebel in die andere den anderen. In 
Neutralstellung des Bedienungshebels ist keiner der beiden Taster 
betätigt.

3) Kein Problem bei der Abfrage per Matrix. Geht genauso, als hätte man 
zwei einzelne Taster. Man muss halt bloß dafür sorgen, dass alle 
Mittelkontakte einheitlich entweder Zeilen oder Spalten zugeordnet sind.

4) Gegenüber einfachen Tastern sparst du mit diesen Dingern 1/4 des 
Verdrahtungsaufwands. Das ist der einzige Unterschied.

von Joe F. (easylife)


Lesenswert?

Jobst M. schrieb:
>> Was ist mit dieser Aussage gemeint? Oder besser gesagt wie soll ich das
>> Verstehen?
>
> Das bedeutet einfach, dass die Ausgänge eines µC evtl. nicht stark genug
> sind, um die ganzen Eingänge schnell genug zu schalten.

Ganz genau. Du wirst die Schieberegister vermutlich nicht öfter als 20x 
pro Sekunde auslesen wollen, daher kannst du meinen Hinweis ignorieren.
Wenn ich im ungünstigsten Fall von 33 kaskadierten Registern ausgehe, 
ergäbe das eine Bitclock von 20*8*33 = 5280 Hz, und das ist vollkommen 
unkritisch.

Hier findest du übrigens einen ganz guten Einstieg in die Ansteuerung 
von Schieberegister mit Bascom:

https://www.elv.de/Mikrocontroller-Einstieg-mit-BASCOM-AVR-Teil-15-SPI/x.aspx/cid_726/detail_50538

Es wird gezeigt, wie man ein 74HC595 ansteuert, das ist quasi das 
Ausgabe-Pendant zum 74HC165.
Der Code für eine 74HC165-er Kette ist aber im Prinzip fast gleich, 
ausser dass du nicht Daten bitweise vom uC zur Schieberegister-Kette 
ausgibst, sondern einliest.

von Dietrich L. (dietrichl)


Lesenswert?

c-hater schrieb im Beitrag #4878266:
> Daniel A. schrieb:
>
>> Der Mittelanschluss jedes Schalters sind schon fest mit dem + der
>> Spannungsquelle verbunden.
>
> Dann kannst du schlicht keine keine Matrix mehr benutzen. Welcher Idiot
> hat das so designed? Du selber?

Ja, da ist halt ein Freiheitsgrad weniger verfügbar. Bist Du 
überfordert, damit eine Lösung zu finden?
Du kennst natürlich alle Randbedingungen, die zu dieser Vorgabe geführt 
haben, und die sind natürlich alle idiotisch...

@Daniel: nicht aufregen, das ist doch nur c-hater ;-)

von Flummi (Gast)


Lesenswert?

c-hater schrieb im Beitrag #4878227:
> Wenn's eine Mittelstellung gibt,
> dann sind's wohl doch eher Schalter.
Nein. Taster. Es gibt auch Taster mit Mittelstellung.
c-hater schrieb im Beitrag #4878227:
> Daniel A. schrieb:
>> Die Mittelanschlüsse sind alle mit einander verbunden. Es kommen quasi
>> von jedem Tastschalter 2 Leitungen.
>
> Wenn das wirklich so ist, dann sind es keine mysteriösen
> "Doppelschalttaster", sondern schlicht und einfach nur: Schalter.
Nein. Taster. Doppelte. Mit Mittelstellung.

c-hater schrieb im Beitrag #4878227:
> Wenn du allerdings nicht einmal bis drei zählen kannst (was stark
> anzunehmen ist), dann handelt es sich immer noch um Schalter, allerdings
> dann um einen "Wechsler".
Immer noch sind es Taster. Und da die Mittelanschlüsse alle miteinander 
verbunden sind, kommen von jedem Taster zwei Leitungen. Und eine 
gemeinsame Leitung für alle Taster. Nicht drei Leitungen pro Taster.

c-hater schrieb im Beitrag #4878227:
> Aber egal wie grenzenlos deine Idiotie auch sein mag: auch solche
> Wechsler könnte man natürlich problemlos in einer Matrix abfragen.
Obwohl er schrieb, dass ALLE Mittelkontakte bereits miteinander 
verbunden sind?

c-hater schrieb:
> Es handelt sich beim MTS223 um einen Doppel*taster*. Also zwei Taster
> mit einem gemeinsamem Anschluß.
Ach, plötzlich sind es keine "Schalter" mehr? Hat der TO wohl doch 
recht?

c-hater schrieb:
> Kein Problem bei der Abfrage per Matrix. Geht genauso, als hätte man
> zwei einzelne Taster. Man muss halt bloß dafür sorgen, dass alle
> Mittelkontakte einheitlich entweder Zeilen oder Spalten zugeordnet sind.
Doch ein Problem. Du kannst nicht lesen. Alle Mittelanschlüsse sind 
miteinander verbunden. Das hat der TO schon lange mitgeteilt.

c-hater schrieb im Beitrag #4878266:
> Dann kannst du schlicht keine keine Matrix mehr benutzen.
Ach. Auch schon(!) gemerkt?

von Dieter F. (Gast)


Lesenswert?

c-hater schrieb im Beitrag #4878227:
> Eins geht nur. Wenn's eine Mittelstellung gibt,
> dann sind's wohl doch eher Schalter.

Schon mal den Außenspiegel (sofern elektrisch) im Auto verstellt?

von Flummi (Gast)


Lesenswert?

Dieter F. schrieb:
> c-hater schrieb:
>> Eins geht nur. Wenn's eine Mittelstellung gibt,
>> dann sind's wohl doch eher Schalter.
>
> Schon mal den Außenspiegel (sofern elektrisch) im Auto verstellt?

Verwirre doch den armen Kerl jetzt nicht mit Fakten. :-)

von Klaus (Gast)


Lesenswert?

Flummi schrieb:
> Alle Mittelanschlüsse sind miteinander verbunden.

Tja, erst denken dann löten. Zur Strafe, alles nochmal machen. 
Lehrersprech "Das können wir bestimmt besser"

MfG Klaus

von c-hater (Gast)


Lesenswert?

Dietrich L. schrieb:

> Ja, da ist halt ein Freiheitsgrad weniger verfügbar. Bist Du
> überfordert, damit eine Lösung zu finden?

Nein. Ich würde mich nur niemals in die Position manövrieren, dass das 
überhaupt nötig wird, weil ich lange, sehr lange vor der physischen 
Verdrahtung darüber nachdenken würde, wie ich den Kram sinnvollerweise 
verdrahte...

> Du kennst natürlich alle Randbedingungen, die zu dieser Vorgabe geführt
> haben

Nein. Sie wurden aber auch nicht genannt.

> und die sind natürlich alle idiotisch...

Davon ist wohl (mehr oder weniger) auszugehen. Irgendwer hat da 
offensichtlich nicht hinreichend drüber nachgedacht. Wäre es nicht so, 
gäbe es den ganzen Thread wohl nicht...

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

c-hater schrieb:
> 2) Es handelt sich beim MTS223 um einen Doppel*taster*. Also zwei Taster
> mit einem gemeinsamem Anschluß. Bedienungshebel in die eine Richtung
> betätigt den einen Taster, Bedienungshebel in die andere den anderen. In
> Neutralstellung des Bedienungshebels ist keiner der beiden Taster
> betätigt.

 Ja.
 Meistens ist der Mittelkontakt Ausgang, also z.B.
 5V - 0 - 12V
 Vorwärts - Halt - Rückwärts.


 Wozu aber 130 solcher "Umschalter" zu gebrauchen sind, bleibt für
 mich ein Rätsel.

von Jobst M. (jobstens-de)


Lesenswert?

c-hater schrieb:
> Irgendwer hat da
> offensichtlich nicht hinreichend drüber nachgedacht.

Ja, das mag sein. Durch Fehler lernt man. Das kann passieren - außer Dir 
natürlich ...

Trotzdem ist die Situation nun so, wie sie jetzt ist.
Das ist offensichtlich etwas, was Dir sehr schwer fällt zu begreifen.

Wenn Du nun also keine praktische Lösung für sein Problem hast, könntest 
Du uns jetzt auch wieder in Ruhe lassen ...



Gruß

Jobst

von Chris D. (myfairtux) (Moderator) Benutzerseite


Lesenswert?

Es sollte einem halbwegs sozialisierten Menschen möglich sein, Beiträge 
ohne Beleidigungen zu schreiben.

Beiträge inkl. Beleidigung werden ungeachtet ihres sonstigen Gehaltes 
komplett gelöscht. Wir sind Moderatoren, keine Schulhofaufsicht.

Danke.

von Robin S. (der_r)


Lesenswert?

Alternativ zum 74HC(T)165 kannst du auch ein 4021 Schieberegister (z.B. 
CD4021 oder HEF4021)nehmen, ist auch ein CMOS IC und schnell genug für 
diese Anwendung.

Je nachdem, was vielleicht gerade besser verfügbar ist, nur als kleiner 
Hinweis.

von Daniel A. (acki1985)


Lesenswert?

So ich versuche jetzt mal zu erklären was ich vorhabe.

Es geht um ein Schaltpult für eine Modelleisenbahn.
Früher war es so das die Mittelanschlüsse des Tasters mit der einen 
Seite des Trafos verbunden waren und die andere Seite zur Spule von der 
Weiche / Relais ging. Der 2. Pol der Weiche (des Antriebs) ging auf den 
2. Anschluss des Trafos.
So ist die Verdrahtung auch im Bestand. Jetzt möchte ich aber das die 
Taster (Tast Schalter) vom AVR eingelesen werden und dieser dan den 
Befehl zum stellen der Weiche gibt.

Deshalb habe ich nur die 2 (wirklich) Leitungen zur verfügung und könnte 
den gemeinsamen plus vom Trafo abmachen und andersweitig einspeißen.

von Daniel A. (acki1985)


Lesenswert?

Robin S. schrieb:
> Je nachdem, was vielleicht gerade besser verfügbar ist, nur als kleiner
> Hinweis.

Bis jetzt noch gar nix in der Art.

von c-hater (Gast)


Lesenswert?

Chris D. schrieb:

> Beiträge inkl. Beleidigung werden ungeachtet ihres sonstigen Gehaltes
> komplett gelöscht.

Selbst wenn die offensichtliche Lösung darin steht?

> Wir sind Moderatoren, keine Schulhofaufsicht.

Ihr seid Zensoren. Mehr muss man dazu nicht ausführen. Jeder aufrechte 
Demokrat weiss, was man von Zensoren zu halten hat.

von H-G S. (haenschen)


Lesenswert?

Du bräuchtest 11 Spalten bzw. Eingänge eines 
parallel-zu-seriell-Schieberegisters sowie 12 Zeilen bzw. Ausgänge eines 
seriell-zu-parallel-Schieberegisters.

An den Controller kommen dann ein paar Steuerleitungen für die 
Schieberegister.

11x12=132 mögliche Tasten in der Matrix, wobei es da so einen Trick gibt 
Zeilen bzw. Spalten einzusparen.

https://www-user.tu-chemnitz.de/~heha/Mikrocontroller/Tastenmatrix.htm

von Daniel A. (acki1985)


Lesenswert?

H-G S. schrieb:
> 11x12=132 mögliche Tasten in der Matrix, wobei es da so einen Trick gibt
> Zeilen bzw. Spalten einzusparen.

Matrix geht aber leider auf Grund der vorhandenen Installation nicht 
mehr.

von Chris D. (myfairtux) (Moderator) Benutzerseite


Lesenswert?

c-hater schrieb:
> Chris D. schrieb:
>
>> Beiträge inkl. Beleidigung werden ungeachtet ihres sonstigen Gehaltes
>> komplett gelöscht.
>
> Selbst wenn die offensichtliche Lösung darin steht?

Auch dann. Wir sind nicht dazu da, hinter Deinen Ausfälligkeiten 
hinterherzuwischen.

>> Wir sind Moderatoren, keine Schulhofaufsicht.
>
> Ihr seid Zensoren. Mehr muss man dazu nicht ausführen. Jeder aufrechte
> Demokrat weiss, was man von Zensoren zu halten hat.

Benimm Dich halt, dann wird auch nichts "zensiert".

Und jetzt bitte wieder zurück zum Thema.

: Bearbeitet durch Moderator
von Robin S. (der_r)


Lesenswert?

Daniel A. schrieb:
> Deshalb habe ich nur die 2 (wirklich) Leitungen zur verfügung und könnte
> den gemeinsamen plus vom Trafo abmachen und andersweitig einspeißen.

OK, dann führe die gemeinsame Leitung an Masse, jeder Taster-Ausgang 
geht an einen Eingang (PIN0...7) eines Schieberegisters.
Zusätzlich geht von jedem dieser Eingänge ein Pullup-Widerstand (z.B. 
10k) an 5V. Meinetwegen auch andersrum, 5V an die Taster und 
Pulldown-Widerstand.

Die von mir genannten CD4021 bekommt man bei Aliexpress für <5€ / 20 
Stück. Wenns schneller gehen muss auch z.B. bei Digitalo oder Reichelt. 
Widerstände im 100er-Pack liegen selbst bei Conrad (Apotheke) bei 
wenigen €.
Von daher würde ich von allen anderen Frickeleien die Finger lassen, ist 
aber Geschmackssache.

Die CD4021 kannst du kaskadieren, indem du den Q8 mit dem SI (Serial In) 
des jeweils nächsten Schieberegisters verbindest.

Das ganze dann an die SPI-Schnittstelle des Arduinos gehängt (Leitung 
von Pin 9 an einen eigenen Pin nicht vergessen, damit werden die 
Tasterzustände in das interne Register übernommen --> Muss auch 
angesteuert werden) und fertig.

Noch einfacher geht es wohl, wenn man die ShiftIn Funktion benutzt, 
damit kenne ich mich aber nicht genauer aus. Hier wird aber auch der 
Aufbau mit dem CD4021 beschrieben. Wenn ich es richtig sehe, kann man 
bei dieser Funktion sogar beliebige Pins nehmen, aber warum nicht SPI, 
wenn schon vorhanden.
https://www.arduino.cc/en/Tutorial/ShiftIn

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

Daniel A. schrieb:
> Deshalb habe ich nur die 2 (wirklich) Leitungen zur verfügung und könnte
> den gemeinsamen plus vom Trafo abmachen und andersweitig einspeißen.

Am Trafo haben die gar nichts zu suchen. Sowohl AVR als auch 
Schieberegister hätten gerne Gleichspannung.

von Huh (Gast)


Lesenswert?

Wolfgang schrieb:
> Sowohl AVR als auch
> Schieberegister hätten gerne Gleichspannung.

Daniel A. schrieb:
> den gemeinsamen plus

von Daniel A. (acki1985)


Lesenswert?

Wolfgang schrieb:
> Daniel A. schrieb:
>> Deshalb habe ich nur die 2 (wirklich) Leitungen zur verfügung und könnte
>> den gemeinsamen plus vom Trafo abmachen und andersweitig einspeißen.
>
> Am Trafo haben die gar nichts zu suchen. Sowohl AVR als auch
> Schieberegister hätten gerne Gleichspannung.

Das verstehe ich.
Es war bis jetzt halt so. Ich habe doch die Grundkonfiguration 
geschildert gehabt

: Bearbeitet durch User
von m.n. (Gast)


Lesenswert?

Robin S. schrieb:
> Alternativ zum 74HC(T)165 kannst du auch ein 4021 Schieberegister (z.B.
> CD4021 oder HEF4021)nehmen, ist auch ein CMOS IC und schnell genug für
> diese Anwendung.

Den 4021 würde ich bevorzugen, da er nicht ganz so schnell arbeitet und 
störsicherer ist, insbesondere, falls höhere Spannungen <= 15 V 
verwendet werden sollen/müssen.
Verteilte Schieberegister unterstützen auch die räumliche Anordnung der 
Schalter, ohne viele lange Strippen verdrahten zu müssen.

Bei den tastenden Schaltern muß der Schaltzustand allerdings auch 
entprellt werden. Daher ist es ratsam, die Schieberegister ca. 50 - 100 
Mal/s einzulesen. Ein AVR schafft das mühelos, notfalls mit ein bißchen 
ASM-Code und auch, wenn die Software die Pins wackeln läßt.

Robin S. schrieb:
> Die von mir genannten CD4021 bekommt man bei Aliexpress für <5€ / 20
> Stück.

Ich könnte ein paar Stangen gegen Portoerstattung zur Verfügung stellen.

von Joe F. (easylife)


Lesenswert?

m.n. schrieb:
> Bei den tastenden Schaltern muß der Schaltzustand allerdings auch
> entprellt werden. Daher ist es ratsam, die Schieberegister ca. 50 - 100
> Mal/s einzulesen. Ein AVR schafft das mühelos, notfalls mit ein bißchen
> ASM-Code und auch, wenn die Software die Pins wackeln läßt.

Wenn du nur relativ selten abfragst (z.B. 10x pro Sekunde) ist der Drops 
ebenfalls auch ohne jeglichen Aufwand für Entprellung gelutscht.
Die (max.) 0.1s Latenz fallen beim Weichenstellen nicht ins Gewicht, und 
ein Taster wird nicht 0.1s lang prellen.

: Bearbeitet durch User
von H-G S. (haenschen)


Lesenswert?

Es wird recht lange dauern alle Spalten/Zeilen durchzuprüfen bei jedem 
Interrupt ...

von Joe F. (easylife)


Lesenswert?

H-G S. schrieb:
> Es wird recht lange dauern alle Spalten/Zeilen durchzuprüfen bei jedem
> Interrupt ...

Keine Zeilen/Spalten, da keine Matrix.
Interrupt? Warum?
Warum dauert es lange?
Fragen über Fragen.

von posti (Gast)


Lesenswert?

Hi

Gibt es da nicht was I²C mäßiges ala Porterweiterung?

Oder anders gefragt: Was kostet ein halbwegs brauchbarer µC mit vielen 
Beinchen?
Der muß ja nur Digital-In haben (und einen Out für ne irgend wie 
geartete Komunikation)

Die Sache mit den Schieberegistern wird ein IC-Grab der frühen Schule.
Wenn sauber verdrahtet auch nett anzuschauen, aber ohne 'durchrattern' 
der ganzen Schalter wird's wohl Nix werden.

Der µC hätte weiter den Vorteil, daß ich den Pull-Up-Widerstand im IC 
zuschalten kann und nicht löten muß (130 Widerstände x 2 Beinchen).

Die µCs könnten sich dem Master bemerkbar machen (aka Interrupt 
auslösen), Dieser fragt in die Runde, Wer's war und bekommt gleich die 
Taster-Nummer.

Was Der nun damit macht, darum wird sich dann Bascom kümmern müssen.

Viel Spaß beim Digitalisieren Deiner/Eurer Anlage.

MfG

von Joe F. (easylife)


Lesenswert?

posti schrieb:
> Was kostet ein halbwegs brauchbarer µC mit vielen
> Beinchen?

Naja, 130 Inputs wird's wohl kaum geben. Und da jeder der 130 Taster ja 
eigentlich 2 Taster ist, brauchst du schon 260 Inputs.
Mit einem FPGA ginge das, ist im Vergleich zu Schieberegistern aber 
unverhältnismäßig teuer und muss programmiert werden.

Auch wenn die Schieberegister-Lösung "old-school" ist, sie ist gut, 
günstig und wird aus diesen Gründen millionenfach eingesetzt.

m.n. (Gast) nannte noch einen weiteren Vorteil: man kann die 
Schieberegister örtlich gut verteilen, und muss nur den SPI-Bus (und 
VCC+GND) zwischen den 8-er Blöcken verlegen.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

posti schrieb:
> Gibt es da nicht was I²C mäßiges ala Porterweiterung?

Ja, aber z.B. der PCF8574 hat auch nur 8 Eingänge, bringt Dich also 
nicht weiter als ein Schieberegister. Obendrein kann man nicht beliebig 
viele dieser I2C-Portexpander an einem Bus betreiben - nach acht Stück 
(also 64 I/O-Leitungen) ist Schluss. Das liegt an den verfügbaren 
I2C-Adressen.

Ist also auch ein IC-Drahtverhau.

Es dürfte trotz alledem weniger Aufwand darstellen, die Taster komplett 
neu zu verdrahten. Dann ist eine Matrix möglich, und die Anzahl der 
beteiligten Bauteile fällt drastisch.

Es müssen ja nicht alle Taster komplett neu verdrahtet werden, die 
Mittelkontakte dürfen gruppenweise weiterhin verbunden bleiben - das 
sind dann halt die Spalten bzw. Zeilen der Tastermatrix.

von Jobst M. (jobstens-de)


Lesenswert?

Joe F. schrieb:
> Naja, 130 Inputs wird's wohl kaum geben.

!? Ab TQFP 144 bist Du dabei ...

Allerdings gefällt mir meine '1-ADC-Port' Variante ohne zusätzliche ICs 
noch am besten. Keine Ahnung, ob der TO sie schon verworfen hat.


Gruß

Jobst

von Jobst M. (jobstens-de)


Lesenswert?

Rufus Τ. F. schrieb:
> nach acht Stück
> (also 64 I/O-Leitungen) ist Schluss.

Dafür gibt es dann den PCF8574A. Nochmal 8.


Gruß

Jobst

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Ein Arduino Mega hat über 50 nutzbare Pins. Wenn der TE seinen 
Schalter-Mittel-"Strang" vier mal auftrennt, kann er damit locker um die 
160 Schalter auslesen, ohne weitere externe Bauteile und auch ohne 
Interrupt, locker im Polling ...

von Daniel A. (acki1985)


Lesenswert?

Die ADC Variante ist auch ne Idee. Aber die Idee mit den Schiebregistern 
finde ich persöhnlich am besten.
Somal man sie jederzeit erweitern kann.


I2C Bus wurde mir gesagt ist nicht sehr zuverlässig und soll sehr 
Störanfällig sein.

von Jobst M. (jobstens-de)


Lesenswert?

Daniel A. schrieb:
> Die ADC Variante ist auch ne Idee. Aber die Idee mit den Schiebregistern
> finde ich persöhnlich am besten.

Dann nimm doch gleich fertige s88-Module. Ist für Modellbahn gemacht.
Ich finde es allerdings umständlich.


Daniel A. schrieb:
> I2C Bus wurde mir gesagt ist nicht sehr zuverlässig und soll sehr
> Störanfällig sein.

Ist eben für die Kommunikation in einem Gerät gedacht. Bei einem Hausbus 
funktioniert das nicht mehr unbedingt zuverlässig.
Edit: Wird seit >30Jahren in jedem Fernseher verbaut. Das würden 
Hersteller nicht machen, wenn es nicht ausreichend zuverlässig wäre.


Gruß

Jobst

: Bearbeitet durch User
von Thomas E. (picalic)


Lesenswert?

Daniel A. schrieb:
> I2C Bus wurde mir gesagt ist nicht sehr zuverlässig und soll sehr
> Störanfällig sein.

Mit Sicherheit deutlich weniger störanfällig, als 130 verschiedene 
Widerstandswerte analog auseinander zu halten.

von Jobst M. (jobstens-de)


Lesenswert?

Thomas E. schrieb:
> 130 verschiedene Widerstandswerte

132 gleiche Widerstandswerte - das ist der Trick.

Das kann man sehr genau trennen.


Gruß

Jobst

von Thomas E. (picalic)


Lesenswert?

Also wenn Schieberegister o.ä., dann würde ich keine Parallel-In, 
Serial-Out Lösung nehmen, sondern den umgekehrten Weg gehen, d.h. ein 
Signal der Reihe nach an die Taster anlegen und an der Common-Leitung 
lesen, ob das Signal dorthin durchgeschaltet wurde. So braucht man nur 
einen Pull-Up bzw. Pull-Down Widerstand an der Eingangsleitung, sonst 
müsste jeder Taster einen entsprechenden Widerstand haben, damit am 
Schieberegister-Eingang der richtige Pegel bei offenem Schalter anliegt.
Evtl. das auch Mischen mit einer analog-Auswertung, indem eine Gruppe 
von Tastern gemeinsam an ein digitales Ausgangssignal angeschlossen 
werden. Jeder Taster der Gruppe bekommt einen anderen Widerstandswert in 
Serie geschaltet. Bei nicht all zuvielen Tastern in der Gruppe könnte 
man die verschiedenen Widerstandswerte dann noch einigermaßen 
zuverlässig unterscheiden. Vielleicht reicht dann ein normaler µC mit 
10-12 Digitalausgängen und einem AD-Eingang schon aus, ohne zusätzliche 
ICs.

von Wolfgang (Gast)


Lesenswert?

Jobst M. schrieb:
> !? Ab TQFP 144 bist Du dabei ...

Das untergräbt jegliche Modularität.

Rufus Τ. F. schrieb:
> Ja, aber z.B. der PCF8574 hat auch nur 8 Eingänge, bringt Dich also
> nicht weiter als ein Schieberegister. Obendrein kann man nicht beliebig
> viele dieser I2C-Portexpander an einem Bus betreiben - nach acht Stück
> (also 64 I/O-Leitungen) ist Schluss. Das liegt an den verfügbaren
> I2C-Adressen.

Schon wenn man sich zusätzlich zu den PCF8574 einen einzigen 
I2C-Multiplexer (z.B. PCA9548) spendiert, bricht deine Argumentation 
zusammen, da man damit bereits auf 512 I/O-Leitungen kommt. Damit 
hätte man in der Anzahl der erfassbaren Taster fast einen Faktor 4 
Reserve - nix mit "Schluss".

von F. F. (foldi)


Lesenswert?

Jobst M. schrieb:
> Der Abgriff in der Mitte (zwischen R66 und R67) wird mit einem
> Widerstand 1000x größer als die anderen Widerstände

Ich würde das in zwei Hauptstränge aufteilen.
Von mir aus 1000 Fach und 500 fach, so kann er rechts/links vom Taster 
logischer trennen und ist sicher vom Aufbau einfacher.
Denke dass er sich dafür eine Platine bauen würde und dann sind auch 
Verdrahtungfehler einfacher zu finden, bzw gleich ausgeschlossen.
Denke auch vom  Programm her kann er sich das einfach machen. Alles 
rechts und links anschließen, einemal alle Taster einlesen, indem er sie 
einmal drückt und die Werte abspeichert.
So kann er das am Ende sehr schnell und sicher, ohne Fehler bei der 
Tastenbelegung hin bekommen.
Wenn er sich doch noch dazu entschließt.

von Robin S. (der_r)


Lesenswert?

Wolfgang schrieb:
> Jobst M. schrieb:
>> !? Ab TQFP 144 bist Du dabei ...
>
> Das untergräbt jegliche Modularität.
>
> Rufus Τ. F. schrieb:
>> Ja, aber z.B. der PCF8574 hat auch nur 8 Eingänge, bringt Dich also
>> nicht weiter als ein Schieberegister. Obendrein kann man nicht beliebig
>> viele dieser I2C-Portexpander an einem Bus betreiben - nach acht Stück
>> (also 64 I/O-Leitungen) ist Schluss. Das liegt an den verfügbaren
>> I2C-Adressen.
>
> Schon wenn man sich zusätzlich zu den PCF8574 *einen einzigen*
> I2C-Multiplexer (z.B. PCA9548) spendiert, bricht deine Argumentation
> zusammen, da man damit bereits auf 512 I/O-Leitungen kommt. Damit
> hätte man in der Anzahl der erfassbaren Taster fast einen Faktor 4
> Reserve - nix mit "Schluss".


Und was haben diese Dinger dann für einen Vorteil?

PCF8574 sind langsamer als Schieberegister, die Ausgangsfunktion wird 
hier eh nicht gebraucht, sie sind schweineteuer und brauchen blöde 
Frickellösungen wegen der Adressen. Beim 4021 hänge ich bei Bedarf 
einfach noch ein paar hinten dran, habe einen Input Latch, kann deutlich 
schneller takten und komme günstiger weg?

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Es gibt noch eine weitere Möglichkeit:

Den einen Pol vom Schalter mit GND verbinden,
den anderen Pol vom Schalter mit Vcc verbinden,
die 60 Mittelstellungen gehen zu µC IO Pins.

Nun erkennt der µC ob der Pin mit GND oder mit Vcc oder offen ist indem 
der interne PullUp / PullDown entsprechend umgeschaltet wird.

Zuschaltbare PullUp/PullDown Widerstände bei den Portpins haben 
heutzutage alle modernen µC (NXP LPC Reihe, STM32). Genügend Pins haben 
diese auch (z.B. LQFP100 / LQFP144 Gehäuse)

von Christian M. (Gast)


Angehängte Dateien:

Lesenswert?

So würde es dann aussehen für 64 Eingänge.
8 x 4014

Gruss Chregu

von Huh (Gast)


Lesenswert?

Markus M. schrieb:
> die 60 Mittelstellungen gehen zu µC IO Pins.

Dann müßte er die vorhandene Verdrahtung vollständig entfernen (was er 
ja nicht möchte). Derzeit sind alle Mittelkontakte parallel geschaltet 
und kommen als ein einziger Anschluß raus.
Wenn man aber das ganze auftrennt, wäre wiederum eine Matrix wesentlich 
günstiger.

von Rolf M. (rmagnus)


Lesenswert?

Markus M. schrieb:
> Es gibt noch eine weitere Möglichkeit:
>
> Den einen Pol vom Schalter mit GND verbinden,
> den anderen Pol vom Schalter mit Vcc verbinden,
> die 60 Mittelstellungen gehen zu µC IO Pins.

Das würde aber eine komplette Neuverdrahtung der Taster bedeuten, was ja 
eigentlich vermieden werden sollte. Wobei das ja eine Alternative sein 
könnte, wenn man dafür kein Logikgrab aufbauen muss. Es ist aber immer 
noch unklar, ob es sich nun um 65 Doppeltaster handelt oder um 130, also 
insgesamt eigentlich 260 einzulesende Taster.

c-hater schrieb:
>> Wir sind Moderatoren, keine Schulhofaufsicht.
>
> Ihr seid Zensoren. Mehr muss man dazu nicht ausführen. Jeder aufrechte
> Demokrat weiss, was man von Zensoren zu halten hat.

Andere zu beleidigen ist nicht demokratisch, sondern asozial, und diese 
Beleidigungen zu löschen ist weder Zensur, noch undemokratisch.
A propos Demokratie: Wenn du hier angemeldet wärst, könntest du mal 
sehen, wie viele Leute deine Postings als "nicht lesenswert" markieren. 
Du dürftest da so ziemlich Spitzenreiter sein, was das betrifft. 
Zumindest in diesem Thread bist du das.

von Daniel A. (acki1985)


Lesenswert?

Guten morgen alle zusammen,

Es handelt sich um 65 Dopeltaster also 130 Einzeltaster

von Jack (Gast)


Lesenswert?

Rolf M. schrieb:
> Das würde aber eine komplette Neuverdrahtung der Taster bedeuten, was ja
> eigentlich vermieden werden sollte.

Schon ab da wird es aber unlogisch. Warum sollte man lieber 130 einzelne 
Leitungen zu 130 Pins von z.b. Schieberegistern legen wollen, statt die 
Schalter in z.B. eine 10x13 Matrix umzugrupieren und damit nur 23 
Leitungen (82% weniger) zum Controller führen zu müssen?

Zum Preis einer einfachen Neuverkabelung (und ev. ein paar Dioden) 
erhält man ein robusteres und einfacheres System, quält sich nicht mit 
einem Kabelbaum mit 130 Leitungen, spart Elektronik, wie die meisten, 
wenn nicht alle, Schieberegister, spart Platz auf dem Board, spart 
Versorgungsstrom, etc. Man eliminiert haufenweise potentielle 
Fehlerquellen wenn man sich zu einer Neuverkabelung durchringt.

Ich würde den Thread daher unter "wer nicht will der hat schon" 
abbuchen.

von m.n. (Gast)


Lesenswert?

Daniel A. schrieb:
> Guten morgen alle zusammen,
>
> Es handelt sich um 65 Dopeltaster also 130 Einzeltaster

Bei IIC-Bauteilen könnte es Probleme mit dem Adressraum geben; das 
Protokoll bremst eine schnelle Übertragung.

Per Widerständen + ADC 130 Spannungen zu unterscheiden bedarf genauer 
Widerstände mit 0,1%. Nicht gerade sehr einladend.

Bei einem größeren µC mit vielen Beinchen für 130 Eingänge sollte man 
längere Leitungen niemals direkt und ungeschützt an die µC-Pins 
anschließen. Eine Störung kann den ganzen µC blockieren/zerstören.

Bei 8-Bit Schieberegistern bietet es sich an, als Pullup-Widerstände ein 
8-fach Array mit 9 Pins zu verwenden. Das Layout wird sehr einfach.

Joe F. schrieb:
> Wenn du nur relativ selten abfragst (z.B. 10x pro Sekunde) ist der Drops
> ebenfalls auch ohne jeglichen Aufwand für Entprellung gelutscht.
> Die (max.) 0.1s Latenz fallen beim Weichenstellen nicht ins Gewicht, und
> ein Taster wird nicht 0.1s lang prellen.

Gut, wenn es tatsächlich nur Weichen sind.

von Jobst M. (jobstens-de)


Lesenswert?

Wolfgang schrieb:
> Das untergräbt jegliche Modularität.

Das mag sein, darum ging es bei meiner Antwort aber gar nicht.


F. F. schrieb:
> Ich würde das in zwei Hauptstränge aufteilen.
> Von mir aus 1000 Fach und 500 fach, so kann er rechts/links vom Taster
> logischer trennen und ist sicher vom Aufbau einfacher.

Der 1000x Widerstand ist für den Fall gedacht, wenn sich alle Schalter 
in Mittelstellung befinden. Ich habe keine Ahnung, wie Du rechte und 
linke Mittelstellung unterscheiden willst :-/


m.n. schrieb:
> Per Widerständen + ADC 130 Spannungen zu unterscheiden bedarf genauer
> Widerstände mit 0,1%. Nicht gerade sehr einladend.

Die Widerstände in einem DAC/ADC müssen wenigstens genauer sein, als ein 
halbes LSB. Da in dieser Schaltung jeder Widerstand nur einem LSB 
entspricht, würden sogar 50% Toleranz ausreichen.


Gruß

Jobst

von AuchHinGucker (Gast)


Lesenswert?

hingucker schrieb:
> Videokamera?

Super Idee !!!

von R. R. (elec-lisper)


Lesenswert?

Man könnte auch 8 Atmega328P oder ähnliche Controller nehmen.
Bei den ersten 7 von den 23 I/Os jeweils 19 als Eingänge,
und die restlichen 3 für SPI/I2C inkl. Chip-Select.
Der 8. trägt dann alles zusammen und steuert dann.

Das wären dann nur 8 statt 17 ICs auf einer Platine.

Das meiste was auf der Platine dann Platz verbraucht sollte
die 130-fache Schutzbeschaltung (TVS, Widerstände, usw.)
der Eingänge sein. Kann man aber auch weg lassen, wenn man
das Risiko liebt :-)

von chris (Gast)


Lesenswert?

Wenn mit arduino, nimm ein arduino mini und ein 74138 (1:8). Damit kann 
man dann 136 Tasten abfragen und entweder uber rs232 oder i2c das 
Resultat senden, eventuell auch als keyboard emulation mit ps2.

von Fred R. (fredylich)


Lesenswert?

Hallo Daniel,

habe schon mehre Steuermodule für Modelleisenbahner erstellt(Hard- 
Software).
Letztes Projekt ATMega644p I²C für 128 In- und 128 Output(um das 4 Fache 
ohne großen Aufwand erweiterbar)
Anwender können beliebe Fahrpläne erstellen (Bascom)
Die Vollautomatisierung war das Ziel.
Wie du liest habe ich mich durch praktische Erfahrungen der Modelbauer 
fürs Bussystem entschieden.
Warum möchte ich jetzt nicht beschreiben.
Somit erlaube ich mir erst mal die bescheidene Nachfrage.
Mit den Tasten möchtest du den Controller sagen "entscheide was", ist 
OK. Nun muss die Entscheidung doch physikalisch ausgeführt werden.
Da habe ich wohl was überlesen oder noch nicht geschnallt wie du dies 
machst.
P.S.
Dies ist eine Anfrage an Acki. Also Herr  C-Ha... bitte nicht die mühe 
für Antwort mache wie „Er will viele Impulsebenen mit µC erfassen mehr 
ist nicht gefragt“.
Ich sehe es als Projektanfrage wenn falsch verstanden ist dies für mich 
beinlich, habe aber keinen beleidigt oder?.

Gruß

von Daniel A. (acki1985)


Lesenswert?

Richtig es sollen 130 Tasten ( 65Doppeltaster) abgefragt werden.
Der AVR soll dann über Schieberegister Relaiskarten ansteuern. So ist 
der Plan

von Daniel A. (acki1985)


Lesenswert?

Hallo alle zusammen,

Ich habe mich für die Lösung mit den Schieberegistern (74HC165 für die 
Taster und 74HC595N die Ausgänge) entschieden.

Was ich aber immer noch nich begriffen habe wie ich das mache, wenn zum 
Beipiel der Taster (Bit 48) betätigt wird, der Ausgang 48 auf 1 geht und 
wenn ich ihn wieder loslasse wieder auf 0.

Kann mir da einer helfen?

Gruß Acki

von hp-freund (Gast)


Lesenswert?

@ Daniel,

Du meinst also nur Schieberegister ohne µC oder wie?

Mit µC wird der Wert zwischen gespeichert und mit der richtigen 
Pulslänge an das Relais / die Weiche ausgegeben.
Als 595 ist der TPIC6A595 zu empfehlen, der hat den Treiber gleich mit 
drin.

von Daniel A. (acki1985)


Lesenswert?

Es soll über einen AVR laufen. Mit den zwichenspeichern ist klar nur wie 
macht man das?

Zwecks Treiber: Die Relaiskarten haben den Treiber onbord. Ist ein 
Optokopler und ein Transistor drauf.

von hp-freund (Gast)


Lesenswert?

Daniel A. schrieb:
> Mit den zwichenspeichern ist klar nur wie
> macht man das?

Unabhängig von der Programmiersprache:
wenn ein Takt an den 165 raus geht, wird auch gleichzeitig ein Register 
im µC seriell geschoben und der Daten Pin vom 165 eingelesen und in das 
µC Register zu dieser Zeit übernommen.

von Joe F. (easylife)


Lesenswert?

Daniel A. schrieb:
> Was ich aber immer noch nich begriffen habe wie ich das mache, wenn zum
> Beipiel der Taster (Bit 48) betätigt wird, der Ausgang 48 auf 1 geht und
> wenn ich ihn wieder loslasse wieder auf 0.

Du liest die Daten von deiner Input-Schieberegister Kette in ein 
Byte-Array ein (in deinem Fall 17 Bytes groß), und gibst die gleichen 
Daten auf der Output-Schieberegister Kette wieder aus.

von hp-freund (Gast)


Lesenswert?


von Joe F. (easylife)


Lesenswert?

Zu beachten ist, dass die Reihenfolge der Bits "gespiegelt" wird.
Bei den Eingangs-Schieberegister erhältst du den Zustand des dem 
Controller am nächsten liegenden Schieberegisters zuerst (Bit 1, 2, 
3...).
Beim Ausgangsschieberegister ist es genau umgekehrt. Das zuerst 
gesendete Bit landet im letzten Schieberegister in der höchsten Stelle 
(Bit 8, 7, 6...).

Bevor man das aber umständlich in der Firmware "dreht", nummeriert man 
einfach die Eingänge oder Ausgänge anders.
D.h. Eingang 1 liegt auf D0 des dem uC nächsten Schieberegisters (erstes 
Register in der Kette).
Ausgang 1 liegt auf Q7 des letzten Schieberegisters in der 
Ausgangs-Kette.

Wenn du auf Erweiterbarkeit Wert legst (Register jeweils am Ende der 
Kette anhängen), dann drehst du die Daten in der Firmware.
Du liest in dieser Reihenfolge: data[0], data[1], ... data[16]
und schreibst in umgekehrter Reihenfolge: data[16], data[15], ... 
data[0].
Die Bits der einzelnen Bytes müssen bei der Ausgabe dann auch umgekehrt 
ausgegeben werden.

: Bearbeitet durch User
von Daniel A. (acki1985)


Lesenswert?

Puh das hört sich kompliziert an. Programmiersprache soll übrigens 
Bascom sein.

Ich verstehe das irgendwie nicht wirklich.

von Joe F. (easylife)


Lesenswert?

Hast du dir denn das hier mal angeguckt?

https://www.elv.de/Mikrocontroller-Einstieg-mit-BASCOM-AVR-Teil-15-SPI/x.aspx/cid_726/detail_50538

Ich denke, du solltest dir mal einen Testaufbau (z.B. auf Steckbrett) 
machen, je eine Kette aus 2x 74HC165 und 2x 74HC595.
Blockkondensatoren nicht vergessen.

Ein paar Taster an die 165er, ein paar LEDs (mit Vorwiderstand) an die 
565er.

Damit kann man dann erste Erfahrungen sammeln und am Code basteln.
Wenn das funktioniert, ist es nur noch ein kleiner Schritt zur langen 
Kette.

von Fred R. (fredylich)


Lesenswert?

Hallo Acki,

also doch dein Plan richtig verstanden.
Und somit bleibt meine Empfehlung, I²C Bus könnte passen.
Kann mich nur auf die Erfahrungen der Bahnmodelbauer berufen. Mit 
Schieberegister und Multiplexer ICs war der Installationsaufwand nicht 
optimaler und von der Zuverlässigkeit ganz zu schweigen.
Wird ein I²C Bus an den Örtlichkeiten optimal angepasst ist er wohl auch 
für solche Anwendungen eine gute und zuverlässige Variante. Der große 
Vorteil liegt nicht nur an Erweiterungen wie IC für Analogabfragen oder 
Digipoti die auch nachträglich am Bus geschaltet werden können.
Der Vorteil liegt in der Programmierung der Sollsteuerung, dies sollte 
vorab beim Hardwareaufbau immer beachtet werden.
Ja selber bauen und programmieren ist das Ziel von Daniel und natürlich 
wie immer unabhängig von Fertigprodukte und kostengünstig.
Habe eben mal den aktuellen Kostenaufwand des erwähntem letztem Projekt, 
als Nachbau im Amateurbereich(Lochstreifenplatine) überschlagen. Ohne 
TFT Display für dynamische Gleis- und Weichenstellungsanzeige.Infos 
„nur“ mit LED kommt man mit ca. 60 Euro Logger hin.
Das Beste ist, du bist unabhängig von fertige Produkte und kanns immer 
wieder versuchen eine neue theoretische „Spinnerei“ praktischnah zu 
teste.
Ja ich bin schon oft von der Praxis belehrt wurden, dass die Theorie 
nicht immer über der Praxis steht.

Abschließend möchte ich sagen, ob oder ob nicht. Die Hinweise von den 
Helfern sind oft eigenwillig und Erfahrungsbedingt. Also mach es so wie 
ich es in den letzten 50 Jahre gemacht habe.
Theorie muss sein. Praxiserfahrungen auch von Dritten sorgfältig lesen 
und selber beurteilen.
Dann wenn möglich, kommt der eigene Praxistest.
Kommt OK Information, hast du dein Ziel erreicht. Wird niemals perfekt 
sein aber für dich erst mal optimal.

Gruß

von Daniel A. (acki1985)


Lesenswert?

Die Schieberegister bekomme ich von einem Kumpel der hat da noch nen 
ganzen Sack von da.

Ich habe auch mal einen Code gefunden und getestet, aber er funktioniert 
leider nicht. Es tut sich gar nix.

$regfile = "2313def.dat"
$crystal = 3690000


Iclk alias Portd.0
Ilatch alias portd.1
Idata Alias Portd.2

reset Iclk
reset Ilatch
reset Idata

config Pind.0 = output
config pind.1 = output
config pind.2 = input

Oclk alias portb.7
Oclr alias portb.6
Odata alias portb.5
Olatch alias portb.4

reset Oclk
reset Oclr
reset Odata
reset Olatch

config portb = output

Dim x as byte
Dim y as byte

do
   reset Ilatch
   set Ilatch
   shiftin Pind.2 ,pind.0,x,1
   y=not x
   shiftout pinb.5,pinb.7,y,1
   set Olatch
   reset olatch
   waitms 10
   loop
   end

von Joe F. (easylife)


Lesenswert?

UIuiui.
a) entscheide dich mal für Groß- oder Kleinschreibung (auch wenn es 
Bascom egal zu sein scheint, mir brennt's in den Augen).
b) wenn Aliase definiert werden (was ja schön ist), dann bitte auch 
konsequent benutzen
c) PORT = Ausgang, PIN = Eingang

: Bearbeitet durch User
von Fred R. (fredylich)


Lesenswert?

Daniel A. schrieb:
> Ich habe auch mal einen Code gefunden und getestet, aber er funktioniert
> leider nicht. Es tut sich gar nix.

Hi,

Habe ich gerade geschrieben.
Hardware sollte leicht mit Software bedient werden können.
Na dein Codeschnipsel zeigt ja eindeutig ich soll mich vom Thema 
verabschieden.

Wünsche viel Erfolg

von Daniel A. (acki1985)


Lesenswert?

Fred R. schrieb:
> Na dein Codeschnipsel zeigt ja eindeutig ich soll mich vom Thema
> verabschieden.

So war das nicht gemeint. Die idee mit i2c hatte ich ja auch anfangs. 
Aber die Hardware muss ich kaufen. Die Schieberegister sind vorhanden.

von Fred R. (fredylich)


Lesenswert?

Na klar auch die Politiker wollen nicht 10 Euro in die Zukunft 
investieren.
Fehlen ja heute.

von Daniel A. (acki1985)


Lesenswert?

Und wie gesagt von der Sache i2c wurde mir abgeraten. Ich werde es aber 
trotz dem mal versuchen.

von Joe F. (easylife)


Lesenswert?

I2C ist mitnichten einfacher anzusprechen. Elektrisch gesehen ist es 
auch nicht robuster, im Gegenteil, SPI treibt sowohl high also auch low, 
bei I2C sind Pullups im Spiel. Soviel dazu.
Dein Code ist im Prinzip ja auch schon alles, was benötigt wird.
Fehler kann man jedoch an vielen Stellen machen (falsche Quarz 
Geschwindigkeit, falsche I/O Konfiguration, falscher Anschluss der 
Schieberegister).
Hast du ein Oszilloskop oder einen Logicanalyzer zur Verfügung?

von Daniel A. (acki1985)


Lesenswert?

Joe F. schrieb:
> Hast du ein Oszilloskop oder einen Logicanalyzer zur Verfügung?

Sowas besitze ich leider nicht.

von Cyblord -. (cyblord)


Lesenswert?

I2C spart halt Leitungen ein. Dafür ist das Protokoll komplizierter. SPI 
ist ja auch ein totale No-Brainer, dafür halt ne CS Leitung pro Slave. 
Gerade bei vielen Slaves macht I2C schon den Unterschied.

> Sowas besitze ich leider nicht.

LAs fangen bei 10 EUR vom Chinesen an. Werkzeug braucht man halt einfach 
um was zu machen. Sonst sollte man es lassen.

: Bearbeitet durch User
von Daniel A. (acki1985)


Lesenswert?

kannst du was empfehlen?

von Robert L. (lrlr)


Lesenswert?

Frank E. schrieb:
> Ein Arduino Mega hat über 50 nutzbare Pins

warum nicht  3 Stück davon
einer als "Master"
2 als Slave (der die Daten, bei änderung an den master sendet)


kostet beim Chinesen in summe 15€?

von Daniel A. (acki1985)


Lesenswert?


von Robin S. (der_r)


Lesenswert?

Robert L. schrieb:
> Frank E. schrieb:
>> Ein Arduino Mega hat über 50 nutzbare Pins
>
> warum nicht  3 Stück davon
> einer als "Master"
> 2 als Slave (der die Daten, bei änderung an den master sendet)
>
>
> kostet beim Chinesen in summe 15€?

Verkabel das mal, sodass es am Ende noch einigermaßen nach was 
aussieht...

von posti (Gast)


Lesenswert?

Hi

Bei dem eBay-Link kommt dann noch Zoll drauf!
(> ca. 21 Euro)

Kann Dir aber auch weit drunter passieren, daß das Päckchen beim Zoll 
hängen bleibt und dort (mit Unterlagen) abgeholt werden will.
Hatte ich bisher aber nur 1x - wohl, weil 'keine Rechnung von Außen 
angebracht' war - allerdings sah das Päckchen den anderen 
China-Lieferungen in keinster Weise unähnlich :)
... ob es einen trifft, oder nicht ... liegt da nicht Mal in 'Gottes 
Hand' gg

MfG

von Daniel A. (acki1985)


Lesenswert?


von m.n. (Gast)


Lesenswert?

Daniel A. schrieb:
> Oder reicht der?

Verschiebe doch nicht Dein Problem auf irgendwelche Kaufteile.
Zeichne Dir den Impulsverlauf auf und setze die Steuerleitungen so, daß 
das Bitmuster auch abgearbeitet wird. Dazu braucht man auch das (am 
besten ausgedruckte) Datenblatt vom jeweiligen Schieberegister!

Meinetwegen bau deutliche Verzögerungen (0,5 s) beim Pinwackeln ein und 
sieh Dir die Änderungen der Leitungen per LEDs an. Die ganze Sache ist 
doch supersimpel, braucht aber einen eingeschalteten Kopf. Und laß Dir 
nicht erzählen, mit IIC wäre alles einfacher.

von c-hater (Gast)


Lesenswert?

Cyblord -. schrieb:

> I2C spart halt Leitungen ein.

Nicht wirklich. Jedenfalls nicht, wenn es darum geht, viele Taster 
abzufragen. Dann spart I2C nur Leitungen am final die Eingaben 
bearbeitenden µC ein, aber nicht eine bei der eigentlichen 
Tastenabfrage.

Insgesamt werden es mehr Leitungen, nämlich zusätzlich zu denen zur 
Tastenabfrage nötigen noch (mindestens) zwei extra...

Also: Unsinn hoch drei. Wennschon die einfachen, naheliegenden Lösungen 
in Richtung Matrix nicht gewünscht werden, dann ist die nächstbeste 
Lösung ein Schieberegister. Also SPI (oder was sehr ähnliches). 
Bezüglich des signal count ist das zwar auch nicht besser als I2C, aber 
dafür bezüglich der Komplexität doch eine Stufe niedriger. Es entfällt 
halt einfach das hier komplett überflüssige Protokoll.

I2C könnte man allenfalls dann in Erwägung ziehen, wenn ein I2C Bus für 
andere Zwecke ohnehin vorhanden ist. Dann (und nur dann) könnte es 
irgendeinen Sinn ergeben, die Tastenabfrage über I2C zu erledigen.

von Robin S. (der_r)


Lesenswert?

I²C ist, wie bereits gesagt wurde, nicht einfacher. Im Gegenteil.

Außerdem langsamer und mehr Gefrickel.
Und die Bausteine sind auch teurer.

> I2C spart halt Leitungen ein.
Ich erkenne beim CD4021 nur zwei Leitungen (Clock und Data) für die 
eigentliche Verbindung. Dazu halt noch eine Latch-Leitung. Ist das jetzt 
so ein massives Sparpotential?


Ich denke man kann an dieser Stelle jetzt endlich mal festhalten, dass 
eine Lösung über 4021 oder 74165 die einfachste, billigste und 
funktionalste Lösung ist, die mit dem wenigsten Frust zum Ergebnis 
führen wird. Und nebenbei auch noch besser zu verdrahten ist, als drei 
Arduino Mega oder sonstwas. Von daher: Nur zu!

: Bearbeitet durch User
von Joe F. (easylife)


Angehängte Dateien:

Lesenswert?

So, ich habe zugegebenermaßen 0 Ahnung von Bascom, aber ich denke ich 
habe den Fehler in deinem Code gefunden. Auf einen Eingang kann man wohl 
nur zugreifen, wenn er mit "PINx" benutzt wird.
http://avrhelp.mcselec.com/index.html?config_port.htm

Ich habe mal deinen Code etwas aufgeräumt, und Anmerkungen gemacht.
Vielleicht funktioniert es ja so besser.

Die Zeilen
1
$regfile = "2313def.dat"
2
$crystal = 3690000

hast du vermutlich auch einfach nur übernommen 
(http://www.ckuehnel.ch/bcavr_buch2-hints.htm).
Du solltest sicherstellen, dass dies zu dem von dir verwendeten 
Prozessor / Quarz passt.
https://www.fitzel.de/bascom/bascom-regfile-liste/

von Wolfgang (Gast)


Lesenswert?

m.n. schrieb:
> Bei IIC-Bauteilen könnte es Probleme mit dem Adressraum geben;

Tut es aber nicht, wenn man sich nicht zu sehr anstellt ;-)

Wolfgang schrieb:
> Schon wenn man ...

von Wolfgang (Gast)


Lesenswert?

Daniel A. schrieb:
> Ebay-Artikel Nr. 291992506080
>
> Oder reicht der?

Zu dem Preis sage ich mal nichts, aber das ist wohl der Preis, wenn man 
keinen (Termin-)Plan hat.
162134953459

von Robert L. (lrlr)


Lesenswert?

Robin S. schrieb:
> Robert L. schrieb:
>> Frank E. schrieb:
>>> Ein Arduino Mega hat über 50 nutzbare Pins
>>
>> warum nicht  3 Stück davon
>> einer als "Master"
>> 2 als Slave (der die Daten, bei änderung an den master sendet)
>>
>>
>> kostet beim Chinesen in summe 15€?
>
> Verkabel das mal, sodass es am Ende noch einigermaßen nach was
> aussieht...

das Argument versteh ich jetzt nicht  (ernsthaft)
bei den oben vorgeschlagenen shieberegistern usw. ist das doch das selbe 
(noch viel schlimer)..

ausserdem gibts solche lösungen:

https://statics3.seeedstudio.com/product/megashieldn1_03.jpg

von R. R. (elec-lisper)


Lesenswert?

Wenn man die Platine später hübsch haben will, kann man sich auch
eine selbst erstellen (ätzen). Ist natürlich gleich mal wieder
mehr Aufwand vorab: CAD-Software lernen/üben/benutzen, Ätz-Zubehör
kaufen und in Griff bekommen, usw. usf.
Dann ists am Ende auf jeden Fall "hübscher" - wenn es darum geht.
Ansonsten reichts natürlich auch Drahtbrücken auf Lochraster ziehen.
Aber da man so oder so eine Schaltplanzeichnung braucht, und diese
eben so gut in einem Programm zeichnen kann (KiCAD, Eagle, ...),
kann man auch fast eben so fix ein PCB draus machen (wenn man
sich schon mit so einem Programm auseinander setzt).
Und mit dem Ätzen ist man nach einem Wochenende experimentieren
eigentlich durch, zumindest weit genug um Bauteile mit Drahtbeinchen
zu verarbeiten.

von Daniel A. (acki1985)


Lesenswert?

Joe F. schrieb:
> Ich habe mal deinen Code etwas aufgeräumt, und Anmerkungen gemacht.
> Vielleicht funktioniert es ja so besser.

Hallo alle zusammen,

Habe gerade den Code getestestet. Funktioniert leider auch nicht.

Die Taktfrequenz war falsch. Ich arbeite ja mit internen Takt 8Mhz des 
Tiny2313.

von Fred R. (fredylich)


Lesenswert?

Hallo Daniel,
Noch mal ein Versuch für Antwort, die letzten wurden wohl....

Joe F hat sich bemüht den Code für dich anzupassen.
Kann aber schon im Ansatz nicht funktionieren.
Bascom muss doch schon beim Flash Aufruf gemeckert haben?
Chip Erkennung $regfile = xxxxxx ist die Grundeinstellung muss 100% 
korrekt  sein. In deiner Anwendung wohl er
$regfile =  "ATtiny2313def.dat"
$crystal = 8000000
Solltest auch beachten es gibt auch ATtiny2313A Typen.

Gruß

von Fred R. (fredylich)


Lesenswert?

Hallo Daniel, Hallo Modellbauer,
Nachtrag allg.

Über dem Rest im Code möchte ich mich nicht äußern da 
Hardwarebeschaltung µC > Schieberegister nicht bekannt.

Zum Thema Matrix, Bus oder Schieberegister möchte ich mich erstrecht 
nicht mehr aüßern, obwohl manche Antwort, nicht mehr viel mit der Praxis 
zu tun haben und ein Einwand angebracht währ.
Die Diskussionen mit dem Verdrahtungsaufwand sind ein Beispiel.
Bin nach wie vor der Meinung ein mechanischer Taste hat zwei Anschlüsse 
somit benötigt dieser 2 Leitungen. So nun habe ich mein altes Hirn auf 
Max gestellt.
130 Taster mal 2 gleich 260 "Strippen".
Nun ist es aber so in dem speziellen Anwendungsbereich ist die Umgebung 
für einen µC sehr schlecht. Hier und da klappern Kontakte sprühen 
vielleicht auch mal ein paar Funken usw.

So wenn ich mich nicht verrechnet habe, werden die Strippen(Leiterbahn) 
benötige. Fast egal welche Variante gewählt wird. Ja fast bedeutet µC 
Ports sind sehr Hochohmig (von Hause aus) Also sind oft die Strippen wie 
Antennen zu betrachten oder bei hohen Frequenzen noch übler als Imp.- 
Kurzschluss.
Ja, Ja die Längen und Verlegung der Strippen sind oft das Problem wenn 
etwas aus dem Ruder läuft.
Die Anzahl derer kann man wohl physikalisch Bedingt kaum minimieren.

War und ist ein geniale Nebeneffekt des Bussystem. Mann muss in einem 
„großflächigem“ Projekt nur dafür sorgen das die Bus- „Strippen“ ,meist 
nur zwei, Störungsfrei sind.
Die Aktohren vor Ort beizubringen „Ihr dürft nicht mit dem Bus 
mitfahren, wenn ihr eure schmutzigen Schuhe nicht auszieht“ ist kein 
großer Aufwand.

Ja meine Rhetorik ist unverständlich für die Profis, soll halt nur eine 
lockere Antwort für uns Amateure sein.
Vorab meine Entschuldigung an die selbst ernannten Profis, sollte ich 
Ihr Ego verletzt haben.

Gruß Fred

von Daniel A. (acki1985)


Angehängte Dateien:

Lesenswert?

Hallo Fred

Das habe ich auch gemacht. Ich hänge den Code nochmal dran.

Wenn ich $regfile =  "ATtiny2313def.dat" einsetze dann meckert er.

: Bearbeitet durch User
von m.n. (Gast)


Lesenswert?

Daniel A. schrieb:
> Habe gerade den Code getestestet. Funktioniert leider auch nicht.

Da machst sich Joe F. die Mühe, eine Codevorlage zu erstellen, und 
bekommt als billige Antwort: funktioniert leider auch nicht.

Daniel A. schrieb:
> Die Taktfrequenz war falsch. Ich arbeite ja mit internen Takt 8Mhz des
> Tiny2313

Das ist völlig schnuppe!

Daniel A. schrieb:
> Das habe ich auch gemacht. Ich hänge den Code nochmal dran.

Du solltest Dir mal die Mühe machen, alles 1. zu begreifen und Deine 
Fehler 2. auch selbst zu suchen.

von Daniel A. (acki1985)


Lesenswert?

Entschuldigung das versuche ich ja. Aber ich verstehe es nicht. Ich komm 
damit nicht wirklich klar.

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Die einfachste Lösung:

Man Nehme 65 Kippschalter und verkabele diese an die Aktoren.
Ohne µC, ohne Schieberegister, ohne komplizierter Elektronik.

Vorteil:
- Man kann direkt mit einem Messgerät messen wenn was nicht geht und 
braucht auch kein Oszi.
- Keine EMV Probleme bei der sich der µC verabschiedet.
- Kein Ärger mit der Software.

von Fred R. (fredylich)


Lesenswert?

Na willst Du mich (uns) verblöden ????

$regfile =  "ATtiny2313def.dat" --I sehe ich nicht im Code.
Bevor ich ein „Klapperkopf“ bekomme.
Sei mahl ehrlich du hast Null- Ahnung im gesamt Bereich.
Sympathisch währ der Hinweis, wie, begleitet mich zum kleinen 
Erfolgserlebnis, und dann können wir, wenn alles läuft „fachsimpeln“.

Niemals wirst Du eine Befriedigung bekommen, nur mit was abzukupfern 
ohne es zu verstehen(duuuhen).
Befriedigungs Anleitungen im körperlich Bereich gibt es viele. Schau 
dann in andere Foren mahl nach wie es kostenflichtig geht.
Zum Glück hier noch kein Link als muss „Butten“ gesichtet.
Wenn Hilfe ab A bis Z in kleinen Schritten gewünscht, helfe ich kern.

Gruß

von Daniel A. (acki1985)


Lesenswert?

ich wollte damit sagen wenn ich $regfile =  "ATtiny2313def.dat" 
einsetze, kommt beim compilieren der Fehler "File not found".

Deshalb habe ich auch den Code nicht noch mal gepostet.

Ich wollte euch nicht verärgern.

von Daniel A. (acki1985)


Lesenswert?

Wie ein Schieberegister funktioniert (denke) habe ich verstanden. Ich 
weis aber nicht wie ich es in einem code anspreche.

von D'oh! (Gast)


Lesenswert?

Es gibt auch kein File "ATtiny2313def.dat" sondern:

2313DEF.dat
ATtiny2313.DAT
ATtiny2313A.DAT

von Fred R. (fredylich)


Lesenswert?

Nein dies ist doch der berste Ansatz für eine gemeinsame Lösungsfindung.

von Daniel A. (acki1985)


Lesenswert?

D'oh! schrieb:
> 2313DEF.dat
> ATtiny2313.DAT
> ATtiny2313A.DAT

Das habe ich gerade auch rausgefunden. Aber trotzdem danke.

Hab es hier gefunden:
http://www.ne.jp/asahi/shared/o-family/ElecRoom/AVRMCOM/BASCManu/BASCRegL.html

von Daniel A. (acki1985)


Angehängte Dateien:

Lesenswert?

Ich habe es geändert und der Code sieht jetzt so aus.

von Maxim B. (max182)


Lesenswert?

Daniel A. schrieb:

> ich möchte über einen Mikrocontroller gerne ca. 130 Taster einlesen.
>
> Welche Möglichkeiten gibt es da ausser einer Tastermatrix?


Irgendwann sollte ich 150 Tasten abfragen (2 Manuale und Pedal einer 
elektrischen Orgel). Die Lösung war so: eine Reihe von 74ALS151. Die 
Kontakte wurden über Netzwerk-Widerstände 1k5 mit 5V verbunden.

von flus (Gast)


Lesenswert?

Hallo,

Wenn Du die Lösung mit Multiplexern machen willst, könnte das ev. eine 
Lösung bieten. Ist schon fertig auf einer Platine. Man muss es nur noch 
verkabeln. Du bräuchtest dann 9 Stück von den Platinchen. Ein paar 
Stiftleisten und Dupont Kabel und bräuchtest kaum was löten (geschweige 
denn was ätzen.).

http://www.ebay.de/itm/CD74HC4067-CMOS-16-Channel-Analog-Digital-Multiplexer-Breakout-Module-Arduino-/381563505772?hash=item58d6f50c6c:g:KjwAAOSwYlJW2OvW

von Daniel A. (acki1985)


Lesenswert?

Da ich die Schieberegister da habe, werde ich damit mal etwas spielen 
und testen.

von Wolfgang (Gast)


Lesenswert?

Daniel A. schrieb:7
> Schieberegister.txt
> Ich habe es geändert und der Code sieht jetzt so aus.

Wenn das ein Compiler vernünftig übersetzen soll, wähle doch bitte einen 
Extension, die gleich erkennen lässt, um was für eine Programmiersprache 
es sich handelt. Wenn jeglicher Bit-Ssalat als ".txt" bezeichnet wird, 
kann man das auch gleich weglassen.

von Wolfgang (Gast)


Lesenswert?

flus schrieb:
> Man muss es nur noch verkabeln.

Genau da liegt das Problem und hört der Spass auf. Es wäre doch 
wesentlich zielführender, gleich eine Platine zu entwerfen, auf der auch 
gleich die Schalter direkt verlötet sind, z.B. in 4er- oder 8er-Gruppen. 
Die Platinen könnte dann über eine Busleitung z.B. per Flachbandkabel 
zusammengeschaltet werden.

von F. F. (foldi)


Lesenswert?

Platine ja, aber wo die Taster hin sollen, weiß doch noch niemand.
Wenn es für ein Museum (oder ähnlich) sein soll und auf Tastendruck 
etwas passieren soll, die Objekte aber weit auseinander liegen, dann ist 
das schon wieder was ganz anderes.

von npn (Gast)


Lesenswert?

F. F. schrieb:
> Platine ja, aber wo die Taster hin sollen, weiß doch noch niemand.
Ich denke mal, auf die Platine :-)
> Wenn es für ein Museum (oder ähnlich) sein soll und auf Tastendruck
> etwas passieren soll, die Objekte aber weit auseinander liegen, dann ist
> das schon wieder was ganz anderes.
Daniel A. schrieb:
> Es geht um ein Schaltpult für eine Modelleisenbahn.

von F. F. (foldi)


Lesenswert?

Ah, das hatte ich dann wohl überlesen.
Ja dann, Platine.

von Daniel A. (acki1985)


Lesenswert?

Hallo alle zusammen,

Also die Taster (Tastschalter) sind bereits in ein Gleisbildstellpult 
eingebaut. Die Schieberegister für die Taster sollen auf eine Platine 
welche am Schaltpultboden befestigt wird. Von da aus sind es maximal ein 
Meter bis zu dem jeweiligen Taster. Der AVR der das ganze steuert soll 
neben die Schieberegister für die Taster.

Die Schiebergister für die Relais und Weichen sollen unter die Anlage. 
Die Verbindung zwischen AVR und Schiebregister Anlage beträgt maximal 5 
Meter.

Hintergrund der ganzen Geschichte ist, die ganzen Leitungen zwichen 
Schaltpult und Anlage zu reduzieren, Da diese zerlegbar sein soll.

Sonst brächte ich einen riesen Kabelbaum zwischen Anlage und Schaltpult.

Gruß Acki

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

Daniel A. schrieb:
> Also die Taster (Tastschalter) sind bereits in ein Gleisbildstellpult
> eingebaut. Die Schieberegister für die Taster sollen auf eine Platine
> welche am Schaltpultboden befestigt wird. Von da aus sind es maximal ein
> Meter bis zu dem jeweiligen Taster. Der AVR der das ganze steuert soll
> neben die Schieberegister für die Taster.

Da würde ich doch aber jeweils eine Platinen nahe der Schaltergruppe 
montieren und nur die Busleitung als Sammelleitung alle Signale 
einsammeln lassen - alles auf der Unterseite des Gleisbildes - ohne 
"kilometerlange" Leitungen zum Schaltpultboden.

von Fred R. (fredylich)


Lesenswert?

Wolfgang schrieb:
> Genau da liegt das Problem und hört der Spass auf. Es wäre doch
> wesentlich zielführender, gleich eine Platine zu entwerfen, auf der auch
> gleich die Schalter direkt verlötet sind, z.B. in 4er- oder 8er-Gruppen.
> Die Platinen könnte dann über eine Busleitung z.B. per Flachbandkabel
> zusammengeschaltet werden.

Hallo Wolfgang,

hast mit Deine Kommentare völlig recht aber hier gibt’s es doch einiges 
im Bereich Bahnmodelbau zu beachten.

Acki schreibt immer nur Taster, Taster ... aber oft sind es Kontakte die 
nicht Ortveränderlich  sind und natürlich auch die Entstellen die 
bedient werden müssen.
Hatte ich ja schon erwähnt manche „Strippenlängen“ sind unkritisch aber 
nicht alle.
Habe leider keine Verbindungen mehr zum Club(Todesfall) für den ich eine 
Steuerung entwickelt und aufgebaut habe. Letzter mir bekannter Stand: 
Platte 8x 14 Meter (Steuerleitungen dato ca. 2 km)
Mein größter Aufwand war, die „Scheiß“ Störimpulse) erst mal zu finden 
und dann zu blocken.

Dies war auch mein Grund mich hier einzumischen.
Vieles ist halt Objektabhängig
Ja wenn er mal die Entscheidung drift welche Hardware er aktiviert, 
solle das Thema Software beginnen.

Gruß

von Fred R. (fredylich)


Lesenswert?

Daniel A. schrieb:
> Hintergrund der ganzen Geschichte ist, die ganzen Leitungen zwichen
> Schaltpult und Anlage zu reduzieren, Da diese zerlegbar sein soll.
>
> Sonst brächte ich einen riesen Kabelbaum zwischen Anlage und Schaltpult.

Zu spät gelesen.
Ja so war es auch bei der erwähnten Anlage gewünscht und realisiert 
wurden. 6 Einzelplatten untereinander mit 6 Aderkabel verbunden. Auch 
das mobile Steuerpult. Pult konnte an 4 verschiedene Anlagenposition 
angesteckt werden.
War damals, nur mit meinem bescheidenen Kenntnisstand, mit Bussystem 
möglich.

Gruß

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Daniel A. schrieb:
> Hintergrund der ganzen Geschichte ist, die ganzen Leitungen zwichen
> Schaltpult und Anlage zu reduzieren, Da diese zerlegbar sein soll.

Da empfehle ich ebenfalls ein echtes Bussystem, das nach belieben 
erweiterbar ist.

Ein CAN Bus eignet sich hierfür so ziemlich am besten, zumindest würde 
ich den Empfehlen.

Da kann jeder Bereich einen eigenen Controller bekommen, der eine Gruppe 
steuert.

Ja man kann sogar mehrere Schaltpulte aufbauen oder mehrere Schaltpulte 
zueinander kombinieren.
z.B. eine Platine kann bis zu 32 Schalter einlesen und legt diese auf 
den Bus, damit könntest Du 64 UM-Schalter mit 4 Platinen erledigen.

Ein Schieberegister-System reduziert zwar etwas Kabel, da die Daten 
seriell übertragen werden, jedoch ein echtes Bus-System bietet weitaus 
mehr Möglichkeiten - und öffnet noch viele weitere für die Zukunft.
Man kann z.B. einzelne Komponenten austauschen ohne das ganze neu zu 
entwicklen.

: Bearbeitet durch User
von Fred R. (fredylich)


Lesenswert?

Hallo Acki,

habe noch ein sehr interessantes  Modul gefunden und gleich mal ein paar 
beim Chinamann für a 1,30 Euro bestellt.
Mit HT16K33 IC. Ist ein 16 x 8 Matrix I2C Interface mit einigen 
praktische Zusatzfunktionen.
Scheint laut Datenblatt perfekt für Bahnmodelbauer zu sein. Dort kann 
man ja nie genug Schalterereignisse für Ein- und Ausgabe haben.
Da bis zu 8 ICs an einem Bus geschaltet werden können sollte diese 
Variante in Hinsicht: Kosten, Hardware- und Softwareaufwand nicht die 
Schlechteste sein.
Nur haben wir die legendäre Matrixlösung wieder, die nur, mit 4 
Strippen(VCC, GND, SDA u. SCL) miteinander und mit dem Controller 
verbunden werden müssen.
Ja das ist der Vorteil eines Forum. Andere Lösungswege akzeptieren aber 
auch kritisch betrachten. Eine sachliche Diskussion auch wenn nicht 
immer fachlich Korrekt ist  okay und erwünscht. Wie man sieht könnte 
diese Diskussion auch für mich Vorteilhaft sein.
Nun kann ich es nicht mehr erwarten bis diese Module bekomme. Motto: 
Jugend forscht.

Nehme an dann passt eine neue Steuerung (Programmierung) für eine große 
Modelbahnanlage in einem ATMega 644.
Bahnbetrieb mit mehreren Zügen und Strecken soll mit Vorwahlschalter 
auch auf Vollautomatisch einstellbar sein. Da ist eine 16x8 Matrix für 
Tasterabfragen und Weichen- Signalstellung wohl eine elegante Lösung und 
mein bevorzugtes Bussystem (kein Kabelsalat) bleibt erhalten.

Gruß
Fred

von Bernd K. (prof7bit)


Lesenswert?

Jobst M. schrieb:
> Ja, das mag sein. Durch Fehler lernt man. Das kann passieren - außer Dir
> natürlich ...

Klar, das ist der Lern-Mechanismus. Dazu gehört dann aber auch das 
persönliche Ausbaden der Folgen, nur so wird der Lernerfolg wirklich 
sichergestellt.

> Trotzdem ist die Situation nun so, wie sie jetzt ist.

In der Zeit seit der Thread eröffnet wurde hättest Du doch schon mal den 
Lötkolben anheizen und die bestehende unsinnige Verdrahtung schon mal 
entfernen können, 180 Stück ist doch jetzt nicht so viel daß man das 
nicht an einem Wochenende nebenher locker durchziehen könnte.

von Jobst M. (jobstens-de)


Lesenswert?

Bernd K. schrieb:
> In der Zeit seit der Thread eröffnet wurde hättest Du doch schon mal den
> Lötkolben anheizen und die bestehende unsinnige Verdrahtung schon mal
> entfernen können

Ich !?
Das soll er schön selber machen! :-D


Gruß

Jobst

von Daniel A. (acki1985)


Lesenswert?

Bei der Matrix kommt aber das nächste Problem dazu. Ich weis nicht so 
recht wie ich das verdrahten soll. Wie weis ich wlcher Taster wo dran 
hängt?

Deshalb finde ich eigentlich die Lösung mit den Schieberegistern besser. 
Jedes Bit ein Taster. Und das kann ich leicht dokumentieren.

Kann man eine Matrix ohne Probleme erweitern?
 Gruß Daniel

: Bearbeitet durch User
von Jobst M. (jobstens-de)


Lesenswert?

Daniel A. schrieb:
> Ich weis nicht so recht wie ich das verdrahten soll.

Da könnte man Dir ja helfen.

> Wie weis ich wlcher Taster wo dran hängt?

Wenn es sich durch den Aufbau nicht erschließt, durch ausprobieren.


Gruß

Jobst

von Wolfgang (Gast)


Lesenswert?

Daniel A. schrieb:
> Kann man eine Matrix ohne Probleme erweitern?

Ja, einfach eine Spalte oder Zeile dazu bauen. Was günstiger ist, hängt 
von der Hardwarerealisierung ab.

von Daniel A. (acki1985)


Lesenswert?

Die Led Ansteuerung und relaiansteuerung aber dann trotzdem per 
Schieberegister oder?

Matrix mit doppel Tastschalter moment ich schau mal nach nem Bild

von Daniel A. (acki1985)


Lesenswert?

Was ich noch nicht verstanden habe. Warum seit ihr eigentlich gegen die 
Schieberegister Lösung?

von Elektrickser (Gast)


Lesenswert?

Die Schieberegister sind in Deinem Fall einfach nicht nötig und 
aufwändiger, als die Matrixlösung mit den Dioden.

Wenn es so wäre, dass mehrere Taster gleichzeitig gedrückt werden 
können, wäre das was anderes.

von Jobst M. (jobstens-de)


Lesenswert?

Elektrickser schrieb:
> Wenn es so wäre, dass mehrere Taster gleichzeitig gedrückt werden
> können, wäre das was anderes.

Selbst in einer Matrix kann man mehrere Taster gleichzeitig erkennen. 
Dazu ist pro Schalter nur eine Diode notwendig.


Gruß

Jobst

von Daniel A. (acki1985)


Lesenswert?

Ich habe Parallel dazu auch noch einen Beitrag im Bascomforum laufen.

Also nicht wundern.

von Wolfgang (Gast)


Lesenswert?

Daniel A. schrieb:
> Was ich noch nicht verstanden habe. Warum seit ihr eigentlich gegen die
> Schieberegister Lösung?

Auch die Matrix kann man mit Schieberegistern auslesen. Das eine hat mit 
dem anderen wenig zu tun.

Die Anzahl deiner Schalter liegt gerade knapp über der in der digitalen 
Welt magischen Grenze von 128 liegt. Dann brauchst du vier (bis 256 
Tasten) 8-Bit Schieberegistern. Bei 128 kämest du mit dreien aus.

Bei Einzel-IO-Abfrage bräuchtest du für 130 Taster ganze 17 
Schieberegister mit 8 Bit.

von Wolfgang (Gast)


Lesenswert?

Daniel A. schrieb:
> Also nicht wundern.

Und warum verlinkst du ihn dann hier nicht?

von Daniel A. (acki1985)


Lesenswert?


von Fred R. (fredylich)


Lesenswert?

Daniel A. schrieb:
> Die Led Ansteuerung und relaiansteuerung aber dann trotzdem per
> Schieberegister oder?

Nein, nein, nein....

Daniel A. schrieb:
> Was ich noch nicht verstanden habe. Warum seit ihr eigentlich gegen die
> Schieberegister Lösung?

Ist doch keiner. Nur wenn schon optimieren dann gleich richtig. Bus ist 
auch ohne mehr Aufwand übersichtlicher im gesamt Projekt.

Daniel A. schrieb:
> Ich habe Parallel dazu auch noch einen Beitrag im Bascomforum laufen.

Ist doch dein Recht. Je mehr Meinungen und Hilfen des so besser.
Meine Hinweise sind aus praktischen Erfahrungen und müssen auf keinem 
Fall die optimalen sein.

Daniel A. schrieb:
> Entschuldigung
Muss nicht sein.
Minus Bewertungen sind in diesem Forum für einige das einzige was diese 
können.
Solltest du diese Sammeln, ich kann die ein paar 100 abgeben.

Gruß
Fred

von Joe F. (easylife)


Lesenswert?

Ich verstehe ja nicht so recht, was dein Problem ist.
Du hast die Schieberegister, du hast Bascom Code um sie anzusprechen, 
und sprichst im anderen Forum trotzdem davon, du hättest keine Ahnung, 
wie man das jetzt anspricht.
Bist du einfach nur zu faul Bascom zu lernen?
Oder mal einen Schaltplan zu deinem Aufbau zu erstellen damit man gucken 
könnte ob alles richtig angeschlossen ist?
Oder den bestellten Logic-Analyzer zu benutzen, um zu gucken, ob die 
Signale zum/vom Schieberegister okay sind?

Man kann dir nur helfen bzw. Hilfe zur Selbsthilfe geben, wenn du etwas 
mehr Einsatz bei der Problembewältigung zeigst. Unkonkrete und pauschale 
Aussagen wie "es geht nicht" helfen nicht weiter.
Es ist hilfreich konkrete Fehlermeldungen zu benennen anstatt "er 
meckert". Oder zu beschreiben, welche Versuche zum Debuggen du bereits 
unternommen hast, und wobei es dabei konkret klemmt.

Update:
Ich denke, dir fehlt es an sämtlichen Grundlagen. Du muss Schritt für 
Schritt vorgehen.
Wenn das mit den Schieberegistern momentan zu kompliziert erscheint, 
fange erstmal damit an, einen Taster (mit Pullup oder Pulldown) direkt 
an einen Eingang anzuschließen.
An einen Ausgang schließt du eine LED mit 560 Ohm Vorwiderstand an.
Dann schreibst du dir ein Bascom Programm, dass die LED blinken lässt.
Als nächstes erweiterst du dein Programm, dass es den Taster abfragt.
Dann schaltest du die direkt angeschlossene LED entsprechend der 
Taster-Stellung ein und aus.
Wenn du das geschafft hast, bist du glaube ich ein großes Stück weiter, 
da du dann verstanden hast, wie man mit Eingängen und Ausgängen umgeht.

Du wirst sehen, der Schritt dann die Schieberegister zu benutzen ist mit 
dieser Grundlage wesentlich einfacher geworden.

: Bearbeitet durch User
von Daniel A. (acki1985)


Angehängte Dateien:

Lesenswert?

Ich habe gerade ein ein kleines Programm geschrieben was eine LED 
blinken lässt. :-)

von Daniel A. (acki1985)


Angehängte Dateien:

Lesenswert?

Und hier noch ein ein kleines Programm was die LED ein und aus-schaltet.

:-)

Ich weis das ist alles nix großes. :-)

von Hugo W. (Gast)


Lesenswert?

Daniel A. schrieb:
> Und hier noch ein ein kleines Programm was die LED ein und
> aus-schaltet.
>
> :-)
>
> Ich weis das ist alles nix großes. :-)

Deshalb heisst es ja auch "klein anfangen".
Nur so lernst du aus der Praxis. Durch selbermachen...

:-)

von Joe F. (easylife)


Lesenswert?

Und wie geht
1
$regfile = "attiny2313.dat"
2
$crystal = 8000000

mit dem
1
$regfile = "M8def.dat"
2
$crystal = 1000000

aus deinen neueren Programmen zusammen?
Hast du die Beispiele bei dir auch ausprobiert (mit LED und Taster), 
oder einfach mal irgendwas zusammenkopiert, damit man dich hier jetzt 
lobt?
Das Durcheinander der Groß-/Kleinschreibung in deinem Code lässt 
irgendwie drauf schließen...

von Daniel A. (acki1985)


Lesenswert?

Nein ist wirklich nicht kopiert. Ja habe die codes getestet. Benötige ja 
auch noch einen Pull-down Wiederstand bei dem zweiten Programm, sonst 
geht die LED nicht wieder aus.

von Daniel A. (acki1985)


Lesenswert?

Die Tests habe ich mit einem Mega 8 gemacht.

Der Code vom mit dem 2313 ist war zusammengeklaut. Ich versuche meistens 
es anhand von Beispielen zu verstehen. Klappt aber nicht immer.

von Joe F. (easylife)


Lesenswert?

Daniel A. schrieb:
> Nein ist wirklich nicht kopiert. Ja habe die codes getestet. Benötige ja
> auch noch einen Pull-down Wiederstand bei dem zweiten Programm, sonst
> geht die LED nicht wieder aus.

So. Da bist du ja schon einen Schritt weiter in Theorie und Praxis.
Wenn du die Taster an Schieberegister anschließen willst, benötigst du 
ebenso Pull-Ups oder Pull-Downs - je nachdem ob du die gemeinsamen 
Anschlüsse an GND oder VCC anschließen willst. Davon solltest du dir 
also eine ausreichende Menge besorgen. 4.7K oder 10K sollte ganz gut 
passen.
Und du brauchst auch 100nF Keramikkondensatoren, um die 
Versorgungsspannung der Schieberegister zu puffern. An jedes Register 
gehört ein Kondensator. Direkt zwischen den VCC und den GND Pin.

Dann hast du ja einen Programmentwurf von mir, der dir zeigt, wie die 
Schieberegister angesteuert werden.
Im Programmcode steht als Kommentare auch, welcher Schieberegister Pin 
mit welchem Input/Output verbunden werden soll.
Am besten zeichnest du dir jetzt mal auf, wie deine Schieberegister 
Schaltung aussehen soll, und wie du sie mit deinem Mega 8 verbinden 
willst.

: Bearbeitet durch User
von Daniel A. (acki1985)


Angehängte Dateien:

Lesenswert?

Guten morgen zusammen.

Ich versuche gerade mit dem Bascom-Forum ein 74hc595 zu Fuß zum laufen 
zu bringen.

Langsam verstehe ich das Schieberegister. :-)

von Fred R. (fredylich)


Lesenswert?

Daniel A. schrieb:
> Ich versuche gerade mit dem Bascom-Forum ein 74hc595 zu Fuß zum laufen
> zu bringen.

Nur mal so als Klarstellung in diesem Forum, dass mit seiner 
Themenvielfalt, wohl die meisten Besucher hat.

Wenn’s um praxisnahe BASCOM- Programmierung geht findest du im Bascom 
Forum viele bodenständige Experten. Wird aber ohne Bindestrich 
geschrieben(Bascomforum.de).
Ein gutes Forum mit Bindestrich geschrieben (Bascom-forum.de) gibt es 
auch.
Dies hatte vor kurzem einen bösen Absturz und nach meinem Eindruck 
interne Neustartschwierigkeiten.
Ich persönlich schau in den Verschiedenen Foren rein und suche nachdem 
was ich benötige(und auch verstehe).
Dies ist doch kein Makel meinerseits auch wenn ich aus 2 Einzelhilfen 
Eine daraus mache.
Wünsche viel Erfolg mit Schieberegister. Hast ja nun schon den ersten 
kleinen Nachteil erkannt.
Mit einer Anweisung ein Byte zu senden wie z.B. mit ein I²C Protokoll 
benötig du schon mehrere Schritte und ist somit nicht so übersichtlich.


Gruß
Fred auch bekannt als fredred

von Geert (Gast)


Lesenswert?

This might be interesting too for your project:

https://www.youtube.com/watch?v=nXl4fb_LbcI
https://www.youtube.com/watch?v=1Vb2BpxPnjU&t=55s

This guy is explaining very well how to control a bunch (might be 1000+) 
switches with a very simple mechanism and a very short (Arduino) 
program.

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.