10 Channel Analog to Digital Converter (ADC) I2C

HobbyTronics 10 Channel Analog to Digital Converter (ADC) I2C
Click to enlarge
Price: £2.99
(£2.49 + VAT)
Availability: 7
Model: HTADCI2C
Manufacturer: HobbyTronics
Average Rating: 5 out of 5 Stars!

HobbyTronics

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, 0x00, 0x14)
	print results10
	 
Write Review
Your Name:


Your Review: Note: HTML is not translated!

Rating: Bad            Good

Enter the code in the box below:

There are no additional images for this product.
Shopping Cart
0 items
 
DELIVERY/PAYMENT

   UK ORDERS OVER £50

UK - £2.40 orders below
                    £50.00
EU Airmail from £3.95
Worldwide from £7.95
More Details...

 
Specials
 
Brands
 
Follow us on: