Mundarija:

PCF8591 (i2c analog kirish -chiqish kengaytirgichi) Tez oson foydalanish: 9 qadam
PCF8591 (i2c analog kirish -chiqish kengaytirgichi) Tez oson foydalanish: 9 qadam

Video: PCF8591 (i2c analog kirish -chiqish kengaytirgichi) Tez oson foydalanish: 9 qadam

Video: PCF8591 (i2c analog kirish -chiqish kengaytirgichi) Tez oson foydalanish: 9 qadam
Video: Arduino analog port expander - pcf8591 with I2C protocol 2024, Noyabr
Anonim
PCF8591 (i2c Analog I/U kengaytirgichi) Tez oson foydalanish
PCF8591 (i2c Analog I/U kengaytirgichi) Tez oson foydalanish

I2c pcf8591 IC ni arduino va esp8266 bilan ishlatish uchun kutubxona.

Bu IC (4gacha) analog kirish va/yoki 1 analog chiqishni o'lchash, termistor qiymatini o'qish yoki svetodiodni o'chirishi mumkin.

Analog qiymatni o'qishi va analog qiymatini faqat 2 ta sim bilan yozishi mumkin (ESP-01 uchun juda mos keladi).

Men minimal operatsion to'plami bilan ushbu ICdan foydalanishni soddalashtirishga harakat qilaman.

Siz yangilangan versiyani mening saytimda topishingiz mumkin

1 -qadam: I2c qanday ishlaydi

I2c qanday ishlaydi
I2c qanday ishlaydi

I2C ikkita sim bilan ishlaydi: SDA (ma'lumotlar liniyasi) va SCL (soat chizig'i).

Bu ikkala chiziq ham ochiq-oydin, lekin rezistorlar yordamida tortilgan.

Odatda chiziqda bitta xo'jayin va bitta yoki bir nechta qul bo'ladi, garchi bir nechta xo'jayin bo'lishi mumkin, lekin biz bu haqda keyinroq gaplashamiz.

Xo'jayinlar ham, qullar ham ma'lumotlarni uzatishi yoki qabul qilishi mumkin, shuning uchun qurilma ushbu to'rt holatning birida bo'lishi mumkin: asosiy uzatish, master qabul qilish, qul uzatish, qul qabul qilish.

2 -qadam:

Bu erda mening kutubxonamni topishingiz mumkin.

Yuklab olish uchun.

O'ng yuqori burchakdagi YUKLASH tugmasini bosing, siqilmagan papkaning nomini o'zgartiring PCF8591.

PCF8591 papkasida PCF8591.cpp va PCF8591.h borligini tekshiring.

PCF8591 kutubxona papkasini / libraries / papkasini joylashtiring.

Agar siz birinchi kutubxonangiz bo'lsa, kutubxonalar pastki papkasini yaratishingiz kerak bo'lishi mumkin.

IDE -ni qayta ishga tushiring.

3 -qadam: Foydalanish

Konstruktor: i2c manzilini yozish kerak (manzilni tekshirish uchun I2cScanner qo'llanmasidan foydalaning)

PCF8591 (uint8_t manzili);

esp8266 uchun, agar siz SDA e SCL pinini belgilashni xohlasangiz, buni ishlating:

PCF8591 (uint8_t manzili, uint8_t sda, uint8_t scl);

4 -qadam: Qiymatni o'qing

Qiymatni o'qing
Qiymatni o'qing

Rasmda ko'rib turganingizdek, IC 4 ta analog kirish va 1 ta analog chiqishga ega.

Shunday qilib, barcha analog kirishni bitta trasmitsiyada o'qish uchun siz (qiymat 0 dan 255 gacha) bajarishingiz mumkin:

PCF8591:: AnalogInput ai = pcf8591.analogReadAll ();

Serial.print (ai.ain0); Serial.print (" -"); Serial.print (ai.ain1); Serial.print (" -"); Serial.print (ai.ain2); Serial.print (" -"); Serial.println (ai.ain3);

Agar siz bitta analog kirish yoki kanalni o'qishni xohlasangiz:

int ana = pcf8591.analogRead (AIN0); // analogni o'qing 0

5 -qadam: Vale -ni kanaldan o'qing

Vale kanalidan o'qing
Vale kanalidan o'qing

Bu IC bir nechta o'qish turiga ega va siz analogli kirishni yoki analog kanalni ishlatishingiz mumkin (bitta o'qishda analog kirish va kanal rasmda).

Masalan, 0 kanalining qiymatini ikkita differentsial kirishda o'qish uchun quyidagilarni bajarish kerak:

int ana = pcf8591.analogRead (CHANNEL0, TWO_DIFFERENTIAL_INPUT); // analogni o'qing 0

6 -qadam: qiymatni yozing

Agar siz analog qiymatni yozmoqchi bo'lsangiz, buni qilishingiz kerak (qiymat 0 dan 255 gacha):

pcf8591.analogWrite (128);

7 -qadam: Qo'shimcha funktsiyalar

Qo'shimcha xususiyat - yozish kuchlanishini o'qish: Voltajni hisoblash uchun siz ba'zi parametrlardan o'tishingiz kerak:

  • microcontrollerReferenceVoltage: mikrokontroller kuchlanishidan kuchlanishni olish (faqat esp 3.26v uchun AVR no esp8266)
  • referenceVoltage: if microcontrollerReferenceVoltage false bu qiymatni oladi Buyruq:

bo'sh kuchlanishWrite (float qiymati, bool microcontrollerReferenceVoltage = true, float referenceVoltage = 5.0);

suzuvchi kuchlanishRead (uint8_t analogPin, bool microcontrollerReferenceVoltage = true, float referenceVoltage = 5.0);

Bunga misol:

pcf8591.voltageWrite (2.7); // 2,7 voltsli chiqish

kechikish (3000);

float ana0V = pcf8591.voltageRead (AIN0); // Analog 0 dan kuchlanishni o'qing

Serial.println (ana0V);

8 -qadam: Ulanish diagrammasiga misollar

Ulanish diagrammasiga misollar
Ulanish diagrammasiga misollar

9 -qadam: Rahmat

i2c loyihalar seriyasi (To'plam):

  • Harorat namlik sensori
  • Analog kengaytiruvchi
  • Raqamli kengaytirgich
  • LCD displey

Tavsiya: