OLSD Rev 3
The Open Laser Show DAC is an Open Source Hardware/Software project.
It implements a Laser Show DAC (Digital to Analog Converter) that uses the ILDA standard laser projector connector. The one exception that it uses singled ended color signals.
If you would like a history of this project and how it got to this point please go to the DAC History Page. The history page details the origin of the idea and its progression over the years.
Specifications:
- Scan Rates: 1 kpps to 30 kpps
- XY Resolution: 12 Bits
- Color Resolution: 3 bits (for a total of 512 colors)
- Colors: Red, Green, Blue outputs
- TTL Shutter Output
- Built in test patterns accessible by button.
This board is built as an Arduino Shield. It requires a Arduino 2009 (Duemilanove) or compatible Arduino micro-controller board. The important thing that is needed for compatibility is the FTDI USB to Serial converter chip. The newer UNO boards are not supported yet. In order for the software/hardware to work properly a jumper wire needs to be added between the CTS pin on the Arduino/FTDI chip and digital pin 8. This is used to control the stream of serial data being sent to the Arduino. Some boards make this easy and include a pad for the CTS pin (Arduino and Seeduino brands). The Freeduino will work however it does not break out a pad for the CTS pin (this makes it a bit more difficult to modify).
Ordering Boards:
I have uploaded the Eagle .BRD file to OSHPark.com board service for the convenience of ordering the boards. The service provides 3 boards for around $26. If you would like less expensive boards (less quality) then try Dirty PCBS. They also take Eagle .BRD files directly. For any other services use the Gerber files provided in the Hardware release below. Most services take Gerber files zipped up in a zip file.
Downloads:
USB Drivers Zip or Self Installing -> latest drivers can also be found here on FTDI's web site.
OLSD Software - OLSD_V3_Software_Release_10112011.zip
OLSD Hardware - OLSD_V3_Hardware_Release_10112011.zip
OLSD_V3_Arduino_Library_V1.zip To install the Arduino library, unzip and copy the OLSD folder into the Libraries folder of your Arduino Application. Then close and restart the IDE. There will be 4 examples available as well accessible from the File->Examples->OLSD sub menu.
Arduino/AVR Port Map
Jmp | Arduino Pin | AVR Pin | Direction | OLSD Function |
---|---|---|---|---|
J3 | Digital 10 | PB2(SS) | Output | #CS DAC |
J3 | Digital 11 | PB3(MOSI) | Output | SPI Data to DAC |
J3 | Digital 13 | PB5(SCK) | Output | SPI Clock to DAC |
J3 | Digital 9 | PB1 | Output | #LDAC DAC |
J3 | Digital 8 | PB0 | Output | #CTS to FTDI Chip (not on shield) |
J1 | Digital 7 | PD7 | Output | Red R2R Bit 2 |
J1 | Digital 6 | PD6 | Output | Red R2R Bit 1 |
J1 | Digital 5 | PD5 | Output | Red R2R Bit 0 |
J1 | Digital 4 | PD4 | Output | Green R2R Bit 2 |
J1 | Digital 3 | PD3 | Output | Green R2R Bit 1 |
J1 | Digital 2 | PD2 | Output | Green R2R Bit 0 |
J2 | Analog 0 | PC0 | Output | Blue R2R Bit 0 |
J2 | Analog 1 | PC1 | Output | Blue R2R Bit 1 |
J2 | Analog 2 | PC2 | Output | Blue R2R Bit 2 |
J2 | Analog 3 | PC3 | Output | ILDA Shutter |
J2 | Analog 4 | PC4 | Output | Status LED (1 = On) |
J2 | Analog 5 | PC5 | Input | User Switch (0 = Pressed) |
ILDA 25 Pin D-Sub MAP
Pin | Function |
---|---|
1 | X+ |
2 | Y+ |
3 | NC |
4 | Interlock (Connected to Pin 17) |
5 | R+ |
6 | G+ |
7 | B+ |
8 | NC |
9 | NC |
10 | NC |
11 | NC |
12 | NC |
13 | Shutter |
14 | X- |
15 | Y- |
16 | NC |
17 | Interlock (Connected to Pin 4) |
18-20 | Ground (for color outputs) |
21 | NC |
22 | NC |
23 | NC |
24 | NC |
25 | Ground |
The following components are part of the OLSD (Open Laser Show DAC) project:
OLSDTest
This program is written in Microsoft Visual C++ using MFC (Visual Studio 2005). Use this program to test the OLSD hardware. This software includes several built in test patterns inlcuding the ILDA12k, ILDA30k, Quadrature, Laser Media, and a few other test frames that I devised.
OLSD DLL
This is a DLL library that uses the Open Laser Show Controller interface. It can be used by other applications to interface with the OLSD hardware in a standard way. This DLL project is written in Microsoft Visual C++ (using Visual Studio 2005).
The source code for the DLL test application is included as well.
You can find more information about the OLSC here.
Spaghetti Laser Show Software
To install the OLSD.DLL driver on your computer so it works with Spaghetti laser show software:
1) Rename the OLSD.DLL to FSX2.DLL 2) Copy FSX2.DLL to the C:\Program Files\The Hinged Newt\Spaghetti\Drivers\ folder.
LSX Laser Show Software
TODO - for now see the excellent tutorial thread that DrLava wrote on the Photon Lexicon forum here http://www.photonlexicon.com/forums/showthread.php/18351-Using-the-Open-Laser-Show-DAC-(OLSD)-with-LSX-laser-show-software
OR
Just simply copy the OLSD.DLL into the driver folder (TODO add the driver folder path). This should overwrite the OSLD.DLL that is in there already (which is the non-public version).
OLSD Firmware
This is the Arduino firmware. It was tested using a Arduino Duemilanove with ATMega328, Freeduino and Seeeduino.
It will fit in a smaller amount of flash however you may need to remove some of the built in test frames.
This firmware supports point output rates up to 30kpps. It also has built in test patterns. These are activated by pressed the button near the ILDA connector.
The firmware was developed using WinAVR. There are 2 development environments to choose from. A make file is included. Project files are included for MS Visual Studio 2005 and AVR Studio 4. You can also compile and upload to the Arduino from the command line too. Programming is done through the Arduino Boot Loader using the included AVR Dude programming tool. Alternatively AVR Studio can be used to program the Arduino through ISP.
OLSD Laser Shield Hardware - OLSD_V3_Hardware_Release_10112011.zip
Schematic, Board Layout, Gerbers, and Bill Of Materials (with Digi-Key stock numbers). The schematic and board were done in the free version of Eagle CAD. A PDF version of the schematic has been included. All parts except for PCB and Arduino can be purchased from Digi-Key using the included Digi-Key part numbers.
Writing Your Own Programs:
It is possible to write your own programs that communicate with the OLSD device. You can use either the interface DLL, the CLaserOutput class object or you can roll your own. For more information see the OLSC documentation and the OLSDTest program.
You can also write your own programs for the Arduino micro-controller that hosts the OLSD board. There is a library to install in your Arduino IDE that allows you to output points at specific rates. There is an example for a point, line, and circle included with the library. See the downloads above for more information.