MCP23017

little.yoda
Site Admin
Beiträge: 882
Registriert: 14.09.2018, 19:05
Hat sich bedankt: 33 Mal
Danksagung erhalten: 143 Mal

MCP23017

Beitrag von little.yoda » 04.12.2020, 17:37

Zur Dokumentation ein paar Beispiele, wie man mehrere MCP23017 anschließen kann und wie man die MCP23017 in verschieden Szenarien nutzen kann.

<Grafik entfernt>

little.yoda
Site Admin
Beiträge: 882
Registriert: 14.09.2018, 19:05
Hat sich bedankt: 33 Mal
Danksagung erhalten: 143 Mal

Re: MCP23017

Beitrag von little.yoda » 05.12.2020, 10:33

Vorsicht .. bei der LED fehlt der Vorwiderstand.

little.yoda
Site Admin
Beiträge: 882
Registriert: 14.09.2018, 19:05
Hat sich bedankt: 33 Mal
Danksagung erhalten: 143 Mal

Re: MCP23017

Beitrag von little.yoda » 05.12.2020, 10:52

Um mal die Dokumentation voranzubringen, habe ich mal einige Pläne neu gezeichnet.
Rotaryencoderplatine.png
Rotaryencoder.png
Keypad.png
Gleisbildstellwerk.png
DCC-Gen L298N.png
DCC-Gen.png
Falls euch noch fehlende Pläne einfallen, dann her damit.

little.yoda
Site Admin
Beiträge: 882
Registriert: 14.09.2018, 19:05
Hat sich bedankt: 33 Mal
Danksagung erhalten: 143 Mal

Re: MCP23017

Beitrag von little.yoda » 18.12.2020, 12:17

Und eine neue Grafik für den MCP23017. Es fehlte, dass Reset# auf High gezogen werden muss. (Danke Nobert)
Schematic_Schaltungen für das little yoda framework_2020-12-18_11-42-22.png

Ralf_St.
Beiträge: 355
Registriert: 18.09.2018, 01:14
Hat sich bedankt: 67 Mal
Danksagung erhalten: 17 Mal

Fragen zum Anschluss des MCP23017

Beitrag von Ralf_St. » 05.01.2021, 17:12

Hallo Sven, hallo Norbert

Ich habe zum MCP23017 trotz der Graphik ein paar Fragen.

Einleitung:
Für meinen Controller habe ich 17 Funktionstasten eingeplant. Um auf diese Anzahl zu kommen möchte ich einen MCP23017 einsetzen. Gekauft habe ich mir dieses Modul:
images.jpeg
images.jpeg (4.29 KiB) 4784 mal betrachtet
images.jpeg
images.jpeg (10.46 KiB) 4784 mal betrachtet

Nun zu meinen Fragen:
Kann ich nur die Anschlüsse B0 bis B7 für meine Funktionstasten benutzen? Oder nichtmals alle acht?
Besteht die Möglichkeit die Anschlüsse A0 bis A7 auch für meine Funktionstasten zu nutzen?
Wenn dem so ist, könnte ich 16 Funktionstasten mit dem MCP23017 realisieren, aber wie sieht der Eintrag in der config.json dann aus? Beim ESP32 ist er so:

{
"m":"gpio",
"gpio":"IO04",
"out":[
"lctl"
],
"var":"toggleF0"
},

An der I2C Schnittstelle hängt ja bereits das OLED Display, wird der MCP23017 einfach zusätzlich hier angeschlossen und über zwei 10K Pull-Up an 3,3 Volt geführt?
Gesehen habe ich, das im Config Generator für den MCP23017 eine Adresse ausgewählt werden muss. Ist die config.json so dann richtig:

{
"m":"i2c",
"sda":"IO21",
"scl":"IO22"
},
{
"m":"i2cslave",
"d":"mcp23017",
"addr":[
1
]
},

Für Euere Antworten bedanke ich mich jetzt schon mal, ohne die kann ich nämlich nicht weiter machen...

Nachtrag:
Den MCP23017 kann ich fest in den Controller einbauen, daher möchte ich möglichst viele Funktionstasten über diesen laufen lassen.
Der ESP32 hat zwar seinen Platz im Controller, muss aber zum Beispiel zum Flashen mit dem USB-Kabel angehoben werden können. Je weniger Kabel am ESP angelötet sind, desto besser kann er bewegt werden, ohne Gefahr zu laufen das hier oder da ein Kabel ab geht.
Gruß, Ralf

little.yoda
Site Admin
Beiträge: 882
Registriert: 14.09.2018, 19:05
Hat sich bedankt: 33 Mal
Danksagung erhalten: 143 Mal

Re: MCP23017

Beitrag von little.yoda » 05.01.2021, 18:15

Hi

Für die Basis-Konfiguration würde ich dir den Configfile-Generator ans Herz legen.

Code: Alles auswählen

        
        {
            "m":"i2c",
            "sda":"IO21",
            "scl":"IO22"
        },
        {
            "m":"i2cslave",
            "d":"mcp23017",
            "addr":[
                0
            ]
        }

Du kannst alle 16 Pins nutzen.
Für das erste Gerät heißen die Pins dann für die eine Seite E1A0 bis E1A7 und für die andere Seite E1B0 bis E1B7.
Sie sind so auch im Configfile Generator so aufgeführt, so dass du sie einfach auswählen kann.

Code: Alles auswählen

      {
            "m":"gpio",
            "var":"toggleF0",
            "gpio":"E1A0",
            "out":[
                "lctl"
            ]
        }

Das Display hat schon Pull-up Widerstände. Daher brauchst du keine zusätzlichen. Und ja, einfach parallel zum Display anschließen. I²C ist ein Bus System, an dem du mehrere Geräte einfach parallel anschließen kannst.

[Ich hoffe, dass ich jetzt alle Fragen beantwortet habe]

Um die Hintergründe mal zu verstehen und es ggf. besser zu dokumentieren. Wie kamst du zu deiner Annahmen, welche Pins nutzbar sind und welche nicht.

Gruß,
Sven

Ralf_St.
Beiträge: 355
Registriert: 18.09.2018, 01:14
Hat sich bedankt: 67 Mal
Danksagung erhalten: 17 Mal

Re: MCP23017

Beitrag von Ralf_St. » 06.01.2021, 02:36

Hallo Sven

Du schreibst:
"[Ich hoffe, dass ich jetzt alle Fragen beantwortet habe]

Um die Hintergründe mal zu verstehen und es ggf. besser zu dokumentieren. Wie kamst du zu deiner Annahmen, welche Pins nutzbar sind und welche nicht."

Ja, danke damit hast Du meine Fragen alle beantwortet!
Wie ich zu der Annahme kam, das die Pins nutzbar sind? Du und Norbert, habt in den vergangenen Wochen recht intensiv mit mir daran gearbeitet, viele Fragen wurden beantwortet und ich habe hier im Forum Beiträge gesucht und gefunden, die mir weiter geholfen haben. Zudem habe ich im Internet nach Antworten gesucht, oft sind dabei aber nur weitere Fragen aufgetaucht....
Wie auch immer, am Ende meiner Recherche und allem was ich von Euch gelernt habe, schaute ich mir die Pins der Platine an und konnte sie einigermaßen (und wie sich zeigte sogar richtig) zuordnen.
Aber es ist nicht leicht sich die nötigen Informationen hier im Forum zusammen zu suchen! Hätten wir nicht so intensiv hier und via PN geschrieben, oder ich wäre mitten drin erst eingestiegen, ich wäre noch lange nicht da wo ich jetzt bin!
Auch wenn ich manche Zusammenhänge noch nicht 100% verstanden habe, dank Euerer Hilfe geht es schon recht gut. Trotz meinem Spaß an der Sache und der Freude die ich an den Ergebnissen habe, werde ich sicher noch mit der einen oder anderen Frage an Euch heran treten.

Jetzt wird aber erst mal der Controller aufgebaut und darüber werde ich an anderer Stelle berichten.
Gruß, Ralf

Ralf_St.
Beiträge: 355
Registriert: 18.09.2018, 01:14
Hat sich bedankt: 67 Mal
Danksagung erhalten: 17 Mal

Re: MCP23017

Beitrag von Ralf_St. » 06.01.2021, 08:41

Guten Morgen

Ich bin gerade damit beschäftigt die config.json mit dem Config Generator zu erstellen.
Der MCP23017 wird in der Config als slave eingebaut und soll die Adresse 0 bekommen.
Wenn ich einfach nur den Wert 0 in der Config stehen habe, signalisiert mir die Schriftfarbe, das hier etwas nicht stimmt...
Setze ich die 0 in Anführungszeichen ("0") dann scheint in der Config alles richtig zu sein!
Ich habe es auch mit Adresse 1,2 und 3 versucht, bleibt aber dabei
Der Config Generator gibt aber die Adresse ohne Anführungszeichen raus!?

Die Config schicke ich als PN, hat ja mit dem MCP23017 nur bedingt was zu tun...
Gruß, Ralf

Norbert
Beiträge: 300
Registriert: 31.12.2018, 08:07
Hat sich bedankt: 1 Mal
Danksagung erhalten: 71 Mal

Re: MCP23017

Beitrag von Norbert » 06.01.2021, 09:06

Die 0 gehört in eckige Klammern,
und mein Config-Gen. gibt das auch so aus...

{
"m":"i2cslave",
"d":"mcp23017",
"addr":[
0
]
}

VG N.

Ralf_St.
Beiträge: 355
Registriert: 18.09.2018, 01:14
Hat sich bedankt: 67 Mal
Danksagung erhalten: 17 Mal

Re: MCP23017

Beitrag von Ralf_St. » 06.01.2021, 11:29

Hallo Norbert

Ja, genau so sieht die Config bei mir auch aus, die 0 steht in eckigen Klammern!
Aber im Editor ist sie rot während alles andere in grün dargestellt wird...

{
"m":"i2c",
"sda":"IO21",
"scl":"IO22"
},
{
"m":"i2cslave",
"d":"mcp23017",
"addr":[
0
]
},

So sieht es in meiner Config aus, aber die 0 ist rot!
Gruß, Ralf

Antworten