LED über einen PORT mit ATMEGA 8 ansteuern?

OP #1412433
Lesenswert?

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ß
#1412436
Lesenswert?

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)
#1412444
Lesenswert?

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.
Gast #1412498
Lesenswert?

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.
Gast #1412502
Lesenswert?

> 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.
Gast #1412503
Lesenswert?

>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.
#1412505
Lesenswert?

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.
#1412518
Lesenswert?

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.
#1412535
Lesenswert?

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?
Gast #1412545
Lesenswert?

> 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.
OP #1412546
Lesenswert?

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 ;)
Gast #1412563
Lesenswert?

>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.
Gast #1412573
Lesenswert?

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.
#1412584
Lesenswert?

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?
Gast #1412601
Lesenswert?

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.
#1412642
Lesenswert?

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
#1412645
Lesenswert?

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?
#1412659
Lesenswert?

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
OP #1413189
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren