Servus, ich möchte gerne mehr als 8 LED's über einen PORT des ATMEGA 8 direkt ansteuern. Ist sowas überhaupt möglich? Ein 8 Bit Register kann ja 256 verschiedene Werte annehmen. Ich bräuchte da irgendeinen IC dem ich eine Adresse schicke (BITMUSTER) und der schaltet dann eine LED an seinem Ausgang ein. Der IC sollte quasi so um die 40 Ausgänge besitzen. Gibt es sowas oder muss ich mir da was anderes überlegen mit Schieberegistern etc? gruß
Da dieser Spezial-IC dieselbe Menge an Ausgängen benötigt wie ein Schieberegister, eine Schieberegisterkette aber nur 3 Pins am µC belegt, die Frage: Was ist falsch an einer Schieberegisterkette? (Ausser, dass du möglicherweise mit dem Strom für die LED nicht hinkommst. Aber man kann da ja auch Low-Current LED nehmen)
Jede einzelne LED soll aber direkt ansteuerbar sein. Das ganze soll für eine Modelleisenbahnanlage die Beleuchtung für Häuser, Laternen etc sein und man soll vom PC aus die einzelnen LED's direkt ansteuern können.
Du kannst auch eine Matrix aufbauen. Duch Multiplexing und die Trägheit des Auges entsteht dann der Eindruck von dauerhaft leuchtenden LEDs. Siehe: LED-Matrix
oder jedem Haus sein eingen Tiny spendieren und diese über einen Bus verbindenen, dann hat mein ein schönes modulares System.
Korbinian G. schrieb: > Jede einzelne LED soll aber direkt ansteuerbar sein. Ja, und? Das Schieberegister, selbst wenn es 200 Stufen hat, kann so schnell neu beschrieben werden, dass es überhaupt kein Problem ist, alle 200 LED im Schieberegister neu auszugeben, selbst wenn nur 1 umgesetzt werden soll. > Das ganze soll für > eine Modelleisenbahnanlage die Beleuchtung für Häuser, Laternen etc sein > und man soll vom PC aus die einzelnen LED's direkt ansteuern können. D.h. du hast alle Zeit der Welt.
dazu brauche ich dann aber schon einige schieberegister. damit muss ich mich erstmal genau auseinandersetzen wie ich die dann zusammenschalten muss.
Korbinian G. schrieb: > dazu brauche ich dann aber schon einige schieberegister. damit muss ich > mich erstmal genau auseinandersetzen wie ich die dann zusammenschalten > muss. http://www.mikrocontroller.net/articles/AVR-Tutorial:_Schieberegister#Kaskadieren_von_Schieberegistern Ist ganz simpel :-) Und: Im Laufe der Zeit erweiterbar.
http://www.mikrocontroller.net/articles/AVR-Tutorial:_Schieberegister >Der IC sollte quasi so um die 40 Ausgänge besitzen. Alternative wäre ein größerer Mega. Die gibt es auch mit 40 Ausgänge, wenn auch nicht im DIP-Gehäuse. Oliver
auf jeden fall schon mal danke für die schnellen hilfreichen antworten. ich schau mir die verschiedenen möglichkeiten mal genau an und entscheide mich dann.
wenn ich das mit den schieberegistern richtig verstehe, schiebe ich bei jeder led änderung immer den zustand für alle leds in das schieberegister, was wohl so schnell geht dass man es nicht mit dem auge wahrnimmt ;)
Ich hatte mal eine Mehrzugsteuerung für eine LGB entworfen und gebaut. Da wurden aber noch 87c52 OTP Mikrocontroller benutzt. Heute würde ich auch entsprechende Atmel Controller nehmen. Bei diesem Projekt hatte jede Lock einen Controller und es gab noch Bausteine für Weichen, Beleuchtung und Signale mit jeweils 8 Ausgängen, die man auf der Anlage beliebig verteilen konnte, weil die Information einfach von den Schienen abgenommen wurden und jeder Baustein seine eigene Adresse hatte. Allerdings wurde dabei kein PC zur Ansteuerung genommen, sondern die Befehle kamen vom Fahrpult oder von den Handreglern, die dort angeschlossen wurden, damit man mit mehreren Personen die Anlage bedienen konnte ohne sich immer auf den Füßen zu stehen am Fahrpult. Also ich würde für den geforderten Zweck auch Atmel Tinys nehmen und die über einen Bus steuern.
> was wohl so schnell geht dass man es nicht mit dem auge > wahrnimmt ;) ja, oder noch besser ein Schieberegister mit Latch nehmen. Damit wird es intern in ein puffer geschoben und auf ein Signal werden alle ausgänge übernommen.
>wenn ich das mit den schieberegistern richtig verstehe, schiebe ich bei >jeder led änderung immer den zustand für alle leds in das Ja. >schieberegister, was wohl so schnell geht dass man es nicht mit dem auge >wahrnimmt ;) Nicht unbedingt. Du kannst auch gaaaanz langsam schieben. Erst wenn du den Schieberegistern "fertig_geschoben" sagst, kommt die Information an den Ausgang.
Korbinian G. schrieb: > wenn ich das mit den schieberegistern richtig verstehe, schiebe ich bei > jeder led änderung immer den zustand für alle leds in das > schieberegister, Ganz genau > was wohl so schnell geht dass man es nicht mit dem auge > wahrnimmt ;) Darum gehts bei dir gar nicht. So ein 595 Schieberegister besteht aus 2 Teilen. Der Schiebekette und dem Ausgangsregister. An den Ausgängen siehst du immer nur den aktuellen Zustand des Ausgangsregisters. Du kannst an der Schiebekette rumschieben, solange du lustig bist, das interessiert die Ausgangsregister herzlich wenig. Die zeigen nach wie vor immer noch den letzten Zustand an. Erst wenn die Schiebekette wieder in Position ist, kommt ein Signal an die Schieberegister, den Inhalt der Schiebekette in die Ausgangsregister zu übernehmen. Und erst dann macht es an den Ausgängen flutsch.
ich denke ich werde dann wohl mehrere atmel µCs nehmen und über die UART ansteuern, jedem eine feste adresse geben und gut is ;)
>ich denke ich werde dann wohl mehrere atmel µCs nehmen und über die UART >ansteuern, jedem eine feste adresse geben und gut is ;) Viel Spaß!
ach ja stimmt mit dem schiebe und ausgangsregister hab ich grade erst gelesen ;)
Korbinian G. schrieb: > ich denke ich werde dann wohl mehrere atmel µCs nehmen und über die UART > ansteuern, jedem eine feste adresse geben und gut is ;) Na denn. Jetzt schon mal: willkommen in 1 Monat, mit deiner ersten Frage, wie man denn die Kommunikation 'am besten' macht.
na die kommunikation werd ich über die serielle schnittstelle mit der uart machen. protokoll hab ich mir schon überlegt. weiß nur noch nicht ob ich polling oder interrupts benutze wobei polling vollkommen ausreichen sollte bei dieser anwendung.
Korbinian G. schrieb: > na die kommunikation werd ich über die serielle schnittstelle mit der > uart machen. Du brauchst also mindestens einen µC Quarz (sonst kanns passieren, dass die Hälfte der Knoten im Winter nicht mehr reagiert) Mäuseklavier (zur Adresseinstellung) pro Knoten. Dazu noch eine 3-Draht Verbindung zwischen den Modulen, oder willst du das Signal über die Schienen schicken? Was ist jetzt der Vorteil dieser Lösung gegenüber Schieberegister?
> Du brauchst also mindestens so schlimm ist es nun auch nicht. > einen µC einen µC oder ein schieberegister ist zum schluss egal, dabei kann der µC sogar die LEDs direkt treiben, das register nicht. > Quarz wenn er auf 1200 baud geht ist er nicht notwendig > Mäuseklavier (zur Adresseinstellung) kann man per software machen, einfach auf eine broadcast adresse regieren und ihn darüber programmieren. (alternativ noch mit einem Taster den Programmiermodus starten, damit muss man die anderen Teilnehmer nicht vom bus trennen) Der Vorteil ist die Flexibilität, man kan sehr schnell einige lampen per PWM-Dimmen, auch mal schnell eine LED mehr in ein Haus hängen usw. Ich finde es sinnvoll.
ob dabei ein vorteil ist spielt für mich keine rolle. ich kann mich mit meinem wissen mit der lösung ohne schieberegister momentan noch besser anfreunden. bei den schieberegistern muss ich mir nämlich noch überlegen wie ich programmiertechnisch über einen pin des µCs das komplette bitmuster rüberschiebe bzw wie ich es bei jeder kleinen änderung jedesmal neu erzeuge. damit wäre die schieberegisterlösung natürlich überschaubarer ;)
Beim Schieberigister hat man für jede LED eine Leitung, welche auch mal über die ganze Anlage geführt werden muss, da kommt ganz schön was zusammen an Leitungslänge.
Geht das nicht ganz einfach mit einem (De-) Multiplexer? 2 zu 4 3 zu 8 4 zu 16 5 zu 32 ----------- hier irgendwo ist 40 6 zu 64 also 6 bit
wie gesagt daran dachte ich auch schon, nur eine genaue lösung dazu wäre für mich hilfreich ;)
>ich kann mich mit meinem wissen mit der lösung ohne schieberegister >momentan noch besser anfreunden. Glaub ich dir. Weil du, mangels Erfahrung, nicht abschätzen kannst, was eine Kommunikation für Aufwand ist. >nämlich noch überlegen wie ich programmiertechnisch über einen pin des µCs Hardware-SPI macht das alleine. Wichtig ist nur, die Information als Byte(array) vorrätig zu halten. >Der Vorteil ist die Flexibilität Flexibilität erkauft man sich immer mit Mehraufwand. >dabei kann der µC sogar die LEDs direkt treiben, das register nicht. Das Register auch.
@Matthias Lipinsky als ersten schritt kann er ja die tinys als Schieberegister progammieren.
mit der spi hatte ich bisher noch nicht das vergnügen ;) ich programmier jetzt auch ca erst seit 1,5monaten mit mikrocontrollern, aber ich werd es mir mal im datenblatt durchlesen.
Bei den Schieberegistern ist man meißtens auf <5mA pro Ausgang beschränkt. Die AVR's können doch 20 bis 30mA verkraften. Außerdem hat ein Bussystem den Vorteil dass nicht gleich alles ausfällt wenn ein Teilnehmer sich verabschiedet. Dass erleichtert die Fehlersuche ungemein. Und dass man bei neu hinzugefügten Modulen die Daten einfach nur an eine neue Adresse schicken muß ist für den Programmierer viel einfacher als wenn er mitten im Bittmuster einen Abschnitt einflicken muß. Dass herumfurwerken im Bitmuster führt mit Sicherheit früher oder später zu einem Durcheinander. Ich würde die Signale übrigens mittels Stromschleife übertragen. Da geht nicht so viel kaputt wenn einmal ein Kurzer ist und die Komunikation ist nicht so anfällig gegenüber Stöhrungen. Ein Bussystem mit AVR's hat eigentlich nur Vorteile gegenüber von Schieberegistern.
Barny schrieb: > Bei den Schieberegistern ist man meißtens auf <5mA pro Ausgang > beschränkt. > Die AVR's können doch 20 bis 30mA verkraften. Eine einzelne LED an einem 595 ist überhaupt kein Problem. Und sowohl beim 595 als auch bei einem µC hast du das Problem, dass du den Maximalstrom des IC nicht überschreiten darfst. Wie gesagt, mit Low Current LED ist das überhaupt kein Problem und für 595 (als auch natürlich für Tiny) gibt es immer noch die Lösung des abwechselnd nach GND und nach Vcc schaltens. Dein 'Vorteil' ist in Wirklichkeit keiner. > > Außerdem hat ein Bussystem den Vorteil dass nicht gleich alles ausfällt > wenn ein Teilnehmer sich verabschiedet.# Das ist wahr. > Dass erleichtert die Fehlersuche ungemein. Nicht wirklich. Wenn ein Schieberegister ausfällt, ist alles dahinter dunkel. Das fällt viel eher auf, als wenn irgendwo ein paar einzelne LED nicht funktionieren :-) Allso einfach dem Strang nachgehen, bis man zum ersten dunklen Modul kommt und voila. da ist der Übeltäter. Ersatzplatine aus dem Vorrat rausnehmen, Alte aus dem Strang ausstöpseln, neue einstöpseln und fertig. Da muss nichts programmiert oder eingestellt werden. > Und dass man bei neu hinzugefügten Modulen die Daten einfach nur an eine > neue Adresse schicken muß ist für den Programmierer viel einfacher als > wenn er mitten im Bittmuster einen Abschnitt einflicken muß. Da ist was drann. Auf der anderen Seite ist das ein Problem, welches man auch in Software wunderbar lösen kann. Kommando einfügen, Angeben wieviele Led in der Kette wo neu dazugekommen sind, und die Id's aller nachfolgenden Led werden um die entsprechende Anzahl erhöht. > Dass herumfurwerken im Bitmuster führt mit Sicherheit früher oder später > zu einem Durcheinander. Seh ich eigentlich umgekehrt. Wenn man dem Benutzer erlaubt, Ids frei zu vergeben, ist da immer noch irgendwann Chaos rausgekommen :-) Bis hin zu doppelt vergebgenen Ids :-) Aber wie gesagt: Alles eine Frage der SW, mit der der Benutzer arbeitet. > Ein Bussystem mit AVR's hat eigentlich nur Vorteile gegenüber von > Schieberegistern. Ein Vorteil: Man kann den einzelnen Knoten 'autonome Funktionen' geben. Lagerfeuer oder Blinklicht oder Ampelphasen. Auf der anderen Seite kann man sich für solche Sachen immer noch spezielle Knoten-Tiny bauen. > Beim Schieberigister hat man für jede LED eine Leitung, > welche auch mal über die ganze Anlage geführt werden muss, > da kommt ganz schön was zusammen an Leitungslänge. Du setzt natürlich die einzelnen SR-Module in unmittelbare Nähe der zu versorgenden LED. Quer über die Anlage geht ein 3-adriges Flachbandkabel, welches die Module verbindet. Von den Modulen hat man dann kurze Wege zu den LED. Was anderes machst du doch mit den Tinys auch nicht. Und da du nicht auf den Schienen überträgst, hast du auch keine Probleme mit Motoren, die dir die Versorgungsspannung versauen oder Wagons, die dir einen kurzen auf den Schienen bauen, etc. > Quarz > wenn er auf 1200 baud geht ist er nicht notwendig Sagt dir der Begriff 'relativer Fehler' etwas?
Hat eigentlich schon mal einer die Frage gelesen ? Er möchte EINE von ca. 40 LEDs einschalten können, über 8 Portleitungen. Und dann raten hier die Leute zu Schieberegistern, Stromschleifen und Demultiplexern. War Don Lancaster wirklich so patenttauglich genial, dass hier niemand auf die Methode des Charlyplexing kommt, um die LEDs ohne weitere Zwischenbauteile anzusteuern? http://ww1.microchip.com/downloads/en/AppNotes/91029a.pdf http://www.maxim-ic.com/appnotes.cfm/appnote_number/1880 1 von 56 LEDs ist durch 8 Portleitungen aufleuchtbar.
@MaWin weiter unten stellt sich aber raus das er 40Leds in alle Möglichen kombinationen ein und aus schalten will.
:-) Gerade bei Eisenbahnfreunden kommt der Appetit mit dem Essen. Aus den 40 LED können ganz schnell 100 oder 200 werden. Wohl dem, der ein einfach erweiterbares System hat. :-)
Mit 3 Bit lassen sich über einen einfachen Demultiplexer 8 Schieberegister auswählen. Bei jeweils 8 Bit pro Schieberegister ergeben sich 64 Ausgänge. Zwei Bit des Ports stehen noch für Daten und Takt zur Verfügung. In der 74HC-Serie findet man entsprechende Bausteine. Wo
Wolfgang Schmidt schrieb: > Mit 3 Bit lassen sich über einen einfachen Demultiplexer 8 > Schieberegister auswählen. Bei jeweils 8 Bit pro Schieberegister ergeben > sich 64 Ausgänge. > Zwei Bit des Ports stehen noch für Daten und Takt zur Verfügung. Das klingt jetzt interessant. Warum möchte ich das so machen, wenn ich die SR auch kaskadieren kann?
Wenn die SR kaskadiert werden, dann müssen immer alle Bits ausgegeben werden. Geht natürlich auch. Bei meinem Prinzip werden jeweils 8 Bits geschoben. Dies bleibt übersichtlicher, ist etwas mehr an Hardware, dafür wird die Software etwas einfacher. Das Prinzip wurde bereits für eine 128 x 8 LED-Matrix (1024 LEDs) bei einem Schrift-Laufband benutzt. Die Ansteuerung erfolgte über einen Parallelport. Wo
da hat sich ja viel getan von gestern auf heute ;) viele interessante vorschläge! ich hab mir jetzt eh noch was überlegt. also die 40leds waren ja nur so ein wert um das problem zu schildern. natürlich wird sich die anzahl irgendwann erhöhen. aber die leds sollen auch blinken können bzw. würde ich auch gern die weichen mit dem pc steuern oder den bahnübergang auf und zu machen. da komm ich eh nicht um treiberschaltungen herum.
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.