Hallo, Ich bin momentan am ausprobieren was man alles mit einem Arduino Board bewerkstelligen kann, ich beschäftige mich seid 2Wochen mit diesem Thema. Mein Ziel für die (leider noch) ferne Zukunft ist es die 24 Weichen meiner Modellbahnanlage mit Tastern zu stellen und eine passive (Passiv weil der Anker stand der spulen antriebe nicht überprüft wird) Rückmeldung auf einem Stellpult zu visualisieren mithilfe von LEDs. Das bedeutet ich brauche 2Ports für die LED Rückmeldung, 2 Ports für die Taster und 2 Ports für den Weichenantrieb. Macht in Summe 144 Ports. Leider hat dies kein Arduino Daher muss ich mir die Ports beschaffen indem ich Schieberegister einsetze(74hc595). Den Schaltvorgang der Weichen stelle ich mir momentan so vor: Taster wird betätigt --> Arduino erkennt dies --> ändert das Bit des Schieberegisters welches für die LED Rückmeldung ist und gleichzeitig wird in einem anderen Schieberegister für einen kurzen Moment durchgeschaltet um den Weichenantrieb umzupolen damit die Weiche sich bewegt. {https://onedrive.live.com/edit.aspx?cid=43be9689c3898d07&id=documents&resid=43BE9689C3898D07!68753&app=OneNote&&wd=target%28%2F%2FSpur_N_%C3%96ffentlich_Stummiforum.one%7Cfdc6fe1e-7506-4936-a6a9-642b0971a280%2FSchaltplan%7Cf04589a1-021b-4059-a4d0-b2ea3fcada51%2F%29 hier ist ein Link in mein Notizbuch der eine Skizze enthält wie ich mir den Prinzipiellen Ablauf vorstelle.} So viel zur Einleitung. Mein Problem ist folgendes, ich weiß nicht wie ich Bitmanipulationen innerhalb eines Schieberegisters machen kann. Bei dieser Frage würde ich mir Wünschen das jemand mit mehr Erfahrung mir da einige Tipps geben könnte wie ein solcher Code auszusehen hätte. Falls noch Informationen benötigt werden, werde ich diese gerne Nachliefern. Eine letzte bitte zum Schluss, ich bin kein studierter was Programmierung angeht und beschäftige mich noch nicht lange(~1Woche, habe aber von FRANZIS http://www.conrad.de/ce/de/product/631829/Arduino-Das-Franzis-Arduino-Lernpaket-65148?ref=searchDetail durchgearbeitet) mit diesem Thema daher seid bitte nicht verärgert wenn ich einiges was für viele Selbstverständlich ist Nachfragen werde. Danke für Antworten und Hilfe im Voraus Gruß Peter
Peter R. schrieb: > Daher muss ich mir die Ports beschaffen > indem ich Schieberegister einsetze(74hc595). SIPO wie '595 aber nur für die Ausgänge, also Weichenansteuerung und Lämpchen. Um die Taster abzufragen brauchst du PISO-Register wie '165, '166, '597. Pull-Up- (seltener gebraucht: Pull-Down-) Widerstände nicht vergessen, denn die Eingänge der 74HC-Serie sind sehr hochohmig und ein offener Schalter liefert kein definiertes Potential. Peter R. schrieb: > ich weiß nicht wie ich Bitmanipulationen > innerhalb eines Schieberegisters machen kann. Gar nicht. Du musst das ganze Schieberegister mit dem aktuellen Bitmuster neu laden. Im Falle der Weichenmagneten bedeutet das, im Schattenregister des µC das/die betreffende(n) Bits zu setzen, das Schattenregister in die 595-Kette zu kopieren, Latch enable und Output enable setzen, 200ms warten, und dann mindestens Output enable wegzunehmen *) um so die Leistungstreiber abzuschalten. Enstprechend müsstest du bei den Tastern auch regelmäßig, z.B. 10 Mal pro Sekunde das ganze Schieberegister auslesen und mit dem im µC gespeicherten alten Stand vergleichen. Hört sich schlimm an, ist programmtechnisch aber nur eine Fingerübung. Sicherheitshalber wird man, um die Magneten vor dem Durchbrennen zu schützen, aber noch eine Routine einbauen, die nur vom Watchdog Interrupt aufgerufen wird und die Weichentreiber unbedingt abschaltet, falls der Programmteil, der das eigentlich erledigen sollte, für z.B. 2 Sekunden nicht aufgerufen wird. *) P.S.: Output Enable ist beim '595 aktiv Low. D.h. der Arduino muss dort eine "1" hin liefern um die Ausgänge des '595 abzuschalten.
:
Bearbeitet durch User
Hallo, Was ist den das Schattenregister? Den Rest habe ich glaube ich verstanden und werde es Versuchen am wochenende umzusetzen. Ich werde mich melden wenn etwas konkretes vorliegt zu dem man Fragen stellen kann. Gruß Peter
Ich würde mal daüber nachdenken, direkt an jeder Weiche einen Nano zu stationieren und diese mittels übergeordnetem Arduino über einen Bus zu adressieren und anzusprechen ... bei Preisen um die 2 Euro ... statt dem Gefummel mit Schieberegistern verlagert sich der Aufwand in die Software.
Peter schrieb: > Was ist den das Schattenregister? Ein von meinem Vorposter ungünstig gewählter Begriff für eine Variable in deinem Programm. Dort speicherst du die Bits der Schieberegister wie du sie gerne hättest und überträgst sie anschließend. Folgende Seite wird dir wahrscheinlich ein Stück weiter helfen: https://www.mikrocontroller.net/articles/AVR-Tutorial:_Schieberegister
Peter schrieb: > Was ist den das Schattenregister? Ein oder mehrere Speicherstellen im µC, deren Inhalt mit dem des externen Schiebereisters übereinstimmt. Wie der Elf schon schrieb, kann man dort das auszugebende Bitmuster vor der Ausgabe zwischenspeichern, aber die Software kann es auch benutzen um schnell den aktuellen Inhalt des Schieberegisters abzufragen. Bei der Eingabe kann man zwei davon benutzen, um festzustellen an welchen Positionen sich etwas geändert hat, also ob eine Taste gedrückt oder losgelassen wurde. Es ist programmtechnisch meist günstiger, das gesamte SR einzulesen, auch wenn das 40 Bit sind, und dann erst auszuwerten, als nach jedem eingelesenen Byte oder gar Bit zu entscheiden was zu tun ist.
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.