Forum: Mikrocontroller und Digitale Elektronik "schwebender Led Schirm" - Verzerrungen rausrechnen


von KingSize (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Leute,

erstmal sorry für den Betreff, mir ist kein besserer Name eingefallen.
Es geht um folgendes:
EGB Leds sind auf einer Art Zylinder montiert, der Durch einen 
Schrittmotor angetrieben, rotiert. Durch eine geschickte Ansteuerung der 
LEDs sollte sich beim richtigen Timing und genügend hoher 
Geschwindigkeit ein Bild ergeben. (eine schlechte Skizze ist im Anhang)

Das wäre zu ralisieren, was mir aber Sorgen macht, ist die sphärische 
Verzerrung, die sich durch diese Methode ergeben würde. Ich bin jetzt 
schon länger am überlegen wie man diese aus dem Bild "rausrechnen" kann.

Der Aufbau ist so, das eine externe Steuereinheit das Bild aufbereitetg 
und dieses Dann per Funk an den Empfänger, der selbst mitrotiert, 
übermittelt. Der Empfänger selbst muss dann "nur" die Pixel abhängig vom 
Winkel darstellen können.

Hatte jemand schon eine ähnliche Problemstellung bzw. kann mit 
Mathematisch ein wenig weiterhelfen?

von ??? (Gast)


Lesenswert?

sinus ?

von Denny B. (sunsetraving)


Lesenswert?

Schon.. Sinus..

von KingSize (Gast)


Lesenswert?

>sinus
Wie genau? bzw. die Pixel sind ja schon vorgegeben deswegen kann ich sie 
nicht nicht stauchen bzw. strecken.?!

von Willi W. (williwacker)


Lesenswert?

kein sinus, Tabelle! Am Sinus rechnet sich Dein MC tot!

von KingSize (Gast)


Lesenswert?

schon klar, aber ich verstehe nicht genau wie bie Berechnung mit dem 
Sinus mathematisch funktioniert.

Sagen wir ich habe eine 640 * 480 Punkte Matrix (Der einfachheit halber 
sagen wir jeder Pixel hat einfach 4 Bit für ein Schwarz / weiss Bild)
Also ich würde ja eine Operation benötigen, die mir folgendes 
bewerkstelligt:

Eingangsbild -> [OP] -> Korrigiertes Ausgangsbild
                 ^
                 |
               sinus?

Mir ist schon klar, das ich den Sinus zwischen 0 .. Pi ansetzen muss um 
so den Winkel von 180 °C abzudecken .. aber mehr auch leider nicht ..

von Roland P. (pram)


Lesenswert?

> deswegen kann ich sie nicht nicht stauchen bzw. strecken.?!
doch in dem du sie langsamer oder schneller an die Zeile schickst. Sinus 
für diese Frequenz müsste da passen (hab das jetztn nicht nach 
gerechnet),

d.h. du berechnest den Sinus zum Drehwinkel und änderst entsprechend 
einer Sinuskurve die Profilfrequenz....
was ja im Endeffekt einer Ableitung entspricht, also cosinus 
ausrechnen...
wenn du an den Stellen cos(a)=0.1, cos(a)=0.2, cos(a)=0.3 .... cos(a)=1 
jeweils die nächste Zeile zeichnest, kannst so ein Bild entzerrt mit 20 
Zeielen anzeigen (ebenfalls nicht nachgerechnet).
Zeichne es dir am Besten mal auf einen Blatt papier auf, sinus und 
cosinus kann man ja direkt am Einheitskreis ablesen

Gruß
Roland

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Die Ansteuerung geht vermutlich ähnlich wie ein LC-Display. Also eine 
ganze Zeile wird mit irgendeinem Pixeltakt übergeben und dann komplett 
auf einmal übernommen und dargestellt.

Dann muß der Pixeltakt zur Mitte des Bildes hin zunehmen und zum Rand 
wieder abnehmen. Auf der Tangente würde der Pixeltakt dann unendlich 
langsam, da man nichts mehr sieht, kann das sein? Das heißt, die 
Funktion muß bei einem bestimmten Winkel abgebrochen werden.

Aus der Drehzahl müßte man diesen Winkel ungefähr bestimmen können, 
unter Berücksichtigung des praktikablen minimal- und maximalen 
Pixeltaktes.

haben die LEDs einen ausreichenden Abstrahlwinkel? Sonst müßte auch die 
Helligkeit zum Rand hin erhöht werden.

von Master S. (snowman)


Lesenswert?

wieso die pixel anhand des winkels steuern? steuere sie anhand der zeit: 
mach einen kleinen impulsgeber pro umdrehung, wo dein gerät das bild neu 
aufbaut. allerdings müsstest du experimentell herausfinden, wieviele 
pixel pro umdrehung angezeigt werden können (abhängig von der 
rotationsgeschwindigkeit).

die zeitsteuerung funktioniert nur, wenn die rotationsgeschwindigkeit 
konstant ist, wovon ich mal ausgehe. eine winkelsteuerung musst du nur 
einsetzen, wenn die rotationsgeschwindigkeit nicht konstant ist.

von DKM (Gast)


Lesenswert?

Die Entzerrung mit Sinus würde aber dann nur für einen Blickwinkel 
passen !

von Jörg B. (manos)


Lesenswert?

DKM wrote:
> Die Entzerrung mit Sinus würde aber dann nur für einen Blickwinkel
> passen !
Sicher... :) Aber anders gehts halt nicht...

von Andreas K. (oldcoolman)


Lesenswert?

Hi,

Impulsgeber? meint ihr drehimpuls, er schrieb doch daß er den Rotor mit
einem Schrittmotor antreibt. Da kann er doch relativ einfach den
Winkel zur Anzeigezeile bestimmen.

Gruß
Andi

von Hauke R. (lafkaschar) Benutzerseite


Lesenswert?

Einen Referenzpunkt braucht man trotzdem.

Das ganze sollte jedoch machbar sein. Bei mir wird der "Pixeltakt" (ist 
eher ein Spaltentakt, da bei mir eine ganze Spalte auf einmal ausgegeben 
wird) wird mit einem CTC timer erzeugt. Wenn man den wert für den CTC 
timer einfach mit den werten einer (invertierten)Sinustabelle 
multipliziert müsste man ein anständiges bild bekommen. Den aktuellen 
Tabellenwert müsste man aus dem Drehwinkel also aus dem Schrittmotortakt 
ableiten. Die referenzposition würde ich am Bildrand anbringen.

von Stefan (Gast)


Lesenswert?

Is doch ganz einfach Leute:

Das anzuzeigende Bild hat eine Höhe d.
Der Schrittmotor braucht n Schritte für eine halbe Zylinder Drehung. 
(Der Bild-relevante Teil)

D.h. der Schrittwinkel ist alpha = (180° / n)

Angenommen der Zylinder dreht sich so dass das Bild von oben nach unten 
aufgebaut wird:

Der Zylinder macht ja n Schritte durch, es geht bei Stellung 0 los (Anz. 
Stellungen = n + 1):

h = 0,5 * sin(90° - 0 * alpha) + 0,5

Angenommen das Bild wird als nicht-pixelig angenommen, dann muss in 
dieser Stellung die Bildzeile an den LEDs ausgegeben werden, die 
verhältnismäßig in Zeile (h / d) liegt.

Da es bei bekannter Schrittanzahl n ja nur eine bestimmte Anzahl von 
Sinus-Berechnungen benötigt werden, können diese in eine Tabelle gelegt 
werden. Es wird im Prinzip jedem Schritt eine bestimmte Zeile vom 
auszugebenden Bild zugeordnet.

Durch eine geschickte Tabelle kann man den Speicherauwand noch 
reduzieren, wenn man z.b. sin(x) u. sin(-x) zusammenfasst etc.

von Master S. (snowman)


Lesenswert?

ach so, jetzt versteh ich, was er wollte: ja, dann ist eine LUT am 
besten (man braucht ja nur 1/4 der umdrehungszustände abzuspeichern)

...ich danchte eben, er wolle ein 3D-display

von Matthias (Gast)


Angehängte Dateien:

Lesenswert?

Willst du so etwas bauen??

von Stefan (Gast)


Lesenswert?

ich glaube er will das ganze 90° gedreht bauen

von Willi W. (williwacker)


Lesenswert?

Nur damit es nicht zu einfach wird:

Wenn die LEDs eine Richtungscharakteristik haben (also nicht in alle 
Richtungen gleichhell abstrahlen), dann wird Dein Bild an den Rändern 
dunkler. Das könntest Du ebenfalls korrigieren.

von Master S. (snowman)


Lesenswert?

@Willi: die überlegung habe ich mir auch gemacht... aber die 
geschwindigkeit ist in der "mitte" dafür höher. die frag ist also, ob 
man beliebige LEDs nehmen kann und sich das dann ausgleicht oder solche 
mit einem speziellen abstrahlwinkel..?

von Willi W. (williwacker)


Lesenswert?

Aber blinken die LEDs nicht nur kurz auf? Sonst hättest Du doch 
Schlieren oder Verschleifungen. Damit hat die Geschwindigkeit keinen 
Einfluss auf die sichtbare Helligkeit, und das ist doch auch so gewollt!

Ciao

von Johannes S. (johanness)


Lesenswert?

Schneemann: Man sollte (wenn man es denn kann) SMD-LEDs verwenden, die 
haben teilweise fast 180° Abstrahlwinkel und sind dabei relativ 
homogen.

Willi: Ja, jede Zeile erst aufblinken und dann kurz alles ausschalten 
gibt den schönen Rastereffekt und lässt die (hier) Zeilen weniger 
verschwommen wirken.

Und das mit der Helligkeit... wenn die Dioden überall hin gleich hell 
abstrahlen hat man an den Rändern höhere Leuchtdichten, ansonsten 
vielleicht geringere. Ich denke das sollte man ausprobieren und z.B. 
durch eine parabelförmige Helligkeitsanpassung mit Konstante im 
Quelltext lösen. Also eine Anpassung vorsehen, nur Parameter dafür durch 
Ausprobieren festlegen.

Oh, wenn ich doch nur mehr Zeit hätte, dann hätte ich wohl auch schon 
mit so einer schönen Spielerei angefangen ;)

von Master S. (snowman)


Lesenswert?

>> Oh, wenn ich doch nur mehr Zeit hätte
du meinst sowas: http://www.jamesnsears.com/projects/orb

von KingSize (Gast)


Lesenswert?

@All
danke für die rege Beteiligung!

@Matthias
wie Stefan es schon sagte, das Bild kommt meiner ursprünglichen Idee 
schon sehr nahe, nur ist es halt um 90° verdreht und nicht korrigiert.
Also man sieht die sphährische Wölbug, die ich ja eigentlich entfernen 
möchte.

Hast du das Modell am Foto eigentlich selbst genaut?

Wegen dem Abstahlwinkel muss ich mich auf jeden Fall noch nach LEDs mit 
einem hohen Winkel umsehen, alternativ müsst man die Helligkeit abhängig 
von dem aktuellen Winkel regeln.

von Null (Gast)


Lesenswert?

Ich wuerde Strahler LED nehmen, und damit das Problem erschlagen. Dann 
sieht man nur einen 45 Grad winkel, hat kaum Verzerrungen. Zur 
Kompensation kann man den Durchmesser des Rotors etwas groesser waehlen.

von Stefan (Gast)


Lesenswert?

oder bring einfach 2 leds nebeneinander an die im 90° winkel in 2 
richtungen scheinen, dadurch wirds vielleicht ein bisschen besser ;)

von TobyTetzi (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich baue auch schon seit einiger Zeit an einem rotierendem Display.
Habe auch einige Tests bezüglich LEDs hinter mir.
Ich verwende PLCC2 LEDs, die einen 140 Grad Abstrahlwinkel haben.
Diese gibt es auch als RGB LEDs, bei Reichelt z.B.
eine RGB Version habe ich allerdings auf Eis gelegt, da der Strombedarf 
für mich zu hoch ist.

http://www.rc-heli.de/board/index.php?topic=57220.0

LEDs von vorne: (im Anhang)
http://tobytetzi.de/NightVision/PIC03328.JPG

LEDs vorne seitlich:
http://tobytetzi.de/NightVision/PIC03337.JPG

LEDs hinten seitlich:
http://tobytetzi.de/NightVision/PIC03335.JPG

Gruß Toby

von Matthias (Gast)


Lesenswert?

Ja, das Teil ist selbstgebaut, mit noch drei weiteren Leuten..
Es gibt dafür noch mehr Bilder & Videos....

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
Noch kein Account? Hier anmelden.