Color 6 click is a very accurate color sensing Click board™ which features the AS73211, an XYZ true color sensor from ams. This company has developed a proprietary JENCOLOR™ filter technology, which ensures compliance to the CIE 1931/DIN 5033 standard (human eye response), providing an accurate XYZ color space response. The low noise 24bit ADCs ensure the highest dynamic range available on market, with the irradiance responsivity per countdown to 0.0005 pW/cm². This sensor offers a fast I2C interface for the communication with the host MCU.
In addition to high accuracy and sensitivity, this color sensor also offers thermal measurement, inherent 50/60Hz hum/ripple removal, automatic low power mode, fast data acquisition time, and several operating modes that allow flexible operation. This Click board™ is an ideal solution for any color measurement, LED lighting color management, LED and OLED display aging compensation and dynamic display color balancing, and similar applications which can benefit from having very accurate and reliable color measurement.
How does it work?
The sensor component used on the Color 6 click is the AS73211, an XYZ true color sensor from ams sensors company. This sensor is produced by using the proprietary JENCOLOR™ filter technology, developed by this company. The sensor uses three 24bit ADC converters, which convert the measurement from the photodiodes. The photodiodes are covered by the optical filters. These filters isolate X, Y and Z color components, providing CIE 1931/DIN 5033 standard compliant color response, which matches the color response of the human eye. The irradiance responsivity (GAIN) can be set in a range of 12 steps by a factor of 2 for each step (up to 2048 times), providing a huge dynamic range, up to 3.43E+10:1.
To perform the measurement, the device has to be set up first. After the POR (Power On Reset), the device is set up in the Config mode. After the successful configuration of the measurement parameters, the Measurement mode can be activated, by setting the corresponding bits in the Operation State Register (OSR). The measurement itself is stored as 16bit information, although the conversion data is 24bit wide. Without using an internal divider, only the 16 least significant bits of information are available. By employing the divider, it is possible to dynamically shift the information so the most relevant bits are accessed via the 16bit registers.
There are two modes of measurement available on this Click board™. It can use the CONT (continuous measurement), or the CMD (single measurement) measurement modes. The CONT mode outputs data continuously, using a time delay determined by the content of the BREAK register, while the CMD mode allows one measurement to be performed per command. After a single measurement is performed, the device can fall back to the Power Down or Standby state, while working in CMD mode. This is determined by the appropriate bits in the configuration registers and allows for a lower power consumption if required by the application.
To allow for the best performance and most accurate measurements, the surface of the board and especially the sensor IC itself, should always stay clean and without scratches, as dirt and moisture can alter the light penetration through the filters. In addition, the manufacturer recommends that the angle of incidence stays less than 10° since the sensor IC has an aperture angle (beam width) of nearly 90°. If the angle of incidence is greater than advised, the filter shifting might occur, introducing distortion and affecting the measurement results. The spectral filters of this sensor are specialized for working with the broadband source of light, and measurement of the narrowband light sources should not be performed by this sensor. The internal thermal sensor allows the temperature compensation to be calculated, achieving the most accurate measurements. This ADC outputs 12bit data, which can be read from the appropriate register via the I2C interface.
The Click board™ itself uses a very low number of external components. In fact, it only uses one external resistor, which is used for providing the reference voltage for the internal sections of the IC, along with few resistors, used for pulling the I2C lines to a HIGH logic level when not asserted and ferrite beds, which isolate noise between the analog and digital GND. The low number of external components simplify the design with this IC, allowing it to be used in a wide range of portable applications. I2C bus lines are routed to the appropriate mikroBUS™ pins, offering simple and reliable interfacing with the host MCU. Please note that this Click board™ can work only with 3.3V MCUs and it is not 5V tolerant.
The device datasheet contains all the necessary information about the registers and their values. However, the Click board™ comes supported by a library, which contains functions which simplify the development of the applications, cutting time to market.
Specifications
Type |
Optical |
Applications |
Color 6 click is an ideal solution for any color measurement, LED lighting color management, LED and OLED display aging compensation and dynamic display color balancing, etc. |
On-board modules |
AS73211, an XYZ true color sensor with the I2C interface, from ams. |
Key Features |
12 gain stages with an unparalleled dynamic range up to 3.43E+10:1, proprietary JENCOLOR™ filter technology, low noise and thermal measurement for increased accuracy and sensitivity, no filter aging, low power consumption. |
Interface |
I2C |
Input Voltage |
3.3V |
Click board size |
M (42.9 x 25.4 mm) |
Pinout diagram
This table shows how the pinout on Color 6 click corresponds to the pinout on the mikroBUS™ socket (the latter shown in the two middle columns).
Notes | Pin | | Pin | Notes |
---|
|
NC |
1 |
AN |
PWM |
16 |
NC |
|
|
NC |
2 |
RST |
INT |
15 |
NC |
|
|
NC |
3 |
CS |
RX |
14 |
NC |
|
|
NC |
4 |
SCK |
TX |
13 |
NC |
|
|
NC |
5 |
MISO |
SCL |
12 |
SCL |
I2C Clock |
|
NC |
6 |
MOSI |
SDA |
11 |
SDA |
I2C Data |
Power supply |
3.3V |
7 |
3.3V |
5V |
10 |
NC |
|
Ground |
GND |
8 |
GND |
GND |
9 |
GND |
Ground |
Color 6 click electrical specifications
Description | Min | Typ | Max | Unit |
---|
ADC resolution |
10 |
- |
24 |
bit |
Conversion time |
1 |
- |
16384 |
ms |
I2C clock speed |
- |
- |
400 |
kHz |
Onboard settings and indicators
Label | Name | Default | Description |
---|
LD1 |
PWR |
- |
Power LED indicator |
Software support
We provide a demo application for Color 6 click on our Libstock page, as well as a demo application (example), developed using MikroElektronika compilers. The demo can run on all the main MikroElektronika development boards.
Library Description
The library initializes and defines the I2C bus driver and drivers that offer a choice for writing data in the register. The library includes the function for configuration chip for measurement, functions for reading temperature, channel (X or Y or Z) data. The user also has the function float color6_convertingToEe(uint8_t channel, uint16_t MRES_data)
which converts channel data to Ee (Input light irradiance regarding to the photodiode's area within the conversion time interval) data.
Key functions:
uint16_t color6_readData(uint8_t reg)
- Functions for reading data from register
float color6_convertingToEe(uint8_t channel, uint16_t MRES_data)
- Functions for converting channel data to Ee data.
void color6_goToMeasurementMode()
- Functions for go to measurement mode.
float color6_getTemperature()
- Functions for reading temperature in ?.
Example description
The application is composed of three sections:
- System Initialization - Initializes I2C module.
- Application Initialization - Initializes driver init and configuration chip for measurement.
- Application Task - (code snippet) - Reads values from the X / Y / Z channel and converts to Ee (input light irradiance regarding the photodiode's area within the conversion time interval) data. This data logs on USB UART every 2 seconds.
void applicationTask()
{
mikrobus_logWrite(" Channel X : ",_LOG_TEXT);
X_data = color6_readData(_COLOR6_MREG_MEASUREMENT_X_CHANNEL );
IntToStr(X_data, dataText);
mikrobus_logWrite(dataText, _LOG_LINE);
mikrobus_logWrite(" Ee X channel data: ",_LOG_TEXT);
Ee_data = color6_convertingToEe(_COLOR6_MREG_MEASUREMENT_X_CHANNEL, X_data);
FloatToStr(Ee_data, dataText);
mikrobus_logWrite(dataText, _LOG_LINE);
mikrobus_logWrite(" Channel Y : ",_LOG_TEXT);
Y_data = color6_readData(_COLOR6_MREG_MEASUREMENT_Y_CHANNEL );
IntToStr(Y_data, dataText);
mikrobus_logWrite(dataText, _LOG_LINE);
mikrobus_logWrite(" Ee Y channel data: ",_LOG_TEXT);
Ee_data = color6_convertingToEe(_COLOR6_MREG_MEASUREMENT_Y_CHANNEL, Y_data);
FloatToStr(Ee_data, dataText);
mikrobus_logWrite(dataText, _LOG_LINE);
mikrobus_logWrite(" Channel Z : ",_LOG_TEXT);
Z_data = color6_readData(_COLOR6_MREG_MEASUREMENT_Z_CHANNEL );
IntToStr(Z_data, dataText);
mikrobus_logWrite(dataText, _LOG_LINE);
mikrobus_logWrite(" Ee Z channel data: ",_LOG_TEXT);
Ee_data = color6_convertingToEe(_COLOR6_MREG_MEASUREMENT_Z_CHANNEL, Z_data);
FloatToStr(Ee_data, dataText);
mikrobus_logWrite(dataText, _LOG_LINE);
mikrobus_logWrite(" Temperature : ",_LOG_TEXT);
temperature = color6_getTemperature();
FloatToStr(temperature, dataText);
mikrobus_logWrite(dataText, _LOG_LINE);
mikrobus_logWrite(" ",_LOG_LINE);
Delay_ms( 2000 );
}
The full application code, and ready to use projects can be found on our Libstock page.
Other MikroElektronika libraries used in the example:
Additional notes and information
Depending on the development board you are using, you may need USB UART click, USB UART 2 click or RS232 click to connect to your PC, for development systems with no UART to USB interface available on the board. The terminal available in all MikroElektronika compilers, or any other terminal application of your choice, can be used to read the message.