Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Multiplexer-IC Frage



Andi#87
05.09.2024, 13:10
Hallo,

für den Arduino sehe ich oft als Multiplexer den CD74HC4067 in Verwendung. Kann man an dessen Stelle alternativ auch den MCP23S17 verwenden? Beide sind SPI Multiplexer, beide 16 Kanal. Der eine ist digital, der andere analog. Zur Porterweiterung für einfache on-off-Taster am Arduino müssten beide gehen, sehe ich das richtig? "Problem": Ich habe eine vorgegebene Schaltung, die den 4067 verwendet. Den gibt es allerdings nur noch in SMD-Bauweise zu kaufen (abgesehen von Restbeständen bei eBay) bzw. mit Breakout-Board. Den 23S17 gibt es noch in RM 2,54, womit ich diesen besser in meine eigenen Platinen einbauen kann.
Spricht etwas "elektrisches" dagegen, den 4067 einfach durch den 23S17 zu ersetzen?

Andi

gunzelg
06.09.2024, 14:39
Hallo Andi
die beiden IC's sind mit nichten identisch. Der HC4067 ist ein analoger Multiplexer/Demultiplexer und der MCP23S17 ist ein 16Bit IO-Expander. Wenn du zusätzliches IO brauchst nimmst du den. Angesteuert wird der über SPI. Aber wo ist das Problem mit dem HC4067?

Gruß
Gerhard

Andi#87
06.09.2024, 16:26
Danke für Deine Antwort.
Ähm... je nach Beschaltung/Zustand (1 oder 0) von 4 "Eingängen" wird bei beiden ICs einer der 16 Ausgänge aktiv. Sowohl beim 4067 als auch beim 23S17. Mit beiden kann ich beim Arduino aus 4 seiner Ausgänge 16 machen. Oder liege ich da jetzt völlig falsch??? Als Multiplexer kenne ich zB den 4053: ein Eingang, der auf (einen der) 8 Ausgänge geroutet werden kann, wie bei einem Drehschalter. Das ist doch beim 4067 nicht so, oder...???

Das "Problem" mit dem 4067 ist die Frickelei mit SMD-Löten. Der 23S17 ist in RM2,54 erhältlich. Das ist der einzige Grund meinerseits...

Andi

gunzelg
06.09.2024, 16:53
Also wenn ich mir das datenblatt ansehe

https://ww1.microchip.com/downloads/aemDocuments/documents/APID/ProductDocuments/DataSheets/MCP23017-Data-Sheet-DS20001952.pdf

kann ich nicht erkennen, dass das so funktioniert wie der 4067. Bei dem MCP23S17 musst du über SPI kommunizieren und kannst daten ausgeben oder einlesen. So nen Multiplexer/Demultiplexer kannst du möglicherweise nachbilden, aber nur unter Zuhilfenahme des uC. Der 4067 ist einfach Logik und funzt von sich aus mit der Aufgabe. Aber vielleicht bin ich ja zu doof das zu sehen??

gruß

Andi#87
06.09.2024, 20:35
Hab nochmal beide Datenblätter usw. gelesen. Du hast recht mit Porterweiterung bzw. Multiplexer. Aber! Der 4067 arbeitet wie der 23S17, wenn am Eingang PIN1 das gewünschte Signal anliegt. Der 23S17 hat diesen Eingang nicht. Der generiert lediglich aus den 4 Steuereingängen (Stichwort 0 bzw 1) einen aktiven Port (max. 16). Der 4067 macht das genauso, ABER er schaltet dabei das an seinem PIN1 anliegende Signal auf einen der 16 Ausgänge (Prinzip Drehschalter). Dieses Signal kann auch eine simple Spannung 5VDC sein, die dann entsprechend an Out 1-16 durchgereicht wird. Insofern ist der 4067 flexibler, als der 23S17, benötigt aber statt 4 (Steuer-)Eingängen noch einen zusätzlichen Eingang (PIN1 am 4067), der aber (wenn lediglich zB 5VDC durchgereicht werden sollen) nicht zwangsläufig mit dem Arduino verbunden sein muss, sondern auch an VCC anliegen kann.
Ich hoffe, ich habe das so richtig verstanden. Es gibt einige Schaltungsbeispiele für beide ICs, da wird das ersichtlich. Falls ich noch falsch liege, bitte gern korrigieren.
Danke für Deine Hilfe!

Andi

gunzelg
07.09.2024, 07:45
Hast du das schon getestet? Auf jeden Fall würde mich das Ergebnis interessieren. Aus dem Datenblatt kann ich das nicht sehen.

Gruß
Gerhard

wkrug
07.09.2024, 07:48
Das sind halt 2 völlig unterschiedliche IC's.
Der 74HC4067 ist ein Analog Multiplexer, das bedeutet man könnte da z.B. auch Audiosignale drüber schicken.
Allerdings kann dabei nur 1 Ausgang auf den Common Pin geschaltet werden.

Der MCP23S17 ist eine I/O Port Erweiterung.
Der kann an seinen Ausgängen bzw. Eingängen nur eine Logische 1 oder eine logische 0 lesen bzw. schreiben.
Dafür können die Ausgänge unabhängig voneinender auch unterschiedliche Pegel annehmen.
Zudem hat der Chip eine Interrupt Logik falls man das braucht.

Es kommt halt darauf an, was Du damit machen willst.

Übrigens ist ein TSOP Gehäuse mit einem normalen Lötkolben und entsprechender Technik schneller eingelötet als ein DIL / DIP Gehäuse.
Guck mal das Video (https://www.youtube.com/watch?v=-l5D2em4PBI).
Der Typ benutzt IMHO viel zu viel Flussmittel und eine Löffel Spitze braucht man auch nicht unbedingt.
Flussmittel gibt's auch in Textmarker Form.
Wenn man Löthonig benutzt muss dieser säurefrei sein.
Vorher verzinnen und mit Lötsauglitze wieder abtragen ist dagegen schon zu empfehlen.
Dünnes Lötzinn 0,3mm ist beim Löten von Vorteil.
Versuch doch einfach mal.
Viele Microcontroller, vor allem die neueren, sind ebenfalls nur noch in SMD Bauformen zu bekommen.

Andi#87
07.09.2024, 09:16
Danke für Eure Antworten. Getestet habe ich es nicht bisher, lediglich anhand einiger Schaltpläne so festgestellt. Vielleicht komme ich demnächst mal dazu, um selber Klarstellung zu bekommen, ob das in der Praxis auch stimmt, was ich mir da zusammenreime. Und mein Vergleich, dass beide ICs das „genauso“ machen, gilt natürlich lediglich unter dem Aspekt, dass ich damit on/off-Schaltzustände rausgeben möchte, also vergleichbar als logische 1 bzw 0. Danke an wkrug für die detailierte Korrektur.

Den 4067 gibt es als SMD in verschiedener Bauweise. Auf dem Adapterboard zu RM2,54, welches man aktuell kaufen kann, ist die mikroskopische Bauweise. Und es gibt noch einen in SO-24 Gehäuse. Der könnte noch für den Hausgebrauch bearbeitbar sein. Werde mir mal 2 bestellen und versuchen, sie auf eine vorbereitete Platine aufzulöten. Vielleicht hab ich diesmal mehr Erfolg, als in meinen bisherigen SMD-Versuchen.

Immer wieder sehr hilfreich, hier im Forum Unterstützung und Hinweise zu bekommen.

Danke :-)

Andi

Andi#87
05.12.2024, 15:07
Hallo,
ich hab nun nochmals eine Frage zum 4067.
Der arbeitet sozusagen in beide Richtungen, als Multiplexer und De-Multiplexer. 16 PIN stehen zur Verfügung. Kann man beide Funktionen auf einem einzigen 4067 zeitgleich benutzen? Also zB 1-8 (bzw. 0-7) als Multiplexer und 9-16 (bzw. 8-15) als De-Multiplexer? in einem einzigen Arduino-Sketch? Oder sind dazu 2 separate (8er) MUX notwendig?

Andi

gunzelg
05.12.2024, 15:31
Hallo
so wie ich das sehe, kannst du mit einem 4067 nur 1-Wechselschalter realisieren, denn du hast ja nur einen "Umschalter", nämlich die 4 S (s0..s3) Eingänge. Abder den Kanal, den du ausgewählt hast, der kann dann in beide Richtungen arbeiten. Für 2 separate Schaltr brauchst du dann auch 2* 4067.

Gruß

wkrug
06.12.2024, 11:25
Da Du ja ein bestehendes Layout verwenden willst, wird Dir wohl nur der Weg über ein passendes Breakout Board bleiben.
Die Anschlussbelegung der DIL und der SMD Variante wird wohl die selbe sein.
Wie oben schon beschrieben ist das SMD Löten keine Hexerei.
An zusätzlichem Werkzeug benötigst Du eine dünnere Lötspitze ( 1,5...2mm gehen bei mir gut ) , eine gute Pinzette, dünnes Lötzinn ( 0,35mm ) und Flussmittel ( z.B. FL88 LF von Reichelt, oder säurefreien Löthonig von Conrad z.B. ) .
Bleihaltiges geht einfacher zu verlöten, ist aber nur noch schwer zu bekommen.
Beim bleifreien Zinn nimm eins mit hohem Silberanteil ( >3% ).
Die Breakout Boards sind problemlos im Internet bestellbar - Auch Reichelt hat da welche.

Nimmst Du einen anderen Chip als den 4067, musst Du auf der bestehenden Platine vermutlich Leiterbahnen trennen und neue Verbindungen schaffen.
Da würde Ich lieber auf eine Breakout Platine zurück greifen.

Wenns von der Höhe her nicht geht, kannst Du das Breakout Board direkt auf die Platine auflegen und diese mit Drahtbrücken anstatt Stapelleisten einlöten.
Das wird dann auch nicht höher als ein DIL IC.

Bei den Breakout Boards musst Du allerdings aufpassen, da gibt es bei beiden Bauformen breite und schmale Varianten! Damit das Ganze dann auch auf die Platine passt.

Ich nehm auch immer diese Breakout Boards, wenn Ich einen Chip, den es nur noch in SMD gibt auf ein Steckboard stecken will.
Was Ich auch nicht mehr verlöten kann sind Bausteine mit BGA Sockel - Dafür würde man dann IMHO einen Reflow Ofen benötigen.
( Heissluft ist mir da zu risikoreich ) .
36030

Mal ein Bild von meiner letzten SMD Platine...

Andi#87
06.12.2024, 14:20
@gunzelg:
Danke für Deine Antwort.

@wkrug:
Danke auch für Deine Antwort. Aber ist die möglicherweise hier in meinem Thread (MUX 4967) falsch gelandet und sollte woanders hin? Platinen usw.?

Andi

wkrug
06.12.2024, 22:24
Nein, der ist hier nicht falsch gelandet.
Mit der Breakout Lösung kannst Du ja den 4067 trotzdem nutzen.
Die Bemerkungen waren nur Tipps zum einlöten von SMD Bauteilen.

Andi#87
07.12.2024, 10:01
Danke. Ja, ich verwende die üblichen Module, auf denen der 4067 als SMD drauf und alles dann in RM 2,54 verfügbar ist. Momentan ist alles auf Steckplatinen aufgebaut. Wenn es denn eines Tages mal funktioniert, möchte ich das auf Platinen aufbauen. Dort soll dann die SMD-Version direkt verwendet werden. Die SMD-4067 gibt es ja in mehreren Ausführungen, und dort ist das RM noch für Hobbybastler gut zu verarbeiten.

Aber ich bin mir nicht sicher, ob ich meine Frage richtig formuliert hatte. Ich lege mal einen Bildausschnitt des Schaltplanes bei. Die PIN C0 bis C7 sind Eingänge der Taster, PIN C8 bis C14 (15 bleibt frei) sind Ausgänge für die LED. Die LED benötigen noch Vorwiderstände. Die hab ich hier im Plan weggelassen, da sie in den LED bereits integriert sind. Kann man das so bauen, kann der 4067 das so verarbeiten? Oder aufteilen auf 2 separate 8er MUX? Die LED korrelieren zu den Tastern: Taster C0 setzt LED C8 on, Taster C1 auf LED C9 usw.

Andi

36031

wkrug
08.12.2024, 08:08
So wie in deinenm Schaltplan kannst Du immer nur eine LED Einschalten, oder Du musst die LED Ausgänge Multiplexen.
Bei den Tastern dürfte es so funktionieren.
Ich würde da Schieberegister IC mit Latch nehmen wie z.B. den 74HC595.
Da werden die Daten seriell eingeschoben und dann per RCLK die Ausgänge geschaltet.
Du könntest somit jede LED unabhängig ansteuern.
Die Ausgänge bleiben bis zum nächsten Datenwort aktiv, d.H. kein Multiplexen notwendig.
Für den Eingang von 8 Kanälen gibt es ein ähnliches IC, die Bezeichnung hab Ich aber gerade nicht im Kopf - Guck mal, ob da der 74HC166 passt?
Die beiden IC könnten dann für die Daten hintereinander geschaltet werden.
Mit 2 Byte hintereinander könnten somit die 8 Ausgänge bzw. Eingänge bearbeitet werden.
Du könntest dafür die Harware SPI des Arduino verwenden.

In einer ELEKTOR wurde auch mal ein CHIP zum Schutz für die Ports des Rasberry PI vorgestellt.
Der war sogar Bidirektional nutzbar. Auch hier hab Ich die Bezeichnung nicht im Kopf.

Deine Lösung wird wohl auch funktionieren, läuft aber im Prinzip auf einen 16Takte Multiplex mit Port Richtungs Umschaltung raus.
Ob der 4067 die 20mA für die LED's aushält müsstest Du im Datenblatt nachschauen.
Notfalls kannst Du LOW Current LED's oder einen Treiberbaustein wie den ULN2803 verwenden.

Andi#87
09.12.2024, 18:03
Danke, muss ich noch forschen und lernen...
:-)
Andi