I started looking at the PCF8574 i2c 8-bit IO expanders as an alternative to the trusty 74HC595 shift registers. Internally the PCF8574 is really still a form of shift register but has quasi-bidirectional ports.
Purpose was to enable me to free up 4 Output lines (3 to the 74HC595 which drives 8 x LED’s and 1 for direct drive via transistor to an indicating LED).for other needs.
I have no problem controlling the PCF8574 and can set the outputs on and off without drama.
What I have identified is that the “High Current” outputs of the PCF8574 are only high current for sinking current up to 25mA from devices using a Low Output state. But when using more conventional High = ON type logic (as per the PICAXE), the PCF8574 outputs can only source/supply 300uA max on a High Output. In fact the Texas Instruments datasheet shows better schematics than the Philips datasheet and shows a 100uA current source for each output.
I would prefer to stay with the logic high for switching on the LED’s
1. interchangeable with the already built module using the 74HC595 to drive LED’s
2. more conventional logic
3. initial state on circuit energisation would not cause LED’s to flash until PCF8574 written to at program initialisation.
I can think of a couple of options:
1. use a BC109 type transistor as an interface from each PCF8574 to drive the LED’s (tested on breadboard and works but more components, transistors and space required.
2. look for a 74CXX type IC as an octal (8-bit) non inverting buffer capable of driving the LED’s (eg 74HC241 is an option - CMOS 4050 no good as low level for high current as well).
I would be interested to see what others may have done in using the PCF8574 with conventional logic (high = on, like the PICAXE outputs) for LED or other higher current (10 to 20mA) loads.