🔍 Présentation technique

Le PCF8575 de Texas Instruments est un expandeur I/O 16 bits quasi-bidirectionnel contrôlé via bus I²C jusqu'à 400kHz (fonctionne jusqu'à 600kHz hors spec). Architecture organisée en deux ports de 8 bits (P0-P07 et P10-P17), chaque GPIO configurable individuellement input/output avec circuit latch pour maintien d'état autonome. Tension d'alimentation 2.5-5.5V, consommation veille 10µA, courant max 100mA par pin. Adressage matériel via broches A0/A1/A2 permettant jusqu'à 8 devices sur même bus (adresses 0x20-0x27) soit 128 GPIO totaux. Pin INT open-drain pour interruption sur changement d'état inputs. Temps de commutation ~4µs inadapté génération PWM haute fréquence. Certains modules incluent régulateur 3.3V et convertisseur niveau, nécessitant soudure pad VCC-VDD pour fonctionnement 5V. Absence pull-up internes sur PCF8575 contrairement PCF8574, résistances externes 4.7-10kΩ obligatoires sur SDA/SCL.

💡 Guide de sélection

Choisir PCF8575 pour extension 16 GPIO économique (1.80€) nécessitant uniquement contrôle basique ON/OFF sans PWM ni ADC. Préférer MCP23017 pour interruptions configurables sophistiquées, registres programmables, meilleure compatibilité ESP32 et support natif Linux/Raspberry Pi. PCF8574 (8 bits) suffit si <9 GPIO, possède pull-ups internes. Pour PWM I²C, utiliser PCA9685. Pour applications haute vitesse ou temps réel critique, éviter expandeurs I²C (latence synchrone 4µs). PCF8575 excellent matrices claviers 8x8 (72 touches max), contrôle relais multiples, affichage LED, projets IoT ESP32/Arduino manquant GPIO. Alternative: utiliser second microcontrôleur (ESP32/STM32) offrant GPIO + fonctionnalités supplémentaires (ADC/PWM) mais complexité et consommation accrues.

⚙️ Conseils d'utilisation

CRITIQUE : Souder obligatoirement pads adresse A0/A1/A2 arrière module (GND ou VCC) sinon adresse I²C flottante provoque comportements erratiques/pannes aléatoires. Ajouter pull-ups externes 4.7kΩ SDA/SCL même si module possède résistances (renforcement stabilité ESP32). Pour inputs, configurer pin HIGH d'abord puis lire (architecture quasi-bidirectionnelle). Relais 8+ canaux : alimentation externe 5V 1A+ obligatoire, déconnecter jumper JD-VCC, isoler alimentation bobines sinon brownout crash ESP32/PCF8575. Éviter lecture I²C depuis ISR (interrupt) sur ESP32 = plantage garanti, utiliser flag ISR + lecture loop(). Bibliothèques recommandées : Renzo Mischianti (xreef) ou RobTillaart. État initial pins = HIGH au power-on, prévoir logique inversée sorties ou utiliser transistors/drivers.

📝 Retour d'expérience

Retours forums unanimes : problèmes pads adresse flottants = cauchemar debugging intermittent. Modules chinois AliExpress/eBay fiables si vérifier soudures. Pour relais, alimentation séparée NON-négociable, nombreux cas brownout ESP32. Interruptions PCF8575 limitées vs MCP23017 mais suffisantes majorité projets. Bibliothèque Mischianti excellente, exemples clairs, support actif. Éviter absolument lecture I²C ISR ESP32. État HIGH initial outputs piège classique = relais activés au boot, anticiper avec logique active-low ou init rapide sketch.

Caractéristiques Principales

  • interface I²C jusqu’à 400 kHz
  • 16 broches d’E/S quasi-bidirectionnelles
  • compatibilité 5 V
  • faible consommation
  • adressage matériel configurable
  • intégration simple avec microcontrôleurs

Applications Typiques

extension d’E/S contrôle de clavier pilotage de LED lecture d’interrupteurs

📄 Consulter la documentation