LEDs einzeln ansteuern?

Osiris

Level-1
Beiträge
6
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,


ich habe folgendes Problem und zwar möchte ich mit einer CPU 312 insg. 19 LEDs ansteuern. Die LEDs sind für eine Betriebsanzeige und müssen unabhängig voneinander gesteuert werden können zur Verfügung steht mir eine digitale Ausgangsbaugruppe (SM 322).
Ich habe mir überlegt dieses mit einem Schieberegister zu realisieren. Hat jemand Erfahrung damit oder eine andere Lösung des Problems?


Gruß Andreas
 
Hallo,

Du kannst deine Ausgänge nicht direkt auf die LED´s schalten. Da sollte ein bischen elektronik dazwischen. (Ausgang 24V---> LED`s ?~ 1,5V-3V).

Die LEDs sind für eine Betriebsanzeige und müssen unabhängig voneinander gesteuert werden können

Dann ist ein Schieberegister nicht die richtige Wahl.

Steuer doch deine LED´s direkt mit dem Betriebszustand(smerker).

z.B.

Code:
U "automatikbetrieb"
= A 0.4  //LED BTA Automatikbetrieb

U "handbetrieb"
= A 0.2 //LED BTA Handbetrieb


ein Schieberegister würde ja nur ein Bit "weiterschieben".

01011
1011? (0 oder 1)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ein schieberegister macht hier keinen sinn.
es gibt zwei ansätze:

1. jeder ausgang steuert eine LED (über vorwiderstand) direkt an.
=> einfach zu programmieren, wenig hardwareaufwand aber 19 ausgänge
werden benötigt.

2. über eine ansteuerelektronik mit speicherfunktion die LED adressieren
und dann mit einem bit den zustand übergeben.
=> viel programmieraufwand (adressse kodieren, refresh ...),
ansteuerhardware für LED nötig, aber weniger ausgänge (ca. 7 bit)
 
1. jeder Ausgang steuert eine LED
Dafür habe ich leider nicht genügend Ausgänge zur Verfügung.

Mit dem Schieberegister in meinem 1.Beitrag meinte ich ein IC z.B. 74164 mit 8 Ausgängen und wenn ich davon drei hintereinander schalte müsste dieses doch funktionieren?
 
bei der lösung mit dem schieberegister müssten bei jeder änderung des LED-zustand und bei jedem refresh alle bits neu beschrieben werden. währende des beschreiben kommt es zu unerwünschten anzeigen, die nur mit einem puffer/zwischenspeicher zwischen der LED-treiber und dem schieberegister unterdrückt werden kann. und dann noch die pegelanpassung an die sm322...
das ist eine aufwendige bastelarbeit...
zusätzlich noch die software um das schieberegister zu laden und den zwischenpuffer zu steuern...

also wenn ich mir den ganzen aufwand vorstelle bis das läuft, dann wäre eine ausgabebaugruppe mit genügend ausgängen (die sm322 gibt es mit 32do) die einfachere und günstigere lösung.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
19 ist eine recht ungewöhnliche Zahl, kannst du nicht versuchen sie auf 16 zu reduzieren, z.B. in dem du eine LED meherer Funktionen durch z.B. Blinken zuweist? Dann kannst du sie ohne weitere Logik auf die LEDs steuern. Müssen es unbedingt herkömmliche LEDs aus dem Elektronik-Shop sein? Wie sieht die Betriebsanzeige aus, eventuell kannst du auch Einbau-LEDs wie für Taster-gehäuse nehmen, die kann man direkt an 24V hängen.
 
Hallo,

ich werde das mal mit dem Schieberegister 74164 versuchen. Bisher habe ich das Schieberegister auf einem Elektronikboard getestet (ohne SPS) mit einem Funktionsgenerator für den Takt und habe somit einzelne Bits herein geschoben. Das funktionierte einwandfrei.

Nächste Schritt Ansteuerung mit SPS:
Den Takt mit der SPS zu erzeugen wird kein Problem sein doch wie stelle ich dem Schieberegister die Daten bereit? Bzw. wie bekomme ich aus 19 Zuständen ein Wort das ich dann schieben kann?

Gruß Andreas
 
Kannst du mir erklären wie du soetwas mit einem Schieberegister machst? Ist schon etwas her das ich mal Digitaltechnik gelernt habe, aber dort wird doch nur ein bit gespeichert (ob es 0 oder 1 ist). Also wenn du sagen wir mal 8 bit speichern kannst, dann müsstest du ja im worst case 8 mal schieben bis die richtige LED an ist..

Such doch mal nach BCD Wandlern.. das müsste doch eher für dich passen? Damit könntest du imho auch direkt z.B. Merker auf LEDs verknüpfen ohne groß zu Programmieren..
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das Schieberegister nutze ich, weil ich nicht genügend Ausgänge an meiner Ausgangsbaugruppe habe (max.5 Ausgänge). Ich stelle mir das so vor das die 19 Zustände in das Schieberegister geschoben werden (bitweise) und somit die LEDs angesteuert werden. Das ganze wiederholt sich immer wieder nach einer bestimmten Zeit, so dass die Anzeige immer aktuelle Zustände anzeigt.
 
erzeuge ein taktmerkerbit für den schiebetakt z.b. 500ms taktdauer. das takten sollte erst mit dem start des übertragungsvorgang beginnen.

lade einmalig vor dem senden(übertragungsvorgang) den gewünschten LED zustand in ein doppelwort (z.b. merkerdoppelwort). dabei einen zähler reseten.
und auf einen ausgang das schieberegister (74164) löschen.

das niedrigste bit des doppelwort auf einen ausgang ausgeben (=schieberegisterinhalt)

die positive flanke auf einen anderen ausgang ausgeben (taktsignal)

bei jeder negativen flanke das doppelwort mit dem befehl SLD um ein bit schieben und den zähler erhöhen.

sobald der zähler die anzahl der LED erreicht hat die sendung (übertragungsvorgang) beenden
 
Hallo,

ich bin jetzt einen Schritt weiter und habe das Programm wie tnt369 vorgeschlagen hat geschrieben. Das funktioniert so weit auch in der Simulation einwandfrei.
Derzeit habe ich das Schieberegister 74164 an der Ausgangsbaugruppe über Taktleitung, Datenleitung,... angeschlossen. Die Spannungsreduzierung von 24V auf 5V habe ich über eine Transistorschaltung(78505) realisiert. Das Problem ist jetzt das wenn ich z.B. ein Low-Signal mit dem Takt in das Schieberegister schiebe das direkt alle Ausgänge des Schieberegisters ein High-Signal haben.

Weiß vllt. jemand wo das Problem liegen könnte oder kann mir einen Tipp geben.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Das Schieberegister nur in einem Zyklus ansteuern (Flankengesteuert)

Edit: deine Impulszeit für den Daten/Schiebe Takt herunternehmen

sonst schiebt das ja fleißig weiter.
 
Zuletzt bearbeitet:
Den Takt habe ich schon sehr langsam eingestellt und dann mit einem Oszilloskop gemessen. Es wurden alle Ausgänge bei nur einer positiven Flanke geschaltet. Das dürfte eigentlich nicht passieren.
 
Den Takt habe ich schon sehr langsam eingestellt und dann mit einem Oszilloskop gemessen. Es wurden alle Ausgänge bei nur einer positiven Flanke geschaltet. Das dürfte eigentlich nicht passieren.

Denkbar, dass die SPS-Ausgänge dem TTL-IC zu langsam sind.
Schalte mal einen Schmitt-Trigger vor den Takteingang des Schieberegisters.
 
Zurück
Oben