• 10 Channel Analog to Digital Converter (ADC) I2C

10 Channel Analog to Digital Converter (ADC) I2C

Many microcontroller projects involve the use of sensors like Accelerometers, Gyroscopes, Temperature, Compass, Barometric, Current, Proximity and others. Some sensors have I2C or SPI interfaces but there are still a great many which produce an analogue output voltage. These are measured with the use of the built-in Analogue to Digital Converters (ADC) included in microcontrollers. However, if you are using many sensors and don’t have enough ADC inputs, or have used those pins for other functions, you either have to upgrade to a larger microcontroller with more inputs or resort to using an external (and expensive) ADC chip.

With this in mind we have programmed our own microcontroller to provide you with 10 additional ADC inputs available via I2C as a slave device.

No additional components are required as it has its own built in oscillator clock circuit.

  • 10 ADC input channels, each with 10 bit resolution (AN0 through AN9)
  • I2C interface
  • Configurable Slave Address between 40 and 47 allows up to 8 units to be added to your project
  • 64MHz Clock Speed
  • ADC values are measured 1000 times per second (1 kHz)
  • Selectable Complementary Filter function
  • Selectable 10-bit (2 bytes per ADC) or 8-bit (1 byte per ADC) output
  • Heartbeat output to show unit is functioning
  • 5V or 3.3V operation
  • Each ADC input is read 3 times and the average value taken to reduce spurious values

ADC to I2C Chip Pinout

Documents

ADC to I2C Datasheet

Example Programs

For Arduino example code, check out the datasheet linked to above.

Here is an example reading the ADC chip using Python on a Raspberry Pi. It reads the 10 ADC channels at 8-bit (10 bytes returned), then at 10-bit (20 bytes returned), and prints the results.

Note: Currently the I2C drivers on the Raspberry Pi lack some features. See this tutorial on clock stretching first

	import smbus
	import time

	bus = smbus.SMBus(0)

	results8 = []
	results10 = []

	bus.write_byte(0x28, 0x01)
	time.sleep(0.1)
	results8 = bus.read_i2c_block_data(0x28, 0x01, 0x0A)
	print results8

	bus.write_byte(0x28, 0x00)
	time.sleep(0.1)
	results10 = bus.read_i2c_block_data(0x28, 0x01, 0x14)
	print results10
	 

Write a review

Please login or register to review

10 Channel Analog to Digital Converter (ADC) I2C

  • Manufacturer: HobbyTronics
  • Product Code: HTADCI2C
  • Availability:  1 Day
  • £2.99

  • Ex Tax: £2.49

Related Products

Dual 8-bit Digital to Analog with SPI interface MCP4902

Dual 8-bit Digital to Analog with SPI interface MCP4902

Dual 8-bit Digital to Analog Converter with SPI interface MCP4902 The MCP4902 device is a dua..

£1.44 Ex Tax: £1.20

MCP3008 - 10bit 8 channel ADC SPI

MCP3008 - 10bit 8 channel ADC SPI

MCP3008 - 10bit 8 channel ADC SPI The Microchip MCP3008 ADC is a successive approximation 10-..

£2.16 Ex Tax: £1.80

Tags: 10 Channel, Analog, analogue, to, Digital, I2C, adc, 10 bit, 8 bit, HTADCI2C, microcontroller, ic, chip, HobbyTronics