Metainformationen zur Seite

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
plugins:multi_io:gpio_module:pcf8574a_expansion_module [2023/06/23 17:30] Michael Schlenstedtplugins:multi_io:gpio_module:pcf8574a_expansion_module [2023/07/29 12:00] (aktuell) Michael Schlenstedt
Zeile 1: Zeile 1:
-====== PCF8574(A) Expansion Module ======+====== PCF8574(A) Expander Modul ======
  
 ===== Beschreibung ===== ===== Beschreibung =====
Zeile 9: Zeile 9:
 Abbildung: (c) [[http://protosupplies.com]] Abbildung: (c) [[http://protosupplies.com]]
  
-Ein Chip bzw. Modul kann 8 IOs bereitstellen. Je nach Konfiguration können diese als Ein- oder Ausgang dienen. Über einen Interrupt (der an einen GPIO des Raspberry angeschlossen werden muss), werden bei Eingängen Änderungen in Echtzeit eingelesen. Es können bis zu 8 Module parallel betrieben werden (also insgesamt 64 IOs). Dazu werden diese im “Daisy Chain”-Verfahren einfach hintereinander gesteckt. Wenn das nicht ausreicht, können weitere 8 Module des Schwester-Chipsatzes PCF8574**A** verwendet werden und so bis zu 128 IOs am Raspberry bereitgestellt werden. Reicht das immer noch nicht, können zusätzlich [[plugins:multiio:gpio_module:pcf8575_expansion_module|der Schwester-Chipsatz PCF8575]] verwendet werden und so bis zu 256 IOs an den Raspberry angeschlossen werden!+Ein Chip bzw. Modul kann 8 IOs bereitstellen. Je nach Konfiguration können diese als Ein- oder Ausgang dienen. Über einen Interrupt (der an einen GPIO des Raspberry angeschlossen werden muss), werden bei Eingängen Änderungen in Echtzeit eingelesen. Es können bis zu 8 Module parallel betrieben werden (also insgesamt 64 IOs). Dazu werden diese im “Daisy Chain”-Verfahren einfach hintereinander gesteckt. Wenn das nicht ausreicht, können weitere 8 Module des Schwester-Chipsatzes PCF8574**A** verwendet werden und so bis zu 128 IOs am Raspberry bereitgestellt werden. Reicht das immer noch nicht, können zusätzlich [[plugins:multi_io:gpio_module:pcf8575_expansion_module|der Schwester-Chipsatz PCF8575]] verwendet werden und so bis zu 256 IOs an den Raspberry angeschlossen werden!
  
 ===== Datenblatt ===== ===== Datenblatt =====
Zeile 49: Zeile 49:
 ==== Eingänge ==== ==== Eingänge ====
  
-Das Modul hat eingebaute PullUp-Widerstände (keine Pulldown-Widerstände). Man verschaltet die Eingänge also so, dass sie im geschlossenen Zustand den PIN auf GND ziehen. I**ch empfehle dringend zusätzlich zu den internen Widerständen externe PullUp-Widerstände zu verwenden!** Ohne externe Widerstände konnte ich keine stabile Erkennung der Eingangszustände realisieren.+Das Modul hat eingebaute PullUp-Widerstände (keine Pulldown-Widerstände). Man verschaltet die Eingänge also so, dass sie im geschlossenen Zustand den PIN auf GND ziehen. **Ich empfehle dringend zusätzlich zu den internen Widerständen externe PullUp-Widerstände zu verwenden!** Ohne externe Widerstände konnte ich keine stabile Erkennung der Eingangszustände realisieren.
  
 {{plugins:multi_io:gpio_module:pasted:20230623-152401.png?300|Verschaltung mit externem PullUp-Widerstand}} {{plugins:multi_io:gpio_module:pasted:20230623-152401.png?300|Verschaltung mit externem PullUp-Widerstand}}
Zeile 61: Zeile 61:
 Die Lösung ist die Verwendung von sogenannten Interrupts. Interrupts signalisieren dem Betriebssystem eine Statusveränderung z. B. eines PINs. So ist es möglich den Status der Eingänge nur abzufragen, wenn sich der Status geändert hat (im Gegensatz zum permanenten, zyklischen Abfragen). Die Lösung ist die Verwendung von sogenannten Interrupts. Interrupts signalisieren dem Betriebssystem eine Statusveränderung z. B. eines PINs. So ist es möglich den Status der Eingänge nur abzufragen, wenn sich der Status geändert hat (im Gegensatz zum permanenten, zyklischen Abfragen).
  
-Die Module haben zu diesem Zweck einen INT-Pin, der auf LOW gesetzt wird, sobald sich der Zustand eines der PINs am Modul ändert. Der INT-Pin wird wieder auf HIGH gesetzt, sobald der Zustand aller Pins Peinmal abgefragt wurde. Mit Hilfe eines GPIO-Eingangs auf dem Raspberry kann man so eine Interrupt-gesteuerte Abfrage aufbauen. Dazu verbindet man den INT-Pin mit einem freien GPIO des Raspberry und konfiguriert diesen GPIO dann als "Interrupt für das PCF-Modul". Die GPIOs des Raspberry unterstützen echte Interrupts, dass heisst das Betriebssystem bekommt eine Information, das sich er Status am GPIO geändert hat. Das Plugin erkennt das entsprechend und löst die Status-Abfrage des PCF-Moduls aus. Sobald sich also ein Pin des Moduls im Status ändert, wird der GPIO des Raspberry getriggert und dieser löst die Statusabfrage der einzelnen Pins des Moduls aus.+Die Module haben zu diesem Zweck einen INT-Pin, der auf LOW gesetzt wird, sobald sich der Zustand eines der PINs am Modul ändert. Der INT-Pin wird wieder auf HIGH gesetzt, sobald der Zustand aller Pins einmal abgefragt wurde. Mit Hilfe eines GPIO-Eingangs auf dem Raspberry kann man so eine Interrupt-gesteuerte Abfrage aufbauen. Dazu verbindet man den INT-Pin mit einem freien GPIO des Raspberry und konfiguriert diesen GPIO dann als "Interrupt für das PCF-Modul". Die GPIOs des Raspberry unterstützen echte Interrupts, dass heisst das Betriebssystem bekommt eine Information, das sich er Status am GPIO geändert hat. Das Plugin erkennt das entsprechend und löst die Status-Abfrage des PCF-Moduls aus. Sobald sich also ein Pin des Moduls im Status ändert, wird der GPIO des Raspberry getriggert und dieser löst die Statusabfrage der einzelnen Pins des Moduls aus.
  
 {{https://mqtt-io.app/2.2.9-gamma/_images/pimcp.png?400|Raspberry Pi MCP23017 circuit diagram}} {{https://mqtt-io.app/2.2.9-gamma/_images/pimcp.png?400|Raspberry Pi MCP23017 circuit diagram}}