PCF8574: À propos de l'extension d'E / S I2C pour Arduino

PUCE PCF8574 TI

Vous avez sûrement entendu parler du CI PCF8574, une puce qui peut être achetée séparément ou déjà montée sur un module comme beaucoup d'autres composants électroniques pour faciliter votre intégration avec votre carte Arduino. Dans ce cas, il s'agit d'un prolongateur des entrées et sorties pour le bus I2C.

Vous pensez peut-être qu'Arduino a déjà le sien bus I2C intégré, et c'est vrai. Mais le PCF8574 peut aider à étendre ce bus au-delà des limites de votre carte de développement, ce qui peut être d'une grande aide pour certains fabricants qui ont besoin de plus que ce que fournit Arduino.

Qu'est-ce que le bus I2C?

Arduino UNO fonctions millis

Le nom I2C vient de Circuit inter-intégré ou circuits inter-intégrés. Sa version 1.0 a été créée en 1992 par Philips. Puis un deuxième 2.1 viendrait en 2000 et aujourd'hui il est devenu un standard (à 100 kbit / s, bien qu'il autorise jusqu'à 3.4 Mbit / s maximum) lorsque le brevet a expiré en 2006 et peut être utilisé librement.

À l'heure actuelle, il est largement utilisé dans l'industrie pour la communication, et également très appréciée des fabricants pour leurs projets de communication de différents microcontrôleurs et périphériques intégrés dans un même circuit intégré.

El I2C est un bus communication série bien connue. Il utilise un protocole de communication synchrone avec seulement 2 canaux (il y en a un troisième, mais il est couplé à une référence ou GND), en fait il est également connu sous le nom de TWI (Two Wire Interface):

  • Un pour l'horloge (SCL).
  • Autre pour les données (SDA).
Les deux sont des connexions CMOS à drain ouvert et nécessitent des résistances de rappel. De plus, si un appareil transmet un 0 et un autre un 1, il peut y avoir des problèmes, c'est pourquoi la ligne est toujours à 1 (niveau haut) et les appareils transmettent toujours 0 (niveau bas).

Cela implique que le maître et esclave ils envoient des données sur le même câble ou piste, qui est contrôlé par le premier qui est celui qui génère le signal d'horloge. Chacun des périphériques connectés au bus I2C aura une adresse unique attribuée, afin de diriger les transmissions. Mais il n'est pas nécessaire que l'enseignant soit toujours le même (multi-enseignant), c'est toujours lui qui initie le transfert.

Comme je l'ai déjà expliqué dans l'article sur Arduino I2C J'ai fait référence plus tôt, chaque carte a ces connexions I2C à différents endroits. C'est quelque chose que vous devez garder à l'esprit pour pouvoir l'utiliser correctement dans chaque version de plaque:

  • Arduino UNO: SDA est en A4 et SCK en A5
  • Arduino Nano: le même que le précédent.
  • Arduino Mini Pro: égal.
  • Mega Arduino: SDA est sur la broche 20 et SCK sur 21.
  • Plus d'informations sur les plaques.

Vous savez déjà que vous pouvez facilement utiliser l'I2C pour vos croquis, car le Bibliothèque Wire.h avec différentes fonctions pour cette communication série:

  • commencer (): lancez la bibliothèque Wire et spécifiez si elle est maître ou esclave
  • demande de (): utilisé par le maître pour demander des données à l'esclave.
  • beginTransmission (): démarrer la transmission avec l'esclave.
  • endTransmission (): terminer la transmission.
  • écrire ()- Écrire les données d'un esclave en réponse à une demande du maître ou vous pouvez mettre en file d'attente la transmission d'un maître
  • disponible (): retournera le nombre d'octets à lire.
  • lis(): lit un octet transmis d'un esclave à un maître ou vice versa.
  • onReceive (): Appelle une fonction lorsqu'un esclave reçoit une transmission d'un maître.
  • sur demande (): Appelle une fonction lorsqu'un esclave demande des données à un maître.

pour plus d'informations sur la programmation et les fonctions Arduino, vous pouvez télécharger notre Tutoriel PDF.

Qu'est-ce que le PCF8574?

Module PCF8574

Le PCF8574 est un Expanseur d'entrées et de sorties numériques (E / S) bus I2C. Il peut être fabriqué par divers fabricants, en plus d'être disponible dans des circuits intégrés et des modules. Dans tous les cas, il est très pratique de le connecter à votre carte Arduino et d'avoir la capacité de contrôler plus d'appareils que la carte mère ne le permet.

El Brochage PCF8574 C'est simple, car il ne comprend que Pins 8 quasi-directionnel (P0-P7 où les puces à communiquer sont connectées), et par contre vous avez les SDA et SCL que vous devez connecter à la carte Arduino, ainsi que VCC et GND pour alimenter également le module. Et n'oubliez pas les trois broches d'adressage A0, A1, A2 pour choisir vers lequel des appareils la communication est dirigée ...

Brochage PCF8574

Il possède autres fonctionnalités que vous devez savoir:

  • Ses connexions, étant un drain ouvert, peuvent être utilisé à la fois comme entrées et sorties.
  • La courant de crête il est de 25 mA lorsqu'il agit comme une sortie (puits, lorsque le courant circule vers le PCF8574) et de 300 µA (source, le courant circule depuis le PCF8574).
  • La tension l'alimentation est de 2.5 et 6v. La consommation en veille est très faible, seulement 10 µA.
  • Tous les départs avoir des verrous, pour maintenir l'état sans la nécessité d'actions extérieures. Vous n'avez à agir que lorsque vous souhaitez changer d'état.
  • Vous pouvez obtenir 8 directions possibles, c'est-à-dire jusqu'à 8 appareils pour communiquer avec ou en utilisant 8 modules pour l'étendre jusqu'à 64 appareils. Les adresses (broches A0, A1, A2) seront:
    • 000: adresse 0x20
    • 001: adresse 0x21
    • 010: adresse 0x22
    • 011: adresse 0x23
    • 100: adresse 0x24
    • 101: adresse 0x25
    • 110: adresse 0x26
    • 111: adresse 0x27
  • Admet interruption (INT) par une ligne spéciale pour détecter les données sans surveillance constante.

Intégration avec Arduino

Capture d'écran Arduino IDE

La connexion avec Arduino est très simple, il vous suffit de connecter Vcc avec la broche 5v de la carte Arduino, et GND avec GND d'Arduino. D'autre part, les broches du module PCF8574 SDA et SCL peuvent être se connecter avec des broches 14 (A5 SCL) et 15 (A4 SDA). Seulement avec ça ça commencerait à fonctionner, évidemment vous pouvez utiliser le Px pour connecter les appareils que vous souhaitez communiquer ...

Alors ça ne manquerait plus commencer par un exemple d'esquisse dans Arduino IDE. Vous pouvez le faire sans utiliser de bibliothèque supplémentaire comme par exemple ...

#include <Wire.h>
 
const int address = 0x38;
 
void setup()
{
   Wire.begin();
   Serial.begin(9600);
}
 
void loop()
{
   for (short channel = 0; channel < 8; channel++)
   {
      // Escribir dato en cada uno de los 8 canales
      Wire.beginTransmission(address);
      Wire.write(~(1 << channel));
      Wire.endTransmission();
      
      // Lee dato del canal
      delay(500);
   }
}

En entrée:

#include <Wire.h>
 
const int address = 0x38;
 
void setup()
{
   Wire.begin();
   Serial.begin(9600);
}
 
void loop()
{
   short channel = 1;
   byte value = 0;
 
   // Leer el dato del canal
   Wire.requestFrom(pcfAddress, 1 << channel);
   if (Wire.available())
   {
      value = Wire.read();
   }
   Wire.endTransmission();
 
   // Mostrar el valor leido por el monitor serie
   Serial.println(value);
}

Ou aussi utiliser des bibliothèques, comme le PCF8574 que vous pouvez télécharger ici et utilisez un code similaire à celui de l'exemple lui-même qui accompagne cette bibliothèque:

#include <Wire.h>
#include "PCF8574.h"
 
PCF8574 expander;
 
void setup() 
{
  Serial.begin(9600);
  
  expander.begin(0x20);
  
  /* Setup some PCF8574 pins for demo */
  expander.pinMode(0, OUTPUT);
  expander.pinMode(1, OUTPUT);
  expander.pinMode(2, OUTPUT);
  expander.pinMode(3, INPUT_PULLUP);
 
  /* Blink hardware LED for debug */
  digitalWrite(13, HIGH);  
  
  /* Toggle PCF8574 output 0 for demo */
  expander.toggle();
  
  /* Blink hardware LED for debug */
  digitalWrite(13, LOW);
}
 
 
 
void loop() 
{
}


Le contenu de l'article adhère à nos principes de éthique éditoriale. Pour signaler une erreur, cliquez sur c'est par ici !.

Soyez le premier à commenter

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.