Ich habe zwei Bauteile (Modellbahn) die auf mechanische Aktionen einen
Eingang auf 0V ziehen.
Ein weiteres Bauteil (Arduino) dessen Anschluss erwartet auf 0V gezogen
zu werden, intern mit Pull-Up auf 5V.
Jetzt würde ich gern die zwei ersten Bauteile in einer UND Logik
miteinander verbinden. Also der Pin am Arduino soll nur auf 0V gezogen
werden, wenn beide Bauteile auf 0V ziehen.
Ist es möglich, dazu zwei p-Kanal Mosfets in Reihe zu schalten. Und
jeweils am Gate eins der Bauteile anzuschließen. Somit würde eine
Verbindung zu 0V nur zustande kommen, wenn beide Gates Richtung 0V
gehen.
Habe ich da einen Gedankenfehler oder ist das so möglich?
Andre schrieb:> Ist es möglich, dazu zwei p-Kanal Mosfets in Reihe zu schalten. Und> jeweils am Gate eins der Bauteile anzuschließen. Somit würde eine> Verbindung zu 0V nur zustande kommen, wenn beide Gates Richtung 0V> gehen.
Nein, das geht so nicht.
Aber die gewünschte Funktion ist nichts anderes als eine ODER-Funktion.
Am Besten gleich ein CMOS-ODER-Gatter nehmen, oder ein NOR-Gatter plus
Inverter (auch mit NOR), oder 2 Inverter und ein NAND Gatter, u.v.m.
Nachtrag: Wenn du unbedingt mit MOSFETs arbeiten möchtest: 3x N-Kanal
(1x NOR, 1x Inverter) + 4 Pull-Up-Widerstände.
Ach Du grüne Neune (Gast)
>Nutze die De Morganschen Theoreme aus, dann geht das sogar mit nur zwei>Dioden und einem bipolaren NPN Transistor.
Das macht aber nicht 1x 0V aus 2x 0V ...
Jens G. schrieb:> Das macht aber nicht 1x 0V aus 2x 0V ...
Ja, ich hab's auch gerade gemerkt. Jetzt könnte man tatsächlich noch den
P-MOSFET am Ausgang anschließen. Den Pull Down an der Basis habe ich, im
Eifer des Gefechts, auch vergessen.
Aber das werden dann auch schon wieder mehr Bauteile, als man eigentlich
haben will.
Jens G. schrieb:> Man nimmt ganz einfach zwei der Arduino-Eingänge, und verknüpft> die in der SW entsprechend ...
Ja, das ist dann wohl doch das Einfachste.
Am Arduino lässt sich leider kein weiterer Eingang verwenden.
Ich habe es nochmal aufgezeichnet. Da ich glaube mich missverständlich
ausgedrückt.
Gewollt ist, das der Anschluss am Arduino auf 0V gezogen wird, wenn
beide Modelbahn-Bauteile ihren Ausgang mit 0V verbinden.
Da beide P-Mosfets am Gate weniger Spannung als an der Source haben,
sollte der DS-Widerstand Richtung 0Ohm gehen womit am Arduino Anschluss
doch nahezu 0V anliegen sollten.
Wenn das nicht funktioniert, könnt ihr mir bitte erklären, worin mein
Gedankenfehler liegt?
Eberhard H. schrieb:> Ein P-Kanal-MOSFET wird mit einer negativen Spannung relativ zu seinem> Source-Anschluss angesteuert.
Die Source liegt doch bei 5V und das Gate bei 0V. Somit liegt das Gate
doch relativ negativ zur Source um 5V. Oder nicht?
Andre schrieb:> Eberhard H. schrieb:>> Ein P-Kanal-MOSFET wird mit einer negativen Spannung relativ zu seinem>> Source-Anschluss angesteuert.>> Die Source liegt doch bei 5V und das Gate bei 0V. Somit liegt das Gate> doch relativ negativ zur Source um 5V. Oder nicht?
Mit dem Widerstand an Source folgt hier Source dem Gate um die
Threshold-Spannung, ist also immer entsprechend höher und wird nie zu
0V.
Deshalb klappt deine Idee nicht.
Wenn Bauteil 1 und Bauteil 2 aber 5V aktiv treiben und nicht nur nach
GND (0V) schalten), reichen auch 2 Dioden und ein Pull-Down-Widerstand,
eben die ODER-Schaltung.
Ok. Es liegt also am PullUp an der Source. Schade und Danke für die
Erklärung.
Die Bauteile 1 und 2 haben intern ein PullUp zu 5V und ziehen über
N-Mosfet Richtung 0V (GND).
Andre schrieb:> Gewollt ist, das der Anschluss am Arduino auf 0V gezogen wird, wenn> beide Modelbahn-Bauteile ihren Ausgang mit 0V verbinden.
Problem der Schaltung ist, dass du einen Sourcefolger gebaut hast. Die
liefern dann keine 0V. Jeder erhöht den LOW-Pegel um UGS.
Das wäre die Lösung:
Eberhard H. schrieb:> Wenn Bauteil 1 und Bauteil 2 aber 5V aktiv treiben und nicht nur nach> GND (0V) schalten), reichen auch 2 Dioden und ein Pull-Down-Widerstand,> eben die ODER-Schaltung.
Oder du brauchst halt noch einen Inverter, also einen dritten
Transistor.
Andre (Gast)
>Am Arduino lässt sich leider kein weiterer Eingang verwenden.
Pech.
>Ich habe es nochmal aufgezeichnet. Da ich glaube mich missverständlich>ausgedrückt.>image.jpg
Egal ob Du p-Kanal oder n-Kanal nimmst, oder npn oder pnp, der
PullUp/Down gehört in die Drainleitung (nicht in Source, womit die
Spannungsverstärkung deutlich kleiner 1 wäre).
Auserdem ist solch eine Schaltung dann immer invertierend. D.h., Du mußt
grundsätzlich noch eine zusätzliche Transistorstufe zum nochmaligem
Invertieren nachschalten.
Da Du letztlich ein OR bauen willst, sind zwei serielle p-Kanal mit
drainseitigem PullUp (unten) und nachfolgender Inverterstufe (im
einfachsten ein n-Kanal mit PullUp im Drain) schon mal (als eine
Variante) richtig.
Andre schrieb:> Die Bauteile 1 und 2 haben intern ein PullUp zu 5V und ziehen über> N-Mosfet Richtung 0V (GND).
Dann klappt das mit 2 Dioden als ODER auch nicht.
Es bleibt jedoch noch eine analoge Lösung, im einfachsten Fall mit 3
Widerständen.
Hierzu sollte man den Wert der Pull-Up-Widerstände bei BAUTEIL1 und
BAUTEIL2 einigermaßen kennen.
Dann könnte die sehr einfache Schaltung z. B. wie im Anhang ausschauen.
R3 ist der offensichtlich bereits vorhandene Pull-Up-Widerstand beim
Arduino-Board.
Die ATmegas haben CMOS-Eingänge mit ca. 0,5V Hysterese @5V.
Pegel < 2V bzw. > 3V erfüllen also die LOW/HIGH-Bedingungen.
Wenn die Pull-Up-Werte bei BAUTEIL1 (R4) und BAUTEIL2 (R5) stark von 10
kOhm abweichen, muss man ggf. die Werte von R1 bis R3 anpassen.
Eberhard H. schrieb:> Dann klappt das mit 2 Dioden als ODER auch nicht.
Doch schon. Der PU am Arduinoeingang muss halt zu einem PD und im Wert
ggf. angepasst werden.
Wie dimensionieren hängt halt davon ab, was diese 'Bauteile' für einen
PU haben.
Jens G. schrieb:> Egal ob Du p-Kanal oder n-Kanal nimmst, oder npn oder pnp, der> PullUp/Down gehört in die Drainleitung (nicht in Source, womit die> Spannungsverstärkung deutlich kleiner 1 wäre).
Danke, verstanden.
Eberhard H. schrieb:> Dann klappt das mit 2 Dioden als ODER auch nicht.>> Es bleibt jedoch noch eine analoge Lösung, im einfachsten Fall mit 3> Widerständen.> Hierzu sollte man den Wert der Pull-Up-Widerstände bei BAUTEIL1 und> BAUTEIL2 einigermaßen kennen.>> Dann könnte die sehr einfache Schaltung z. B. wie im Anhang ausschauen.>> R3 ist der offensichtlich bereits vorhandene Pull-Up-Widerstand beim> Arduino-Board.>> Die ATmegas haben CMOS-Eingänge mit ca. 0,5V Hysterese @5V.> Pegel < 2V bzw. > 3V erfüllen also die LOW/HIGH-Bedingungen.>> Wenn die Pull-Up-Werte bei BAUTEIL1 (R4) und BAUTEIL2 (R5) stark von 10> kOhm abweichen, muss man ggf. die Werte von R1 bis R3 anpassen.
Cool, ich denke ich habe es verstanden. Wenn nur ein Bauteil auf GND
zieht, habe ich den Spannungsteiler von 10k und 12k. Wenn beide auf GND
ziehen habe ich den Spannungsteiler zwischen 10k und 6k (2x12k
parallel). Und somit nur bei beiden ein Low am Arduino.
HildeK schrieb:> Doch schon. Der PU am Arduinoeingang muss halt zu einem PD und im Wert> ggf. angepasst werden. Wie dimensionieren hängt halt davon ab, was diese> 'Bauteile' für einen PU haben.
Ok, das kann ich noch nicht ganz nachvollziehen.
Ich vermute das jeweils einer der Beiden Bauteile den Arduino Eingang
oben hält. Und wenn beide gegen Masse schalten, bleibt der
Spannungsteiler zwischen Arduino PullUp und 50k PullDown. Aber dann wäre
am Arduino Pin kein Low.
Aber Danke. Ihr habt zum verstehen viel geholfen.
Andre schrieb:> Ok, das kann ich noch nicht ganz nachvollziehen.>> Ich vermute das jeweils einer der Beiden Bauteile den Arduino Eingang> oben hält. Und wenn beide gegen Masse schalten, bleibt der> Spannungsteiler zwischen Arduino PullUp und 50k PullDown. Aber dann wäre> am Arduino Pin kein Low.
Deine Quellen haben einen OC-Ausgang mit einem Pullup in unbekannter
Höhe. Einigermaßen niederohmig wäre von Vorteil.
Der Arduino hat m. W. normalerweise keinen eingebauten PU, sondern eher
einen per SW konfigurierbaren - gut, ich hab keinen zur Hand, um
nachzuschauen. Zur Not müsste man den entfernen, auf jeden Fall in der
SW deaktivieren.
Wenn dann beide "Bauteile" auf LOW sind, dann wird der 50k den
Arduino-Eingang auf LOW ziehen.
HildeK schrieb:> Problem der Schaltung ist, dass du einen Sourcefolger gebaut hast. Die> liefern dann keine 0V.
Ich bin der Meinung, dass die Schaltung laufen kann, wenn an beide Gate
noch ein Widerstand nach +5V kommt und die FETs bei -4V UGS sicher
schalten.
Ich würde das einfach mal zusammenlöten und messen.
H. B. schrieb:> Ich glaub am einfachsten ist es ein NOR Gate und einen kleinen N-Kanal> MOSFET zu nehmen.
Und warum dann nicht gleich einen SN74LVC1G32?
So wären wir wieder bei 22.11.2020 14:35.
H. B. schrieb:> Ich glaub am einfachsten ist es ein NOR Gate und einen kleinen> N-Kanal MOSFET zu nehmen
Da sowieso zwei Transistoren eingeplant sind, kann man die UND-Funktion
auch nur mit Dioden bewerkstelligen. Dann benötigt man keinen
ODER-Schaltkreis mehr und hat noch zusätzlich die Möglichkeit die
Schaltung mit weiteren Dioden bequem zu erweitern, ohne dabei einen
weiteren Eingang vom Arduino verwenden zu müssen.
Eberhard H. schrieb:> H. B. schrieb:>> Ich glaub am einfachsten ist es ein NOR Gate und einen kleinen N-Kanal>> MOSFET zu nehmen.>> Und warum dann nicht gleich einen SN74LVC1G32?>> So wären wir wieder bei 22.11.2020 14:35.
Meine Schaltung hat den Vorteil, dass man auch einen µC mit anderer I/O
Spannung als 5V (z.B. 1,8V) damit ansteuern kann.
H. B. schrieb:> Meine Schaltung hat den Vorteil, dass man auch einen µC mit anderer I/O> Spannung als 5V (z.B. 1,8V) damit ansteuern kann.
...und meine Schaltung ist sogar noch besser, weil sie sowohl Eingangs-
als auch Ausgangssignale zwischen 3,3V und ca. 12V verarbeiten kann.
Dank des offenen Kollektors.
Manfred schrieb:> Ich bin der Meinung, dass die Schaltung laufen kann, wenn an beide Gate> noch ein Widerstand nach +5V kommt und die FETs bei -4V UGS sicher> schalten.
Dann hast du für LOW am Ausgang eben irgendwas bei 3-4V. Und keine 0V.
Wenn schon so, dann mit PNP, aber es fehlen dann noch immer 1.2-1.3V zu
einen ordentlichen LOW. Oder mit einem pMOS mit extrem niedrigem
G-S-Threshold.
> Ich würde das einfach mal zusammenlöten und messen.
Tu es und berichte.