Laserprojector: Unterschied zwischen den Versionen
Siro (Diskussion | Beiträge) KKeine Bearbeitungszusammenfassung |
Siro (Diskussion | Beiträge) KKeine Bearbeitungszusammenfassung |
||
Zeile 72: | Zeile 72: | ||
speicher Differenz im Array | speicher Differenz im Array | ||
bilde neue durchschnittliche Differenz | bilde neue durchschnittliche Differenz | ||
incrementiere rps counter | |||
warte $POST_SYNC | warte $POST_SYNC | ||
sende Daten über SPI | sende Daten über SPI | ||
Zeile 77: | Zeile 78: | ||
<b>CALL_ONCE_A_SEC_INT:</b> | <b>CALL_ONCE_A_SEC_INT:</b> | ||
starte timer0, höchste Geschwindigkeit | starte timer0, höchste Geschwindigkeit | ||
rps counter auf 0 setzen | |||
rps counter ausgeben | |||
durchschnittliche Differenz ausgeben | |||
<b>CALL_20TIMES_A_SEC_INT:</b> | <b>CALL_20TIMES_A_SEC_INT:</b> | ||
get keyboard data over i2c | get keyboard data over i2c |
Version vom 12. August 2010, 20:13 Uhr
laserprojector Release status: experimental [box doku] | |
---|---|
Description | projector using laser and 2 mirrors for deflection |
Author(s) | siro |
Last Version | 0.2 |
DIY Laser Beamer
Idee : Mit möglichsten einfachen Mitteln ein LaserProjector bauen.
Konzept
Atmega steuert 2 schnelle Motoren, Keyboard, GLCD, Power-Supply.
An den Motoren sind Spiegel befestigt. Der Laserstrahl trifft auf den ersten Spiegel und wird von dort zur zweiten reflektiert. Der erste sorgt für die vertikale Ablenkung, der zweite für die horizontale. Durch Pulsung des Lasers kann ein Bild projektiert werden.
Bauteile:
Übersicht
Syncronisationseinheit:
Detektiert die Position des Laserstrahls. Das Licht wird reflektiert und fällt auf eine Photodiode. An dieser fällt die Spannung proportional zum Lichtstrom ab. Der OpAmp differenziert die Spannung und verstärkt die Änderung. Am Ausgang liegt ein TTL-Signal an. Am OpAmp ist ein Tiefpassfilter, der Spitzen filtert.
[eagle Dateien im labor-svn]
Beschreibung Die LEDs leuchten auf den Spiegel, wodurch das reflektierte Licht auf die Photodioden fällt (nicht kritisch welche), wird differenziert, rauschgefiltert und verstärkt. Am Ausgang des OpAmp schneidet eine Diode die negative Spannung ab. Ist diese groß genug, schaltet der FET (BSS123) durch und zieht die Output Leitung auf Masse. Am anderen Ende der Leitung muss ein Pullup-Widerstand sein, der den Strom auf unter 100mA begrenzt. Versorgungsspannung: 3,7 bis 15 Volt (empfohlen 5 bis 12 Volt).
Syncsensor
Zwei kleine Laserdioden leuchten dauerhaft auf den rotierenden Spiegel gerichtet. Sobald der reflektierte Strahl auf die Photodiode fällt, wird ein Interrupt am Mikrokontroller ausgelöst.
Horizontaler Motor/Spiegel
Aus einem Drucker der Marke "Epson" 24000 U/min mit 7 Seitenflächen. 24000*7/60 = 2800 Ablenkungen pro Sekunde.
Bildverarbeitung
ARM7 mit ~60 Mhz
START goto INIT INIT: starte timer0, höchste Geschwindigkeit starte capture mode (save timer0 in REG on ext. INT) setze SPI Geschwindigkeit auf CCLK/n (n >= 8) TIMER0_OVF_INT: timer0 vorteiler erhöhen timer0 counter register mit richtigem Wert laden CAPTURE_INT: berechne wie lange es bis zum Interrupt gedauert hat (timer0 reg - capture reg) lade Differenz in timer0 counter register warte durchschnittliche Differenz speicher Differenz im Array bilde neue durchschnittliche Differenz incrementiere rps counter warte $POST_SYNC sende Daten über SPI warte $PRE_SYNC // exit :) CALL_ONCE_A_SEC_INT: starte timer0, höchste Geschwindigkeit rps counter auf 0 setzen rps counter ausgeben durchschnittliche Differenz ausgeben CALL_20TIMES_A_SEC_INT: get keyboard data over i2c send LCD data over i2c
Laserdiode
1000mW (1W) Laserdiode 445nm Blau 5,6mm
TODO:
- Redoing the whole concept
- Design SMD boards
- Buy new motors, mirrors, laser,...
Links:
http://elm-chan.org/works/vlp/report_e.html