PCF8574: ກ່ຽວກັບ I2C I / O Expander ສຳ ລັບ Arduino

PCF8574 TI CHIP

ທ່ານໄດ້ຍິນແນ່ນອນກ່ຽວກັບເລື່ອງນີ້ IC PCF8574, ຊິບເຊັດທີ່ສາມາດຊື້ແຍກຕ່າງຫາກຫຼືຕິດຕັ້ງຢູ່ເທິງໂມດູນຄືກັບຫຼາຍໆລຸ້ນອື່ນໆ ສ່ວນປະກອບເອເລັກໂຕຣນິກ ເພື່ອອໍານວຍຄວາມສະດວກໃຫ້ແກ່ການເຊື່ອມໂຍງຂອງທ່ານກັບກະດານ Arduino ຂອງທ່ານ. ໃນກໍລະນີນີ້, ມັນແມ່ນການຂະຫຍາຍວັດສະດຸປ້ອນເຂົ້າແລະຜົນໄດ້ຮັບ ສຳ ລັບ ລົດເມ I2C.

ທ່ານອາດຈະຄິດວ່າ Arduino ມີຂອງຕົນເອງແລ້ວ ລົດເມ I2C ປະສົມປະສານ, ແລະມັນແມ່ນຄວາມຈິງ. ແຕ່ PCF8574 ສາມາດຊ່ວຍຂະຫຍາຍລົດເມນັ້ນກາຍຂີດ ຈຳ ກັດຂອງກະດານພັດທະນາຂອງທ່ານ, ເຊິ່ງສາມາດເປັນປະໂຫຍດຫຼາຍຕໍ່ຜູ້ຜະລິດບາງຄົນທີ່ຕ້ອງການຫຼາຍກວ່າສິ່ງທີ່ Arduino ສະ ໜອງ ໃຫ້.

ລົດເມ I2C ແມ່ນຫຍັງ?

Arduino UNO ຫນ້າທີ່ millis

ຊື່ I2C ແມ່ນມາຈາກ ວົງຈອນປະສົມປະສານລະຫວ່າງກັນ ຫຼືວົງຈອນປະສົມປະສານລະຫວ່າງກັນ. ຮຸ່ນ 1.0 ຂອງມັນຖືກສ້າງຂື້ນໃນປີ 1992 ໂດຍ Philips. ຫຼັງຈາກນັ້ນວິນາທີ 2.1 ຈະມາໃນປີ 2000 ແລະມື້ນີ້ມັນໄດ້ກາຍເປັນມາດຕະຖານ (ທີ່ 100 kbit / s, ເຖິງແມ່ນວ່າມັນອະນຸຍາດສູງເຖິງ 3.4 Mbit / s ສູງສຸດ) ເມື່ອສິດທິບັດ ໝົດ ອາຍຸໃນປີ 2006 ແລະສາມາດ ນຳ ໃຊ້ໄດ້ຢ່າງເສລີ.

ໃນປະຈຸບັນມັນຖືກນໍາໃຊ້ຢ່າງກວ້າງຂວາງໃນອຸດສາຫະກໍາ ສໍາລັບການສື່ສານ, ແລະຍັງໄດ້ຮັບການຍົກຍ້ອງຫຼາຍຈາກບັນດາຜູ້ຜະລິດ ສຳ ລັບໂຄງການຂອງພວກເຂົາໃນການສື່ສານກັບຜູ້ຄວບຄຸມຈຸລະພາກແລະອຸປະກອນເສີມຕ່າງໆທີ່ປະສົມປະສານເຂົ້າໃນ IC ດຽວ.

El ລົດ I2C ແມ່ນລົດເມ ເປັນທີ່ຮູ້ຈັກດີຈາກການສື່ສານ serial. ມັນໃຊ້ອະນຸສັນຍາການສື່ສານແບບປະສານງານທີ່ມີພຽງແຕ່ 2 ຊ່ອງທາງ (ມີຊ່ອງທາງທີສາມ, ແຕ່ມັນຖືກບວກກັບການອ້າງອີງຫຼື GND), ໃນຄວາມເປັນຈິງມັນຍັງຖືກເອີ້ນວ່າ TWI (Two Wire Interface):

  • ໜຶ່ງ ສຳ ລັບໂມງ (SCL).
  • ອື່ນໆ ສຳ ລັບຂໍ້ມູນ (SDA).
ທັງສອງແມ່ນເຊື່ອມຕໍ່ລະບາຍນ້ ຳ CMOS ແບບເປີດແລະຕ້ອງໃຊ້ຕົວຕ້ານທານດຶງ. ຍິ່ງໄປກວ່ານັ້ນ, ຖ້າອຸປະກອນໃດ ໜຶ່ງ ສົ່ງສັນຍານ 0 ແລະເຄື່ອງອື່ນ 1, ອາດຈະມີບັນຫາ, ນັ້ນແມ່ນເຫດຜົນທີ່ສາຍຕັ້ງເປັນ 1 (ລະດັບສູງ) ແລະອຸປະກອນຕ່າງໆຈະສົ່ງຕໍ່ 0 (ລະດັບຕໍ່າ).

ນັ້ນ ໝາຍ ຄວາມວ່າ ຕົ້ນສະບັບແລະສໍາລອງ ພວກເຂົາສົ່ງຂໍ້ມູນຜ່ານສາຍຫລືສາຍດຽວກັນ, ເຊິ່ງຄວບຄຸມໂດຍສາຍ ທຳ ອິດທີ່ສ້າງສັນຍານໂມງ. ແຕ່ລະເຄື່ອງອຸປະກອນທີ່ເຊື່ອມຕໍ່ກັບລົດເມ I2C ຈະມີທີ່ຢູ່ທີ່ເປັນເອກະລັກໄດ້ຮັບມອບ ໝາຍ, ເພື່ອໃຫ້ການ ນຳ ສົ່ງຕໍ່ໂດຍກົງ. ແຕ່ມັນບໍ່ແມ່ນສິ່ງ ຈຳ ເປັນທີ່ວ່າຄູແມ່ນຜູ້ດຽວກັນ (ຄູຫຼາຍຄົນ), ມັນແມ່ນຜູ້ທີ່ເປັນຜູ້ລິເລີ່ມການໂອນຍ້າຍຕະຫຼອດເວລາ.

ດັ່ງທີ່ຂ້າພະເຈົ້າໄດ້ອະທິບາຍຢູ່ໃນບົດຂຽນກ່ຽວກັບ Arduino I2C ຂ້າພະເຈົ້າໄດ້ອ້າງອີງກ່ອນຫນ້ານີ້, ແຕ່ລະກະດານມີການເຊື່ອມຕໍ່ I2C ເຫຼົ່ານີ້ຢູ່ໃນສະຖານທີ່ຕ່າງໆ. ມັນແມ່ນບາງສິ່ງບາງຢ່າງທີ່ທ່ານຕ້ອງຈື່ໄວ້ເພື່ອຈະສາມາດໃຊ້ມັນໄດ້ຢ່າງຖືກຕ້ອງໃນແຕ່ລະຮຸ່ນຂອງແຜ່ນ:

ທ່ານຮູ້ແລ້ວວ່າທ່ານສາມາດໃຊ້ I2C ສຳ ລັບການແຕ້ມຮູບຂອງທ່ານໄດ້ຢ່າງງ່າຍດາຍ, ນັບຕັ້ງແຕ່ ຫໍສະຫມຸດ Wire.h ມີ ໜ້າ ທີ່ຕ່າງໆ ສຳ ລັບການສື່ສານແບບນີ້:

  • ເລີ່ມຕົ້ນ (): ເລີ່ມຕົ້ນຫ້ອງສະຫມຸດລວດແລະລະບຸວ່າມັນເປັນຕົ້ນສະບັບຫລືທາດ
  • requestFrom (): ໃຊ້ໂດຍແມ່ບົດເພື່ອຂໍຂໍ້ມູນຈາກຂ້າທາດ.
  • ເລີ່ມຕົ້ນການຂົນສົ່ງ (): ເລີ່ມຕົ້ນການສົ່ງຕໍ່ກັບທາດ.
  • ການສົ່ງຕໍ່ (): ການສົ່ງຕໍ່ທ້າຍ.
  • ຂຽນ ()- ຂຽນຂໍ້ມູນຈາກຂ້າທາດໃນການຕອບສະ ໜອງ ຄຳ ຮ້ອງຂໍຈາກນາຍຊ່າງ, ຫລືທ່ານສາມາດລຽນແຖວການສົ່ງຕໍ່ຂອງແມ່ບົດ.
  • ມີ (): ຈະເອົາ ຈຳ ນວນໄບຕ໌ມາໃຫ້ອ່ານ.
  • ອ່ານ (): ອ່ານໄບຕ໌ທີ່ສົ່ງຈາກຂ້າທາດໄປຫາແມ່ບົດຫຼືໃນທາງກັບກັນ.
  • onReceive (): ເອີ້ນ ໜ້າ ທີ່ເມື່ອຂ້າທາດໄດ້ຮັບການສົ່ງຕໍ່ຈາກແມ່ບົດ.
  • onRequest (): ເອີ້ນ ໜ້າ ທີ່ເມື່ອຂ້າທາດຂໍຂໍ້ມູນຈາກແມ່ບົດ.

para ຂໍ້ມູນເພີ່ມເຕີມ ກ່ຽວກັບການຂຽນໂປແກຼມ Arduino ແລະ ໜ້າ ທີ່ທ່ານສາມາດດາວໂຫລດຂອງພວກເຮົາ ການສອນແບບ PDF.

PCF8574 ແມ່ນຫຍັງ?

ໂມດູນ PCF8574

PCF8574 ແມ່ນກ ວັດສະດຸປ້ອນແລະຜະລິດດີຈີຕອນລົດເມຂອງລົດ I2C (I / O). ມັນສາມາດຜະລິດໂດຍຜູ້ຜະລິດຕ່າງໆ, ນອກ ເໜືອ ຈາກມັນມີຢູ່ໃນ ICs ແລະໂມດູນ. ໃນກໍລະນີໃດກໍ່ຕາມ, ມັນເປັນການປະຕິບັດຫຼາຍທີ່ຈະເຊື່ອມຕໍ່ມັນກັບກະດານ Arduino ຂອງທ່ານແລະມີຄວາມສາມາດໃນການຄວບຄຸມອຸປະກອນຫຼາຍກ່ວາ motherboard ທີ່ອະນຸຍາດ.

El ເຂັມ PCF8574 ມັນແມ່ນງ່າຍດາຍ, ເພາະວ່າມັນພຽງແຕ່ປະກອບມີ 8 ເຂັມ ທິດທາງ quasi (P0-P7 ທີ່ຊິບເຊັດເພື່ອສື່ສານແມ່ນເຊື່ອມຕໍ່), ແລະໃນທາງກັບກັນທ່ານມີ SDA ແລະ SCL ທີ່ທ່ານຕ້ອງເຊື່ອມຕໍ່ກັບກະດານ Arduino, ເຊັ່ນດຽວກັນກັບ VCC ແລະ GND ເພື່ອເຮັດໃຫ້ໂມດູນໃຊ້ໄດ້ເຊັ່ນກັນ. ແລະຢ່າລືມສາມເຂັມທີ່ຢູ່ A0, A1, A2 ເພື່ອເລືອກອຸປະກອນໃດ ໜຶ່ງ ທີ່ການສື່ສານ ກຳ ລັງມຸ້ງໄປສູ່ ...

ເຂັມ PCF8574

ເປັນເຈົ້າຂອງ ລັກສະນະອື່ນໆ ທີ່ທ່ານຄວນຮູ້:

  • ການເຊື່ອມຕໍ່ຂອງມັນ, ເປັນການລະບາຍເປີດ, ສາມາດເປັນໄດ້ ໃຊ້ທັງເປັນວັດສະດຸປ້ອນແລະຜົນຜະລິດ.
  • La ປະຈຸບັນສູງສຸດ ມັນແມ່ນ 25mA ໃນເວລາທີ່ມັນເຮັດຫນ້າທີ່ເປັນຜົນຜະລິດ (ຈົມລົງ, ໃນເວລາທີ່ກະແສໄປສູ່ PCF8574) ແລະ 300 µA (ແຫຼ່ງ, ກະແສປະຈຸບັນຈາກ PCF8574).
  • La ຄວາມຕຶງຄຽດ ການສະຫນອງພະລັງງານແມ່ນ 2.5 ແລະ 6v. ການຊົມໃຊ້ແບບຍືນຍົງແມ່ນຕໍ່າຫຼາຍ, ພຽງແຕ່ 10 µA.
  • ຜົນໄດ້ຮັບທັງ ໝົດ ມີຜ້າກັນເປື້ອນ, ເພື່ອຮັກສາລັດໂດຍບໍ່ ຈຳ ເປັນຕ້ອງມີການກະ ທຳ ຈາກພາຍນອກ. ທ່ານພຽງແຕ່ຕ້ອງປະຕິບັດເມື່ອທ່ານຕ້ອງການປ່ຽນລັດ.
  • ທ່ານສາມາດໄດ້ຮັບ 8 ທິດທາງທີ່ເປັນໄປໄດ້, ນັ້ນແມ່ນ, ເຖິງ 8 ອຸປະກອນເພື່ອສື່ສານກັບຫຼື ນຳ ໃຊ້ 8 ໂມດູນເພື່ອຂະຫຍາຍມັນໄດ້ເຖິງ 64 ອຸປະກອນ. ທີ່ຢູ່ (pins A0, A1, A2) ຈະເປັນ:
    • 000: ທີ່ຢູ່ 0x20
    • 001: ທີ່ຢູ່ 0x21
    • 010: ທີ່ຢູ່ 0x22
    • 011: ທີ່ຢູ່ 0x23
    • 100: ທີ່ຢູ່ 0x24
    • 101: ທີ່ຢູ່ 0x25
    • 110: ທີ່ຢູ່ 0x26
    • 111: ທີ່ຢູ່ 0x27
  • ຍອມຮັບ ການຂັດຂວາງ (INT) ໂດຍສາຍພິເສດເພື່ອກວດພົບຂໍ້ມູນໂດຍບໍ່ມີການຕິດຕາມຢ່າງຕໍ່ເນື່ອງ.

ການປະສົມປະສານກັບ Arduino

ພາບ ໜ້າ ຈໍຂອງ Arduino IDE

ການເຊື່ອມຕໍ່ກັບ Arduino ແມ່ນງ່າຍດາຍຫຼາຍ, ທ່ານພຽງແຕ່ຕ້ອງເຊື່ອມຕໍ່ Vcc ກັບ pin 5v ຂອງກະດານ Arduino, ແລະ GND ກັບ GND ຂອງ Arduino. ໃນທາງກົງກັນຂ້າມ, ເຂັມຂອງໂມດູນ PCF8574 SDA ແລະ SCL ສາມາດເປັນໄດ້ ເຊື່ອມຕໍ່ກັບ pins 14 (A5 SCL) ແລະ 15 (A4 SDA). ພຽງແຕ່ກັບມັນມັນຈະເລີ່ມເຮັດວຽກ, ແນ່ນອນທ່ານສາມາດໃຊ້ Px ເພື່ອເຊື່ອມຕໍ່ອຸປະກອນທີ່ທ່ານຕ້ອງການສື່ສານ ...

ຫຼັງຈາກນັ້ນມັນຈະຫາຍໄປເທົ່ານັ້ນ ເລີ່ມຕົ້ນດ້ວຍການແຕ້ມຮູບຕົວຢ່າງ ໃນ Arduino IDE. ທ່ານສາມາດເຮັດໄດ້ໂດຍບໍ່ຕ້ອງໃຊ້ຫໍສະມຸດເພີ່ມເຕີມເຊັ່ນ ...

#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);
   }
}

ເປັນການປ້ອນຂໍ້ມູນ:

#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);
}

ຫລືຍັງ ໃຊ້ຫ້ອງສະ ໝຸດເຊັ່ນ PCF8574 ທີ່ທ່ານສາມາດເຮັດໄດ້ ດາວໂຫລດທີ່ນີ້ ແລະໃຊ້ລະຫັດທີ່ຄ້າຍຄືກັບຕົວຢ່າງນີ້ຈາກຕົວຢ່າງຂອງມັນເອງທີ່ມາພ້ອມກັບຫໍສະມຸດແຫ່ງນີ້:

#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() 
{
}


ເນື້ອໃນຂອງບົດຂຽນຍຶດ ໝັ້ນ ຫລັກການຂອງພວກເຮົາ ຈັນຍາບັນຂອງບັນນາທິການ. ເພື່ອລາຍງານການກົດຜິດພາດ ທີ່ນີ້.

ເປັນຄົນທໍາອິດທີ່ຈະໃຫ້ຄໍາເຫັນ

ອອກ ຄຳ ເຫັນຂອງທ່ານ

ທີ່ຢູ່ອີເມວຂອງທ່ານຈະບໍ່ໄດ້ຮັບການຈັດພີມມາ. ທົ່ງນາທີ່ກໍານົດໄວ້ແມ່ນຫມາຍດ້ວຍ *

*

*

  1. ຮັບຜິດຊອບຕໍ່ຂໍ້ມູນ: Miguel ÁngelGatón
  2. ຈຸດປະສົງຂອງຂໍ້ມູນ: ຄວບຄຸມ SPAM, ການຈັດການ ຄຳ ເຫັນ.
  3. ກົດ ໝາຍ: ການຍິນຍອມຂອງທ່ານ
  4. ການສື່ສານຂໍ້ມູນ: ຂໍ້ມູນຈະບໍ່ຖືກສື່ສານກັບພາກສ່ວນທີສາມຍົກເວັ້ນໂດຍພັນທະທາງກົດ ໝາຍ.
  5. ການເກັບຂໍ້ມູນ: ຖານຂໍ້ມູນທີ່ຈັດໂດຍ Occentus Networks (EU)
  6. ສິດ: ໃນທຸກເວລາທີ່ທ່ານສາມາດ ຈຳ ກັດ, ກູ້ຄືນແລະລຶບຂໍ້ມູນຂອງທ່ານ.