Does anybody make an IC that takes I2C command and outputs duty cycle (PWM)? I need to control bunch of TECs from CPU and I2C->PWM seems the most efficient (and smallest) way to do it. Any suggestion will be appreciated. Thanks Michael
T How do people control temperature (TEC or heater) with s/w? Wouldn't serial bus be more efficient than PWM line (especially if one has bunch of heaters/TECs in the system and I2C bus is present everywhere)?
I2C is nice for communication within a PCB, but for any real distances (a few meters or more) this kind of single ended TTL communication is going to have troubles.
For a system spanning a few meters, some RS-485/CANbus differential communication would be useful, but then each load would need to have its own PWM generator and you would need a way to assign addresses to each node. A DIP switch for address assignment is not the most reliable method.
My suggestion is that if the number of independently controlled loads is small (less than half a dozen), go for a microcontroller with a sufficient number of PWM channels and use optocouplers on each channel if necessarily.
The system I am dealing with is small (longest possible connection less than 2'), has at least half a dozen channels. I do not think our CPU has enough (if any) PWM outputs. The "I2V->PWM" decision has been made, I need to come up with solution. Looks like it will be either NXP PCA953X series (potential EOL issue) or DAC and LT TimerBlox chip.
Does it make sense to use another inexpensive MCU? MCUs come in all shapes and sizes. As such they are the perfect peripheral chip in many respects. The only downside is needing to program them in manufacturing.
I'd reconsider. I2C over wires is asking for problems especially in a noisy environment. I2C is never designed for going from one board to another and therefore isn't suitable for that purpose. NXP does have solutions for taking I2C off board into a balanced 4 wire setup but RS485 is easier once you go down that road.
If you need lots of PWM channels I'd add an FPGA or CPLD on the board where the CPU sits. That way you only need to take the PWM signal to a driver board. LVDS serializers/deserializers (like the ones used for TFT screens) can be used to concentrate multiple signals in a few LVDS lanes. Having an FPGA/CPLD do the PWM generation fits seemless with an LVDS solution to reduce the amount of wiring between the various boards.
I noticed that LED dimmers have 8 bit resolution. I wonder if the system would act as "bang-bang controller" when it is near target temperature (unless duty cycle vs. error relationship is nonlinear - ?). As to FPGA/CPLD - we have nobody to program it. Michael