Home Semitone Lighting Model: Diamond
Semitone Diamond
Diamond Board

Example of a man­u­ally wired Semi­tone Dia­mond main­board.


Standby screen with dimmed back­light. The LCD's bright­ness can be con­fig­ured for 3 dif­ferent sit­u­a­tions (standby, on, button event). Two icons indi­cate radio clock recep­tion and active timers.


Channel details screen. You can con­figure DMX input for this channel, and enable or dis­able loading resp. saving of fade delay and bright­ness level. Also, you see a slider icon that indi­cates the cur­rent bright­ness or cold state. And of course you can edit fade delay and bright­ness level itself.


Channel details screen in edit mode. You can modify values by using the up/down but­tons (or turning the wheel) or directly entering them via the remote con­trol. The dotted slider icon indi­cates that this channel is cold (no output or pre-heating).


Scene screen. Load and store light sit­u­a­tions as scenes. You are also informed whether the cur­rently selected scene is either the fade target or even pre­sent (as indi­cated by the check-mark here) and how many fade delays and bright­ness levels will be affected when loading or saving this scene and whether loading this scene will issue standby mode (optional).


Real-time channel mon­itor. Dis­plays the cur­rent level of each of the 20 chan­nels with graph­ical sliders. You can also select and edit chan­nels via the normal but­tons here. You can con­figure the RT mon­itor to use the first char­acter of each channel name instead of the single digit. Only active chan­nels are dis­played.


Setup menu system with the clock setup. There are many other setup items in the head menu.


You can setup pre­heating to be active when DMX data is being received, or when the dimmer is in oper­a­tional mode.


Setup menu system. The remote data inter­face selec­tion. You can choose between DMX with a baud rate of 250 kbps (orig­inal) or a legacy rate of 9600 bps.


Timer set­tings. You can set the global timer flag (check-mark), each weekday inde­pen­dently, the hour and minute of acti­va­tion, and the func­tion to exe­cute (on, off, or any scene).


Channel name editor. You can assign a name of up to 16 char­ac­ters to each channel. This name will be shown for con­ve­nience in the channel details screen (see above).


Scene name editor. You can assign a name of up to 16 char­ac­ters to each scene. This name will be shown the scene screen (see above) and and as an overlay info mes­sage every­time a scene is loaded with the one-touch fea­ture.


Channel output stage setup: Each channel can inde­pen­dently be driven by a TRIAC, IGBT, relay or an elec­tronic bal­last with ana­logue input.


Remote con­trol setup: Each used button of the RC5/RC6 com­pat­ible IR remote can be con­fig­ured. You can even mix remote con­trol sys­tems (e.g. for TV and VCR).

Semitone Control Application

Python demo con­trol appli­ca­tion on Win­dows Mobile.


The Semi­tone Dia­mond is a very pow­erful Atmel AVR® based 20-channel stand-alone lighting con­troller (“dimmer”) with very min­imal hard­ware effort. The LCD screen­shots should give you a first impres­sion of what the user inter­face of the Semi­tone Dia­mond looks like.


Human inter­faces

  • 20×2 industry stan­dard char­acter LCD (Hitachi HD44780 or com­pat­ible con­troller)
  • infrared (IR) remote con­trol receiver
  • push-but­tons to be mounted on the case
  • rotary encoder for com­fort­able adjust­ment of values (such as bright­ness)
  • LEDs for standby, menu, and online modes

Machine inter­faces

  • industry stan­dard USITT DMX512 inter­face (RS485, 250 kbps)
  • DMX512 frame com­pat­ible inter­face at 9600 bps (e.g., for con­nec­tion to stan­dard PC UART)

Cur­rent firmware fea­tures

  • mul­ti­tasking real-time oper­ating system (Dia­mond RTOS)
  • 20 inde­pen­dent chan­nels with nearly 10 bits res­o­lu­tion: 0.0 % to 100.0 % (1001 lin­earised levels)
  • detailed channel view, scene view or real-time channel mon­itor view
  • inde­pen­dent fade dura­tions for each channel (from 0 m 00.0 s until 99 m 59.9 s)
  • inde­pen­dent output driver mode for each channel:
    • TRIAC (in both pulsed and static mode),
    • IGBT/MOSFET for­ward,
    • IGBT/MOSFET reverse,
    • elec­tronic bal­last (0-10 V or 1-10 V DC),
    • relay (on or off state)
  • autode­tec­tion of 50 Hz and 60 Hz mains system
  • dis­play of hot/cold state in channel view
  • (optional) lamp pre­heating when oper­a­tional or online
  • (optional) sym­met­rical load of the mains
  • (optional) flashing of selected channel as feed­back
  • indi­vidual blacking out of chan­nels, option­ally in a three-stage mode (0 % 100 % restore)
  • multi-lin­gual LCD user inter­face (English, German, Italian, Dutch – more con­tri­bu­tions wanted)
  • struc­tured multi-level con­fig­u­ra­tion menu
  • DMX512 inter­face sup­port pro­vides industry stan­dard con­nec­tivity
  • three con­fig­urable back­light sit­u­a­tions
  • global standby mode
  • 20 scenes memory (one-touch loading via remote con­trol) and default scene selec­tion
  • (optional) trig­gering standby mode by loading a scene
  • 21 timers (one or more week­days, hour, minute) based on real time clock, load scene or switch on or off

Unre­leased devel­op­ment ver­sion

The cur­rent devel­op­ment ver­sion of the Dia­mond RTOS requires a larger LCD and sup­ports DCF77 radio clock recep­tion as well as a new com­pact UART pro­tocol (for con­trol­ling the Dia­mond via Blue­tooth, USB, or RS 232). Check out the devel­op­ment ver­sion from the EngDR.

It will take some time until this incom­plete devel­op­ment ver­sion will be offi­cially released. Until then, if you're about to build a new Dia­mond, please refer to the new require­ments (for example, get a 2 × 40 char­acter LCD) and use the latest devel­op­ment ver­sion from the EngDR. The trunk ver­sion runs stable, it's just not com­plete (e.g., the new UART con­trol pro­tocol imple­men­ta­tion and some string trans­la­tions still need some work).

Tech­nical details


Dim­ming is done using the most common tech­nique - phase angle con­trol. Depending on each of the output driver stages which actu­ally switch the lamps, this can be done in for­ward mode (TRIAC and IGBT/MOSFET) or reverse mode (IGBT/MOSFET only). Also, a relay mode is pro­vided, offering simple on/off states at a fixed bright­ness threshold (50 %). Since ver­sion 0.4.0, the Dia­mond can also con­trol elec­tronic bal­lasts with ana­logue inter­face (0-10V). Each channel can be setup in 0.1 % steps, allowing nearly 10 bit res­o­lu­tion. Since phase angle con­trol is by nature strongly non-linear, a lin­eariza­tion (based on arccos) is done by the OS. Both 50 Hz and 60 Hz sys­tems are sup­ported by the con­troller. A dynamic inter­rupt sched­uler enables the system to con­trol all 20 chan­nels within the mul­ti­tasking envi­ron­ment.


All bright­ness changes are done by fading. Whether you are loading a scene or tog­gling standby mode; the con­troller fades each channel from one bright­ness to the other. Fade dura­tions can be adjusted inde­pen­dently for each channel. The Semi­tone Dia­mond offers fade dura­tions from 0 sec­onds (change imme­di­ately) until 99 min­utes and 59.9 sec­onds.

Input abstrac­tion layer

All key-presses are inter­nally rep­re­sented using an input abstrac­tion layer. This way all input devices (IR, push-but­tons, rotary encoder) act the same way in any sit­u­a­tion. But­tons which can be mounted on the case offer local access to all func­tions, except the one-touch scene load fea­ture (anyway, scenes can be loaded using some more key-presses from within the scene view). A rotary encoder acts like the up/down but­tons, allowing to change param­e­ters, such as channel bright­ness, fade delay, etc. The remote con­trol input pro­vides a very com­fort­able human inter­face, espe­cially for stan­dalone appli­ca­tions. This is also the most flex­ible one, as it also allows access to the one-touch scene load fea­ture.

Remote con­trol

Cur­rently the firmware sup­ports only RC5 and RC6 as input signal. This is a very widely used infrared remote con­trol stan­dard, intro­duced by Philips. Most Philips end-user devices use this stan­dard, and all uni­versal remote con­trols should sup­port it. If you don't already have one, you should be able to get such a remote con­trol for a few bucks. The button layout of your remote con­trol is fully cus­tomiz­able. Within the setup menu system you can edit all rec­og­nized RC5 and RC6 codes. This is very useful for uni­versal remote con­trols, where the button layout may not fit your favorite fea­ture map­ping.


The firmware pro­vides a real time clock with soft­ware cal­i­bra­tion. Up to 10 timers can be setup to load a scene of switch oper­a­tional mode on or off at any minute of the day, on one or more days of the week.


Up to 10 scenes can be stored. Each scene can be named (16 char­ac­ters). Each channel can be tog­gled to be ref­er­enced or ignored in scene load/store actions. The fade dura­tions can cur­rently not be saved inde­pen­dently for each scene, because there is not enough space in the EEPROM for this. Apart from within the scene view, scenes can option­ally also be loaded with a one-touch fea­ture. That is, in any sit­u­a­tion, except when in edit mode, scenes can be loaded by just pressing the cor­re­sponding number (0..9) on the IR remote con­trol.

Channel mon­itor

The channel mon­itor dis­plays a slider for each active channel. This gives an overview of the cur­rent light setup. This is espe­cially useful when being con­trolled remotely over DMX.


To improve lamp life and to ensure lin­earity when dim­ming the chan­nels up from off-state, the firmware can option­ally pre­heat all lamps when in oper­a­tional mode or online mode.

Sym­met­rical load

To reduce mains dis­tur­bances, the dim­ming system can option­ally be con­fig­ured to allow sym­met­rical load of the mains only. That means that the load at the pos­i­tive and neg­a­tive mains semi­wave is always equal. You should gen­er­ally keep this fea­ture enabled.

Non-volatile storage

Nearly all set­tings of the setup menu system can be stored in a non-volatile storage (an EEPROM). Strings are imme­di­ately stored there, most other set­tings are held in RAM, and stored on demand using a setup menu entry. Also, pre­vious set­tings can be restored, default set­tings can be loaded, or the EEPROM can be regen­er­ated to “fac­tory” defaults.


This is the industry stan­dard for lighting sys­tems, used at the­aters and con­certs. It's based on RS 485 at 250 kbps. For very easy inter­facing it is also pos­sible to enable a DMX com­pat­ible inter­face at 9600 bps. The Semi­tone Dia­mond can decode this pro­tocol and set channel bright­ness values for all chan­nels starting at a con­fig­urable base address. Option­ally, some fea­tures of the con­troller can be con­trolled over addi­tional con­trol chan­nels (cur­rently this applies to the oper­a­tional mode, which can be con­trolled over the 21st DMX channel). Each channel can be setup to accept or drop incoming DMX data.

Char­acter dis­play

The LCD offers an enhanced user inter­face for stan­dalone pur­poses. The firmware offers a setup menu system where all rel­e­vant data can be edited. The user inter­face sup­ports mul­tiple lan­guages, selectable at run­time. There are three con­fig­urable back­light bright­ness stages. This enables you to have the back­light dimmed down in standby mode.

If you're about to build a new Dia­mond, please use a 20 × 4 char­acter dis­play, as this is the required size for the latest devel­op­ment ver­sion of the Dia­mond RTOS. This ver­sion has not yet been released, but is avail­able from the EngDR.


On May 1st 2006, the 3rd anniver­sary of the pro­ject, ver­sion 1.0.0 of the firmware was released. Mean­while, also ver­sion 1.0.0 of the offi­cial schematics was released. Since those releases, the Dia­mond model can def­i­nitely be con­sid­ered stable.


As the latest devel­op­ment ver­sion of the Dia­mond RTOS has a lot of fea­ture enhance­ments, all users are encour­aged to use this ver­sion, avail­able from the EngDR. Please note that this ver­sion requires a 20 × 4 char­acter dis­play. Users of older ver­sions are encour­aged to upgrade to this LCD size for improved user inter­face expe­ri­ence. Devel­op­ment ver­sions of PCB lay­outs are also avail­able in the hard­ware sec­tion of the EngDR SVN repos­i­tory.

Offi­cial releases can be found in the Releases sec­tion, including the firmware (Dia­mond RTOS) source code and all hard­ware schematics. Alter­na­tively, you may want to just grab the latest releases from the Engbedded Down­load Server.

Board layout

Devel­op­ment on offi­cial PCB lay­outs for the Dia­mond model is in pro­gress. Please check back soon.