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?
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?
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
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?
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.
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.
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.
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
>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
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 :)
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.
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.
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.
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 :)
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().
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.
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.
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.
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.
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!