DALI is an international standardized protocol for intelligent digital lighting control, that enables an easy implementation of robust, scalable and flexible lighting networks. DALI stands for Digital Addressable Lighting Interface and it was first introduced in the late ‘90s. Since then, it has undergone a number of revisions. The most recent version of the DALI standard IEC 62386, is also known as DALI-2, which brings many new features to the existing DALI protocol.
The simplest DALI network consists of a controller and one or more slave devices, such as LED drivers, dimmers, and ballasts, equipped with DALI interfaces. DALI 2 click can be used to develop applications for controlling other slave nodes of the DALI network or to develop slave node applications that would respond to the commands sent by the master control unit. DALI 2 click offers a simple and reliable interface to DALI and DALI 2 communication bus, making it possible to dive into the world of intelligent lighting.
How does it work?
The master and the slave nodes are all connected to the DALI bus. The DALI bus consists of two wires, and offers very flexible network routing topology: all nodes can be daisy-chained, connected in a star topology or any combination of these. DALI bus also requires a 24V, 250mA DALI compliant power supply unit to be connected to it, since DALI bus logic voltage levels range up to 24V. Also, the DALI standard strictly defines the maximum current through the bus, which should not exceed 250mA. The maximum current through each connected node is also defined and it should not exceed 2mA. DALI is not classified as SELV (Separated Extra Low Voltage) and therefore its wiring may be run next to mains cables or within multicore cables that include mains power. Therefore, a DALI network cable is required to be mains-rated, with 600 V isolation and at least a 1 mm cross-section, with a maximum drop of 2 volts along the cable. That is roughly about 300m in length, depending on the specific resistance of the used cable.
The controller can monitor and control each slave device. The DALI protocol permits up to 64 nodes to be individually addressed, but it also allows multiple devices to be addressed simultaneously, via multicast and broadcast messages. DALI gateways can be used to further expand the network. The DALI bus communication data rate is 1200 bps (±10% max), and it consists of encoded data packets, exchanged between the master and slave nodes. The master sends 16bit Manchester encoded data packets, and the slave node responds back with an 8bit Manchester encoded data packet. The FORWARD FRAME is the frame sent by the master node and it consists of one START bit, eight address bits (slave address), eight data bits (command) and two STOP bits. The BACKWARD FRAME is the frame sent from the slave node back to the master. It consists of one START bit, eight data bits and two STOP bits.
Signal levels are defined as 0 ± 6.5V for logic LOW or 0 (DALI bus active state) and 16 ± 6.5V for logic HIGH or 1 (DALI bus idle state). As per DALI standard, DALI 2 click board has a Graetz bridge rectifier on its DALI bus inputs, so a DALI bus can be connected to the DALI onboard screw terminal, disregarding the polarity of the signal. After it has been rectified, the DALI TX and RX signals go through the fast optocouplers and remain galvanically isolated from the rest of the circuit. These signals are routed to the RST and INT pins of the mikroBUS™ respectively, allowing the host MCU to exchange data via the DALI bus. There is an onboard SMD jumper, used to select the logic voltage level so that both 3.3V and 5V MCUs can be interfaced with this click board™. An onboard LED labeled as RX is used to indicate an incoming transmission from the DALI bus.
Although backward compatible, DALI-2 standard introduces some new features, including 24bit frames, slightly changed logic voltage levels, standardization of different kinds of Control Gears (slave nodes), power supply through the BUS, more addressable nodes (up to 128), support for the LED color fixtures, and so on. DALI 2 click is compliant with the DALI-2 physical layer requirements.
Specifications
Type | DALI |
Applications | DALI 2 click can be used for interfacing with the DALI network, but it is also compliant with the DALI-2 physical layer requirements. |
Key Features | DALI 2 click is designed in cooperation with Microchip and it is compliant with the latest DALI standard revisions as well as the most recent DALI-2 version of this standard. |
Interface | GPIO |
Input Voltage | 3.3V or 5V |
Click board size | M (42.9 x 25.4 mm) |
Pinout diagram
This table shows how the pinout on DALI 2 click corresponds to the pinout on the mikroBUS™ socket (the latter shown in the two middle columns).
DALI 2 click electrical specifications
Description | Min | Typ | Max | Unit |
---|---|---|---|---|
DALI bus current consumption | 1.6 | 2 | mA | |
DALI bus allowed voltage | 0 | 24 | V |
Onboard settings and indicators
Label | Name | Default | Description |
---|---|---|---|
LD1 | PWR | - |
Power LED indicator |
LD2 | RX | - | Recieve indicator |
JP2 | SEL JMP | Left | Power supply voltage selection, left position 3.3V, right 5V |
Software support
We provide a library for DALI 2 click on our Libstock page, as well as a demo application (example), developed using MikroElektronika compilers and mikroSDK. The provided click library is mikroSDK standard compliant. The demo application can run on all the main MikroElektronika development boards.
Library Description
The library implements DALI master functionalities.
Key functions
void dali2_sendCmd(const uint8_t balAddress, const uint8_t cmd, const uint8_t cmdType, const uint8_t folType)
- Executes DALI command
void dali2_masterInit()
- Initializes master functionality
uint8_t dali2_masterStatus()
- Returns master status
Examples Description
The demo application is composed of three sections:
void applicationTask() { uint8_t counter; for (counter = 0; counter < 2; counter++) { dali2_sendCmd(_DALI2_ADDRESS01, _DALI2_OFF, _DALI2_BROADCAST_CMD, _DALI2_FOLLOWING_COMMAND); Delay_ms( 1000 ); dali2_sendCmd(_DALI2_ADDRESS01, _DALI2_RECALL_MAX_LEVEL, _DALI2_BROADCAST_CMD, _DALI2_FOLLOWING_COMMAND); Delay_ms( 1000 ); } for (counter = 0; counter < 8; counter++) { dali2_sendCmd(_DALI2_ADDRESS01, _DALI2_DOWN, _DALI2_BROADCAST_CMD, _DALI2_FOLLOWING_COMMAND); Delay_ms( 500 ); } for (counter = 0; counter < 8; counter++) { dali2_sendCmd(_DALI2_ADDRESS01, _DALI2_UP, _DALI2_BROADCAST_CMD, _DALI2_FOLLOWING_COMMAND); Delay_ms( 500 ); } current_state = dali2_masterStatus(); }
Note: This implementation of DALI master requires timer with exact 104 uS interrupt time. The MCU used for example must be capable to execute void dali2_isr() function in time less than 104 uS. In theory, it is usable on faster MCUs but before usage, you should check if your MCU is capable to execute dali2_isr function call for less than 104us.
The full application code, and ready to use projects can be found on our Libstock page.
mikroSDK
This click board is supported with mikroSDK - MikroElektronika Software Development Kit. To ensure proper operation of the mikroSDK compliant click board demo applications, mikroSDK should be downloaded from the Libstock and installed for the compiler you are using.
For more information about mikroSDK, visit the official page.
Downloads
mikroBUS™ standard specifications