Verschieben eines 2,7-V-Digitalsignals auf logische Arduino-Pegel?

Ich bin so ziemlich ein Anfänger in der Elektronik und arbeite derzeit an einem persönlichen Projekt, bei dem ich ein Gerät habe, das ein digitales Signal (Rechteckwelle) von 0 V bis 2,7 V ausgibt, und das muss ich lesen Signal mit meinem Arduino. Das reicht leider nicht für den Arduino Mega 2560, da die Mindestspannung, um den digitalen Pin hoch zu schalten, mindestens 3 V beträgt.

Ich habe etwas "recherchiert" und bin auf den Hex-Level-Shifter MC14504B gestoßen, der die perfekte Lösung für mein Problem zu sein schien. Allerdings ... Ich habe einige Probleme beim Interpretieren des Datenblatts ...

TL; DR: Ich muss mein 2,7-V-Signal auf mindestens 3 V oder mehr pegeln.

Dies ist das Logikdiagramm des Pegelumsetzers:

Geben Sie hier die Bildbeschreibung ein

Und das sind die Eigenschaften:

Geben Sie hier die Bildbeschreibung ein

Ich bin mir nicht ganz sicher, wie ich diese Zahlen interpretieren soll. Ich plane, den TTL-CMOS-Modus zu verwenden.

Soweit ich das beurteilen kann, beträgt meine Spannung am Ausgang ~ 5 V, wenn Vdd 5 V beträgt, solange der Eingang als 1 (hoch) gilt, was perfekt ist. Wäre eine 3,3-V-Vdd in Ordnung, da Arduino mindestens 3 V benötigt, um einen Pin hoch zu schalten?

Nun zu meiner eigentlichen Frage ... Ich verstehe den Teil Vcc und Vin (Vol, Voh) nicht.

Aus der Tabelle können wir ersehen, dass, wenn Vcc 5 V und Vdd 10 V beträgt, Vin eine logische 0 ist, wenn die an den Eingang angelegte Spannung <= 0,8 V beträgt, dasselbe gilt, wenn Vcc 5 V und Vdd 15 V beträgt.

Soweit ich das beurteilen kann, wird der Eingang als hoch angesehen, wenn mindestens 2 V oder mehr an den Eingang angelegt werden, wenn Vcc = 5 V und Vdd = 10 V / 15 V, aber sowohl Voh als auch Vol ändern sich abhängig von Vdd? Was bedeutet das für meinen Anwendungsfall?

Was ist, wenn ich sowohl für Vcc als auch für Vdd 5 V verwende? Was ist, wenn ich sowohl für Vcc als auch für Vdd 3,3 V verwende? Was ist, wenn ich 3,3 V für Vcc und 5 V für Vdd und umgekehrt verwende? Was passiert in diesen Szenarien? Könnte das bitte jemand ganz einfach erklären? Mir scheint hier etwas zu fehlen, da meine Interpretation für mich keinen Sinn ergibt.

Danke schön!

Gibt es einen Grund, warum Sie den Mega nicht mit 2,7 V betreiben möchten?
Können Sie bestätigen, dass der Arduino mit 5 V läuft?
Warum sollte er nicht mit 5 V laufen? Und was genau meinst du damit, warum ich den Mega nicht mit 2,7V betreiben will? Mega verwendet 5V-Logik?
Ich wollte nur ganz sicher sein :) Normalerweise würden Sie für jede Seite des Pegelumsetzers die gleichen Schienen verwenden wie die Logikchips, die mit jeder Seite verbunden sind.
Mir scheint hier etwas zu fehlen, ich bin Anfänger. :) Was hat Sie denken lassen, dass der Arduino nicht mit 5 V läuft und was wäre die Ursache dafür, dass dies nicht der Fall ist? Mit Ihrem letzten Kommentar meinen Sie, dass Vcc und Vdd am Pegelumsetzer beide mit dem 5-V-Pin des Arduino verbunden sein sollten? :)
Welche Frequenz hat diese Rechteckwelle?

Antworten (4)

TL; DR: Verwenden Sie Vcc = 5 V, Vdd = 5 V, TTL-CMOS-Modus, und Sie sollten in Ordnung sein.

„Solange der Eingang als 1 (hoch) gilt, beträgt meine Spannung am Ausgang ~5 V, wenn Vdd 5 V beträgt, was perfekt ist. Wäre eine 3,3-V-Vdd in Ordnung, da Arduino mindestens 3 V benötigt, um a zu drehen Stecknadel hoch?"

Richtig, Sie erhalten eine Ausgabe von ~ 5 V, wenn Sie Vdd = 5 V verwenden. Im TTL-CMOS-Modus müssen Vdd und Vcc jedoch beide mindestens 5 V betragen (Abbildung 4 des Datenblatts). Da der Schaltpunkt der Eingangslogik 1,5 V für Vcc = Vdd = 5 V beträgt, funktioniert dies mit Ihrem 2,7-V-Logikeingang einwandfrei.

"Nun zu meiner eigentlichen Frage... Ich verstehe den Teil Vcc und Vin (Vol, Voh) nicht."

Dieses Datenblatt listet seine Daten auf ziemlich seltsame Weise auf, und es ist nicht ganz klar, was es bedeutet. Meine Interpretation ist, dass "VOL = 1,0 VDC" bedeutet, dass bei Betrieb in diesem Zustand die Ausgangsspannung garantiert weniger als 1 VDC beträgt. Glücklicherweise glaube ich nicht, dass es wirklich ein Problem für Ihre Anwendung ist.

"Der Eingang wird als hoch angesehen, wenn mindestens 2 V oder mehr an den Eingang angelegt werden, wenn Vcc = 5 V und Vdd = 10 V/15 V, aber sowohl Voh als auch Vol sich abhängig von Vdd ändern? Was bedeutet das für meinen Anwendungsfall?"

Ja, Sie interpretieren das richtig. Ignorieren Sie für Ihren Anwendungsfall die Zahlen „Voh und Vol“ im Abschnitt „Eingangsspannung“ und achten Sie stattdessen mehr auf den obersten Abschnitt mit der Bezeichnung „Ausgangsspannung“, der nur besagt, dass Sie Vdd = 5 V verwenden Erhalten Sie ~ 5V Ausgang.

„Was ist, wenn ich 5 V für Vcc und Vdd verwende? Was ist, wenn ich 3,3 V für Vcc und Vdd verwende? Was ist, wenn ich 3,3 V für Vcc und 5 V für Vdd verwende und umgekehrt.“

Siehe auch Abbildung 4. Im TTL-CMOS-Modus müssen Sie 5 V für Vcc und Vdd verwenden. Ich würde sagen, dass die Verwendung von 5 V für beide die richtige Lösung für Ihre Anwendung ist.

Danke für die Antwort auf meine ursprüngliche Frage. :) Ich werde das morgen ausprobieren und sehen, wie es geht.
Sollte „ TL;DR: “ nicht ganz unten stehen?
Und wie ist das relevant?

Solange Ihnen eine logische Umkehrung nichts ausmacht, können Sie etwas Einfaches wie einen Transistor und zwei Widerstände verwenden.

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Sensorausgangsspannungen über etwa 0,8 V schalten Q1 ein. R2 zieht den Arduino-Eingang auf seine Versorgungsschiene, wenn Q1 ausgeschaltet ist. Wenn Sie einen I/O-Pin-Eingang mit einem programmierbaren Pull-up-Widerstand verwenden, können Sie R2 weglassen. Die meisten Kleinsignal-NPN-BJTs reichen für Q1 aus.

Ich habe darüber schon früher nachgedacht, aber ich habe mich stattdessen für den Pegelumsetzer entschieden, weil er mein Signal nicht invertiert, nun, ein invertiertes Signal würde kein wirkliches Problem darstellen. Wie auch immer, der R2 hat mich gestört ... Soweit ich gelesen habe, haben Arduino-Pins eine Impedanz von 100 kOhm, und das Anschließen eines Eingangspins an diese Schaltung würde einen Spannungsabfall an R2 erzeugen ... ist nicht der interne Pin-Widerstand von Ein Eingang, der ausreicht, um den Pin hoch zu ziehen, warum ist der R2 notwendig? Danke. :)
@0xd4v3, bitte überprüfen Sie das Datenblatt für Ihr Gerät, anstatt Informationen aus zweiter Hand zu verwenden. Ein Eingangsleckstrom von +/- 10 uA ist typischer, daher ist der R2-Wert in Ordnung ... aber überprüfen Sie eher das Datenblatt als "AFAIK". Ich werde bemerken, dass Sie den programmierbaren Pull-up verwenden können, R2 hat die Schaltung einfach universell für Nicht-Arduino-MCUs usw. gemacht.

Arduino-Eingänge müssen die angegebenen Logikpegel für den Spielraum erfüllen.

VIL <= 0,3 Vcc max.
VIH >= 0,7 Vcc min

Daher muss die Eingangsrechteckwelle >= 0,4 Vcc und für 5 V oder 0,4 * 5 = 2,0 Vpp sein und Sie haben 2,7 V mit 0,7 V Spielraum.

Alternativ können Sie AC an den Eingang mit R-Vorspannung an Vcc/2 koppeln.

Es gibt viele Level-Shifter-Lösungen für 2,7 V bis 5 V.

Rev B.

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

  • rauschfreie Versorgung und Signal vorausgesetzt.
Danke für die Antwort, aber als Anfänger bin ich mir nicht sicher, ob ich dem folge, was Sie hier zu erklären versuchen. :) 0,3*5V = 1,5V und 0,7*5V = 3,5V. Wie kommt es, dass das digitale Signal den Pin immer noch hoch schaltet, wenn der Pin mindestens 0,7 * Vcc zum Einschalten benötigt? Mega verwendet logische 5-V-Pegel, richtig?
Logikpegel werden mit angemessenen Rauschgrenzen über Temperatur- und Herstellungstoleranzen definiert, aber nominell ist der Schwellenwert Vcc/2. Es geht davon aus, dass das Signal immer da ist. Für einen aktiven nicht invertierenden Pufferübersetzer siehe meinen Link in Blau (?)
Danke für das Posten der Schaltung. :) Ich habe mir deinen Link angesehen, aber er führt zu einer Seite, die mir einen Fehler anzeigt.
Da OP die Frequenz der Rechteckwelle nicht erwähnt hat, würde ich davon abraten, diesen Ansatz zu verwenden.
Entschuldigung für den Link, versuchen Sie digikey.com/products/en/integrated-circuits-ics/… und verwenden Sie die Filter für das billigste Teil, das zu V1 = 2,7 V2 = 5 passt
Signal ist im Grunde ein Datensignal mit einer Bitrate von 1200 Bit/s. :) Ich habe einige Simulationen durchgeführt und es scheint eine Verzögerung zu geben, bis sich die Spannung stabilisiert, was beim Lesen des Signals zu Problemen führen könnte, da ich aufgrund der Verzögerung einige Bits verpassen könnte.
Was verursacht Verzögerungen? langes Kabel? Software-Latenz?
Was ist der Zweck von D1? In LTspice verhindert es das Einschalten von Q1 (nur 5 µA durch R4).

TTL-Eingangsspannungspegel sind >=0,8 V niedrig und >=2,0 V hoch. Der MC14504B akzeptiert diese Logikpegel im TTL-Modus mit Vcc = +5 V. Ihre Signalpegel sind 0 V und 2,7 V, also ist alles in Ordnung.

Der MC14504B hat CMOS-Ausgänge, die von 0 V bis Vdd gehen. Der Arduino arbeitet mit 5 V, also sollten Sie auch Vdd auf +5 V setzen.