mikrocontroller.net

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


Autor: KingSize (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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?

Autor: ??? (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sinus ?

Autor: Denny Breuer (sunsetraving)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schon.. Sinus..

Autor: KingSize (Gast)
Datum:

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

Autor: Willi Wacker (williwacker)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kein sinus, Tabelle! Am Sinus rechnet sich Dein MC tot!

Autor: KingSize (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ..

Autor: Roland Praml (pram)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Master Snowman (snowman)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: DKM (Gast)
Datum:

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

Autor: Jörg B. (manos)
Datum:

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

Autor: Andreas K. (oldcoolman)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hauke Radtki (lafkaschar) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Master Snowman (snowman)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matthias (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Willst du so etwas bauen??

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich glaube er will das ganze 90° gedreht bauen

Autor: Willi Wacker (williwacker)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Master Snowman (snowman)
Datum:

Bewertung
0 lesenswert
nicht 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..?

Autor: Willi Wacker (williwacker)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Johannes Slotta (johanness)
Datum:

Bewertung
0 lesenswert
nicht 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 ;)

Autor: Master Snowman (snowman)
Datum:

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

Autor: KingSize (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Null (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Stefan (Gast)
Datum:

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

Autor: TobyTetzi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Matthias (Gast)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.