Is there an I²C device out there for reading a set of PWM inputs?

Thank you for linking to exactly what you are talking about -- it makes it much easier to get to the data sheets. The question "How can I use more than one MaxSonar®-EZ1™ in the same system?" in the MaxBotix MaxSonar FAQ lists several ways of using a bunch of them at one time (and some pitfalls to avoid). Some of them use 2 pins of the MCU -- the same number of pins as I2C, but a completely different protocol.

If I understand the data sheet correctly, one of those 2-pin methods is:

  • wire pin 1 low the MaxSonar to enable chaining
  • Wire an output pin from your MCU to the RX pin of the first MaxSonar in the chain.
  • Wire TX of each MaxSonar to RX of the next in the chain
  • Combine the signals from all the MaxSonar PW pins (AND? OR? NAND? diodes?).
  • Wire that combined signal to a timer input pin on the CPU.

Then software on the MCU

  • pulse the RX pin of the first MaxSonar
  • Time the first pulse width to give the distance the first MaxSonar sees
  • Time the second pulse width to give the distance the second MaxSonar sees
  • ...
  • After getting the pulse from every sonar (or timing out at 49 ms per sonar), do something with the data.
  • repeat.

Perhaps one of the other methods listed in the FAQ would work just as well or better for you.


Will an 8 channel ADC that supports I2C cut it?

http://www.linear.com/product/LTC2309


The microchip PIC18F87K22 has 10 capture compare modules that can handle this function and of course you can talk to it through I2C.

You could also do this will a really simple FPGA.

The Cypress PSoC family could probably also handle measurement of a bunch of PWM inputs.