Problème chute de tension PF575 et PCF8575 / PCF8574

Bonjour,

étant nouveaux de le monde de l'arduino (un ami m'a donné un peut tout ce qu'il avais puisqu'il ne l'utilise plus) je suis un peut perdu sur l'une des carte qu'il m'as donnée.
En effet, j'ai bien comprit que l'extension PF575 (1Set IIC I2C I/O Extension Shield Module PCF8575 16 I/O Ports 400KHz I2C Bus For Arduino Support Most Microcontrollers DC 2.5V 5|shield arduino|dc dc - AliExpress) celle que l'on peut voir sur les photos du liens, est une extension d'I/O pour l'arduino en passant par les I/O analogique.

Mon problème est que je ne trouve aucune info sur comment utilisé cette carte dans mon programme, pour pouvoir utiliser c'est I/O supplémentaire. Je n'ai aucune idée sur comment cela se programme.

Je vous remercie d'avance pour vos conseils.
Bonne journée.

Bonjour

Mon problème est que je ne trouve aucune info sur comment utilisé cette carte dans mon programme

Bizarre....un moteur de recherche basique , lancé avec les mots clefs "PCF8575 Arduino" ramène du monde (10 pages de liens...) :

Exemples, tutoriels, librairie........

Bas le truc c'est que sur ma carte il est écrit PF575 (comme sur les photos dans le liens mais pas comme le titre) et non pas PCF8575.
Mais si vous me dite que c'est la même chose je vais allez voir çà rapidement.

toujours avec mon moteur de recherche :wink: ....."PF575 Arduino"
donne par exemple ce lien.......;
Si je comprend bien tu es en train de 'sous-traiter" la recherche....

ce n'est pas compliqué, mettre 2 ou 3 mots adaptés dans la petite fenêttre et cliquer !!

Je dirais plutôt que moi et l'anglais ça fait deux. Et jusqu'à maintenant je n'ai trouvé que deux sites ou les explications sont en anglais (ton lien et un autre). Mais tant pis, je pense qu'il n'y a aucune info dessus en français. Je n'ai plus qu'à jouer avec google traduction^^

Une recherche avec les mots :
PCF8574 librairie arduino
donne un grand nombre de résultat dont certain en français.
Les bibliothèques (librairies) sont généralement acompagnées d'exemples d'applications qui facilitent son utilisation.

Ce qu'il faut savoir sur le PCF8574 (ou 8575) c'est qu'il est qualifié d'expenseur "quasi" dirrectionel.
Le mot "quasi" à son importance. On ne peut pas forcer une E/S soit en entrée soit en sortie.

Le PCF8574 n'a naturellement que des sorties.
Mais ce sont des sorties particulières : si par exemple par le microcontroleur on écrit un "1" sur la broche 5 et que on vienne à appliquer un "0" sur cette même broche :

  1. le PCF8574 ne sera pas détruit
  2. Il s'en rendra compte et générera un signal d'alerte pour le microcontrôleur.
  3. Si l'auteur du programme a prévu de gérer ce cas il utilisera ce signal d'alerte dans une interruption qui viendra lire toutes les sorties pour voir laquelle a changé d'état.

Autrement dit vu que tu débutes je te conseille fortement d'oublier cette fonctionnalité et de n'utiliser le PCF8574 qu'en expenseur de sorties.

Si un jour tu avais besoin d'un circuit expenseur d'entrées il existe d'autres produits bien plus modernes qui gèrent le sens entrée ou sortie bien plus simplement.

Et parfois il ne faut pas aller bien loin pour trouver de l'information.
Dans notre sous forum "Tuto et Cours" notre collègue hbachetti a écrit un long article sur les expenseurs, je te laisse le lire sur le lien :
https://riton-duino.blogspot.com/2019/02/

S'il te plaît change le titre de ton PREMIER message en PCF8574 car les titres sont utilisés par ceux qui font des recherches sur le forum (la loupe) , autant que les informations qui te sont donnés puissent servir à d'autres.

S’il te plaît change le titre de ton PREMIER message en PCF8574 car les titres sont utilisés par ceux qui font des recherches sur le forum (la loupe) , autant que les informations qui te sont donnés puissent servir à d’autres.

De ce point de vue il est intéressant que le titre continue de comporter le nom de la puce (PF575) effectivement présente sur cette carte particulière.( clone de PCF8575 ? marquage spécifique ?)
Capture d’écran du 2019-02-09 19-05-32.png

D’autres utilisateurs tomberont peut être dans le même ‘piège’ avec cette carte toujours diffusée.

Le mieux est d’associer PF575 et PCF8575 / PCF8574 dans le titre, sans faire disparaitre le problème sous le tapis.

Ainsi il subsistera une trace du lien entre PF275 / PCF8575 / PCF8574

Merci beaucoup pour vos réponse.
J'ai changé le titre comme demandé.

Sinon dommage, je l'aurai bien utilisé en temps qu'entrées supplémentaire!!!

Si tout de même je voulais l’utiliser pour un clavier 4x4 je ne vois pas trop comment programmer le code avec la biblio keypad et pcf8575 en même temps.

je ne veut pas essayer en réel pour ne rien détruire, mais est-ce que l’idée serais là?

#include <Wire.h>    // Required for I2C communication
#include "PCF8575.h" // Required for PCF8575
#include <Keypad.h> // inclusion de la librairie pour clavier matriciel 
// --- Déclaration des constantes ---

//--- Constantes utilisées avec le clavier 4x4
const byte LIGNES = 4; // 4 lignes
const byte COLONNES = 4; //4 colonnes


// --- constantes des broches ---

const int C4=expender.(0); //declaration constante de broche 
const int C3=expender.(1); //declaration constante de broche 
const int C2=expender.(2); //declaration constante de broche 
const int C1=expender.(3); //declaration constante de broche 
const int L4=expender.(4); //declaration constante de broche 
const int L3=expender.(5); //declaration constante de broche 
const int L2=expender.(6); //declaration constante de broche 
const int L1=expender.(7); //declaration constante de broche 

//--- Définition des touches 
char touches[LIGNES][COLONNES] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};

// tableaux de lignes et colonnes
byte BrochesLignes[LIGNES] = {L1, L2, L3, L4}; //connexions utilisées pour les broches de lignes du clavier
byte BrochesColonnes[COLONNES] = {C1, C2, C3, C4}; //connexions utilisées pour les broches de colonnes du clavier

char touche; // variable de stockage valeur touche appuyée

Keypad clavier = Keypad( makeKeymap(touches), BrochesLignes, BrochesColonnes, LIGNES, COLONNES );


void setup() {

  Serial.begin(115200);

  expander.begin(0x20);

}

void loop() {
  // put your main code here, to run repeatedly:

}

Sinon dommage, je l'aurai bien utilisé en temps qu'entrées supplémentaire!!!

Pour quelques dizaines de centimes tu peux obtenir sur internet des produits cités dans le bloc d'hbachetti soit en I2C soit en SPI.

Coupler deux librairies PCF8575 et KEYPAD ne donnera rien.
La librairie KEYPAD n'utilisera pas les routines de la librairie PCF8575 pour lire le clavier.

Il existe une librairie PCF8575-KEYPAD.

Jamais essayé.

Tout dépend si tu as déjà acheté le PCF8575 ou non.

Autrement il existe des composants plus adaptés pour lire un clavier :

  • HT16K33 : 13x3 touches
  • SX1509 : 64 touches
  • TM1637 : 16 touches
  • TM1638 : 24 touches

Et même des produits prêt à l'emploi :

Nouvelle question.

Aujourd'hui j'ai enfin pu l'essayer en temps que sortie.
Mais j'ai un petit souci.
J'ai câblé de la façon suivante :

GND sur le GND de l'arduino.
VCC sur le VCC de l'arduino.
A0,A1,A2 au GND.
SCL sur SCL.
SDA su SDA.
1 led sur une sortie du module.

Sauf que j'ai bien 4,942V sur le VCC, mais je n'ai que 1,711V sur la sortie.
En rajoutant une résistance de 220ohms avec la led j'ai 1,746V.
Si je mesure sans charge (en débranchant tout ce qui est après la sortie) j'ai bien 4,934V.

Comme la tension s'écroule dès qu'il y a la moindre charge sur les sorties du module, je ne vois pas l'utilité de ce genre de composant. Sauf si il y a quelque chose que je ne comprend pas ou que j'aurais mal fait.

Si vous n'avez pas de solution à ce problème je pense que je vais m'acheter une carte MEGA parce que là je me sent vraiment limité par ces 13 I/O et 6Analogiques.

Pas de courant important sortant de ces CI (30µA garantis en continu)
C’est en rapport avec le terme ‘quasi bidirectionnel’ employé plus haut dans un message.

Par contre le courant entrant dans une sortie à l’état bas peut être important (5 à 10mA garantis)

Ils sont donc adaptés à la commande de leds dont l’anode est à Vcc, d’afficheurs à anode commune…
Capture d’écran du 2019-02-11 23-38-36.png

Du coup l'idée de piloter des relais avec (même si l'alimentation des relais est séparé) je peut oublier?

oublier ? non. Le pilotage de relais se fait souvent avec un opto coupleur intérmédiaire.

Non pas forcément car les modules relais sont généralement équipé d'un transistor en entrée qui fait office d'amplificateur de courant. Pour répondre avec certitude il faut soit mesurer le courant qui entre dans le module, un multimètre en position ampèremetre convient, soit le calculer en fonction des paramètres du transistor et de la bobine du relais quand on les a.

Et puis il n'est obligatoire que le relai s'enclenche sur un niveau haut !
C'est toi le patron, c'est toi qui décide ! Rien n'interdit de dire que le niveau actif sera le niveau bas qui permet de tirer plus de courant que sur le niveau haut.

D'une manière générale quand tu utilises un composant que tu ne connais pas il faut lire ses spécifications techniques, le terme habituel est "datasheet" , littéralement "feuille de donnée".
Voir les "absolute ratings" qui sont les valeurs à ne jamais dépasser et à ne surtout pas utiliser en permanence, et les "electrical rating" qui sont les conditions d'emploi normales.

Dans tes premiers messages tu exposais que tu avais reçu "un paquet cadeau" avec des composants et que tu cherchais à voir comment ils s'utilisaient. Si maintenant avec l'expérience acquise tu cherches à réaliser un projet bien particulier il faut bien le définir pour trouver les bons composants.

Le lien que j'avais mis vers le blog d'hbachetti présente tous ces expenseurs avec leurs avantages et leurs inconvénients.

@A1fch : décidément vous êtes tous plus matinal que moi :slight_smile:

Une LED rouge a une tension directe de 1.8V minimum
(5V - 1.8V) / 220 = 14mA

Le PCF8575 : 4mA à l'état haut, 50mA à l'état bas.

68tjs:
Le lien que j'avais mis vers le blog d'hbachetti présente tous ces expenseurs avec leurs avantages et leurs inconvénients.

Oui. C'est clairement dit. Voir 5.6. Le PCF8575

Piloter un relais peut se faire avec soit un module tout fait intégrant un transistor de commande et éventuellement un opto, ou un relais et tu ajoutes toi-même le transistor : voir ICI.

Tu pourras utiliser le PCF8575 sans problème, et piloter le transistor avec une commande "état haut".

Attention certains modules relais se commandent avec un état bas, comme celui-ci :

Le PCF8575 : 4mA à l’état haut, 50mA à l’état bas.

tu est optimiste , hbachetti, la doc Texas Instruments promet , dans les tableaux, nettement moins , surtout à l’état haut !!
je parle içi du courant permanent en sortie à l’état haut IOH pas du bref courant ‘boosté’ IOHT (= transient pull up current)
En multiplexage de dels il est peut être possible de jouer en permanence avec ces courants transitoires ‘conséquents’ ?

(On voit aussi dans la doc des graphes assez contradictoires et je n’ai pas la puce sous la main pour trancher, c’sst une puce que je ne connais que ‘sur le papier’ … etje n’ai peut être pas bien compris la doc !!)

Apparemment :

Continuous output high current = –4mA

transient pull up current = -10mA

Mais c'est vrai qu'à l'état bas : 50mA maxi mais 25 mA recommandé

Alors je pourrait quand même piloter des relais grâce au système d’optocoupleur? jusqu'à combien?

Parce que si je comprend bien le système d'optocoupleur c'est la même chose qu'un transistor sauf que ce qui lui fait relayer le signal c'est une "led" plutôt qu'une tension.

Du coup, est ce que je n'aurais pas le même problème de chute de tension?