Forum: Mikrocontroller und Digitale Elektronik 3.3 - 12 V Digital-Eingang


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 rasz (Gast)


Angehängte Dateien:

Lesenswert?

Ich würde gerne mittels eines Raspberry-Pi eine art 
mini-Hardware-in-the-Loop Teststation bauen. Ich frage mich, wie ich am 
besten einen Digital-Eingang realisiere, der mehrere Spannungslevel 
verarbeiten kann. Eine Idee - siehe Anhang - ist es mit der 
Eingangsspannung einfach ein MOSFET zu schalten. Da gibt's doch aber 
bestimmt bessere Alternativen, oder?

von Andreas B. (bitverdreher)


Lesenswert?

Dazu müßtest Du aber auch den unteren Level definieren. Und dann wird es 
auch schon komplizierter.

von rasz (Gast)


Lesenswert?

Andreas B. schrieb:
> Dazu müßtest Du aber auch den unteren Level definieren. Und dann
> wird es
> auch schon komplizierter.

Wie ich mir dachte: Irgendwas hab' ich übersehen :)

Die Grenzen zwischen High und Low wären im Beispiel dann davon abhängig, 
was der uC bzw. Pi für H/L-Grenzen vorgibt. Nicht optimal, aber wenn ich 
davon ausgehe, dass ich am Eingang auch nur < 1 V und >= 3.3 V habe und 
nichts kontinuierliches, dann sollte es ja funktionieren. Aber wie 
gesagt, nicht optimal.

Bessere Ideen? Schmitt Trigger vielleicht?

von Falk B. (falk)


Lesenswert?

rasz schrieb:
> Ich würde gerne mittels eines Raspberry-Pi eine art
> mini-Hardware-in-the-Loop Teststation bauen. Ich frage mich, wie ich am
> besten einen Digital-Eingang realisiere, der mehrere Spannungslevel
> verarbeiten kann. Eine Idee - siehe Anhang - ist es mit der
> Eingangsspannung einfach ein MOSFET zu schalten. Da gibt's doch aber
> bestimmt bessere Alternativen, oder?

Die gibt es fast immer. Ein einfacher Spannungsteiler, der ausreichend 
hochohmig gestaltet ist, reicht. Dazu eine Klemmdiode vom Eingang nach 
VCC, meinetwegen als Schottkydiode, fertig.

Widerstand oben: 4k7
Widerstand unten: 68k
Klemmdiode BAT48

von dummschwaetzer (Gast)


Lesenswert?

auf was willst du dei eingehendes signal alles testen?
-im erlaubten bereich low
-im erlaubten bereich high
-im verbotenem bereich
....

von Andreas B. (bitverdreher)


Lesenswert?

rasz schrieb:
> Nicht optimal, aber wenn ich
> davon ausgehe, dass ich am Eingang auch nur < 1 V und >= 3.3 V habe und
> nichts kontinuierliches, dann sollte es ja funktionieren. Aber wie
> gesagt, nicht optimal.

Das ist nicht nur nichtoptimal, sondern kann arg danebengehen. Bei TTL 
Level (5V) sind z.B. <0.8V als low und >2.4V als hogh definiert. Und das 
zieht sich durch alle Logikfamilien:
https://de.wikipedia.org/wiki/Logikpegel
Du wirst also nicht umhin kommen, die Logik umschaltbar zu machen.
Du könntest auch einen High Pegel abwarten und danach den Eingang 
entsprechend umschalten. Nur: Was ist ein High Pegel?
Merkst Du was?

von rasz (Gast)


Lesenswert?

Falk B. schrieb:
> Dazu eine Klemmdiode vom Eingang nach
> VCC

Spannungsteiler ergibt Sinn. Aber für was brauche ich die Diode?

dummschwaetzer schrieb:
> auf was willst du dei eingehendes signal alles testen?
> -im erlaubten bereich low
> -im erlaubten bereich high
> -im verbotenem bereich
> ....

Vorerst genügt mir einfach zu prüfen, ob das Signal auf GND liegt oder 
einen Spannungspegel hat. Sprich: Schaltet meine Software auf dem zu 
testenden Gerät zur richtigen Zeit den richtigen Pegel?


Andreas B. schrieb:
> Das ist nicht nur nichtoptimal, sondern kann arg danebengehen. Bei TTL
> Level (5V) sind z.B. <0.8V als low und >2.4V als hogh definiert.

Da hast du natürlich recht, aber ich hab ja nie gesagt, dass ich auf 
TTL-Konformität prüfen will :P

Um das Problem nochmals etwas genauer zu beschreiben:
Das zu testende Gerät hat einige Ausgänge die per MOSFET geschaltet 
werden, und einige weitere, die direkt an einem ULN2003 hängen. Beides 
schaltet zwischen GND und 12V hin und her. Primär ist mein Ziel zu 
prüfen, ob meine Software diese Schaltvorgänge zu den richtigen Zeiten 
auslöst.

Wollte ich Hardwaredefekte entdecken, müsste ich mich natürlich mit 
Pegeln und Pegelgrenzen auseinandersetzen. Darum geht's aber vorerst gar 
nicht :)

Das hätte ich vielleicht im ersten Beitrag genauer ausführen sollen.

von rasz (Gast)


Lesenswert?

rasz schrieb:
> Wollte ich Hardwaredefekte entdecken

Genauer muss es natürlich heißen: Eine gewisse Klasse von HW-Fehlern.

Natürlich erkenne ich mit meinen geplanten Tests HW-Fehler. Aber nicht 
solche, die mit bestimmten Pegelgrenzen zu tun haben.

von Falk B. (falk)


Lesenswert?

rasz schrieb:
> Spannungsteiler ergibt Sinn. Aber für was brauche ich die Diode?

Zum Ableiten des Stroms, wenn der Eingang > 3,3V geht. Der Widerstand 
begrenzt den Strom, die Diode die Spannung. Siehe Pegelwandler.

von fchk (Gast)


Lesenswert?

Für soche Zwecke gibts z.B. den LM339:
https://www.ti.com/product/LM339

Der hat 4 Vergleicher. Jeder Vergleicher hat einen +-Eingang und einen 
--Eingang. An + kommt Dein Eingangssignal, an - die Referenzspannung, 
d.h. die gewünschte Schaltschwelle. Die Referenzspannung kannst Du mit 
einem Trimmer erzeugen. Wenn + kleiner als - ist, wird der Ausgang auf 
GND gezogen, ansonsten ist er hochohmig und sollte per Pullup auf VCC 
vom Mikrocontroller dahinter gezogen werden.

Versorgungsspannung von dem Chip muss 1-2V höher als die maximale 
Eingangsspannung sein, maximal 30V.

Damit erschlägst Du mit relativ wenig Aufwand alle Eventualitäten.

fchk

von dummschwaetzer (Gast)


Lesenswert?

>Vorerst genügt mir einfach zu prüfen, ob das Signal auf GND liegt oder
>einen Spannungspegel

also 2 comperatoren je Digitaleingang
1 Coperator für LOW (0..0,8V)
1 Comperator für HIGH (0,7*VCC des Prüflings)

deren Versorgung auf GND-3, DeinMaxIn+3
deren referenz irgendwie vom MC programmierbar
z.B Widerstandsteiler aus mehr als 2 Widerständen,Sternpunkt ist 
Referenz, die anderen Enden an MC-Pin(outL oder outH oder tristate
oder
DAC

Den Ausgang der Comperatoren auf Spannungsteiler, auf dein MC-Eingang 
dimensioniert.

Die logiktabelle darft du dir selber basteln

von rasz (Gast)


Lesenswert?

Falk B. schrieb:
> Zum Ableiten des Stroms, wenn der Eingang > 3,3V geht. Der Widerstand
> begrenzt den Strom, die Diode die Spannung. Siehe Pegelwandler.

Stehe ich gerade auf dem Schlauch? Angenommen mein Messeingang hat 12V, 
dann erzeuge ich über die Diode doch einen Stromfluss von dem Eingang 
auf meine 3.3 V Leitung.

fchk schrieb:
> Für soche Zwecke gibts z.B. den LM339:

Auch eine interessante Möglichkeit. Danke für den Tipp!

dummschwaetzer schrieb:
> also 2 comperatoren je Digitaleingang

Das ginge dann in Richtung der von fchk vorgeschlagenen Lösung.
Wäre vielleicht auch nicht dumm, dass ich am Mini-HIL einen Eingang für 
Vcc-Prüfling habe und den Signaleingang. Ich denke mal drüber nach :)

von Sebastian S. (amateur)


Lesenswert?

Wenn sichergestellt ist, dass "LOW" höchstens ~0,7V hat, reicht es aus, 
einen Reihenwiderstand zu verwenden und zwei Dioden, eine nach +Vcc und 
eine nach -Vcc(GND), zu verwenden.

Ist das nicht sicher, so musst Du für die Schwellenerkennung wirklich 
zwei Komparatoren einsetzen.

Noch komplizierter wird es, wenn die Messspannung kleiner als Vcc ist.

Hast Du es nicht besonders "Eilig", so könnte man das Ganze auch über 
einen A/D-Eingang erledigen. Allerdings musst DU dann entscheiden, ob es 
denn Low oder High anliegt.

von Markus E. (markus_e176)


Lesenswert?

fchk schrieb:
> Versorgungsspannung von dem Chip muss 1-2V höher als die maximale
> Eingangsspannung sein, maximal 30V.

Wenn du auf die maximale Schaltgeschwindigkeit verzichten kannst, darfst 
du sogar bis 36V unabhängig von der Versorgungsspannung anlegen.

von Falk B. (falk)


Lesenswert?

rasz schrieb:
> Falk B. schrieb:
>> Zum Ableiten des Stroms, wenn der Eingang > 3,3V geht. Der Widerstand
>> begrenzt den Strom, die Diode die Spannung. Siehe Pegelwandler.
>
> Stehe ich gerade auf dem Schlauch?

Kann schon sein.

> Angenommen mein Messeingang hat 12V,
> dann erzeuge ich über die Diode doch einen Stromfluss von dem Eingang
> auf meine 3.3 V Leitung.

Richtig. Aber es sind kaum 1mA. Die schlucken die Verbraucher auf der 
3,3V Versorgung.

> Das ginge dann in Richtung der von fchk vorgeschlagenen Lösung.
> Wäre vielleicht auch nicht dumm, dass ich am Mini-HIL einen Eingang für
> Vcc-Prüfling habe und den Signaleingang. Ich denke mal drüber nach :)

Dann kannst du auch gleich einen Spannungsteiler und ADC nehmen, dann 
kannst du deine PEGEL exakt analog messen. Wenn deine Prüfung eher 
langsam (einige hundert Hz) ist, geht das.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Falls das Erkennen von Low Pegel ausreicht und die Höhe des 
Eingangssignals egal ist, tut es auch die simple Diode:
1
IN              RPi
2
o-----|<|----+--o
3
             |
4
             -  Pullup nach Wunsch
5
            | |
6
             -
7
             |  3,3V
8
             +--o
Sollte LowPegel nicht sicher erkannt werden, LBD (aka Schottkydiode) 
verwenden.

von rasz (Gast)


Angehängte Dateien:

Lesenswert?

Falk B. schrieb:
> Richtig. Aber es sind kaum 1mA. Die schlucken die Verbraucher auf der
> 3,3V Versorgung.

Ich stehe definitiv auf dem Schlauch. Siehe Anhang. So würdest du die da 
rein bauen?

Falk B. schrieb:
> Dann kannst du auch gleich einen Spannungsteiler und ADC nehmen, dann
> kannst du deine PEGEL exakt analog messen. Wenn deine Prüfung eher
> langsam (einige hundert Hz) ist, geht das.

Hab ich auch schon drüber nachgedacht aber dachte, dass Digital-In's 
erst mal einfacher zu handhaben sind.

Matthias S. schrieb:
> tut es auch die simple Diode

Noch eine Lösung. Danke :)

von Falk B. (falk)


Lesenswert?

rasz schrieb:
> Falk B. schrieb:
>> Richtig. Aber es sind kaum 1mA. Die schlucken die Verbraucher auf der
>> 3,3V Versorgung.
>
> Ich stehe definitiv auf dem Schlauch. Siehe Anhang. So würdest du die da
> rein bauen?

Ich sagte, ein einfacher Spannungsteiler reicht. Der Mittelpunkt von R1 
und R2 geht direkt an den Raspberry PI, die Anode der Diode auch. Q1 und 
R3 entfallen.

>> Dann kannst du auch gleich einen Spannungsteiler und ADC nehmen, dann
>> kannst du deine PEGEL exakt analog messen. Wenn deine Prüfung eher
>> langsam (einige hundert Hz) ist, geht das.
>
> Hab ich auch schon drüber nachgedacht aber dachte, dass Digital-In's
> erst mal einfacher zu handhaben sind.

Sind sie auch, wenn man keinen fertigen ADC + Software hat. Beim Arduino 
wäre das analogRead().

von foobar (Gast)


Lesenswert?

NMOS auf der High-Side?

von rasz (Gast)


Lesenswert?

Falk B. schrieb:
> Ich sagte, ein einfacher Spannungsteiler

Ah, dachte ich es mir doch, dass wir irgendwo aneinander vorbei reden. 
So wie du es beschreibst ergibt es natürlich Sinn.

Falk B. schrieb:
> Arduino

Der Raspberry Pi bietet einige Vorteile für mein Anwendungsfall:
- Den Testablauf will ich in YAML schreiben und mit Python verarbeiten.
- Alles was mit WiFi-Funktionalität zusammenhängt kann gut mit dem WiFi 
des Pi getestet werden
- Per USB soll das Gerät programmiert werden können.
- Per API sollen Tests angestoßen werden können.
- Per Webinterface sollen Testergebnisse präsentiert werden.
- CAN und I2C Nachrichtenüberwachung

Alles das wird mit dem Arudino eher schwierig.

Wofür ich wohl trotzdem ein dedizierten uC brauche ist eine genauere 
Zeitmessung von Signalen bzw. PWM-Messung.

von Manfred (Gast)


Lesenswert?

rasz schrieb:
> Siehe Anhang.

Die Schaltung taugt garnichts. Mal eben ein Netzteil mit 6V an den 
Eingang, fliegt dank D2 der Raspberry auseinander.

Vielleicht hat man auch Glück, dass die TVS-Diode mangels 
Strombegrenzung zuerst abraucht.

Warum man einen Eingang unbedingt mit einem ESD-empfindlichen FET machen 
will, muss auch erklärt werden.

In dem ganzen Palawer sehe ich nirgendwo eine klare Definition, wie die 
Eingangssignale aussehen / wo die Schaltschwellen liegen sollen.

von rasz (Gast)


Lesenswert?

Hättest du alles gelesen, hättest du verstanden, dass die zweite 
angehängte Schaltung dazu diente ein Missverständnis zwischen mir und 
Falk zu klären. Dass die nicht wirklich klappt war ja der Grund für 
meine Verwunderung.

Aber danke für die sonst auch exzellent ausgeführte, konstruktive 
Kritik.

Beitrag #6477916 wurde von einem Moderator gelöscht.
von Sebastian S. (amateur)


Lesenswert?

Ein "elektromeister" mit Kurzschluss!

von Maxim B. (max182)


Lesenswert?

rasz schrieb:
> Eine Idee - siehe Anhang - ist es mit der
> Eingangsspannung einfach ein MOSFET zu schalten.

Die Schaltung ist nicht besonders schnell. Wenn Lastkapazität z.B. 15 pF 
ist, dann Trc = 150 ns. Das gilt für fallende Flanke. Das mag für 
langsame Signale noch passen, aber nicht für Taktsignal. Also je nachdem 
was übertragen wird.

Die meisten Komparatoren sind noch schlechter. Z.B. LM339 und LM393 
haben typisch 1,3 us Verzögerung. Es gibt aber auch schnelleren. Z.B. 
LM319 mit typisch 80 ns.

Besser scheint Logik zu sein. Z.B. 74HC4050 kann Vin herstellerabhängig 
bis 16V (TI, NXP), bis 15V (ST), bis 18V (Toshiba) ertragen, unabhängig 
von Vcc. Dabei selbst bei 2V Vcc ist Verzögerung nur  25 ns typisch. Bei 
3V3 sollte Verzögerung etwa halbieren. Nicht verwechseln mit CD4050: die 
können zwar (in Vers. B) bis 20V Vin ertragen, aber Verzögerung ist 
schon bei 5V Vcc 70 ns typisch, für 3V3 kann man mit 120 ns rechnen.

Falls Vin 7V nicht übersteigt, kann Serie 74VHC gut passen.

rasz schrieb:
> Der Raspberry Pi bietet einige Vorteile für mein Anwendungsfall:
> - Den Testablauf will ich in YAML schreiben und mit Python verarbeiten.

Das ist egal. Auch wenn du alles auf Assembler schreibst, kann 74HC4050 
gut arbeiten.

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

Maxim B. schrieb:
> Das ist egal. Auch wenn du alles auf Assembler schreibst, kann 74HC4050
> gut arbeiten.

Na dann mal viel Spaß mit Assembler auf dem Raspberry PI!!!
Thema verfehlt!

von Maxim B. (max182)


Lesenswert?

Meinst du, wenn TO mit Assembler beginnt, wird HC4050 gleich kaputt?

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.