TIA Digital-LED Stripe über ArtNet und Positionsachse ansteuern

jant

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

ich stehe gerade vor einem neuen kleinen Bastelprojekt in dem ich folgendes realisieren möchte:

Es soll über einen digitalen LED-Stripe (zB. WS2811) ein synchrones "mitfahrendes" Lauflicht zu einer linearen Positionsachse projektiert werden.
Die Positionsachse wird über einen kleinen Servomotor realisiert, welcher von einem Technologieobjekt (PTO) angesteuert werden soll.
Nun werde ich, sagen wir mal als Beispiel, irgendwo einen INT Bereich haben, in der die Achse positioniert. Was ich mir nun vorstelle ist, dass beim verfahren der Achse,
das jeweilige LED-Stripe Segment / Pixel synchron mitläuft. Also hoch- und entsprechend nach vorbeifahrt wieder runterdimmt. Ja genau, dimmt.
Der LED Stripe wird natürlich entsprechend fest vor oder irgendwo im Bereich der Linearachse befestigt.

Die Ansteuerung des LED-Stripes erfolgt über ArtNet und UDP, welches von der S7 bereit gestellt wird. Im Grunde genommen habe ich nachher einen Datenbaustein mit vielen Einzelbytes,
in denen die einzelnen RGB-Pixel von 0-255 angesprochen werden. Siehe zB. Anhang. Die ArtNet-Ansteuerung läuft auch schon flüssig.

Jetzt meine Frage. Lässt sich dies so ohne weiteres umsetzen bzw. realisieren? Als CPU würde entweder eine 1215 DC/DC/DC eingesetzt werden (auch wegen der PTO Ausgänge) oder alternativ eine 15xx? Wie lässt sich dies programmiertechnisch am besten umsetzen? Und wie könnte ich die Dimmfunktion der LEDs bewerkstelligen?

Ich bin für jeden Tipp offen ;-)


2019-07-24 22_01_03-Siemens  -  C__Users_Jan_Documents_Automatisierung_DMX_DMX.jpg
 
Die Ansteuerung des LED-Stripes erfolgt über ArtNet und UDP, welches von der S7 bereit gestellt wird. … Die ArtNet-Ansteuerung läuft auch schon flüssig.
Art-Net mag für manche zur Allgemeinbildung gehören, aber Deine Chancen hier Hilfe zu bekommen, dürften sich bessern, wenn Du uns zuerst in die Geheimnisse der Schnittstelle zum LED-Stripe einweist. Wieviele Pixel werden angesteuert, wie werden sie adressiert, u.s.w. …

Gruss, Heinileini
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Da die ArtNet-Geschichte schon läuft kann man sich ja auf das Dimmen und die Position beschränken.
Die Position sollte aus der Achsensteuerung entnehmbar sein. Diese musst Du entsprechend der Zahl der LED umrechnen (skalieren).
Als Ansatz für die Dimmfunktion schlage ich als Wert für die Helligkeit eine abstandsabhängige Funktion vor. Sagen wir mal, die Achse arbeitet mit 16384 Inkrementen. Du hast 256 LED.
Das ordnet jeder LED einen Bereich von 64 Inkrementen zu. Damit kannst Du die Helligkeit steuern ( 30 Schritte hoch, 30 Schritte runter, 4 Schritte 100%).

Die Zahl der Inkremente und der LED ist nur ein Beispiel, das Du beliebig anpassen kannst. Mit Schleppeffekt (mehrere LED gleichzeitig aktiv, aktive Position am hellsten) musst Du die Bereiche überlappen lassen, hast also mehr Dimmschritte. Das ganze muss aber noch auf die Übertragungsgeschwindigkeit des ArtNet und die Reaktionszeit des DMX-Interfaces angepasst werden.

Jetzt musst Du nur noch auf die Excel-Simulation meiner Idee durch Heinileini warten :ROFLMAO::cool:, der hat bestimmt gleich ausgeschlafen :p
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Noch jemand mit so einer komischen Erwartungshaltung :) :sm24:
Ich weiss ja selber nicht, ob's an der Hitze oder an der Aufgabenstellung liegt, aber ich fürchte, ihr seid diesmal verdonnert (gemeinsam) vergeblich zu warten . . .
Eigentlich träume ich gerade davon, mal einen eigenen Thread für alle OffTopicBeiträge zu eröffnen . . . :sm13: :sm5: :sm13:
 
Ich weiß nicht wie sich dein LED-Controller verhält und wie die Dimmfunktion umgesetzt ist.
Es gibt Kontroller, da wird die Dimmgeschwindigkeit gesetzt und Dimmen aktiviert.
Der eigentliche Dimmvorgang wirkt dann auf jeden Wechsel in den RGB-Werten.
Wenn du so einen Controller hast, dann brauchst du das Dimmen gar nicht beachten.
Den Rest halt nach der Idee von andy umsetzen.
 
Ich weiß nicht wie sich dein LED-Controller verhält und wie die Dimmfunktion umgesetzt ist.
Es gibt Kontroller, da wird die Dimmgeschwindigkeit gesetzt und Dimmen aktiviert.
Der eigentliche Dimmvorgang wirkt dann auf jeden Wechsel in den RGB-Werten.
Wenn du so einen Controller hast, dann brauchst du das Dimmen gar nicht beachten.
Den Rest halt nach der Idee von andy umsetzen.

Zwischen S7 und dem LED-Stripe befindet sich im dem Sinne kein richtiger Controller (Zumindestens bislang noch nicht). Hier verfolge ich aktuall zwei Lösungsansätze:
1. Ein AVR ArtNet Node auf dem Ulrich Radig Online Shop (dies ist bereits vorhanden und läuft mit dem bisherigen ArtNet Testaufbau) gekoppelt mit einem DMX-LED-Stripe.
2. Ein 4096 Kanal LED Stripe Controller (ebenfalls aus dem besagten Shop), der ArtNet direkt in das sACN E1.31 Protokoll umwandlet.

Beides sind aber in dem Sinne reine Übersetzer der Protokolle ins jeweilig andere. Logiken wie Dimmfunktionen und Co. sind nicht integriert. Deshalb müsste dies auf der S7 Seite realisiert werden. Wenn an dieser Stelle jemand noch gute Ideen und Alternativen kennt, immer her damit



Als Ansatz für die Dimmfunktion schlage ich als Wert für die Helligkeit eine abstandsabhängige Funktion vor. Sagen wir mal, die Achse arbeitet mit 16384 Inkrementen. Du hast 256 LED.
Das ordnet jeder LED einen Bereich von 64 Inkrementen zu. Damit kannst Du die Helligkeit steuern ( 30 Schritte hoch, 30 Schritte runter, 4 Schritte 100%).

Die Lösung von Andy finde ich schon einmal sehr Interessant und gut gelöst. Wie genau könnte ich am besten die Zuordnung zum jeweiligen Byte des LED-Dimmerwertes realisieren?
Der Weg für jedes Inkrement einen Move Befehl oder ähnliches zu nutzen, um den jeweiligen LED-Wert in den Baustein zur ArtNet Schnittstelle zu schreiben scheint mir nicht der richtige.
Im Grunde genommen müsste ich ja irgendwo definieren können, dass z.B. bei Inkrement 65 der Dimmwert von Byte XY bei 100 liegt, bei Inkrement 66 der Dimmerwert für XY bei 140 liegt..



Die Zahl der Inkremente und der LED ist nur ein Beispiel, das Du beliebig anpassen kannst. Mit Schleppeffekt (mehrere LED gleichzeitig aktiv, aktive Position am hellsten) musst Du die Bereiche überlappen lassen, hast also mehr Dimmschritte. Das ganze muss aber noch auf die Übertragungsgeschwindigkeit des ArtNet und die Reaktionszeit des DMX-Interfaces angepasst werden.

Auch hier die Frage wie ich dies am besten realisieren könnte. Leider bin ich seit einiger Zeit nicht mehr so aktiv, was die reine Programmierung an geht.

Vielen Dank im Vorfeld und einen chaarmanten Abend noch!:D
Und wie gesagt.. Ich bin für weitere Ideen offen!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja, wenn sich hier in diesem Thread nichts mehr tut, dann muss ich wohl doch mit meiner ExcelVariante einspringen???

Anhang anzeigen PositionsDimmer.xlsm.pdf <===<<< nach dem Herunterladen ' .pdf ' entfernen!

PositionsDimmer.jpg

Code:
Dim xDir&, xPos&
Const cMaxPos& = 63
Const cAbst& = 10

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' PositionsSimulator (Cusor bewegen, Richtung durch Anklicken von '+' bzw. '-')
If Target.Address = "$B$2" Or xDir& = 0 Then
    xDir& = 1
ElseIf Target.Address = "$B$4" Then
    xDir& = -1
ElseIf xPos& + xDir& >= 0 And xPos& + xDir& <= cMaxPos& Then
    xPos& = xPos& + xDir&
Else
    xDir& = -xDir&
End If
Range("B3").Value = xPos&

' HintergrundFarbe in Zeile 2
Cells(2, xPos& + 5).Value = xPos&
Cells(2, xPos& + 4).Interior.Color = RGB(255, 255, 255)
Cells(2, xPos& + 5).Interior.Color = RGB(255, 0, 0)
Cells(2, xPos& + 6).Interior.Color = RGB(255, 255, 255)

' HintergrundFarbe in Zeile 3
xVon& = Max(0, xPos& - cAbst&)
xBis& = Min(cMaxPos&, xPos& + cAbst&)
For xi& = xVon& To xBis&
    xDiff& = 255 - Min(255, Abs(xPos& - xi&) * 255 / cAbst&)
    Cells(3, xi& + 5).Interior.Color = RGB(xDiff&, 0, 0)
    Cells(4, xi& + 5).Value = xDiff&
    Next xi&
End Sub

'In Modul1 (dort nicht auskommentiert ;)):
'   Function Max(x1, x2)
'   If x1 > x2 Then Max = x1 Else Max = x2
'   End Function

'   Function Min(x1, x2)
'   If x1 < x2 Then Min = x1 Else Min = x2
'   End Function
 
Hallo Heinileini!
Leider etwas spät, aber danke für deine Bemühungen mit der Excel Version.
Ich werde dies die Tage mal entsprechend ausprobieren.
 
Zurück
Oben