MCP23017, vagy PCF8574?

 ( WG | 2017. február 2., csütörtök - 12:32 )

Amíg a másik topikban eldől, hogyan lesz 5V-ból 4V, felvetek egy újabb feszültségkeltőnek ígérkező problémát. :)

Egy 8 csatornás relé vezérléséhez nem szeretném elpazarolni a Wemos D1 Mini összes kimenetét, ezért arra gondoltam, I/O expandert alkalmazok.

Az MCP23017 16 bites (bármit is jelentsen ebben az esetben), tud megszakítást kezelni, ha jól értelmeztam az adatlapját, ára kb. $1,5
A PCF8574 8 bites, semmi sallang nincs rajta ezen kívül. Ára: $0,5

Mindkettő 8 I/O portot ad I²C-n keresztül.
Miért *használják egy 8 csatornás relé kapcsolgatásához (csak kimenet, megszakítás nem kell) az MCP23017-et?

Találtam modult ebay-en.
Kérdés: jó nekem a PCF8754?

*Youtube-os videókban MCP23017-et láttam több helyen erre a célra.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

MCP23017 azért 16 bites, mert 16 ki/bemeneti lába van. Programozható mindkét bank minden (8-8db) lába egy maszk segítségével, hogy input vagy output legyen.
Ha csak 8db kimenet kell neked, akkor a PCF8574 pont jó lesz.
Mouser.com-on az árak:
PCF 1db ára 1,03EUR, MCP 1db ára 1,19EUR
PCF 1k ára 0,5EUR, MCP 1k ára 0,85EUR

Rendelek akkor MCP-t is, van egy 16 csatornás reléboardom, ahhoz jó lehet. :)
Köszönöm a választ!

Már többször előkerült a téma, hogy az ilyen boardokat jól el kell szigetelni a vezérlő egységtől (Raspberry, Arduino stb.).
Az i2c és az spi interfészek, leginkább egy boardon/dobozon belüli vezérlésekre alkalmasak. Ha mégis kell a nagyobb távolság, zavarvédettség vagy galvanikus leválasztás akkor az i2c -re több ipari megoldás létezik, viszont ezek eléggé drágák.
Az i2c címzése a kommunikációba van beágyazva, az spi külön vezetékezést igényel - vagy áthajthatod x periférián keresztül a biteket. Az spi alapvetően gyorsabb lehet mint az i2c, de ez akkor játszik ha mondjuk 40MHz órát akarsz (mondhatni 40Mbit/sec).
Megint előhozakodnék az RS232 -vel. Egy relés vezérlésnél nem kell nagy sebesség, viszont a megfelelő leválasztás annál inkább. Én talán úgy csinálnám, hogy mondjuk a Arduino NANO -t építenék rá a relés egységre és annak a soros portját használnám, mondjuk két olcsó optocsatolóval. Innentől fogva azzal vezérled amivel akarod - PC vagy SBC, esetleg egy másik Arduino.

* Én egy indián vagyok. Minden indián hazudik.

Nono, fiam, kőből talán nem lehet hidat építeni? :) Akarom mondani, szinkron soros átvitel is megvalóstható optocsatolóval akár, csak a túlsó oldalon kell valami Schmitt-trigger, hogy az élek meredekségét helyrehozza. Persze viszonylag lassan kellene hajtani, de ennek semmi akadálya.


tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Kőből bárki tud.
Az igazi kihívás spagettitésztából megépíteni azt a hidat.
:)

Az Arduino NANO egyszerűbbnek tűnik. De igazad van létezik SPI -ra is isolator - pl. Analog Devices.

* Én egy indián vagyok. Minden indián hazudik.

Erre a feladatra még egy 74HC595 is megteszi. Igaz, ezt inkább SPI-re lehetne kötni. Az I2C-s megoldás valóban szebb, ha van a közelben I2C master controller.


tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Köszi, utánanézek ennek is.

Vagy bitbangelve meghajtani. Sokkal-sokkal egyszerűbb, mint I2C-zni.

Igaz, de az I2C csak két vezeték, a 74HC595-höz kell clk, data, latch, ami már rögtön 3. Az meg sok, ha a cél az, hogy több lábat csináljunk, ha már annyi eszünk nem volt, hogy megfelelő lábszámú kontrollerrel essünk neki a projectnek. ;) Meg aztán az I2C busz, így akkor sem több láb, ha több cuccot lógatnak rá. Ettől függetlenül én is azt csinálnám, amit mondasz, ha nem lenne hardware I2C támogatásom.


tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Na, erre szoktam én azt mondani, hogy ha van 2, akkor akad 3 is... Hiszen épp most szabadítottunk fel 8-at/16-ot! ;-)

Na, de mind közül a legcélszerűbb a feladathoz alkalmas mikrokontrollert választani, s a lehető legkevesebb külső komponenssel építkezni.


tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Ha van 3, akkor akad 4 is…
Ha van 4, akkor akad 5 is…
Ha van 5, akkor akad 6 is…

Amiből levonhatjuk azt a következtetést, hogy minden controlleren végtelen számú szabad port van. :-)