Forum: Mikrocontroller und Digitale Elektronik Analog Multiplexer 32 Kanäle, Binär addressiert, I2C ?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Christoph K. (chriskuku)


Angehängte Dateien:

Lesenswert?

Folgende Problematik: ich will 25 (später 75) Analogsignale selektiv 
(parallel) auswählen und auf einen Opamp/VCA/VGA schalten. Ein 
STM32F103C8T6 steht zur Verfügung. A0-A3 sind Ausgänge des STM32, B8-B15 
sind Eingänge. Diese 2 Signale scannen eine Tastatur mit 25 
Reedkontakten (und Neodym-Magneten).
Über B6,B7 (I²C) ist ein 128x64 Display angeschlossen.
Ein Timerausgang triggert das VGA-Steuersignal (eine e-Funktion, 
Entladung eines Kondensators, RC-Glied). Ich brauche also noch 5 Bits 
zum Adressieren der Multiplexer. Evtl. auch nur 2, wenn ich es mit I²C 
mache.

Ideen, was man als Bauelemente verwenden kann?  Auch beim VGA bin ich 
für Vorschläge offen, z.B. Transistorschaltung/FET oder reine 
OPV-Schaltung.

: Bearbeitet durch User
von Andi B. (andi_b2)


Lesenswert?

Bei der Überschrift hätte ich kaskadierte 4051er '52er vorgeschlagen. 
Aber bei deinem vielen unspezifischen Text denke ich mittlerweile, du 
suchst jemanden der dir ein Konzept für ein hier nicht spezifiziertes 
Gerät entwickeln soll. Also vielleicht versuchst du zuerst mal eine 
vernünftige Frage zu formulieren, bevor du hier für Außenstehende 
unzusammenhängendes Zeug hinrotzt.

von Hermann Kokoschka (Gast)


Lesenswert?

Christoph K. schrieb:
> Folgende Problematik:
Ich verstehe fast kein Wort Deiner Prosa...

Mach doch einfach ein Blockschaltbild, dann gibt es garantiert 
zielführende Tipps!

von Mike J. (linuxmint_user)


Lesenswert?

Christoph K. schrieb:
> Folgende Problematik: ich will 25 (später 75) Analogsignale selektiv
> (parallel) auswählen und auf einen Opamp/VCA/VGA schalten.
Mit "selektiv" meinst du jeweils nur einen Kanal zum ADC des µC 
schalten?
Dein "parallel" verstehe in dem Zusammenhang nicht.

> Ein STM32F103C8T6 steht zur Verfügung.
> A0-A3 sind Ausgänge des STM32, B8-B15 sind Eingänge.
Also du nutzt 8+4 Pins um 16 Reed-Kontakte abzufragen. Mit so einer 
Matrix-Tastaturabfrage würden aber schon 4+4 Kontakte ausreichen.

> Diese 2 Signale scannen eine Tastatur mit 25
> Reedkontakten (und Neodym-Magneten).
Das hast du anders eingezeichnet.

> Ich brauche also noch 5 Bits zum Adressieren der Multiplexer.
> Evtl. auch nur 2, wenn ich es mit I²C mache.
Du meinst du brauchst dazu 5 Pins des Controllers?
>
> Ideen, was man als Bauelemente verwenden kann?

Wenn du jetzt den 74HC4067 oder 74HC4051 nehmen würdest, dann müsstest 
du zusätzlich zu denen einen 4-fach Multiplexer davor schalten um den 
jeweiligen 74HC4051 Ausgang auswählen zu können.

Drei Bit um alle drei 74HC4051 eine (jeweils die Selbe) Adresse zu geben 
und dann noch mal zwei bit um einen der drei Ein-/Ausgänge auszuwählen. 
Du kannst natürlich auch die 74HC4051 mit dem /Enable Pin auf Tristate 
bringen, aber da verbrauchst du auch wieder drei Pins.

Du willst aber bestimmt so wenige Pins wie nötig verbrauchen und deine 
Schaltung noch erweitern um auf 75 zu kommen?

Dass du die Ausgänge der Multiplexer zusammen führst ist etwas komisch 
und der OpAmp sieht auch etwas komisch aus. Willst du das Signal dann 
nur verstärken oder nur die Wechselspannungsanteile?

von Christoph K. (chriskuku)


Lesenswert?

Hab‘ doch eine Skizze hinzugefügt.
parallel heißt: habe 3x25 Analogquellen, die im Opampeingang gemischt 
werden. D.h. ich muß nicht 75 Signale multiplexen, sondern nur 25 
Dreifach-Kanäle.
Es täten also 3x2 4067. 5 bits adressieren die 25 (32) Kanäle. EN 
Eingang wäre das 5. Bit. Es gibt diese 4067 breakout Boards. Zumindest 
für einen Steckbrettaufbau könnte man die nehmen. Es gibt aber auch 
einen -> Megamux (32 Kanäle).

Zu meiner vermeintlich falschen Relaisanordnung: es sind 4 Bänke 
(Rows),auf denen jeweils 8 Relais fußen. Die rows werden jeweils 
runtergezogen, und die oberen Enden der Schalter gehen an 8 Spalten.
Das Scannen ist gegessen, geht auch ohne Diodenmatrix.

Der OPV (VGA) ist nur stilisiert gezeichnet.
Ja, meinte 5 bits des Controllers.

: Bearbeitet durch User
von Jobst M. (jobstens-de)


Lesenswert?

Christoph K. schrieb:
> Ja, meinte 5 bits des Controllers.

Und die hast Du nicht mehr?

Oder möchtest Du es kompliziert?

https://www.mikrocontroller.net/articles/Port-Expander_PCF8574


Gruß
Jobst

von Hermann Kokoschka (Gast)


Lesenswert?

> Opamp/VCA/VGA
Erläutere Deine Gedanken bitte näher, die 3 Kürzel stehen für +3 völlig 
getrennte Verbalien.

> Hab‘ doch eine Skizze hinzugefügt.
Nö. Du hast unausgegorenes Geschmiere angehängt.

> Zu meiner vermeintlich falschen Relaisanordnung:
Kann passieren. ;-)

Mike J. schrieb:
> Dass du die Ausgänge der Multiplexer zusammen führst ist etwas komisch
> und der OpAmp sieht auch etwas komisch aus.
Stimmt!

Sollte aber insgesammt lösbar sein, sofern der TO
- sich etwas zusammenreisst und KLAR zeichnet!
- sich zunächst SELBST darüber klar wird, was er will!

Das "hastige" Geschmiere hat NICHTS mit Problemlösung zu tun,
es ist bestenfalls eine erste, innerliche Gedanken-Skizze ohne
jede Veröffentlichungsreife.

von Christoph K. (chriskuku)


Lesenswert?

Werde später noch eine Skizze hochladen.

Hermann Kokoschka schrieb:
>> Opamp/VCA/VGA
> Erläutere Deine Gedanken bitte näher, die 3 Kürzel stehen für +3 völlig
> getrennte Verbalien.
>

Es soll ein NF-Signal mit variabler Verstärkung geliefert werden. Die
Steuerspannung soll analog, durch Entladung eines Kondensators geliefert 
werden, nicht digital. Ein abklingendes NF-Signal, das aus einem 
Tonvorrat von 25 Tönen ausgewählt wird. Diese 25 Töne werden gemischt 
aus 3 Signalquellen/Ton, deshalb die 6 Multiplexer. Dann auf Summierer, 
Mischungsverhältnis einstellbar, Potis. Nach dem Summierer kommt dann 
der VGA. Habe den Op-Amp nur stilisiert und die Potis hätte ich als 
Summierwiderstände zeichnen sollen. Meine Güte, etwas 
Abstraktionsvermögen sollte man doch voraussetzen können.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Christoph K. schrieb:
> Es soll ein NF-Signal mit variabler Verstärkung geliefert werden. Die
> Steuerspannung soll analog, durch Entladung eines Kondensators geliefert
> werden, nicht digital. Ein abklingendes NF-Signal, das aus einem
> Tonvorrat von 25 Tönen ausgewählt wird. Diese 25 Töne werden gemischt
> aus 3 Signalquellen/Ton, deshalb die 6 Multiplexer.

Ach du kacke. Da empfehle ich einen Haufen ECH81 und 
Thyratronringzaehler zum Umschalten. Dann ist's richtig 
vorsintflutlich.

Gruss
WK

von Christoph K. (chriskuku)


Lesenswert?

Jobst M. schrieb:
> Christoph K. schrieb:
>> Ja, meinte 5 bits des Controllers.
>
> Und die hast Du nicht mehr?
>
> Oder möchtest Du es kompliziert?
>
> https://www.mikrocontroller.net/articles/Port-Expander_PCF8574
>
>
> Gruß
> Jobst

Ja, Pins könnten knapp werden. Im Zuge erster Tests hatte ich 
festgestellt, daß ich z.B. zunächst das Problem hatte, daß ich A15 als 
Ausgabe benutzen wollte und ich kriegte ums Verr.....den Pin nicht dazu, 
etwas auszugeben. Wie ich dann lernen mußte, ist A15 für JTAG reserviert 
bzw. gemappt und man muß es erst freischalten 
(http://efton.sk/STM32/gotcha/g129.html). So gibt es noch weitere STM32 
"Gotchas".

Auch brauche ich 6 Dekodiersignale für die Analogmultiplexer (wenn ich 
nicht noch zusätzliche externe Bauelemente (Inverter) verwenden will. 
Brauche ein ganzes Bit zum Aktivieren des EN Signals, je Baustein. Oder 
ich finde das 32-Kanal MegaMux Teil günstig.

Aber so'n Portexpander kommt dann wohl eher nicht in Frage. Aber danke 
für den Hinweis.

Es geht übrigens kein Analogsignal in den µC hinein; der µC steuert nur 
den VGA und schaltet die Analogeingänge.
Das über einen Summierverstärker (OPV) anstehende Analogsignal (NF, 
20KHz) soll von "normalem Pegel", auf 0-Pegel, also nicht mehr hörbar, 
abklingen.

Als Zwischenfrage, ehe ich meine Komplettzeichnung fertig habe, 
vielleicht schon mal, ob es für den VGA Vorschläge gibt? Soll nicht so 
teuer sein. Ein OPV mit JFET tät's evtl auch.

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

Mike J. schrieb:
> Du willst aber bestimmt so wenige Pins wie nötig verbrauchen und deine
> Schaltung noch erweitern um auf 75 zu kommen?

Warum gehst du davon aus?

Für nicht genutzte Pins gibt es kein Geld zurück, also spricht nicht 
unbedingt etwas dagegen, alle Pins zu benutzen, jedenfalls wenn die 
Aufgabe erfüllt wird und die Notwendigkeit späterer Erweiterungen mit 
zusätzlichem Pinbedarf ausgeschlossen ist.

von Wolfgang (Gast)


Lesenswert?

Christoph K. schrieb:
> Das über einen Summierverstärker (OPV) anstehende Analogsignal (NF,
> 20KHz) soll von "normalem Pegel", auf 0-Pegel, also nicht mehr hörbar,
> abklingen.

0-Pegel gibt es nicht. Du musst immer mit nur endlicher Abschwächung 
rechnen.
"nicht hörbar" ist schon mal besser. Für die Schaltungsauslegung musst 
du das ausgehend von deinen Eingangspegeln nur noch in dB umrechnen.

von Christoph K. (chriskuku)


Lesenswert?

Wolfgang schrieb:
> Mike J. schrieb:
>> Du willst aber bestimmt so wenige Pins wie nötig verbrauchen und deine
>> Schaltung noch erweitern um auf 75 zu kommen?
>
> Warum gehst du davon aus?
>
> Für nicht genutzte Pins gibt es kein Geld zurück, also spricht nicht
> unbedingt etwas dagegen, alle Pins zu benutzen, jedenfalls wenn die
> Aufgabe erfüllt wird und die Notwendigkeit späterer Erweiterungen mit
> zusätzlichem Pinbedarf ausgeschlossen ist.

Mehr Pins als 6 für die Multiplexer werde ich nicht brauchen.
Der Schritt von 25 auf 75 geschieht nur auf der Analogseite und wird 
durch 6 statt 2 Multiplexer erreicht.

Die Adressierung geschieht aber mit 6 bits.

Neben den derzeitig benutzten bzw. vorgesehenen
PA0-PA3, PB8-PB15 (für keyboard scan), PB6/7 (I2C), 6 Bits für MUX 
Adressierung, brauche ich noch 1 zur Kondensatorentladung. Die 6bits 
kriege ich aus dem PA4-PA14 Bereich. PC13 (Onboard green LED) könnte ich 
für die Kondenstorentladung benutzen. Also hinsichtlich Pins erst mal 
Entwarnung.

: Bearbeitet durch User
von Christoph K. (chriskuku)


Lesenswert?

Wolfgang schrieb:
> Christoph K. schrieb:
>> Das über einen Summierverstärker (OPV) anstehende Analogsignal (NF,
>> 20KHz) soll von "normalem Pegel", auf 0-Pegel, also nicht mehr hörbar,
>> abklingen.
>
> 0-Pegel gibt es nicht. Du musst immer mit nur endlicher Abschwächung
> rechnen.
> "nicht hörbar" ist schon mal besser. Für die Schaltungsauslegung musst
> du das ausgehend von deinen Eingangspegeln nur noch in dB umrechnen.

Ja, man sagt das so dahin, "0-Pegel". Der Rhein hatte im Sommer auch 
immer noch etwas Wasser bei Pegel 0 :)

Der OPV wird wahrscheinlich mit einem DC-DC Wandler und +-15V betrieben.
Das Analog (Audio) - Signal wird so im wenige Volt Bereich liegen, muß 
dann noch etwas abgeschwächt werden, wenn es in den Vorverstärker des 
Musikinstruments geht. Ja, es ist mal wieder eine Hammondorgel und es 
geht um den Fußbaß (25 Töne)

: Bearbeitet durch User
von Jobst M. (jobstens-de)


Lesenswert?

Christoph K. schrieb:
> Ich brauche also noch 5 Bits
> zum Adressieren der Multiplexer. Evtl. auch nur 2, wenn ich es mit I²C
> mache.

Christoph K. schrieb:
> Auch brauche ich 6 Dekodiersignale für die Analogmultiplexer
>
> Aber so'n Portexpander kommt dann wohl eher nicht in Frage.


Ordne mal Deine Gedanken ...

Der von mir vorgeschlagene Portexpander passt hervorragend:

I²C -> PCF8574 -> 8 Bit -> 3x4 CD4051

Christoph K. schrieb:
> Das über einen Summierverstärker (OPV) anstehende Analogsignal (NF,
> 20KHz) soll von "normalem Pegel", auf 0-Pegel, also nicht mehr hörbar,
> abklingen.

Dazu dann (bei drei Signalen) PGA4311


Gruß
Jobst

von Christoph K. (chriskuku)


Lesenswert?

Jobst M. schrieb:
> Christoph K. schrieb:
>> Ich brauche also noch 5 Bits
>> zum Adressieren der Multiplexer. Evtl. auch nur 2, wenn ich es mit I²C
>> mache.
>
> Christoph K. schrieb:
>> Auch brauche ich 6 Dekodiersignale für die Analogmultiplexer
>>
>> Aber so'n Portexpander kommt dann wohl eher nicht in Frage.
>


>
> Ordne mal Deine Gedanken ...

32 Kanäle, also 2 16 Kanal Mux 5 Bits und externer Inverter oder 6 Bits, 
da ist nichts "ungeordnet".

>
> Der von mir vorgeschlagene Portexpander passt hervorragend:
>
> I²C -> PCF8574 -> 8 Bit -> 3x4 CD4051
>
> Christoph K. schrieb:
>> Das über einen Summierverstärker (OPV) anstehende Analogsignal (NF,
>> 20KHz) soll von "normalem Pegel", auf 0-Pegel, also nicht mehr hörbar,
>> abklingen.
>
> Dazu dann (bei drei Signalen) PGA4311
>
>
> Gruß
> Jobst

So sehr ich Deine Beiträge schätze, aber warum willst Du mich unbedingt 
zu diesen CD4051 bewegen? Da hätte ich 12 externe ICs und dann noch den 
PCF8574 und da ich nicht vorhabe, für den Prototypen einen Print zu 
machen, wird das ziemlich aufwendig, wenn ich für jeden Mux noch ein 
Breakoutboard brauche. Am liebsten 3x MegaMUX.
https://www.instructables.com/MegaMUX-32-Channel-Multiplexer-Tutorial/
Allerdings dann auch nicht so billig wie die 4067 Breakout boards.

PGA4311 ist zumindest nicht uninteressant, aber ich hatte vor, die 3 
Kanäle in vor dem VGA (in einem OPV) zu summieren. Die Koeffizienten 
müssen einmal eingestellt werden, können auch Festwiderstände sein.

Also kurz und gut, mit Pins komme ich aus, Wahl der Analogmultiplexer 
ist wahrscheinlich mit 8x 4067 getroffen, wenn ich nicht doch noch an 
die Mega Mux (ADG732) günstig herankommen sollte. Aber die 4067 breakout 
boards sind so günstig (1,40€/Stck.), daß ich da kaum widerstehen kann.

Jetzt konzentriert sich die Fragestellung einzig und allein auf den VGA.
Ich experimentiere gerade mit einer Implementierung mit einem OPAmp und 
2 PJfets. 
https://www.eeweb.com/wp-content/uploads/projects-member-projects-henry-santana-part-1358272659.png
Versuche die Schaltung gerade zu simulieren. (LTSPICE)

von Andi B. (andi_b2)


Lesenswert?

Christoph K. schrieb:
> So sehr ich Deine Beiträge schätze, aber warum willst Du mich unbedingt
> zu diesen CD4051 bewegen?

Ich weiß nicht was Jobst Intention dazu ist. Aber mir würde da sofort 
einfallen - vielleicht weil die aus dieser Serie auch eine negative 
Vorspannung erlauben und deswegen Audio rund um GND verarbeiten können? 
Bzw. auch größere Pegel, bei höheren Versorgungen erlauben? Dinge die 
bei "Audio" oft sehr nützlich sind. Aber von solchen Details bist du IMO 
geistig noch zu weit entfernt. Also mach mal. Wir lesen uns dann wieder, 
wenn's ums ploppen und knacken geht.

von Christoph K. (chriskuku)


Lesenswert?

Andi B. schrieb:
> Christoph K. schrieb:
>> So sehr ich Deine Beiträge schätze, aber warum willst Du mich unbedingt
>> zu diesen CD4051 bewegen?
>
> Ich weiß nicht was Jobst Intention dazu ist. Aber mir würde da sofort
> einfallen - vielleicht weil die aus dieser Serie auch eine negative
> Vorspannung erlauben und deswegen Audio rund um GND verarbeiten können?
> ...
> Also mach mal. Wir lesen uns dann wieder,
> wenn's ums ploppen und knacken geht.

Es gibt eine über 25 Jahre alte Schaltung in dem Kontext, aus 
Transistoren (auch der VGA) und digitalen ICs aufgebaut, worin der 4067 
problemlos funktioniert, insofern habe ich hinsichtlich "Ploppen" und 
"Knacken" keinerlei Befürchtungen.

: Bearbeitet durch User
von Andi (Gast)


Lesenswert?

Für den VCA kannst du einen LM13700 z.B. verwenden. Es gibt aber auch 
spezielle ICs dafür.

Aber die ganze Idee mutet schon etwas seltsam an. Du hast 3 mal 25 
Tongeneratoren (einzelne Oszillatoren?) die du mittels Multiplexer 
umschaltest um verschiedene Tonhöhen spielen zu können?

Wieso nimmst du nicht 3 spannungsgesteuerte Oszillatoren, deren Tonhöhe 
vom Fusspedal gesteuert wird und mischt diese einfach zusammen, danach 
der VCA?

Andi

von Christoph K. (chriskuku)


Lesenswert?

Andi schrieb:
> Für den VCA kannst du einen LM13700 z.B. verwenden. Es gibt aber auch
> spezielle ICs dafür.
>
> Aber die ganze Idee mutet schon etwas seltsam an. Du hast 3 mal 25
> Tongeneratoren (einzelne Oszillatoren?) die du mittels Multiplexer
> umschaltest um verschiedene Tonhöhen spielen zu können?
>
> Wieso nimmst du nicht 3 spannungsgesteuerte Oszillatoren, deren Tonhöhe
> vom Fusspedal gesteuert wird und mischt diese einfach zusammen, danach
> der VCA?
>
> Andi

Ich verstehe zwar Deine Frage, aber manchmal ist etwas „gottgegeben“. 
Die Töne des Tongenerators bestehen aus Sinustönen, die in Grundton, 
Oktave und Quinte gemixt werden und es müssen genau die Töne aus dem 
Tonvorrat sein.

Die „billige Lösung“ sieht so aus, daß die Baßklaviatur ein Midisignal 
an einen SAM2695 sendet, und das analoge Signal aus dem Midi-Chip weiter 
verstärkt in den Orgellautsprecher eingespeist wird.

von Jobst M. (jobstens-de)


Lesenswert?

Christoph K. schrieb:
> warum willst Du mich unbedingt
> zu diesen CD4051 bewegen?

Will ich gar nicht unbedingt. Sie sind nur einfacher zu handeln, wenn Du 
mit symetrischer Versorgung arbeitest. Wenn Du auch den analogen Teil 
(außer dem VGA) ausschließlich mit +5V betreibst, ist auch der 4067 
einfach zu handhaben.

Christoph K. schrieb:
> Aber die 4067 breakout
> boards sind so günstig (1,40€/Stck.), daß ich da kaum widerstehen kann.

Das ist in der Tat günstig. Nur der Chip alleine kostet das selbe. Den 
gab es auch mal als DIL. Die 4051 auch immernoch.

Christoph K. schrieb:
> ADG732

Das ist eine ganz andere Klasse. Natürlich ist der teurer. Der hat ein 
Ron von 4Ω und nicht 100Ω-1kΩ.
Hast Du mit den Schaltern schon gespielt, um die klanglichen 
Eigenschaften beurteilen zu können?

Andi schrieb:
> LM13700

Ja, wäre eine Möglichkeit. Eine weitere evtl. der NE602/612/SA602/612 
(von dem inzwischen nur noch die Restbestände verkauft werden)
Oder eine diskrete Gilbert-Zelle.
In allen Fällen würde ich eine symetrische Signalverarbeitung an dieser 
Stelle bevorzugen, da (auch beim LM13700) DC-Anteile am Ausgang heraus 
kommen.

Andi schrieb:
> 3 spannungsgesteuerte Oszillatoren

Das wird aber einiges an Aufwand, die über die diversen Töne synchron zu 
halten ..!?


@TO:

Wie erzeugst Du die ganzen Signale? Muttergenerator, Teiler, Filter?

Wozu das Display? (Wozu der Prozessor?: Pedale -> Schalter!?)

Das der Prozessor alleine inkl. Tonerzeugung alles erledigen könnte ist 
Dir bewusst?
Polyphon! (Natürlich ist es dann nicht mehr analog ...)

Weitere Pins:
Die Tastaturmatrix umfasst 25 Kontakte. Da würde eine 5x5 Matrix 
reichen.
An die (diese oder Deine) Matrix kann über ein Enable zusätzlich ein 
Register (z.B. 74HC573) beschrieben werden.


Gruß
Jobst

von Christoph K. (chriskuku)


Lesenswert?

Die Tastaturkontakte und deren Matrix sind durch das Produkt REED32 von 
midi-hardware.com vorgegeben. Es gibt 2 Varianten dieser Baßpedale (25 
und 32). Für ein neues Design werde ich den 5x5 Vorschlag vielleicht 
aufgreifen.

Das Display dient dazu, eingestellte Parameter anzuzeigen.

Der Generator ist ein Hammond Tonradgenerator. -> 
theatreorgans.com/hammond/faq/a-100/a-100.html

Die Synchronizität ist durch das Design des (elektromechanischen) 
Tongenerators gewährleistet. Mutterwelle, die mit 1500/min dreht, daran, 
über Getriebe angeschlossen, die Tonräder mit Pickups, ähnlich wie bei 
einer E-Gitarre.

: Bearbeitet durch User
von Dergute W. (derguteweka)


Lesenswert?

Moin,

Huch, da haengt ja noch eine halbe Salami an der im ersten Post 
geleakten Scheibe. Wer haette das gedacht?

scnr,
WK

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.