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
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"?
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... :-)
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.
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.
Es wird eigentlich immer nur eine Taste abgefragt. Zumindest ist so der Plan.
Achso habe ich vergessen zu erwähnen. Programmiert soll das ganze in Bascom.
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
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.
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
Ich glaube die Abfrage über Schieberegister gefällt mir ganz gut. Ich danke euch trotz all dem für eure Ideen.
Entschuldigung es handelt sich um solche Schalter: http://www.pollin.de/shop/dt/OTU1OTc1OTk-/Bauelemente_Bauteile/Mechanische_Bauelemente/Schalter_Taster/Kipptaster_MTS_223.html
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?
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
Daniel A. schrieb: > Entschuldigung es handelt sich um solche Schalter: Okay - wieso sind dort ALLE Mittelkontakte miteinander verbunden? Gruß Jobst
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
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.
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.
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.
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 ;-)
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?
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?
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. :-)
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
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...
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.
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
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.
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.
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.
Robin S. schrieb: > Je nachdem, was vielleicht gerade besser verfügbar ist, nur als kleiner > Hinweis. Bis jetzt noch gar nix in der Art.
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.
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
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.
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
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
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.
Wolfgang schrieb: > Sowohl AVR als auch > Schieberegister hätten gerne Gleichspannung. Daniel A. schrieb: > den gemeinsamen plus
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
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.
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
Es wird recht lange dauern alle Spalten/Zeilen durchzuprüfen bei jedem Interrupt ...
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.
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
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.
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.
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
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
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 ...
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.
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
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.
Thomas E. schrieb: > 130 verschiedene Widerstandswerte 132 gleiche Widerstandswerte - das ist der Trick. Das kann man sehr genau trennen. Gruß Jobst
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.
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".
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.
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?
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)
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.
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.
Guten morgen alle zusammen, Es handelt sich um 65 Dopeltaster also 130 Einzeltaster
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.
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.
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
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 :-)
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.
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ß
Richtig es sollen 130 Tasten ( 65Doppeltaster) abgefragt werden. Der AVR soll dann über Schieberegister Relaiskarten ansteuern. So ist der Plan
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
@ 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.
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.
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.
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.
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
Puh das hört sich kompliziert an. Programmiersprache soll übrigens Bascom sein. Ich verstehe das irgendwie nicht wirklich.
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.
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ß
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
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
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
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.
Na klar auch die Politiker wollen nicht 10 Euro in die Zukunft investieren. Fehlen ja heute.
Und wie gesagt von der Sache i2c wurde mir abgeraten. Ich werde es aber trotz dem mal versuchen.
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?
Joe F. schrieb: > Hast du ein Oszilloskop oder einen Logicanalyzer zur Verfügung? Sowas besitze ich leider nicht.
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
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€?
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...
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
http://www.ebay.de/itm/8-Kanal-Logik-Analyser-CH-8-Channel-USB-Logic-Analyzer-Oszilloskop-/291992506080?hash=item43fc1c0ee0:g:-mAAAOSwnHZYbsmf Oder reicht der?
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.
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.
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
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/
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 ...
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
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
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.
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.
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ß
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
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
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.
Entschuldigung das versuche ich ja. Aber ich verstehe es nicht. Ich komm damit nicht wirklich klar.
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.
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ß
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.
Wie ein Schieberegister funktioniert (denke) habe ich verstanden. Ich weis aber nicht wie ich es in einem code anspreche.
Es gibt auch kein File "ATtiny2313def.dat" sondern: 2313DEF.dat ATtiny2313.DAT ATtiny2313A.DAT
Nein dies ist doch der berste Ansatz für eine gemeinsame Lösungsfindung.
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
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.
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
Da ich die Schieberegister da habe, werde ich damit mal etwas spielen und testen.
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.
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.
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.
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.
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
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.
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ß
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ß
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
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
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.
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
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
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
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.
Die Led Ansteuerung und relaiansteuerung aber dann trotzdem per Schieberegister oder? Matrix mit doppel Tastschalter moment ich schau mal nach nem Bild
Was ich noch nicht verstanden habe. Warum seit ihr eigentlich gegen die Schieberegister Lösung?
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.
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
Ich habe Parallel dazu auch noch einen Beitrag im Bascomforum laufen. Also nicht wundern.
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.
http://bascomforum.de/index.php?thread/286-einlesen-von-tastern-und-ausgabe-je-%C3%BCber-schiebregister/&postID=2873#post2874 Entschuldigung
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
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
Und hier noch ein ein kleines Programm was die LED ein und aus-schaltet. :-) Ich weis das ist alles nix großes. :-)
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... :-)
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...
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.
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.
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
Guten morgen zusammen. Ich versuche gerade mit dem Bascom-Forum ein 74hc595 zu Fuß zum laufen zu bringen. Langsam verstehe ich das Schieberegister. :-)
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.