User avatar
Posts: 265
Joined: Sat Sep 08, 2012 1:59 pm

OpenILDA DAC board

Sun Jun 09, 2013 2:27 pm

OpenILDA DAC board
OpenILDA_DAC_board_v1.jpg (38.31 KiB) Viewed 20264 times
*. ILDA output:
**. balanced X/Y (12-bit)
**. balanced R/G/B/I (8-bit)
*. TTL shutter

This OpenILDA DAC board uses the SPI interface for controlling 3 DAC's. The MCP49x2 device is a dual channel DAC.
As the RPi just have 2 SPI chip enable lines, the DAC /CS lines are created by using a HC139 See ... 92#p333992

Of course, I could have used a 12-bit 8-channel DAC (for example TLV5610IDW). This would create less components. However, such a DAC is relatively expensive (24 Euro) and it would have a SO-20 package.

I will post the OpenILDA sd-card player with OSC support (written for bare-metal) soon.

What's next? ( ... AC_sch.png)
*. Reduce the amount of OPAMP's (from 6 to 3)
*. Enable using single voltage power supply
**. Use DC/DC converter for -12 volt / +12 volt
**. Use 7805 for 5 volt output voltage

Main part list
1*-- MCP4922--- 2.60--- 2.60-- ... &q=mcp4922
2*-- MCP4902--- 1.05--- 2.10-- ... 7-63&toc=0
6*-- TL084----- 0.47--- 2.82-- ... =0&q=TL084
9*-- 100 nF---- 0.19--- 1.71-- ... 6-84&toc=0
3*-- 470 µF---- 0.21--- 0.63-- ... =67-009-34
20*- 75 Ohm---- 0.0631- 1.262- ... &toc=19848
30*- 10 kOhm--- 0.0631- 1.893- ... =60-734-23
6*-- 20 kOhm--- 0.0631- 0.379- ... 7-46&toc=0
1*-- D-sub 25P- 3.37--- 3.37-- ... =44-225-26
1*-- 2x8-pin--- 1.00--- 1.00-- ... 7-61&toc=0
Total 17.76 Euro

RPi-ILDA_v1_brd.png (28.67 KiB) Viewed 20264 times
size 106mm x 85mm
holes 339

RPI-ILDA_v1_sch.png (53.36 KiB) Viewed 20264 times
The Eagle files (both .sch and .brd files) are available here :

*. 8/10/12-Bit DAC with SPI Interface - Microchip ( ... 22250a.pdf)
*. Standards - ILDA DB25 connector( ... A-DB25.pdf)
Open Source DMX/RDM/MIDI/OSC/Art-Net/sACN solutions

Posts: 2
Joined: Mon Dec 16, 2013 10:00 am
Location: Netherlands

Re: OpenILDA DAC board

Mon Jan 13, 2014 7:29 pm


I would love to learn more about RPI and laser controls. for RPI
I am new to the world of RPI. and like your start with.
To start from the beginning i need also the schedules that shows in the post.
Only the link to the eagle files no longer exists.
How can I get these files?

Posts: 1
Joined: Wed Jan 22, 2014 8:55 am
Location: Austria

Re: OpenILDA DAC board

Wed Jan 22, 2014 9:19 am

Hey, I came across this post some time ago and was really interested.
Any hints on howto get started assuming I have the same/a similar board?

User avatar
Posts: 265
Joined: Sat Sep 08, 2012 1:59 pm

Re: OpenILDA DAC board

Wed Jan 22, 2014 10:46 am

Hi diy.laser,
diy.laser wrote:How can I get these files?
The files are back on GitHub.

Cheers, Arjan
Open Source DMX/RDM/MIDI/OSC/Art-Net/sACN solutions

User avatar
Posts: 265
Joined: Sat Sep 08, 2012 1:59 pm

Re: OpenILDA DAC board

Wed Jan 22, 2014 10:54 am

LuaStoned wrote:Any hints on howto get started assuming I have the same/a similar board?
First make sure you are able to work with your DAC´s on Linux and

I did the following steps:

1. Using Mike´slibrary for developing testing code on Linux
2. Learning bare-metal programming from :
3. Ported Mike´s API´s to bare-metal : ... /bcm2835.c
4. Wrote some bare-metal test program´s for the DAC´s
5. Ported j4cdac to Raspberry Pi : ... nILDA-emmc

Cheers, Arjan
Open Source DMX/RDM/MIDI/OSC/Art-Net/sACN solutions

Posts: 1
Joined: Thu Jul 31, 2014 10:03 pm

Re: OpenILDA DAC board

Sun Sep 21, 2014 2:28 pm

Hi I am new here and I loook into schematic and thinking of using octal DACs (8 cahnnel DAC in one package) like AD5628 or MAX5590 so you just need only one cable select line...
I think first one AD5628 have 32bit shift register and second MAX5590 have 16bit shift register so maybe MAX is more convenient than AD and also cheaper...

Posts: 1
Joined: Mon May 18, 2015 5:35 pm

Re: OpenILDA DAC board

Mon May 18, 2015 5:49 pm

Hi, Arjan,

Congrats on getting ILDA playback working on the Pi.

What is the basic process for compiling though, as I've been having huge trouble getting it to work...

I've tried converting the pre-compiled "main.elf" to binary, then renaming to kernel.img and running on the Pi - it seems to be spitting out some data from the UART pins, but only the "rainbow" image is shown on screen.

Does the framebuffer text support work, as I noticed it is commented out in a few places?

I don't have huge in-depth knowledge of Linux, but I have Ubuntu set up on VMware for compiling this sort of thing, and I can generally read and modify most standard C code etc.

I managed to get the OpenILDA folder partly compiling (from an Ubuntu terminal), but I can't seem to figure out how to compile the libraries such as bob, emmc etc.? I've also downloaded FAT library version "ff9b" and installed Eclipse Luna, but can't see how to import the libraries, and which folders to include?

Also, do you have a quick usage guide for your code, and do you normally just use a serial dongle to talk to the Pi?
How do you select ILD files, and is OSC support and Ethernet working on this yet?

I really want to get this working for my projector. It's also based on a slightly modified version of the OLSD design, but with three MCP4922 dual-DAC chips, and an Arduino Duemilanove / Uno. This works quite well, but needs to be tethered to a PC via USB, and I'd like to make the projector stand-alone.

Ideally, I'd also love to be able to play the MP3 soundtrack along with the ILDA file, if possible?

I did buy an Olimex MP3 player board a few years ago, but never got around to testing it.
The Rasp Pi is so cheap now that it makes complete sense to use it for this sort of thing.

Here's an old vid of my lowly projector... ;)
(hope this is allowed on here?)


Posts: 1
Joined: Fri Jun 19, 2015 6:55 am

Re: OpenILDA DAC board

Fri Jun 19, 2015 9:00 am

hi arjan,

that looks really great! I'm thinking about building your board and have some questions and remarks (please keep in mind that i did not start building yet and those points are of theoretical nature):
  • it took me some time to realize that you have to build a second board in order to get the ilda-board running with the pi. if i understand correctly the additional breakout board is needed for the three chip-select signals and the level shifting of the spi signal to 5V? as i (personally) don't have a use case for the external sd card i would like to build a more compact single board version (perhaps with a extension header one could use to add the sd card (i'm not sure if i underrate the sd-card use case))
  • why is there a external power supply? shouldn't it be possible to drive the board with 5V provided by the pi? i don't think the circuit should draw too much power?
  • the MPC49X2 supports a gain of 2 that may be set by software, so one could use completely identical opamp driver for all channels (?) could this be useful somehow?
  • some questions to the opamps and other stuff in your circuit:
    • what dc2dc module do you use?
    • what exactly do IC4B, IC4C and IC6B, IC6C, IC8D, IC8A? why not use two inverter circuits? (and if you don't want to use the software bit for the gain 2, two inverter with gain of two and all other could be inverter with gain of one?)
    • IC6B, IC6C, IC8D, IC8A are voltage follower with a voltage divider at it's input
    • IC4A, IC4D seem to be inverting amplifier with a gain of 2. as the input is connected to IC4B or IC4C this can not produce a correct signal? either the opamps already produce a voltage between 0 and 10V, then the resulting voltage at IC4A is too high, or the opamps produce a volatage between 0 and 5V but hen outputs ILDA-1 and ILDA-2 will be wrong. still not sure how this two work
    • IC6D, IC6A, IC8D, IC8A seem to be inverting amplifier with a gain of 1
thanks a lot for sharing your efforts to build a openilda dac board! i don't want to offend you with my questions, i just want to understand your design.

edit: i just realized that i made some wrong assumptions with the signals, will have to rethink that stuff,.. tried to edit the post

edit2: next (possible crazy) idea: for RGBI one could set Vref to 2.5V so one would only need one inverting opamp. or do you want to have a opamp as buffer for each output line?

Return to “HATs and other add-ons”