PCF8574: Arduino සඳහා I2C I / O Expander ගැන

PCF8574 TI CHIP

ඔබ නිසැකවම අසා ඇත IC PCF8574, වෙනමම මිලදී ගත හැකි හෝ දැනටමත් බොහෝ මොඩියුලයක සවි කර ඇති චිපයකි ඉලෙක්ට්රොනික සංරචක ඔබේ Arduino මණ්ඩලය සමඟ ඒකාබද්ධ වීමට පහසුකම් සැලසීමට. මෙම අවස්ථාවේ දී, එය සඳහා යෙදවුම් සහ ප්‍රතිදානයන්හි විස්තාරකයකි I2C බස් රථය.

Arduino දැනටමත් තමන්ගේම යැයි ඔබ සිතනු ඇත ඒකාබද්ධ I2C බස්, එය සත්‍යයකි. නමුත් PCF8574 මඟින් ඔබේ සංවර්ධන මණ්ඩලයේ සීමාවෙන් ඔබ්බට එම බස් රථය දිගු කිරීමට උපකාරී වන අතර එය Arduino සපයන දෙයට වඩා වැඩි යමක් අවශ්‍ය සමහර නිෂ්පාදකයින්ට විශාල උපකාරයක් විය හැකිය.

I2C බස් රථය යනු කුමක්ද?

Arduino UNO මිලි ශ්‍රිත

I2C යන නම පැමිණියේ අන්තර් ඒකාබද්ධ පරිපථය හෝ අන්තර් ඒකාබද්ධ පරිපථ. එහි 1.0 අනුවාදය 1992 දී පිලිප්ස් විසින් නිර්මාණය කරන ලදී. 2.1 දී දෙවන 2000 ක් පැමිණෙනු ඇති අතර 100 දී පේටන්ට් බලපත්‍රය කල් ඉකුත් වූ විට එය නිදහසේ භාවිතා කළ හැකි වන විට (එය 3.4 kbit / s උපරිම වේ.

වර්තමානයේ එය කර්මාන්තයේ බහුලව භාවිතා වේ සන්නිවේදනය සඳහා, සහ එක් අයිසී එකක ඒකාබද්ධ වී ඇති විවිධ ක්ෂුද්‍ර පාලක සහ පර්යන්ත සන්නිවේදනය කිරීම සඳහා නිෂ්පාදකයින් විසින් ඔවුන්ගේ ව්‍යාපෘති සඳහා බෙහෙවින් අගය කරනු ලැබේ.

El I2C යනු බස් රථයකි අනුක්‍රමික සන්නිවේදනයෙන් හොඳින් දන්නා කරුණකි. එය නාලිකා 2 ක් පමණක් සහිත සමමුහුර්ත සන්නිවේදන ප්‍රොටෝකෝලයක් භාවිතා කරයි (තුනෙන් එකක් ඇත, නමුත් එය යොමු කිරීම හෝ GND සමඟ සම්බන්ධ වේ), ඇත්ත වශයෙන්ම එය TWI (වයර් දෙක අතුරුමුහුණත) ලෙසද හැඳින්වේ:

  • ඔරලෝසුව සඳහා එකක් (SCL).
  • දත්ත සඳහා වෙනත් (SDA).
දෙකම විවෘත කාණු CMOS සම්බන්ධතා වන අතර ඒවා අදින්න ප්‍රතිරෝධක අවශ්‍ය වේ. එසේම, එක් උපාංගයක් 0 සහ තවත් 1 සම්ප්‍රේෂණය කරන්නේ නම්, ගැටළු ඇති විය හැකිය, එම නිසා රේඛාව සෑම විටම 1 (ඉහළ මට්ටමේ) ලෙස සකසා ඇති අතර උපාංග සෑම විටම 0 (පහත් මට්ටම) සම්ප්‍රේෂණය කරයි.

එයින් ගම්‍ය වන්නේ එම ස්වාමියා සහ දාසයා ඔවුන් එකම කේබල් හෝ ධාවන පථයක් හරහා දත්ත යවන අතර එය ඔරලෝසු සං .ාව ජනනය කරන පළමු එක මගින් පාලනය වේ. I2C බස් රථයට සම්බන්ධ සෑම පර්යන්ත උපාංගයක්ම සම්ප්‍රේෂණ මෙහෙයවීම සඳහා අද්විතීය ලිපිනයක් පවරා ඇත. නමුත් ස්වාමියා සැමවිටම එක හා සමාන බව අවශ්‍ය නොවේ (බහු මාස්ටර්), සෑම විටම මාරුවීම ආරම්භ කරන්නේ ඔහුය.

මම දැනටමත් ලිපියේ විස්තර කර ඇති පරිදි Arduino I2C මා කලින් සඳහන් කළ පරිදි, සෑම පුවරුවකම මෙම I2C සම්බන්ධතා විවිධ ස්ථානවල ඇත. සෑම තහඩු අනුවාදයකම එය නිසියාකාරව භාවිතා කිරීමට හැකිවීම ඔබ මතක තබා ගත යුතු දෙයකි:

  • Arduino UNO: SDA A4 හි සහ SCK A5 හි ඇත
  • ආර්ඩුයිනෝ නැනෝ: පෙර මෙන් ම ය.
  • ආර්ඩුයිනෝ මිනි ප්‍රෝ: එකම.
  • ආර්ඩුයිනෝ මෙගා: SDA පින් 20 සහ SCK 21 මත ඇත.
  • තහඩු පිළිබඳ වැඩි විස්තර.

ඔබගේ සිතියම් සඳහා I2C පහසුවෙන් භාවිතා කළ හැකි බව ඔබ දැනටමත් දනී Wire.h පුස්තකාලය මෙම අනුක්‍රමික සන්නිවේදනය සඳහා විවිධ කාර්යයන් සමඟ:

  • ආරම්භය (): වයර් පුස්තකාලය ආරම්භ කර එය ස්වාමියා හෝ වහලෙක් දැයි සඳහන් කරන්න
  • requestFrom () වෙතින්: දාසයාගෙන් දත්ත ඉල්ලා සිටීමට ස්වාමියා විසින් භාවිතා කරයි.
  • startTransmission (): දාසයා සමඟ සම්ප්‍රේෂණය ආරම්භ කරන්න.
  • endTransmission (): සම්ප්‍රේෂණය අවසන් කරන්න.
  • ලියන්න ()- ස්වාමියාගේ ඉල්ලීමකට ප්‍රතිචාර වශයෙන් වහලෙකුගෙන් දත්ත ලියන්න, නැතහොත් ඔබට ස්වාමියාගේ සම්ප්‍රේෂණය පෝලිම් ගත හැකිය.
  • පවතින (): කියවීමට බයිට් ගණන නැවත ලබා දෙනු ඇත.
  • කියවන්න(): වහලෙකුගේ සිට ස්වාමියා වෙත සම්ප්‍රේෂණය කරන ලද බයිට් එකක් කියවන්න.
  • onReceive (): දාසයෙකුට ස්වාමියාගෙන් සම්ප්‍රේෂණය ලැබෙන විට ශ්‍රිතයක් අමතයි.
  • onRequest (): දාසයෙක් ස්වාමියාගෙන් දත්ත ඉල්ලා සිටින විට ශ්‍රිතයක් අමතයි.

පැරා වැඩි විස්තර Arduino ක්‍රමලේඛනය සහ කාර්යයන් පිළිබඳව ඔබට අපගේ බාගත හැකිය PDF නිබන්ධනය.

PCF8574 යනු කුමක්ද?

PCF8574 මොඩියුලය

PCF8574 යනු අ I2C බස් ඩිජිටල් යෙදවුම් සහ ප්‍රතිදාන (I / O) විස්තාරකය. එය විවිධ නිෂ්පාදකයින්ට නිෂ්පාදනය කළ හැකි අතර, එය IC සහ මොඩියුල වලින් ලබා ගත හැකිය. ඕනෑම අවස්ථාවක, එය ඔබගේ Arduino පුවරුවට සම්බන්ධ කිරීම ඉතා ප්‍රායෝගික වන අතර මවු පුවරුව ඉඩ දෙන ප්‍රමාණයට වඩා උපාංග පාලනය කිරීමේ හැකියාව ඇත.

El PCF8574 pinout එය සරල බැවින් එය ඇතුළත් වේ 8 පයින් අර්ධ-දිශානුගත (P0-P7 සන්නිවේදනය කළ යුතු චිප්ස් සම්බන්ධ කර ඇති), අනෙක් අතට ඔබට SDA සහ SCL ඇත, ඔබ Arduino මණ්ඩලයට සම්බන්ධ විය යුතු අතර මොඩියුලය බල ගැන්වීම සඳහා VCC සහ GND ද ඇත. සන්නිවේදනය යොමු කර ඇති උපාංග මොනවාදැයි තෝරා ගැනීමට A0, A1, A2 යන ලිපිනයන් තුන අමතක නොකරන්න ...

PCF8574 පින්අවුට්

අයිති වෙනත් විශේෂාංග ඔබ දැනගත යුතු බව:

  • එහි සම්බන්ධතා විවෘත කාණු වීමක් විය හැකිය යෙදවුම් සහ ප්‍රතිදානයන් ලෙස භාවිතා කරයි.
  • La උපරිම ධාරාව එය ප්‍රතිදානයක් ලෙස ක්‍රියා කරන විට එය 25mA වේ (ගිලී යයි, ධාරාව PCF8574 දෙසට ගලා යන විට) සහ 300 µA (ප්‍රභවය, PCF8574 වෙතින් ධාරාව ගලා යයි).
  • La ආතතිය බල සැපයුම 2.5 සහ 6v වේ. ස්ථාවර පරිභෝජනය ඉතා අඩුය, 10 onlyA පමණි.
  • සියලුම ප්‍රතිදානයන් වැසිකිළි ඇත, බාහිර ක්‍රියාමාර්ගයකින් තොරව රාජ්‍යය පවත්වාගෙන යාම. ඔබ ක්‍රියා කළ යුත්තේ ඔබට රාජ්‍යය වෙනස් කිරීමට අවශ්‍ය වූ විට පමණි.
  • ඔබට 8 ක් ලබා ගත හැකිය හැකි දිශාවන්, එනම්, උපාංග 8 ක් දක්වා පුළුල් කිරීමට මොඩියුල 8 ක් සමඟ සන්නිවේදනය කිරීමට හෝ භාවිතා කිරීමට උපාංග 64 ක් දක්වා. ලිපින (අල්ෙපෙනති 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 Arduino පුවරුවේ 5v පින් සමඟ සම්බන්ධ කළ යුතු අතර GND Arduino හි GND සමඟ සම්බන්ධ කළ යුතුය. අනෙක් අතට, PCF8574 SDA සහ SCL මොඩියුලයේ අල්ෙපෙනති විය හැකිය අල්ෙපෙනති සමඟ සම්බන්ධ වන්න 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. දත්ත සඳහා වගකිව යුතු: මිගෙල් ඇන්ජල් ගැටන්
  2. දත්තවල අරමුණ: SPAM පාලනය කිරීම, අදහස් කළමනාකරණය.
  3. නීත්‍යානුකූලභාවය: ඔබේ කැමැත්ත
  4. දත්ත සන්නිවේදනය: නෛතික බැඳීමකින් හැර දත්ත තෙවන පාර්ශවයකට සන්නිවේදනය නොකෙරේ.
  5. දත්ත ගබඩා කිරීම: ඔක්සෙන්ටස් නෙට්වර්ක්ස් (EU) විසින් සත්කාරකත්වය දක්වන දත්ත සමුදාය
  6. අයිතිවාසිකම්: ඕනෑම වේලාවක ඔබට ඔබේ තොරතුරු සීමා කිරීමට, නැවත ලබා ගැනීමට සහ මකා දැමීමට හැකිය.