V 3.0 Revised 10/21 OEM-EC ™ Embedded Conductivity Circuit Reads Conductivity Total dissolved solids (ppm) Salinity = PSU (ppt) 0.00 − 42.00 Range 0.07 − 500,000+ µS/cm Accuracy +/ – 2% Response time 1 reading every 640ms Supported probes Calibration Temp compensation Data protocol Default I2C address Operating voltage Data format Written by Jordan Press Designed by Noah Press K 0.01 – K 600 any brand 1 or 2 point Yes SMBus/I2C 0x64 3.0V − 3.
Before purchasing the Conductivity OEM™ read this data sheet in its entirety. This product is designed to be surface mounted to a PCB of your own design. This device is designed for electrical engineers who are familiar with embedded systems design and programing. If you, or your engineering team are not familiar with embedded systems design and programing, Atlas Scientific does not recommend buying this product.
Table of contents OEM circuit dimensions Absolute max ratings Power consumption Pin out Resolution Power on/start up 4 4 5 6 6 6 System overview Reading register values Writing register values Sending floating point numbers Receiving floating point numbers REGISTERS 0x00 Device type register 0x01 Firmware version register 0x02 Address lock/unlock register 0x03 Address register 0x04 Interrupt control register 0x05 LED control register 0x06 Active/hibernate register 0x07 New reading available register 0x08
OEM circuit dimensions 12mm 11mm 2.65mm 1.3mm All pins 2.3mm 11.9mm Center to center Absolute max ratings Parameter MIN Storage temperature -60 °C Operational temperature -40 °C 25 °C 125 °C VCC 3.0V 3.3V 4.
Power consumption The current used by the EC OEM™ is not constant. It changes as the conductivity of the water changes. For example, if the water has a conductivity of 0, then no electricity is flowing through the probe, and the current draw will only be what it takes to power the CPU. However, if the water has a very high conductivity, then the current draw is higher. After 100,000µs, the current consumption no longer increases (this does not mean the readings are limited to 100,000µs).
Pin out 1 SDA NC 10 2 NC NC 3 VCC SCL 8 4 PRB INT 7 5 PRB GND 6 9 Resolution The resolution of a sensor is the smallest change it can detect in the quantity that it is measuring. The Atlas Scientific™ EC OEM™ will always produce a reading with a resolution of two decimal places. Example 0.07µS 150,234.78µS Power on/start up Once the Atlas Scientific™ EC OEM™ is powered on it will be ready to receive commands and take readings after 1ms.
System overview The Atlas Scientific EC OEM™ Class Embedded Conductivity Circuit is the core electronics needed to read the electrical conductivity of water from a wide range of conductivity probe types (K 0.01 to K 600). The EC OEM™ Embedded Conductivity Circuit will meet, or exceed the capabilities and accuracy found in all models of bench top laboratory grade conductivity meters. The EC OEM™ is an SMBus / I2C slave device that communicates to a master device at a speed of 10 – 100 kHz.
Reading register values To read one or more registers, issue a write command and transmit the register address that should be read from, followed by a stop command. Then issue a read command, the data read will be the value that is stored in that register. Issuing another read command will automatically read the value in the next register. This can go on until all registers have been read. After reading the last register, additional read commands will return 0xFF.
Writing register values All registers can be read, but only registers marked read/write can be written to. To write to one (or more) registers, issue a write command and transmit the register address that should be written to, followed by the data byte to be written. Issuing another write command will automatically write the value in the next register. This can go on until all registers have been written to. After writing to the last register, additional write commands will do nothing.
Sending floating point numbers For ease of understanding we are calling fixed decimal numbers “floating point numbers.” We are aware they are not technically floating point numbers. When transmitting a floating point number to any of these 3 register blocks, the number must first be multiplied by 100. This would have the effect of removing the floating point. Internally the EC OEM™ will divide the number by 100, converting it back into a floating point number.
Receiving floating point numbers After receiving a value from any of the reading registers, the number must be divided by 100 to convert it back into a floating point number. Example Reading a Temperature Confirmation value of 99.06˚C Value received = 9906 9906 / 100 = 99.06˚C Reading an EC value of 14.56µs Value received = 1456 1456 / 100 =14.56µs Reading a TDS value of 7.86 Value received = 786 786 / 100 = 7.86 TDS Reading a Salinity value of 15.84 Value received =1584 1584 / 100 =15.
Registers
Device information Accessible registers Device information Compensation R R 0x00: Device type 0x01: Firmware version 0x10: Temperature compensation MSB 0x11: Temperature compensation high byte 0x12: Temperature compensation low byte Device address 0x13: Temperature compensation LSB 0x00 – Device type register R/W 0x02: SMBus/I2C address lock/unlock R/W Confirmation 0x03: SMBus/I2C address 1 unsigned byte Control Read only value = 4 0x04: Interrupt control 40x05: = EC LED control 0x06: Active/hib
Settings that are retained if power is cut Device information Settings that are NOT retained if power is cut Compensation Changing I C address 0x00: Device type Calibration Firmware version 2 C address I0x01: 2 R R Device address 0x02: SMBus/I2C address lock/unlock R/W 0x03: SMBus/I C address R/W 2 Confirmation Read only R Read and write Control This is a 2 step procedure 0x04: Interrupt control 0x05: LED control To change the I2C address, 0x06: Active/hibernate 0x07: New reading available R
Step 2 Change address 0x03 – I2C address register 1 unsigned byte Default value = 0x64 Address can be changed 0x01 – 0x7F (1–127) Address changes outside of the possible range 0x01 – 0x7F (1–127) will be ignored. After a new address has been sent to the device the Address lock/unlock register will lock and the new address will take hold. It will no longer be possible to communicate with the device using the old address. Settings to this register are retained if the power is cut.
0x12: Temperature compensation low byte Device address Control registers 0x02: SMBus/I2C address lock/unlock R/W 0x03: SMBus/I2C address R/W Control 0x04: Interrupt control R/W R/W R/W R/W 0x05: LED control 0x06: Active/hibernate 0x07: New reading available Read only R Read and write R/W 0x13: Temperature compensation LSB Confirmation 0x14: Temperature confirm MSB 0x15: Temperature confirm high byte 0x16: Temperature confirm low byte 0x17: Temperature confirm LSB Sensor Data 0x18: EC reading M
Pin low on new reading Command value = 4 By setting the interrupt control register to 4 the pin will go to a high state (VCC). Each time a new reading is available the INT pin (pin 7) will be reset and the pin will be at 0 volts. 4 4 4 New Reading New Reading Example code Setting pin low on new reading The pin will not auto set. 4 must be written to the interrupt control register after each transition from high to low.
0x05 – LED control register 1 unsigned byte Command values 1 = Blink each time a reading is taken 0 = Off The LED control register adjusts the function of the on board LED. By default the LED is set to blink each time a reading is taken. Example code Turning off LED byte i2c_device_address=0x64; byte led_reg=0x05; Wire.beginTransmission(i2c_device_address); Wire.write(led_reg); Wire.write(0x00); Wire.endTransmission(); Settings to this register are not retained if the power is cut.
0x07 – New reading available register 1 unsigned byte Default value = 0 (no new reading) New reading available = 1 Command values 0 = reset register This register is for applications where the interrupt output pin cannot be used and continuously polling the device would be the preferred method of identifying when a new reading is available. When the device is powered on, the New Reading Available Register will equal 0.
0x04: Interrupt control R/W R/W R/W R/W 0x05: LED control 0x16: Temperature confirm low byte Probe type 0x06: Active/hibernate 0x07: New reading available 0x17: Temperature confirm LSB Sensor Data 0x18: EC reading MSB Probe type 0x19: EC reading high byte 0x08: Set probe type MSB R/W 0x09: Set probe type LSB R/W 0x1A: EC reading low byte 0x1B: EC reading LSB Calibration 0x1C: TDS reading MSB 0x0A: Calibration value MSB R/W 0x08 – 0x09 Set probe type 0x0B: Calibration value high byte R/W 0x
0x18: EC reading MSB Probe type Calibration 0x08: Set probe type MSB R/W 0x09: Set probe type LSB R/W 0x19: EC reading high byte 0x1A: EC reading low byte 0x1B: EC reading LSB Calibration 0x1C: TDS reading MSB 0x1D: TDS reading high byte 0x0D: Calibration value LSB R/W R/W R/W R/W 0x0E: Calibrate request R/W 0x21: Salinity reading high byte 0x0A: Calibration value MSB 0x0B: Calibration value high byte 0x0C: Calibration value low byte 0x1E: TDS reading low byte 0x1F: TDS reading LSB 0x20: Sali
0x0D: Calibration value LSB 0x0E: Calibrate request 0x0F: Calibration confirm R/W R/W R 0x20: Salinity reading MSB 0x21: Salinity reading high byte 0x22: Salinity reading low byte 0x23: Salinity reading LSB 0x0E – Calibration request register 1 unsigned byte Command values 1 Clear calibration = (delete all calibration data) 2 Dry calibration 3 Single point calibration 4 Dual point calibration low 5 Dual point calibration high Once a calibration value has been transmitted to the previous registers (0x0A
0x0F – Calibration confirmation register 1 unsigned byte Command values 0 = dry calibration 1 = single point calibration 2 = low point calibration 3 = high point calibration After a calibration event has been successfully carried out, the calibration confirmation register will reflect what calibration has been done, by setting bits 0 – 3.
Temperature compensation Compensation 0x10: Temperature compensation MSB R 0x11: Temperature compensation high byte R 0x12: Temperature compensation low byte R 0x13: Temperature compensation LSB R Confirmation 0x14: Temperature confirm MSB R 0x10 – 0x13 Temperature compensation registers R 0x15: Temperature confirm high byte 0x16: Temperature Unsigned longconfirm low byte 0x17: Temperature 0x10 = MSB confirm LSB 0x13 = LSB Sensor Data Default value = 25 °C 0x18: EC reading MSB Units = °C 0x19: EC r
0x10: Temperature compensation MSB R 0x11: Temperature compensation high byte R 0x12: Temperature compensation low byte R 0x13: Temperature compensation LSB R Temperature confirmation Confirmation 0x14: Temperature confirm MSB R 0x15: Temperature confirm high byte R 0x16: Temperature confirm low byte R 0x17: Temperature confirm LSB R Sensor Data 0x14 – 0x17 Temperature confirmation registers R 0x19: EC reading high byte 0x18: EC reading MSB 0x1A: EC reading low byte Unsigned long 0x1B: E
0x14: Temperature confirm MSB R 0x15: Temperature confirm high byte R 0x16: Temperature confirm low byte R 0x17: Temperature confirm LSB R Sensor data Sensor Data 0x18: EC reading MSB R 0x19: EC reading high byte R 0x1A: EC reading low byte R 0x1B: EC reading LSB R 0x1C: TDS reading MSB R 0x1D: TDS reading high byte R 0x1F: TDS reading LSB R 0x18 – 0x1B EC reading registers R 0x1E: TDS reading low byte Signed long 0x20: Salinity reading MSB 0x18 = MSB 0x21: Salinity reading high byte
0x1B: EC reading LSB R 0x1C: TDS reading MSB R 0x1D: TDS reading high byte R 0x1E: TDS reading low byte R 0x1F: TDS reading LSB R 0x20: Salinity reading MSB R 0x21: Salinity reading high byte R 0x23: Salinity reading LSB R R 0x1C 0x1F registers 0x22: Salinity – reading low byte TDS reading Signed long 0x1C = MSB 0x1F = LSB Units = TDS The last TDS reading taken is stored in these four registers.
0x1F: TDS reading LSB R 0x20: Salinity reading MSB R 0x21: Salinity reading high byte R 0x22: Salinity reading low byte R 0x23: Salinity reading LSB R 0x20 – 0x23 Salinity reading registers Signed long 0x20 = MSB 0x23 = LSB Units = Salinity The last Salinity reading taken is stored in these four registers. To read the value in this register, read the bytes MSB to LSB and assign them to an unsigned long, cast to a float. Divide that number by 100. Example Reading a Salinity of 7.
OEM electrical isolation If the EC OEM ™ Class Embedded Conductivity Circuit is going to be used in consumer, industrial, or scientific /medical applications electrical isolation is strongly recommended. Electrically isolating the device will insure that the readings are accurate, the EC probe does not interfere with other sensors and that outside electrical noise does not affect the device.
Designing your product The EC OEM™ circuit is a sensitive device. Special care MUST be taken to ensure your Conductivity readings are accurate. Simple design OEM 2 OEM 1 Simple low voltage computer systems experience little to no problems during development and have no reported issues from the target customer. Complex design Complex computer systems with multiple voltages and switching, can lead to extended and unnecessary debugging time. Target customers can experience frequent accuracy issues.
How to add chemical sensing to a complex computer system Placing the OEM™ circuits onto their own board is strongly recommended; Not only does this help keep the design layout simple and easy to follow, it also significantly reduces debugging and development time. Target customers will experience accurate, stable and repeatable readings for the life of your product. The sensor board should have it’s own power regulator. All sensors should be electrically isolated. 5V – 3.
Designing your PCB Create the traces as short as possible from the EC OEM™ circuit to your probe connection. Keep the traces on your top layer, keep a distance of 1mm for any other trace. use 0.4mm trace width. Use a ground plane underneath the traces and probe connection. Ground Plane 1 10 2 9 3 8 4 7 5 6 Connect pin 6 to the ground plane. Make sure there are no vias or exposed metal underneath the EC OEM™ circuit.
Recommended pad layout 12mm 2.3mm 1.4mm 2.5mm IC tube measurements 325mm 12.6mm 4.1mm Fits 25 EC OEM™ circuits inside dimensions outside dimensions 12.6mm L 325mm 325mm W 11.6mm 12.6mm H 3.1mm 4.1mm plastic thickness 0.
Recommended reflow soldering profile 350 °C 315 °C 280 °C 245 °C 210 °C 175 °C 140 °C 105 °C 70 °C 35 °C 0 °C 0s # 1 2 3 4 5 6 7 8 9 10 34 25s 50s Temp Sec 30 90 110 130 135 140 155 156 158 160 15 20 8 5 5 5 8 10 10 10 75s 100s 125s 150s 175s 200s 225s 250s 275s 300s 325s 350s 375s 400s 425s 450s Copyright © Atlas Scientific LLC # Temp Sec # Temp Sec # Temp Sec 11 12 13 14 15 16 17 18 19 20 163 165 167 170 172 174 176 178 180 181 10 10 10 10 10 10 10 10 10 10 21 22 23 24 25 26 27 28
Pick and place usage 35 Copyright © Atlas Scientific LLC
Datasheet change log Datasheet V 3.0 Revised operating voltages on pages 1, 4 & 5. Datasheet V 2.9 Revised artwork on pg 8. Datasheet V 2.8 Added more info for ”Power consumption” on pg 5. Datasheet V 2.7 Added “Designing you product” on pg 29. Datasheet V 2.6 Revised information about salinity throughout datasheet. Datasheet V 2.5 Revised information about desiging your own EC board on pg. 29 Datasheet V 2.4 Revised isolation schematic on pg. 28 Datasheet V 2.
Firmware updates V1.0 – Initial release (Oct 10, 2015) V2.0 – (June 2, 2015) • Improved default calibration values. V3.0 – (Aug 28, 2015) • Fixed glitch in cal clear command. V4.0 – (June 3, 2016) • Simplified LED functionality. V5.0 – (July 6, 2017) • Fixed glitch in confirming single point calibration.