• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
PCF8574 - brak współpracy_błędny kod
#4
Jeśli czytałeś dokumentację PCF8574 to bardzo dobrze, ale chyba nie wszystko zrozumiałeś. Ten układ ma dość nietypową budowę portów:
   
Na czerwono zaznaczyłem źródło prądowe o wydajności 100uA. Gdyby go nie było, sterowanie pinem jako wyjściem odbywałoby się "normalnie", czyli gdy wystawiane jest zero, dolny tranzystor zwierałby do masy, a gdy jedynka, górny do zasilania. Wtedy wydajność prądowa takiego układu wynosiłaby spodziewane miliampery.
Jednak to źródło prądowe sprawia, że gdy układ wystawia logiczne "1", jego wydajność prądowa jest ograniczona to tych 100uA.
To dlatego sterowanie ledami nie działa - gdy chcesz je zapalić, wystawiasz stan wysoki, ale prąd jest ograniczony do 100uA, a to może nie wystarczać. Jest na to proste rozwiązanie - podłącz diody nie do masy, ale do zasilania. Wtedy zapalać je będziesz wystawiając logiczne zero i układ będzie spokojnie dostarczał tyle prądu ile potrzeba.
Natomiast jak chodzi o przyciski to sytuacja jest nieco bardziej złożona. Całe to źródło prądowe zostało dodane, aby umożliwić pracę wyprowadzeń PCF8574 zarówno jako wejścia, jak i wyjścia i to bez rejestru konfigurującego kierunek portu. Biblioteka Arduino ma co prawda metodę konfiguracji kierunku, ale sam układ tego nie zapewnia - jedyne co można zrobić, to wystawić na wyjściu logiczną jedynkę. Prąd jest wtedy ograniczony do 100uA, więc zewnętrzny układ może wymusić stan niski. Inaczej mówiąc to źródło działa jak rezystor pull-up, który jest zawsze włączony.
Przyciski na Twoim schemacie zwierają albo do zasilania - i wtedy jest ok. Natomiast, gdy przycisk jest rozwarty, stan niski wymuszają rezystory 47k, czyli pull-down zwierające do masy. Niestety wbudowane źródło prądowe działa jak pull-up - dostarcza ono 100uA prądu, co na rezystorach daje spadek 100uA * 47k = 4.7V.. więc nawet jak rezystory zwierają do masy i tak na wejściu jest logiczna jedynka.
Tutaj też możesz łatwo naprawić układ - wystarczy żeby przyciski zwierały do masy, rezystory nawet nie będą potrzebne.
 
Odpowiedź
  


Wiadomości w tym wątku
RE: PCF8574 - brak współpracy_błędny kod - przez elvis - 26-04-2020, 22:11

Skocz do:


Przeglądający: 1 gości