Forum: Mikrocontroller und Digitale Elektronik Baustein suche


von Ralf F. (stingray05)


Lesenswert?

Hallo zusammen,

ich suche nach einer Möglichkeit 5 Digitale Signale (abwechselnd) auf 
einen Ausgang zu legen.

Der Ausgang sollte nur dann LOW durchschalten wenn einer der 5 Eingänge 
ebenfalls LOW ist. HIGH am Eingang soll ignoriert werden.

Gibt es dafür was passendes ?


Würde mich über Eure Tipps freuen !


Grüsse

: Bearbeitet durch User
von Mario M. (thelonging)


Lesenswert?

Ralf F. schrieb:
> wenn einer der 5 Eingänge
> ebenfalls LOW

Wenn exakt einer Low ist? Oder auch wenn mehrere Low sind?

Ralf F. schrieb:
> Der Ausgang sollte nur dann LOW durchschalten

Und wenn der Ausgang High ist, soll er dann Strom liefern können?

von Thorsten W. (Gast)


Lesenswert?

Hi,
ein NAND Glied?

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Und welche Anforderungen hast Du noch, die den Einsatz eines ganz 
normalen AND-Gatters verbieten? Dürfen wir uns also auf die Salamitaktik 
einstellen oder war es das schon?

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Thorsten W. schrieb:
> ein NAND Glied?

Wieso NAND? Es soll doch "durchgeschaltet" werden.

von Harald W. (wilhelms)


Lesenswert?

Ralf F. schrieb:

> ich suche nach einer Möglichkeit 5 Digitale Signale (abwechselnd) auf
> einen Ausgang zu legen.
>
> Der Ausgang sollte nur dann LOW durchschalten wenn einer der 5 Eingänge
> ebenfalls LOW ist. HIGH am Eingang soll ignoriert werden.

Grundsätzlich handelt es hier um zwei Aufgaben: Erstens Detektion
und zweites schalten. Dier erste Aufgabe löst man mit einer pas-
senden Logikschaltung und die zweite mit einem Multiplexer.

von Thorsten W. (Gast)


Lesenswert?


von Jörg R. (solar77)


Lesenswert?

Ralf F. schrieb:
> ich suche nach einer Möglichkeit 5 Digitale Signale (abwechselnd) auf
> einen Ausgang zu legen.
>
> Der Ausgang sollte nur dann LOW durchschalten wenn einer der 5 Eingänge
> ebenfalls LOW ist. HIGH am Eingang soll ignoriert werden.

Versuche mal das mit einer Skizze darzustellen.


Andreas S. schrieb:
> Dürfen wir uns also auf die Salamitaktik
> einstellen oder war es das schon?

Ist doch mittlerweile fast schon Standard.

von MaWin (Gast)


Lesenswert?

Ralf F. schrieb:
> Der Ausgang sollte nur dann LOW durchschalten wenn einer der 5 Eingänge
> ebenfalls LOW ist.

Nennt man UND Gatter (mit 5 Eingängen). Man kann auch 2 3er 
hintereinander schalten, oder 4 2er. 74HC08.
1
E1 --| \
2
     |  )--+
3
E2 --| /   +--| \
4
              |  )--+
5
E3 -----------| /   +--| \
6
                       |  )--+
7
E4 --------------------| /   +--| \
8
                                |  )-- Ausgang
9
E5 -----------------------------| /

> HIGH am Eingang soll ignoriert werden.

Unsinn. Grundsätze der Logik nicht verstanden, Schule geschwänzt ?

von Ralf F. (stingray05)


Lesenswert?

Mario M. schrieb:
> Ralf F. schrieb:
>> wenn einer der 5 Eingänge
>> ebenfalls LOW
>
> Wenn exakt einer Low ist? Oder auch wenn mehrere Low sind?
>
> Ralf F. schrieb:
>> Der Ausgang sollte nur dann LOW durchschalten
>
> Und wenn der Ausgang High ist, soll er dann Strom liefern können?


Hi Mario,

Es soll nur dann LOW durchgeschaltet werden wenn Einer der 5 Eingänge
LOW ist !

von Teo D. (teoderix)


Lesenswert?

Ralf F. schrieb:
> Der Ausgang sollte nur dann LOW durchschalten wenn einer der 5 Eingänge
> ebenfalls LOW ist. HIGH am Eingang soll ignoriert werden.
....
> Signale (abwechselnd) auf
> einen Ausgang zu legen.

Ich sehe da 5 Dioden und einen Pull-up-Widerstand!

PS: https://www.elektronik-kompendium.de/sites/dig/0710091.htm

: Bearbeitet durch User
von Axel S. (a-za-z0-9)


Lesenswert?

Ralf F. schrieb:
> Es soll nur dann LOW durchgeschaltet werden wenn Einer der 5 Eingänge
> LOW ist !

Und muß dann wirklich das Low von diesem Eingang "durchgeschaltet" 
werden, oder reicht es nicht vielleicht auch, wenn der Ausgang einfach 
sein eigenes LOW ausgibt?

Und was ist damit:

Mario M. schrieb:
> Wenn exakt einer Low ist? Oder auch wenn mehrere Low sind?

von Ralf F. (stingray05)


Lesenswert?

Axel S. schrieb:

> Und muß dann wirklich das Low von diesem Eingang "durchgeschaltet"
> werden, oder reicht es nicht vielleicht auch, wenn der Ausgang einfach
> sein eigenes LOW ausgibt?


Hi Axel,

Es würde reichen wenn der Ausgang sein eigenes LOW ausgibt !


> Mario M. schrieb:
>> Wenn exakt einer Low ist? Oder auch wenn mehrere Low sind?

Hatte ich schon beantwortet: Nur wenn einer LOW ist !

von Mario M. (thelonging)


Lesenswert?

Wie sind denn die Logikpegel und die Anforderung an das Timing. Welches 
Problem möchtest Du lösen?

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Ralf F. schrieb:
> Es würde reichen wenn der Ausgang sein eigenes LOW ausgibt !

Dann beantworte doch endlich die Frage, warum ein einfaches AND-Gatter 
mit fünf Eingängen nicht ausreichen sollte.

von Mario M. (thelonging)


Angehängte Dateien:

Lesenswert?

Ralf F. schrieb:
> Hi Mario,
>
> Es soll nur dann LOW durchgeschaltet werden wenn Einer der 5 Eingänge
> LOW ist !

Betonung liegt auf EINER! Das wird eine aufwändigere Logikschaltung, 
siehe Anhang. Deswegen auch meine Frage nach den Pegeln und dem Timing. 
Vielleicht lässt sich das Problem mit einem Mikrocontroller oder einer 
trickreichen Analogschaltung erschlagen.

Beitrag #6226643 wurde vom Autor gelöscht.
von Ralf F. (stingray05)


Angehängte Dateien:

Lesenswert?

Hi Andreas,

im Anhang mal die derzeitige Schaltung (04.png):

mit einem Teensy 3.2 wird eine Widerstandmessung im Loop durchgeführt
die per USB Midi Noten ausgibt.
Die Widerstände stellen dabei die Bünde auf einem Gitarren Griffbrett
dar.

Eine Saite legt dabei zusätzlich GND an den gewünschten Bund (zB Fret 1
bis 6)und ändert damit den Messwert / die Midi Note.
Funktioniert soweit auch problemlos, - allerdings in dieser Form
lediglich mit nur einer Saite...

Um das gleiche Prinzip auch mit den übrigen Saiten verwenden zu können
müssten diese, an der Stelle wo zZ GND fest angelegt ist, der Reihe nach
(zeitversetzt) GND zB per DigitalOut ein und aus schalten...

>Wie Harald W. schon schrieb ergeben sich damit 2 Aufgaben:
>Erstens Detektion und zweites schalten.

Hardwareseitig könnte das etwa so aussehen (Anhang Schaltung 06.png):

Hoffe ich konnte das so einigermaßen veranschaulichen ?

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Und noch einmal:

WARUM ERFÜLLT DEINER MEINUNG NACH EIN EINFACHES AND-GATTER MIT FÜNF 
EINGÄNGEN NICHT DIE ANFORDERUNGEN?

von Ralf F. (stingray05)


Lesenswert?

Mario M. schrieb:
> Ralf F. schrieb:
>> Hi Mario,
>>
>> Es soll nur dann LOW durchgeschaltet werden wenn Einer der 5 Eingänge
>> LOW ist !
>
> Betonung liegt auf EINER! Das wird eine aufwändigere Logikschaltung,
> siehe Anhang. Deswegen auch meine Frage nach den Pegeln und dem Timing.
> Vielleicht lässt sich das Problem mit einem Mikrocontroller oder einer
> trickreichen Analogschaltung erschlagen.


Hi Mario,

die Schaltung läuft bereits auf einem Mikrocontroller: PJRC Teensy 3.2

Timing: gute Frage...

Dazu müsste ich wissen wie lange der Loop für die Messung mit dem Teensy 
3.2 braucht (der lauft mit 72 MHz).
Jede Messung wird im Loop, zwecks Mittelwert Bildung, 5 x durchgeführt.

Irgendwo war mal zu lesen das zB ein UNO mit 16 MHz etwa 4 µs für 1 x 
analog.Read benötigt... dazu käme dann noch die Zeit fürs Mapping in 
Midi Werte.

Pegel: LOW = 0 Volt, HIGH = 5 Volt

von MaWin (Gast)


Lesenswert?

Mario M. schrieb:
> Das wird eine aufwändigere Logikschaltung, siehe Anhang

Nö.
1
            +5V aka HIGH
2
             |        |
3
E1--1k--+   470R      |
4
        |    |       1k
5
E2--1k--+    +--|+\   |
6
        |    |  |  >--+
7
E3--1k--+----(--|-/   |
8
        |   1k        |
9
E4--1k--+----(--|+\   |
10
        |    |  |  >--+--out
11
E5--1k--+    +--|-/
12
        |    |    LM393
13
       1k   3k6
14
        |    |
15
       GND  GND

von MaWin (Gast)


Lesenswert?

Ralf F. schrieb:
> Irgendwo war mal zu lesen das zB ein UNO mit 16 MHz etwa 4 µs für 1 x
> analog.Read benötigt..

Na ja, ein Arduino analogRead braucht 100us. 4us schaffst du nur in 
Assembler.

von Ralf F. (stingray05)


Lesenswert?

Andreas S. schrieb:
> Und noch einmal:
>
> WARUM ERFÜLLT DEINER MEINUNG NACH EIN EINFACHES AND-GATTER MIT FÜNF
> EINGÄNGEN NICHT DIE ANFORDERUNGEN?


Hi Andreas,

hab mir das gerade mal hier angesehen:
https://de.wikipedia.org/wiki/Und-Gatter


Du hast recht... manchmal sieht man den Wald vor lauter Bäumen nicht.

Eingang B fest auf GND (0 / LOW) verdrahtet, Eingang A wahlweise HIGH 
oder LOW ergibt am Ausgang immer 0 / LOW.

Das ganze dann 5 mal und das Problem wäre schonmal erschlagen.

von Ralf F. (stingray05)


Lesenswert?

MaWin schrieb:
> Ralf F. schrieb:
>> Irgendwo war mal zu lesen das zB ein UNO mit 16 MHz etwa 4 µs für 1 x
>> analog.Read benötigt..
>
> Na ja, ein Arduino analogRead braucht 100us. 4us schaffst du nur in
> Assembler.


Hi MaWin,

wenn ich mal von den 100µs pro Lesevorgang (bei 16 MHz) ausgehen würde,
wären das etwa in meinem Fall 500µs + Mapping auf Midi Daten.

Kritisch wird das erst wenn ich mich im milli Sekunden Bereich bewege...

von Mario M. (thelonging)


Lesenswert?

Ralf F. schrieb:
> Eingang B fest auf GND (0 / LOW) verdrahtet, Eingang A wahlweise HIGH
> oder LOW ergibt am Ausgang immer 0 / LOW.
>
> Das ganze dann 5 mal und das Problem wäre schonmal erschlagen.

Also wenn ich das jetzt richtig verstehe, reicht dann doch ein NAND 
(4068) mit nachgeschaltetem Transistor, der die gemeinsame Leitung nach 
Masse zieht?

Kann nicht der Teensy das Steuersignal erzeugen und das NAND ersetzen?

von c-hater (Gast)


Lesenswert?

MaWin schrieb:

> Na ja, ein Arduino analogRead braucht 100us.

Mag sein, weiß ich nicht.

> 4us schaffst du nur in
> Assembler.

Das ist allerdings Unsinn. 64 Takte/Sample sollte auch in C noch 
einigermaßen machbar sein.

Allerdings: Die ADC ist sowieso nicht schnell genug, um mit 250kHz 
Samplefrequenz arbeiten zu können, das würde nämlich mehr als 3MHz 
Wandlertakt für den ADC bedeuten. Der stellt aber so ca. knapp über 
1,2Mhz seine Funktion vollständig ein. Und für eine einigermaßen 
brauchbare Auflösung muss man nochmals deutlich weiter runter gehen. 8 
Bit Auflösung ist so ungefähr ab 40kHz Samplerate abwärts möglich 
(entspricht so ca. 0,5MHz Wandlertakt).

Die Frage ist allerdings: Wie kann man überhaupt auf die unsinnige Idee 
kommen, die Sache analog einlesen zu wollen. Diese Anwendung schreit 
doch geradezu nach Schieberegistern. Damit ist dann erstens diese 
unsägliche analoge Eingabe eleminiert und gleichzeitig das Problem, um 
das es in diesem Thread geht...

Und es ist dann auch mit einem Arduino UNO völlig problemlos mit der 
gewünschten Abtastrate einlesbar, da braucht man dann keinen Teensy 
für...

von Ralf F. (stingray05)


Lesenswert?

> Die Frage ist allerdings: Wie kann man überhaupt auf die unsinnige Idee
> kommen, die Sache analog einlesen zu wollen. Diese Anwendung schreit
> doch geradezu nach Schieberegistern. Damit ist dann erstens diese
> unsägliche analoge Eingabe eleminiert und gleichzeitig das Problem, um
> das es in diesem Thread geht...
>
> Und es ist dann auch mit einem Arduino UNO völlig problemlos mit der
> gewünschten Abtastrate einlesbar, da braucht man dann keinen Teensy
> für...

Hi c-hater,

wie gesagt: solange die Abtastrate den Millisekunden Bereich nicht 
übersteigt ist alles im grünen Bereich(es wird lediglich die 
Fingerposition detektiert und als MidiNote ausgegeben)....

zu Deiner Frage: weil die Widerstände analog gemessen werden... !
Teensy nur weil der direkt USB Midi eingebaut hat... und sehr viel 
kleiner bei gleichzeitig wesentlich besserer Leistung ist (im Vergleich 
zum UNO).


Es ging ja darum lediglich den Teil der Schaltung der in 04.png noch 
fest auf GND verkabelt ist, so zu verändern das GND wechselweise durch 
den Sketch immer auf die nächste Saite gelegt werden kann... Daher die 
überlegung / Fragen zu zusätzlicher Hardware.

Wenn das auch komplett per Software mit Aduino oder Teensy umsetzbar 
wäre, bin ich der letzte der was dagegen hat.
Dann aber bitte mit Beispiel.

Die Schaltung mit dem Spannungsteiler ist nur gewählt worden weil dafür 
lediglich 2 Kabel + Widerstände im Griffbrett benötigt werden - 
sozusagen  ein "minimal Inversiver " Eingriff am Instrument.

Bei einer "normalen" Keyboard Scan Matrix müsste jedes Bundstäbchen
einzeln verkabelt werden -
Wären in meinem Fall dann 24 Strippen die da irgendwie untergebracht
werden müssten...

: Bearbeitet durch User
von Mario M. (thelonging)


Lesenswert?

Ralf F. schrieb:
> Es ging ja darum lediglich den Teil der Schaltung der in 04.png noch
> fest auf GND verkabelt ist, so zu verändern das GND wechselweise durch
> den Sketch immer auf die nächste Saite gelegt werden kann.

Der Teensy braucht 6 Ausgänge, die immer auf L liegen und auf INPUT 
geschaltet sind. Dann wechselst Du nacheinander einzeln die Ausgänge auf 
OUTPUT und ziehst damit die jeweilige Saite auf GND. Jetzt kannst Du 
über die Spannung am Analogeingang die Griffposition einlesen.

von c-hater (Gast)


Lesenswert?

Ralf F. schrieb:

> Die Schaltung mit dem Spannungsteiler ist nur gewählt worden weil dafür
> lediglich 2 Kabel + Widerstände im Griffbrett benötigt werden -
> sozusagen  ein "minimal Inversiver " Eingriff am Instrument.

Nunja, mit Schieberegistern bräuchtest du zwar im Griffbrett mehr Adern, 
dafür aber keine Widerstände. In gewissen Abständen halt ein SR, aber 
die Dinger gibt's so winzig, die tragen kaum mehr auf als ein 
Widerstand.

Und man könnte das Konzept problemlos so aufweiten, dass alle Bünde 
erfaßt werden können und nicht nur 6 davon...

Und natürlich: Oben am Kopf kann ein weiteres SR implantiert werden, was 
das Multiplexing über die sechs Saiten erledigt (das war ja das Thema 
dieses Threads). Und all die SRs in der Gitarre können mit nur vier 
Strippen Richtung Host (also: Arduino oder whatever) versorgt werden, 
z.B. indem man I2C-SRs verwendet. Mit SPI-artiger Ansteuerung sind's 
zwar fünf Strippen, dafür werden aber die SRs billiger.

> Wenn das auch komplett per Software mit Aduino oder Teensy umsetzbar
> wäre, bin ich der letzte der was dagegen hat.
> Dann aber bitte mit Beispiel.

Nö, programmieren mußt du schon selber. Ich liefere maßgeschneiderten 
Code nur gegen maßgeschneiderte Bezahlung. Es gibt aber unzählige 
Beispiele für die Verwendung von SRs, auch für Arduino. Es sollte dir 
doch möglich sein, diese auf dein Problem anzupassen. Wenn nicht: geh' 
sterben...

Beitrag #6226984 wurde vom Autor gelöscht.
von Ralf F. (stingray05)


Angehängte Dateien:

Lesenswert?

Mario M. schrieb:

> Der Teensy braucht 6 Ausgänge, die immer auf L liegen und auf INPUT
> geschaltet sind. Dann wechselst Du nacheinander einzeln die Ausgänge auf
> OUTPUT und ziehst damit die jeweilige Saite auf GND. Jetzt kannst Du
> über die Spannung am Analogeingang die Griffposition einlesen.

Hi Mario M.,

In meinem Fall sinds nur 5 Saiten (E Bass) - also 5 Ausgänge (D0 bis D4
am Teensy)die dann abwechselnd mit LOW auf den A0 gelegt würden.

also Schaltungsseitig (ohne Gatter / MUX) etwa so(08.png):

Damit werden aber nur die tatsächlich gegriffenen Saiten ausgewertet.
Jede Saite kann aber auch angeschlagen werden ohne das die tatsächlich
gegriffen wird ("als leere Saite").

Wenn die GND Verbindung nicht da ist weil keine Saite gegriffen wird,
kann nix gemessen werden... und eine identifizierung der einzelnen
Saiten geht dann auch nicht...

Mein erster Gedanke war die Blaue Verbindung ...(Leere Saite = Rmax =
MidiNote).
Damit lässt sich aber wiederum nicht zwischen den Saiten
unterscheiden...

Sieht fast so aus als wenns dafür noch nen weiteren "Sensor" pro Saite
braucht ?

Wie lässt sich das auswerten, - weitere Ideen ?

von Flip (Gast)


Lesenswert?

wenn du greifst, wird die saite ja auf 2 folgenden bunden aufliegen. 
sobald du 2 saiten greifst kann das 3 bunde elektrisch verbinden. 
auswertung ist dann prinzipiell unmoeglich

von Teo D. (teoderix)


Lesenswert?

Flip schrieb:
> auswertung ist dann prinzipiell unmoeglich

Doch
https://www-user.tu-chemnitz.de/~heha/Mikrocontroller/Tastenmatrix.htm
(3.)

von Ralf F. (stingray05)


Lesenswert?

Flip schrieb:
> wenn du greifst, wird die saite ja auf 2 folgenden bunden aufliegen.
> sobald du 2 saiten greifst kann das 3 bunde elektrisch verbinden.
> auswertung ist dann prinzipiell unmoeglich

Hi Flip,

ja der Einwand ist mir bekannt und sehr richtig.

Es wird allerdings immer nur der oberste Bund ausgewertet und immer nur 
jeweils eine Saite nach der anderen im Loop aktiv geschaltet.

Damit sollte dieses Problem, zumindest in der Theorie, nicht auftauchen.
Das selbe gilt für mehrere gleichzeitig am selben Bund gegriffene 
Saiten.

Die werden immer nur jeweils einzeln, eine nach der anderen im Loop 
aktiv geschaltet.


Es geht mir im Moment erst mal darum ob und wie sich eine 
Fingerpositions-Erkennung nach diesem Prinzip für alle Saiten so 
überhaupt umsetzen lässt.

Brauchts dafür zusätzliche Hardware, wenn ja welche ?
Oder lässt sich das alles mit Arduino / Teensy Boardmitteln und der 
passenden Steuer Logik erreichen ?

Freu mich auf Eure Tipps / Anregungen !

von Michael B. (laberkopp)


Lesenswert?

Ralf F. schrieb:
> Es geht mir im Moment erst mal darum ob und wie sich eine
> Fingerpositions-Erkennung nach diesem Prinzip für alle Saiten so
> überhaupt umsetzen lässt.

Nein.

Über die Schwingung der Saite, also akustisch, wobei es wohl um eine 
e-Gitarre geht (sonst wären nicht alle Saiten elektrisch leitfähig) also 
elektromagnetisch, geht es aber schon.

Bloss braucht man dazu erheblich mehr Gehirnschmalz.

von Ralf F. (stingray05)


Lesenswert?

c-hater schrieb:

> Nunja, mit Schieberegistern bräuchtest du zwar im Griffbrett mehr Adern,
> dafür aber keine Widerstände. In gewissen Abständen halt ein SR, aber
> die Dinger gibt's so winzig, die tragen kaum mehr auf als ein
> Widerstand.

> Und man könnte das Konzept problemlos so aufweiten, dass alle Bünde
> erfaßt werden können und nicht nur 6 davon...

Hatte ich völlig vegessen zu erwähnen:
In nem Testaufbau mit Breadboard funktioniert das mit einer Saite auch 
mit 25 Widerständen - sprich mit 25 Bünden, problemlos !


Du kannst mir dazu gerne mal nen Angebot per PM schicken - dann sehen 
wir weiter !


>Wenn nicht: geh' sterben...
Zu sowas sag ich jetzt mal nix...

: Bearbeitet durch User
von c-hater (Gast)


Lesenswert?

Ralf F. schrieb:

> Hatte ich völlig vegessen zu erwähnen:
> In nem Testaufbau mit Breadboard funktioniert das mit einer Saite auch
> mit 25 Widerständen - sprich mit 25 Bünden, problemlos !

Das wage ich dann doch ernsthaft zu bezweifeln...

> Du kannst mir dazu gerne mal nen Angebot per PM schicken

Nö, habe auch so genug Arbeit. Mach's einfach selber und lerne dabei. 
Ein paar SRs zu benutzen ist ja nun echt keine Raketentechnik.

von Ralf F. (stingray05)


Lesenswert?

c-hater schrieb:
> Ralf F. schrieb:
>
>> Hatte ich völlig vegessen zu erwähnen:
>> In nem Testaufbau mit Breadboard funktioniert das mit einer Saite auch
>> mit 25 Widerständen - sprich mit 25 Bünden, problemlos !
>
> Das wage ich dann doch ernsthaft zu bezweifeln...


kannst Du meinetwegen bezweifeln -
ich hab die funktionierende Schaltung hier...

Funktioniert wie gesagt bei einer einzelnen Saite mit 25 Widerständen / 
Bünden.

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.