See GitHub Profile

IKEA DIODER Hack

23 February 2013

Ikea DIODER hack is a simple circuit able to control up to two different DIODER light strip sold by IKEA using an arduino or a linux embedded device like RaspberryPi.

The small circuit is based on the TLC59108 integrated chip that is a 8 LEDs controller driver with PWM ability that work at 97kHz.
The facto this circuit can be also used as TLC59108 breakout board.

Here some of the features of the Texs chip used 1):

  • Eight LED Drivers (Each Output Programmable At Off, On, Programmable LED Brightness, Programmable Group Dimming/Blinking Mixed With Individual LED Brightness
  • Eight Constant-Current Open-Drain Output Channels 256-Step (8-Bit) Linear Programmable Brightness Per LED Output Varying From Fully Off (Default) to Maximum Brightness Using a 97-kHz PWM Signal
  • Four Hardware Address Pins Allow 14 TLC59108 Devices to be Connected to the Same I2C Bus Four Software-Programmable I2C Bus Addresses
  • Constant Output Current Range: 10 mA to 120 mA
  • Maximum Output Voltage: 17 V
  • 25-MHz Internal Oscillator Requires No External Components
  • No Glitch on Power Up
  • 3.3-V or 5-V Supply Voltage

Schematics

ikea-dioder-hack.svg
click to zoom

The schematics is pretty clear, an NCP1117 is used to reduce the input voltage to 5Volt or 3V3Volt, this choice allow you to use this board with both 5V TTL device as well as with 3,3V TTL level.

All the TLC59108 output are available on external connectors and R4/R5 can be used to select the I2C address of the single chip, this choice allow you to use up to 4 different board on the same I2c bus.

To debug LEDs are connected to Out4 and Out5,

Circuit Board

The circuit board is really clear and simple and you can easily do it yourself at home using a diy-pcb methods that I just describe in this separate article 2).

ikea-dioder-hack-pcb.svg

Follow some images of the PCB realization.

a.jpgb.jpg
c.jpg

Mount the circuit

NOTE: This part should still be written, (I'm ordering components) news will follow soon!!

DesignatorPackageQuantityDesignationSupplier and ref
P2,P6,P1,P3,P4,P7,P5,P8pin_strip_2-908CONN_2
C1,C3,C2SM0603_Capa3100nF
R2,R1SM060320
R4,R5SM060321k
K2SIL-31CONN_3
K1SIL-21CONN_2
U1tssop-201TLC59108F
R8,R9SM06032R
D1,D2LED-08052LED
P9,P10,P11,P121pin4CONN_1
U2SOT2231NCP1117ST50T3G

How to use

The circuit can be power with 7 to 18 Volt and, as yet say, you can use it with TTL level value of 3,3V or 5V.

To avoid damage to circuits ensure to use the correct TTL level voltage!!!

Here I will assume that both R4/R5 are mounted (i2c address: 0x40h) and that we want to test the out4/out5.

The I2C commands that we will be to use are:

STILL UNTESTED, wainting components

Use with ARDUINO

To use this board to ARDUINO Uno you should use 5V TTL, while with ARDUINO Due you should use 3,3 TTL.

The follow table show connections:

Signal ADUINO Uno ARDUINO Due
SDA A4 20
SCL A5 21
GND GND GND

Here follow a .ino file that can be used to thest functionality:

/* Need to be written!
   If you like this projet propose your implemetantion!
*/

Use with Linux/RaspberryPi

On the RaspberryPi are available some GPIOs pins as well as the I2C bus on GPIO0 (SDA) and GPIO1 (SCL), you should also connect GNDs together (see next).

To control the chip from Linux you can install and use the i2c-tools3).

Here some example using bash script:

#I should mount the pcb before test the code.
#
# Any code is welcome!

Crontab can be used to automatically act at fixed time. The example below automatically operate over the day.

Future works

I hope that this article can be useful to someone and I like to hear your experience with this circuit or derivate. Any comment is welcome.

1) from Texas website
2) in Italian but the presentation is pretty clear